这一部分我们学习如何把具体的微分方程问题转化成 MATLAB 可以解决的问题,并且学习使用 MATLAB 的 bvp4c 来编程。
6.1 Setting Up Boundary Value Problems in MATLAB
因为 MATLAB 善于解决矩阵问题,所以我们一般要把问题简化为矩阵的问题。因此如果要使用我们前面的解决微分的方法(离散的,而非解析的),我们需要把高阶的问题简化成低阶的问题。
用一个简单的例子来说明。
$$ y’’ + 3y + 6y = 5 $$
首先我们想要写成矩阵形式,需要化成一阶的方程组。对于这个具体的问题,我们可以定义: \begin{eqnarray} y_1 &=& y \ y_2 &=& y’ \end{eqnarray}
这样我们原来的方程就能写成 \begin{eqnarray} y_1’ &=& y_2 \ y_2’ &=& 5 - 3y_2 - 6y_1 \end{eqnarray}
然后我们需要把初始条件加进来: \begin{eqnarray} y_1 - 3 &=& 0 \qquad \text{at } x =1\ y_1 + 2 y_2 &=& 5 \qquad \text{at } x=3 \end{eqnarray}
Implementing bvp4c in MATLAB
JUST MATLAB PROGRAMMING
CHECK THE PROGRAMS
Nonlinear Boundary Value Problems
采用这样一个例子; $$ y’’ + (100 - \beta )y + y^3 = 0 $$
边界条件: $$ y(\pm 1) =0 $$
第一部还是把这些写成一阶的方程组:
定义 \begin{eqnarray} y_1 &=& y \ y_2 &=& y’ \end{eqnarray}
原来的二阶的方程变成:
\begin{eqnarray} y_1’ &=& y_2 \ y_2 ‘ &=& (\beta - 100)y_1 - y^3 \end{eqnarray}
但是这里有一个多余的参数 $\beta$,我们需要一个额外的限制,所以我们临时添加一个: $$ y_2(-1) = 1 $$
Solving Nonlinear Problems with bvp4c
JUST MATLAB PROGRAMMING
CHECK THE PROGRAMS