我正在尝试使用从时间序列计算的离散变量系数来求解微分方程。在这种情况下,Runge-Kutta 步长由时间序列中的频率固定。
是否有适合固定步长的 Python Runge-Kutta RK4、RK5 求解器?
我正在尝试使用从时间序列计算的离散变量系数来求解微分方程。在这种情况下,Runge-Kutta 步长由时间序列中的频率固定。
是否有适合固定步长的 Python Runge-Kutta RK4、RK5 求解器?
如果您使用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。