数值分析08 木灵的炼金工作室

本来不太想看第九章的(

本章讨论一阶常微分方程的数值解.

一阶常微分方程的数值解

对于一个附带了初值条件(否则将无法定义$y$的截距)的一阶常微分方程:

\[\left\{ \begin{aligned} &\frac{dy}{dx}=f(x,y) \\ &y(a)=a_0 \end{aligned} \right. \tag{8.1}\]

求函数$y$在若干点$x_0,x_1,…,x_n$的函数值$y_0,y_1,…,y_n$

我们假定方程右侧的多项式$f(x,y)$是连续的,且关于$y$满足比连续更为高级的条件Lipschitz连续条件(收缩映射):

\[\vert f(x,a)-f(x,b)\vert\leqslant L\vert a-b\vert\]

这样,$y$存在单解(具体的证明可以参看常微分方程和实分析)

一阶近似法

既然我们只需要在离散的点集上进行求算,故上述方程便允许一定程度上的信息损失,而这种近似操作的首选目标便是微分或积分算子:

导数的差商近似

我们使用”向前的”差商来近似方程8.1中的导数项,有

\[\frac{y_{i+1}-y_i}{x_{i+1}-x_i}=f(x_i,y_i)\tag{8.2}\]

故由式子(8.2)初值$y_0=a_0$可迭代求出所有的$y_i$

本质上是一种基于Taylor公式的线性近似,称为Euler方法

积分的数值积分近似

上述方程还可以写作:

\[dy=f(x,y)dx\]

两侧积分:

\[y_{i+1}=\int_{x_i}^{x_{i+1}}f(x,y)dx + y_i\]

再以矩形公式近似上述积分值:

\[y_{i+1}=({x_{i+1}}-{x_i})f(x_i,y_i) + y_i\]

故由式子(8.2)初值$y_0=a_0$可迭代求出所有的$y_i$

高阶近似法

Euler方法校正:梯形近似

上述对于微积分的近似始终只基于单点函数值来预测,这导致了精度的下降,因此我们尝试使用两点的函数值来预测,即使用梯形公式给出一迭代公式(为方便讨论,不妨设待求节点是距离为$h$的等距点):

\[y_{n+1}=y_n+\frac{h}{2}[f(x_n,y_n)+f(x_{n+1},y_{n+1})]\tag{8.3}\]

直观地,式8.3无法直接拿来使用,因为等式的右侧也出现了$y_{n+1}$,而在待求$y_{n+1}$的时候我们明显无法先验地知晓$y_{n+1}$的值.

故我们先行一次普通Euler法,将其解集记为$\vec{y}$,再将它于式子8.3中执行$1$次即得改进的解.


Copyright AmachiInori 2017-2021. All Right Reserved.
Powered By Jekyll.
amachi.com.cn