调整scipy.integrate.ode误差公差

2024-05-16 09:20:04 发布

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

我刚刚读了Using adaptive time step for scipy.integrate.ode when solving ODE systems 。在

我下面的代码运行得很好,但是它在求解更复杂的方程时产生的结果,而不是我在下面的例子中提供的结果,微分方程似乎不准确。有没有办法改变这个代码,使它自动适应时间步进,根据指定的绝对和 相对误差公差?例如10^-8?在

from scipy.integrate import ode

initials = [0.5,0.2] 
integration_range = (0, 30)

def f(t,X):
    x,y = X[0],X[1]

    dxdt = x**2 + y
    dydt = y**2 + x
    return [dxdt,dydt]

X_solutions = []
t_solutions = []
def solution_getter(t,X): 
   t_solutions.append(t)
   X_solutions.append(X.copy()) 


backend = "dopri5"
ode_solver = ode(f).set_integrator(backend)
ode_solver.set_solout(solution_getter)
ode_solver.set_initial_value(y=initials, t=0)

ode_solver.integrate(integration_range[1])

Tags: defrangescipyintegrationodeintegratesolutionsolver
1条回答
网友
1楼 · 发布于 2024-05-16 09:20:04

您可以在set_integrator调用中设置rtol和{}的值,请参见https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.ode.html。在

默认值提供中等精度,对于图形来说足够好,但对于其他目的可能不够。在

相关问题 更多 >