应用纳维-斯托克斯方程对导管中的气流进行模拟

如有疏漏,敬请指正。

对于一个常微分方程(ODE)

只有一些特殊形式的$f(x,y)$,才可以求它的解析解。对于大多数常微分方程的初值问题,只可以计算其数值解。

对区间$[a,b]$进行一个剖分,确定点列$\lbrace x_n,n=1,2, \cdots ,m \rbrace$,使用函数在这一组点列上的函数值$\lbrace y(x_n), n=1,2, \cdots ,m \rbrace$描述$y(x)$,求解$y(x_n)$的数值方法,是为有限差分方法。

约定$y(x_n)$是常微分方程准确解的值,$y_n$是$y(x_n)$的近似值。把区间分割为小区间的形式,称为数值离散方法。

除了有限差分方法外,有限元方法与有限体积方法也可以求解ODE的数值解。

欧拉公式

欧拉方法的图示,待求的曲线为蓝色,它的折线近似为红色。

对区间$[a,b]$进行等距剖分,记步长$h=\frac{b-a}{m}$,那么$\lbrace x_n=a+nh,n=0,1, \cdots ,m \rbrace$。可以使用差商近似导数来求解ODE。

  • 向前差商
    作出$y’(x)$在$x=x_n$处的一阶向前差商而由微分方程可得这样就可以得到计算$y_{n+1}$的向前欧拉公式不难发现,向前欧拉公式是一个显式求解格式。
  • 向后差商
    作出$y’(x)$在$x=x_{n+1}$处的一阶向后差商又因为$y’(x_{n+1})=f(x_{n+1},y(x_{n+1}))$,得到向后欧拉公式不难发现,这是一个隐式求解格式。设$f(x,y)$对$y$满足Lipschitz条件,那么可以使用Picard格式求解向后欧拉公式。在实务中,一般先用显式格式先算出初始值,再用隐式公式进行进一步的迭代。这样的过程被称为预估-校正过程。向后欧拉公式的预估-校正式如下所示:
  • 中心差商
    类似前面的方法,可得中心差商式为这不是一个稳定的格式,因此在实务中不予采用。

欧拉公式的局部截断误差

对$y(x_{n+1})$在$x_n$进行泰勒展开

不难发现局部截断误差是

欧拉公式的改进

对于方程$\frac{\mathbf{d}y}{\mathbf{d}x}=f(x,y)$在区间$[x_n,x_{n+1}]$上进行积分再移项

取梯形公式计算数值积分

得到梯形公式

使用显式欧拉公式与梯形公式组成预估-校正公式

这被称为改进的欧拉公式。

Runge-Kutta方法

在二阶Runge-Kutta方法中,使用$f(x,y)$在点$(x_n,y(x_n))$以及其附近的点$(x_n+ah,y(x_n)+bhf(x_n,y(x_n)))$上的值的线性组合得到数值公式

这时,需要满足

不难看出,这个方程组有无数多组解。

一个比较常用的二阶Runge-Kutta公式为

一个比较常用的三阶Runge-Kutta公式为

一个比较常用的四阶Runge-Kutta公式为

Runge-Kutta方法是一个在工程中应用很广泛的算法。

线性多步法

对于方程$\frac{\mathbf{d}y}{\mathbf{d}x}=f(x,y)$在区间$[x_{n-p},x_{n+1}]$上进行积分得

使用数值积分进行近似,从而构造线性多步格式。

如果使用积分节点$\lbrace x_n,x_{n-1}, \cdots ,x_{n-q} \rbrace$进行近似计算(详见插值型数值积分),那么这就是一个显式求解格式。如果积分节点是$\lbrace x_{n+1},x_n,x_{n-1}, \cdots ,x_{n+1-q} \rbrace$,那么这就是一个隐式求解格式。

把$p=0$的格式称为Adams公式。

常微分方程组的数值解法

对于一个常微分方程组,可以把解常微分方程的各种方法平行地应用到方程组的求解中。

例如,对于下面一个方程组

其改进的欧拉公式为

高阶常微分方程的数值方法

对于高阶常微分方程,可以将其转换为一阶常微分方程组。

考虑一个二阶常微分方程

可以将其转换为

对于更高阶的方程,也可以进行类似的转换。