相信很多小伙伴在用matlab求解微分方程的数值解需要用 ode45() 这个API,ode45需要将微分方程(组)化为一阶微分方程组,然后再带入求解。然而实际需要解决的问题往往是高阶微分方程或者高阶微分方程组,因此需要手动化为一阶微分方程组,本文实现 matlab的降阶法,适合高阶微分方程和高阶微分方程组的降阶。
降阶法原理 降阶法原理就是引入中间变量,然后实现降阶。例如: F ( t , y , y ′ ) = 0 F(t,y,y^{'})=0 F(t,y,y′)=0 令 x 1 = y x_1=y x1=y, x 2 = y ′ x_2=y^{'} x2=y′,那么就可以将原来的二阶微分方程降阶为两个一阶微分方程。
d x 1 d t = x 2 d x 2 d t = G ( t , x 1 , x 2 ) begin{matrix} frac{dx_1}{dt}=x_2 \ frac{dx_2}{dt}=G(t,x_1,x_2) end{matrix} dtdx1=x2dtdx2=G(t,x1,x2)
高阶微分方程组同理!!!
GitHub传送门!!!