Implementing MATLAB's Boundary Value Solver
这一部分我们学习如何把具体的微分方程问题转化成 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