我一直在尝试通过使用Scipy,特别是通过scipy.integrate.RK23
命令来数值求解非线性常微分方程。它返回<scipy.integrate._ivp.rk.RK23 at 0x7f2b1a908390>
。如何绘制解决方案?
提前感谢您的帮助!
编辑:
作为测试的简单示例:
import numpy
import scipy.integrate
t0=0;
tf=1;
x0=numpy.array([0]);
def F(t,x): return t**2;
x=scipy.integrate.RK23(F,t0,x0,tf)
答案 0 :(得分:0)
RK23
是一个类,实现了一种解决ODE的方法,也就是说,它是OdeSolver
,因此不应直接使用,而应在solve_ivp
之类的其他函数中使用:< / p>
import numpy
from scipy.integrate import solve_ivp, RK23
import matplotlib.pyplot as plt
t0=0
tf=1
x0=numpy.array([0])
def F(t,x): return t**2
sol = solve_ivp(F, [t0, tf], x0, RK23)
print(sol)
plt.plot(sol.t, sol.y[0])
plt.show()
OdeSolver允许开发人员添加自定义方法而无需重写scipy,但是由于RK23是scipy已经实现的经典方法,因此您可以仅传递名称和scipy搜索适当的类:
...
sol = solve_ivp(F, [t0, tf], x0, "RK23")
...