其实这个应该放在 FDM里面去记录的。只是我那部分写的太乱了。嗯,我每篇都写的很乱哈哈。
Both Euler's method are of first order, Crank-Nicholson (also called Trapezoidal method) is second order:
则通过克兰克-尼科尔森方法导出的差分方程是
第n步上采用前向欧拉方法与第n+1步上采用后向欧拉方法的平均值
(注意,克兰克-尼科尔森方法本身不是这两种方法简单地取平均,方程对解隐式依赖)
Crank-Nicholson是二阶的方法:
我暂时没有理解这个二阶的意思。
注意,这是一个隐式方法,需要求解代数方程组以得到时间域上的下一个u值。
- 如果偏微分方程是非线性的,中心差分后得到的方程依旧是非线性方程系统,因此在时间步上推进会涉及求解非线性代数方程组。
- 许多问题中,特别是线性扩散,代数方程中的矩阵是三对角的,通过三对角矩阵算法可以高效求解,这样,算法的时间复杂度由直接求解全矩阵的O(n^3)转化为 O(n)。
The local truncation error is
这个...和后向比较一下:
再和前向比较一下
设 f(t,y)=λy ,
网友评论