用离散变量系数在 Python 中求解微分方程

计算科学 Python 数字 离散化 scipy 龙格库塔
2021-12-26 08:02:52

我正在尝试使用从时间序列计算的离散变量系数来求解微分方程。在这种情况下,Runge-Kutta 步长由时间序列中的频率固定。

是否有适合固定步长的 Python Runge-Kutta RK4、RK5 求解器?

1个回答

如果您使用diffeqpy,您可以使用命令adaptive=false,dt=...指定固定时间步长。以下是在 Lorenz 方程上使用固定时间步长的 Dormand-Prince RK45 方法:

from diffeqpy import de
import matplotlib.pyplot as plt

def f(u,p,t):
    x, y, z = u
    sigma, rho, beta = p
    return [sigma * (y - x), x * (rho - z) - y, x * y - beta * z]

u0 = [1.0,0.0,0.0]
tspan = (0., 100.)
p = [10.0,28.0,8/3]
prob = de.ODEProblem(f, u0, tspan, p)
sol = de.solve(prob,de.DP5(),adaptive=false,dt=0.1)

plt.plot(sol.t,sol.u)
plt.show()

对于多步骤方法,可以使用de.VCABM()where de.DP5()sits。