Python 中的一阶 ODE 系统

System of First Order ODEs in Python

我在 Python 中看到了如何求解 ODE 系统,但我看到的所有示例都是“标准”方程。我的标准意思是方程式没有说“一个函数的导数 = 包含另一个函数的导数的表达式”。

这是我试图用数值方法求解的示例系统。初始条件为x(0) = 5, y(0) = 3, z(0) = 2,所有初始导数为0:

x'(t) + 4y(t) = -3y'(t)

y'(t) + ty(t) = -2z'(t)

z'(t) = -2y(t) + x'(t)

我不是 100% 确定如何编码。这是我尝试过的:

 import numpy as np
 from scipy.integrate import odeint
 import matplotlib.pyplot as plt
 import math

 def ODESystem(f,t):
     x = f[0]
     y = f[1]
     z = f[2]

现在,我先定义什么:dydt、dxdt 或 dzdt。在我使用它来定义另一个表达式之前,有没有一种方法可以让我定义一个“徘徊”的表达式?

没关系;我很蠢。我可以继续代入第三个方程,直到得到不包含任何其他导数的 z'(t) 方程。

您不需要手动解决任何问题,您也可以这样做

def ODESystem(f,t):
    x,y,z = f
    return np.linalg.solve([[1,3,0],[0,1,2],[-1,0,1]], [-4, -t, -2])*y