计算机科学

首页 > 计算机科学

克兰克-尼科尔森方法

2018-09-06 14:25:21     所属分类:数值分析

克兰克-尼科尔森方法是一种数值分析的有限差分法,可用于数值求解热方程以及类似形式的偏微分方程[1]。它在时间方向上是隐式英语Explicit and implicit methods的二阶方法,可以写成隐式的龙格-库塔法,数值稳定。该方法诞生于20世纪,由约翰·克兰克英语John Crank菲利斯·尼科尔森英语Phyllis Nicolson发展[2]

可以证明克兰克-尼科尔森方法对于扩散方程(以及许多其他方程)是无条件稳定[3]。但是,如果时间步长Δt乘以热扩散率,再除以空间步长平方Δx2的值过大(根据冯诺依曼稳定性分析,以大于1/2为准),近似解中将存在虚假的振荡或衰减。基于这个原因,当要求大时间步或高空间分辨率的时候,往往会采用数值精确较差的后向欧拉法英语Backward Euler method进行计算,这样即可以保证稳定,又避免了解的伪振荡。

目录

  • 1 方法
  • 2 示例
    • 2.1 线性扩散问题
    • 2.2 一维多通道连接的扩散问题
    • 2.3 二维扩散问题
  • 3 应用在金融数学上
  • 4 相关条目
  • 5 参考资料

方法

克兰克-尼科尔森方法在空间域上的使用中心差分;而时间域上应用梯形公式,保证了时间域上的二阶收敛。例如,一维偏微分方程

,则通过克兰克-尼科尔森方法导出的差分方程是第n步上采用前向欧拉方法与第n+1步上采用后向欧拉方法的平均值(注意,克兰克-尼科尔森方法本身不是这两种方法简单地取平均,方程对解隐式依赖)。

(前向欧拉方法)
(后向欧拉方法)
(克兰克-尼科尔森方法)

对于F,通过中心差分方法使其在空间上是离散的。

注意,这是一个隐式方法,需要求解代数方程组以得到时间域上的下一个u值。如果偏微分方程是非线性的,中心差分后得到的方程依旧是非线性方程系统,因此在时间步上推进会涉及求解非线性代数方程组。许多问题中,特别是线性扩散,代数方程中的矩阵是三对角的,通过三对角矩阵算法可以高效求解,这样,算法的时间复杂度由直接求解全矩阵的转化为

示例

线性扩散问题

  • 线性扩散方程

通过克兰克-尼科尔森方法将得到离散方程

引入变量:

这是一个三对角问题,应用三对角矩阵算法(追赶法)即可得到,而不需要对矩阵直接求逆。

  • 准线性扩散方程

离散化后则会得到非线性方程系统。但是某些情况下,通过使用a的旧值,即用 替代,可将问题线性化。其他时候,也可能在保证稳定性的基础上使用显式方法估计

一维多通道连接的扩散问题

这种模型可以用于描述水流中含稳定污染流,但只有一维信息的情况。它可以简化为一维问题并得到有价值的信息。 可对水中污染溶质富集的问题进行建模,这种问题由三部分组成:已知的扩散方程(为常量),平流分量(即由速度场导致的系统在空间上的变化,表示为常量Ux),以及与纵向通道k旁流的相互作用。

其中C表示污染物的富集水平,下标NM分别对应上一通道和下一通道。

克兰克-尼科尔森方法(i对应位置,j对应时间)将以上偏微分方程中的每个部分变换为

现在引入以下常量用于简化计算:

把 <1>, <2>, <3>, <4>, <5>, <6>, α, βλ 代入 <0>. 把新时间项(j+1)代入到左边,当前时间项(j)代入到右边,将得到

第一个通道只能与下一个通道(M)有关系,因此表达式可以简化为:

同样地, 最后一个通道只与前一个通道(N)有关联,因此表达式可以简化为

为求解此线性方程组,需要知道边界条件在通道始端就已经给定了。

: 当前时间步某通道的初始条件

: 下一时间步某通道的初始条件

: 前一通道到当前时间步下某通道的初始条件

: 下一通道到当前时间步下某通道的初始条件

对于通道的末端最后一个节点,最方便的条件是是绝热近似,则

当且只当

时,这一条件才被满足。

以3个通道,5个节点为例,可以将线性系统问题表示为

其中,

需要清楚的是,AABB是由四个不同子矩阵组成的矩阵,

其中上述矩阵的的矩阵元对应于下一个矩阵和额外的4x4零矩阵。请注意,矩阵AABB的大小为12x12

  &  

这里的d矢量用于保证边界条件成立。在此示例中为12x1的矢量。

为了找到任意时间下污染物的聚集情况,需要对以下方程进行迭代计算:

二维扩散问题

将扩散问题延伸到二维的笛卡尔网格英语Cartesian grid,推导方程类似,但结果会是{{link-en|带形矩阵|Banded matrix||的方程式,不是三角矩阵,二维的热方程

假设网格满足的特性,即可通过克兰克-尼科尔森方法将得到离散方程

此方程可以再重组,配合柯朗数英语Courant number再进行简化

在克兰克-尼科尔森方法下,不需要为了稳定性而限制柯朗数的上限,不过为了数值稳定度,柯朗数仍不能太高,可以将方程式重写如下:

应用在金融数学上

许多的现象都可以用热方程(金融数学上称为扩散方程)来建模,因此克兰克-尼科尔森方法也可以用在这些领域中[4]。尤其金融衍生工具定价用的布莱克-休斯模型可以转换为热方程,因此期权定价的数值解可以用克兰克-尼科尔森方法求得。

因为期权定价若超过基本假设(例如改变股息)时,无法求得解析解,需要用上述方式求得。不过若是非平滑的最后条件(大部分的金融商品都是如此),克兰克-尼科尔森方法会有数值的震荡,无法用滤波方式平缓。在期权定价上会反映在履约价Γ的变动。因此,一开始几个步骤需要用其他比较不会震荡的方法(如全隐式有限差分法)。

相关条目

  • 金融数学
  • 梯形法 (微分方程)英语Trapezoidal rule (differential equations)

参考资料

  1. ^ Tuncer Cebeci. Convective Heat Transfer. Springer. 2002. ISBN 0-9668461-4-1. 
  2. ^ Crank, J.; Nicolson, P. A practical method for numerical evaluation of solutions of partial differential equations of the heat conduction type. Proc. Camb. Phil. Soc. 1947, 43 (1): 50–67. doi:10.1007/BF02127704. 
  3. ^ Thomas, J. W. Numerical Partial Differential Equations: Finite Difference Methods. Texts in Applied Mathematics 22. Berlin, New York: Springer-Verlag. 1995. ISBN 978-0-387-97999-1. . Example 3.3.2 shows that Crank–Nicolson is unconditionally stable when applied to .
  4. ^ Wilmott, P.; Howison, S.; Dewynne, J. The Mathematics of Financial Derivatives: A Student Introduction. Cambridge Univ. Press. 1995. ISBN 0-521-49789-2. 

上一篇:边界节点法
下一篇:近似
相关推荐