主要内容

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

这个例子展示了如何将一个二阶微分方程转化为一个微分方程组,可以使用数值解算器来解决数值MATLAB®。

解决高阶常微分方程的一个典型方法是将其转换成系统的一阶微分方程,然后解决这些系统。本例使用符号数学工具箱™将一阶常微分方程的二阶系统歌唱。然后它使用MATLAB求解程序数值解决系统。

重写一阶常微分方程的二阶颂歌视为一个系统

使用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解决歌唱不接受符号表达式作为输入。因此,之前您可以使用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函数作为输入。

索尔=数值(M, 20 [0], [2 0]);

情节的解决方案

情节的解决方案使用linspace生成100点的区间[0,20]和德瓦尔评估每个点的解决方案。

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

图包含一个坐标轴对象。坐标轴functionline类型的对象包含一个对象。

另请参阅

|||