2018年5月

用Matlab bvp4c 解带未知参数的常微分方程边值问题,怎么给出合适的初值?



用算出来的一个结果做为初值,即continuation 方法。下面用具体的例子作为说明。例子来自Solving ODEs with Matlab

方程为:

\begin{equation*} \begin{split} f'''-R[(f')^2-ff'']+RA=&0\\ R''+Rfh'+1=&0\\ \theta ''+P_ef\theta '=&0 \end{split} \end{equation*}

边界条件为:

\begin{equation*} \begin{split} f(0)=f'(0)=&0\\ f(1)=f'(1)=&1\\ h(0)=h(1)=&0\\ \theta(0)=&0\\ \theta(1)=&1 \end{split} \end{equation*}

方程描述流体描述流体流过竖直管道的问题,其中 $R$ 为常数,在模型中为雷诺数。常数$P_e=0.7R$,在模型中为佩克莱特数。$A$ 为我们要计算的未知常数。

给定 $R=100, 1000, 10000$,分别解方程。$R=100$时,很容易得到结果,$R=1000, 10000$时程序不收敛,可以把$R=100$时的结果作为初值代入,则顺利得到结果。

下面给出两个程序。

- 阅读剩余部分 -

用Matlab bvp4c 解带未知参数的常微分方程边值问题




要求解的方程选自Data-Driven Modeling Scientific Computation 一书的§7.7。

方程为:

\begin{equation*} y''+(100-\beta)y+\gamma y^3=0 \end{equation*}

边界条件:

\begin{equation*} \begin{split} y(-1)=&0\\ y(1)=&0\\ y(-1)=&0.1 \end{split} \end{equation*}

给定$\gamma=1$ 解 $\beta$ 和 $y(x)$。

程序如下:

- 阅读剩余部分 -