数值求解一个二阶微分方程

这个例子向您展示了如何将一个二阶微分方程转换为一个可以使用数值求解器求解的微分方程系统数值MATLAB®。

摘要求解高阶常微分方程的一种典型方法是将高阶常微分方程转化为一阶微分方程组,然后进行求解。本例使用符号数学工具箱™将二阶ODE转换为一阶ODE系统。然后使用MATLAB求解器数值来解这个方程组。

把二阶ODE写成一阶ODE系统

使用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

信谊y (t)[V] = odeToVectorField (diff (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求解器不接受符号表达式作为输入。因此,在使用MATLAB ODE求解器求解该系统之前,必须将该系统转换为MATLAB函数。利用此一阶微分方程系统生成MATLAB函数matlabFunction以V作为输入。

M = matlabFunction (V,“var”,{“t”,“Y”})
M =function_handle与价值:@ (t, Y) [Y (2); - (Y(1) ^ 2 - 1.0)。* Y (2) - Y (1)]

求解一阶常微分方程组

为了解决这个系统,调用MATLAB数值数值求解器使用生成的MATLAB函数作为输入。

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

情节的解决方案

使用以下方法绘制解决方案linspace在区间[0,20]和内生成100个点德瓦尔计算每个点的解。

fplot (@ (x)德瓦尔(sol x, 1), [0, 20])

另请参阅

|||