【发布时间】:2015-07-01 07:05:52
【问题描述】:
我是 Python 的初学者。我写了一个函数来计算 10^-15 的数字。
生成代码输出时,出现错误提示“数值结果超出范围”。发生此错误的可能原因是什么?
这是我的代码。
import numpy as np
import matplotlib.pyplot as plt
T=4.32*10**19
i=input("Number of iterations ")
h=T/i
a=[0.01]*6000
t=[0.0]*6000
data = np.loadtxt('/home/user/t.txt')
t=data[:]
def f (a):
if a!=0:
c=((0.75/a + 0.044/(a**2) + 0.74*(a**2))**0.5)
return c
else :
return 0
for n in range(0,5998):
k1=f ( a[n] );
k2=f ( a[n]+(h/2)*k1 );
k3=f ( a[n]+(h/2)*k2 );
k4=f ( a[n]+h*k3 );
a[n+1]=(a[n]+(h/6)*(k1 + 2*k2 + 2*k3 + k4))
fo=open("a_of_t.txt", "w")
for item in a:
fo.write("%e\n" % item)
fo.close()
plt.plot(t,a, 'k')
plt.show()
错误读取
line 23, in <module>
k3=f ( a[n]+(h/2)*k2 );
line 15, in f
c=((0.75/a + 0.044/(a**2) + 0.74*(a**2))**0.5)
OverflowError: (34, 'Numerical result out of range')
【问题讨论】:
-
请显示您的代码和您收到的具体错误消息(堆栈跟踪)。
-
在某个数量级浮动会停止工作,但我忘了在哪里。也许docs.python.org/2/library/decimal.html
decimal你会感兴趣? -
类似于 [link] (stackoverflow.com/questions/29488213/…)
-
我已添加代码
-
你能写出整个错误吗?它告诉你电脑哪里出了问题
标签: python