数字地解决二阶微分方程

此示例显示了如何将二阶差分方程转换为可以使用数值求解器解决的微分方程系统ODE45.MATLAB®。

求解高阶常微分方程的典型方法是将它们转换为一阶微分方程的系统,然后解决这些系统。该示例使用符号数学工具箱™将二阶ode转换为一阶odes系统。然后它使用matlab求解器ODE45.解决系统。

将二阶ODE重写为一阶odes系统

odetovectorfield.重写该二阶微分方程

D. 2 y D. T. 2 = 1 - y 2 D. y D. T. - y

使用变量的变化。让 y T. = y 1 D. y D. T. = y 2 使得区分两个方程我们获得一阶微分方程的系统。

D. y 1 D. T. = y 2 D. y 2 D. T. = - y 1 2 - 1 y 2 - y 1

Syms.y(t)[v] = odetovectorfield(差异(y,2)==(1  -  y ^ 2)* diff(y) -  y)
v =

y 2 - y 1 2 - 1 y 2 - y 1 [Y(2);- (y(1)^ 2 - 1)* y(2) - y(1)]

生成matlab功能

MATLAB ode onotvers不接受符号表达式作为输入。因此,在使用MATLAB ode Solver求解系统之前,必须将该系统转换为MATLAB函数。从使用该系统使用Matlab功能使用matlabfunction.用v作为输入。

m = matlabfunction(v,'vars',{'T''是'})
m =function_handle具有值:@(t,y)[y(2);-( y(1)。^ 2-1.0)。* y(2)-y(1)]

解决一阶余下的系统

要解决此系统,请致电MATLABODE45.使用生成的MATLAB函数的数值求解器作为输入。

sol = ode45(m,[0 20],[2 0]);

绘制解决方案

使用解决方案Linspace.在间隔中生成100分[0,20]和评估每个点的解决方案。

fplot(@(x)deval(sol,x,1),[0,20])

也可以看看

|||