用小数替换浮点会导致错误

2024-09-28 20:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

该程序分析描述连续反应A->;B->;C->;中试剂浓度的方程式;。。。在

http://en.wikipedia.org/wiki/Rate_equation#Consecutive_reactions

该算法是我自己设计的,可以完全忽略求解微分方程来获得浓度函数的需要。它利用了当人们仔细研究这些方程时出现的模式。在

正常工作的代码使用浮点数,但它们有缺点。当任意两个给定n值的速率常数k峈n值的值相似时,浮点数的不精确性就会受到影响,结果会淹没在误差放大的海洋中:

graph

我认为用decimal()替换float()应该可以解决这个问题,但令我沮丧的是,这些更改导致了意外错误:

用decimal()替换float()之后:

Traceback (most recent call last):
  File "conreact9.py", line 280, in <module>
    exec(comm)
  File "<string>", line 1, in <module>
  File "conreact9.py", line 256, in graphit
    p += plt.plot(t,eval(c_(i)),label= "c_" + str(i) + "(t)")
  File "<string>", line 1, in <module>
  File "C:\Python27\lib\decimal.py", line 658, in __new__
    raise TypeError("Cannot convert %r to Decimal" % value)
TypeError: Cannot convert array([0, -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7, -0
.8, -0.9, -1.0, -1.1,
       -1.2, -1.3, -1.4, -1.5, -1.6, -1.7, -1.8, -1.9, -2.0, -2.1, -2.2,
       -2.3, -2.4, -2.5, -2.6, -2.7, -2.8, -2.9, -3.0, -3.1, -3.2, -3.3,
       -3.4, -3.5, -3.6, -3.7, -3.8, -3.9, -4.0, -4.1, -4.2, -4.3, -4.4,
       -4.5, -4.6, -4.7, -4.8, -4.9], dtype=object) to Decimal

当我将NumPy exp()替换为十进制等效值时,出现了这个错误:

^{pr2}$

没有找到任何使用谷歌或官方文档的十进制模块。在

以下是未接触的代码供参考:

http://pastebin.com/mfuwVq7B

我想修改一下:

http://pastebin.com/xde4gvHu

这可能是一些我看不到的非常基本的东西。我是化学系的学生,在编程方面我是个新手(没有任何背景)。非常感谢你。在


Tags: 代码inpygthttpstring错误line
1条回答
网友
1楼 · 发布于 2024-09-28 20:53:08

问题是用Decimal.decimal.exp()代替{}。在

The former takes an array并返回一个数组,其中e已提升到每个元素的幂:

>>> x = np.linspace(-2*np.pi, 2*np.pi, 100)
>>> xx = x + 1j * x[:, np.newaxis] # a + ib over complex plane
>>> out = np.exp(xx)

The latter works on single numbers

^{pr2}$

(示例取自上面链接的页面)。在

相关问题 更多 >