gpt4 book ai didi

python - 运行时警告: overflow encountered in exp

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:29 24 4
gpt4 key购买 nike

我有三个耦合的常微分方程,我在 python 中使用 RK4 方法在给定的初始条件下求解它们。当我运行它们时,我收到以下错误:

RuntimeWarning: overflow encountered in exp

任何有关我可能做错的地方的帮助将不胜感激。

这是代码(最初粘贴 here ):

#simple exponential potential
# u = K*phi'/H0; v = omega_matter**(1/3)*(1+z); w = l*K*phi' - ln((K**2)*V0/H0**2)
# f,g,h are functions of derivation of u,v,w respectively derieved w.r.t t*H0 = T

import matplotlib.pyplot as plt
import numpy as np
import math

def f(T,u,v,w):
return -3*u*((v**3 + (u**2)/6 + np.exp(-w)/3)**0.5) + l*np.exp(-w)

def g(T,u,v,w):
return -v*(v**3 + (u**2)/6 + np.exp(-w)/3)**0.5

def h(T,u):
return l*u

p = 0.1
q = 1.0
dh = 0.1
n = (q-p)/dh
u = [0.0]
v = [1100]
T = [0.00001]
w = [-44.927]
l = 1.3

for i in range(0,int(n)):
k1 = f(T[i],u[i],v[i],w[i])
r1 = g(T[i],u[i],v[i],w[i])
print k1, r1
s1 = h(T[i],u[i])
print s1
k2 = f(T[i] + 0.5*dh,u[i] + k1*dh,v[i] + k1*dh,w[i] + k1*dh)
r2 = g(T[i] + 0.5*dh,u[i] + r1*dh,v[i] + r1*dh,w[i] + r1*dh)
s2 = h(T[i] + 0.5*dh,u[i] + s1*dh)
print k2,r2,s2
k3 = f(T[i] + 0.5*dh,u[i] + k2*dh,v[i] + k2*dh,w[i] + k2*dh)
r3 = g(T[i] + 0.5*dh,u[i] + r2*dh,v[i] + r2*dh,w[i] + r2*dh)
s3 = h(T[i] + 0.5*dh,u[i] + s2*dh)
k4 = f(T[i] + dh,u[i] + dh*k3,v[i] + dh*k3,w[i] + k3*dh)
r4 = g(T[i] + dh,u[i] + r3*dh,v[i] + dh*r3,w[i] + r3*dh)
s4 = h(T[i] + dh,u[i] + dh*s3)
T == T.append(T[i] + dh)
u == u.append(u[i] + (dh/6)*(k1 + 2.0*k2 + 2.0*k3 + k4))
v == v.append(v[i] + (dh/6)*(r1 + 2.0*r2 + 2.0*r3 + r4))
w == w.append(w[i] + (dh/6)*(s1 + 2.0*s2 + 2.0*s3 + s4))

plt.plot(T,u, '-b')
plt.plot(T,v, '-r')
plt.plot(T,w, '-g')
plt.title('quintessence cosmological model')
plt.show()

最佳答案

您的问题似乎源于您的 fg 函数调用。当 -w 传递到 numpy.exp 时,请注意它的值。该代码中的函数。如果计算结果为足够大的正数,则调用 exponential function看起来它很容易导致溢出。 Google 告诉我 e^44.927 的计算结果为 3.2474927e+19。

您可能需要为 w 选择一个较小的绝对值才能运行此代码而不会出现溢出错误。

(请参阅 Python-How to determine largest/smallest int/long/float/complex numbers my system can handle 了解如何确定 Python 中允许的最大整数值。)

关于python - 运行时警告: overflow encountered in exp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44528942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com