【发布时间】:2018-09-18 00:43:09
【问题描述】:
我正在尝试使用 SciPy 的集成.ode 解决 ODE,但它失败了。我怀疑它与所涉及的网格的大小有关,所以我尝试了以下两个测试:
from scipy.integrate import ode
def bla(t,x):
return 0
M0=1
t0,y0 = 0.5*M0,0.5*M0
r = ode(bla).set_integrator('dopri5')
r.set_initial_value(y0,t0)
t1 = M0
dt =0.01*M0
bli = np.array([])
while r.successful() and r.t < t1:
r.integrate(r.t+dt)
bli = np.append(bli,r.y)
数组bli 包含50 个元素,其值为0.5。
from scipy.integrate import ode
def bla(t,x):
return 0
M0=1e13
t0,y0 = 0.5*M0,0.5*M0
r = ode(bla).set_integrator('dopri5')
r.set_initial_value(y0,t0)
t1 = M0
dt =0.01*M0
bli = np.array([])
while r.successful() and r.t < t1:
r.integrate(r.t+dt)
bli = np.append(bli,r.y)
本例中的数组bli 包含一个值为5e12 和r.successful() = False 的元素,这是不应该的。
我该如何解决这个问题?
【问题讨论】: