主要内容

用数值方法求解二阶微分方程

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

求解高阶常微分方程的一种典型方法是将高阶常微分方程转化为一阶微分方程组,然后求解这些方程组。该示例使用Symbolic Math Toolbox™将一个二阶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

生成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)]

求解一阶ode系统

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

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

情节的解决方案

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

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

图中包含一个轴对象。axis对象包含一个functionline类型的对象。

另请参阅

|||