考虑如下一维波动方程:
其中,a为正常数,f(x,t)、φ(x)、ψ(x)、α(t)和β(t)为已知函数。这里的计算区域网格剖分过程和2.2.2小节完全一样,就不再赘述。在结点处讨论一维波动方程,有:
由泰勒公式,有:
将上两式代入式(2-35),并将小量O(τ2+h2)作为局部截断误差忽略掉,同时引入步长比s=aτ/h,并使用简写uki=u(xi,tk),得差分格式:
根据CFL条件,仅当步长比s≤1时,上式才是稳定的,误差也会被控制在较小的程度,证明从略。如图2-9所示为此差分格式所涉及结点的相对位置。要计算函数u在(xi,tk+1)处的取值,就需要用到函数u在(xi-1,tk)、(xi,tk)、(xi+1,tk)及(xi,tk-1)处的取值。
图2-9 差分格式(2-38)所涉及结点的相对位置
将差分格式(2-38)写为矩阵形式(2-39),注意最后一个向量的首尾元素已包含了边界条件:
(www.xing528.com)
值得一提的是,计算最开始时需要两个已知向量:(u10,u20,…,uN-20,uN-10)T和(u11,u21,…,uN-21,uN-11)T。第一个向量可直接通过初始条件获得,即ui0=φ(xi),第二个向量通常选用欧拉法来近似估算,即ui1=φ(xi)+τψ(xi)。下面给出一个实例。
根据式(2-39)求解上式,代码如下:
程序2-4
程序输出如图2-10所示,左图为数值解,右图为数值解与解析解u=sin(xt)之间的误差。代码中的步长比s=1,此时差分格式是稳定的,误差在10-5级。
图2-10 数值结果(左图)和误差(右图)
至此,针对三种常见偏微分方程的有限差分法原理和示例就介绍完了。实际上,有限差分法还有更多深入的内容,限于篇幅没有在此处提及。简单来讲,有限差分法的核心思路就是通过差商来近似偏微分方程中的偏导数(如:∂u/∂t、∂2u/∂t2、∂2u/∂x2),得到可直接迭代计算的差分格式,进而数值求解。这在过去几十年间都是处理偏微分问题的基本有效手段。
但是,有限差分法是一种局部的方法,即每个位置的导数(∂u/∂x、∂2u/∂x2……)都是由临近的几个点计算而来的。计算过程中所使用的矩阵都是包含很多0的稀疏矩阵也反映了这一点,因此它的精度不高。而后续章节即将讨论的谱方法是全局的算法,它使用所有已知点来计算某一处的导数,这样就大大提高了精度。
另外,在包含时间的偏微分问题中,由于CFL条件的限制,有限差分法不能采用较大的时间步长快速地得到结果。而在后文中,利用谱方法求解此类问题时,将使用变步长的ode系列函数计算∂u/∂t,无需选定固定的时间步长就能在较高精度的前提下尽快得到结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。