在前面的笔记里孤光一点萤:数值常微分方程-欧拉法与龙格-库塔法zhuanlan.zhihu.com
整理了常微分方程的一些数值解法。类似的方法可以拓展到解偏微分方程的问题,这里整理有限差分法的相关笔记。
计算机无法处理连续介质的无限多点,因此只能通过网格划分的方式,将带求解区域内连续分布的函数进行离散化,这样只用求解有限多的格点即可。同样地,在计算机里无法取极限求导数,只能通过离散化之后,用有限差商代替导数。由此,可以将带求解的偏微分方程转化为一组离散格点上的差分方程。解这组方程的问题,最终又归化为一个矩阵的求解问题,而矩阵求解这种“体力活”是计算机所擅长的。
由于我们使用划分的离散网格来近似连续的待求解空间,因此网格划分越密,求解越精确。同时,网格划分越密集,意味着最后得到的矩阵方程维度越高,计算量会非常庞大。这时候常用的高斯消元法(一个高斯消元的例子)往往会吃不消,需要使用松弛迭代法等。
首先,还是从单变量的方程开始。考虑函数
,其中
。将区间
分为N份,每一份就是步长
,则离散化后的格点坐标为:
。对于任意格点
:
一阶向前差分
一阶向后差分
一阶中心差分
由此可得:
一阶向前差商
一阶向后差商
一阶中心差商
二阶中心差商
现在拓展到二维情况:
例如对于方程