绘制Scipy ODE解决方案

时间:2018-08-20 22:34:57

标签: matplotlib scipy

我一直在尝试通过使用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)

1 个答案:

答案 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")
...