在讨论有限元法前,让我们先回顾一下有限差分法,这样有利于学习有限元法以及了解有限元法与有限差分法的差别所在。
我们要求解如方程式(2.1)的微分方程
有限差分法的思想是将微分方程离散化后求解,即用差分方程来近似微分方程。有趣的是,你有很多的选择。即使是一阶微分,也有几种选择。在微积分中,一阶导数的定义如方程(2.2)所示
有限差分法的思想是将 Δ x 取个有限值,这样,用来近似一阶导数的一阶差分可以用方程式(2.3~2.5)来定义
前向差分:
后向差分:
中心差分:
那么,上面的哪个近似要好一些呢?我们用近似的精度的阶数来描述,即上面公式中的 O ( h )或者 O ( h 2 ) 项。 O ( h) 表示误差在 h 的数量级,也就是说,这个近似有一阶精度,中心差分具有二阶精度。
要理解近似的精度,需要回顾一下 u ( x + h )的泰勒展开,如方程式(2.6、2.7)所示
方程式(2.6)减方程式(2.7)有
方程式(2.8)两边同时除以 2h 有
方程式(2.9)告诉我们中心差分近似一阶导数具有二阶精度。
要求解的方程式(2.1)中有二阶导数,对于二阶导数,用二阶差分来近似,即一阶差分的一阶差分。这样,二阶差分有如下可能,如方程式(2.1)所示,在后向差分的基础上做前向差分,即∆ F ∆ B ;或者在前向差分的基础上做后向差分∆ B ∆ F ;或者在中心差分的基础上再做中心差分∆ C ∆ C 。二阶差分的三种可能选择如图2.1所示。对于前两种二阶差分,结果是一样的,也是下面要采用的方案,做这样一个二阶差分,需要用到的是我们感兴趣的点及其左右相邻的点,一共涉及三个点值;但是如果采用中心差分的中心差分,则需要用到我们感兴趣的点及其左右相邻点与次相邻点,一共涉及五个点的值。希望我们的操作局限在一个紧凑的区域内,所以不采用在中心差分上再做中心差分的方案。
图2.1 二阶差分的三种可能选择
方程式(2.1)的解析解是
,将两个边界条件代入解析解可以确定常数C=0和
。
假设将区间[0 1]等分为6段,每段的长度
,如图2.2所示。由于编号为0和6的点
u
值已由边界条件给出,所以现在的未知数有5个,即
u
1
,
u
2
,
u
3
,
u
4
和
u
5
。对于这5个点,我们均可以写出近似方程式(2.1)的差分方程,例如在点1,差分方程如方程式(2.10)所示
如果将在这5个点的5个差分方程写成矩阵的形式,会得到方程式(2.11)
图2.2 区间[0 1]的有限差分法离散划分
求解这个线性方程组后可以得到有限差分法的解,图2.3画出了方程式(2.1)的解析解和有限差分法解。
图2.3 方程(2.1)的解析解和有限差分法解
如果现在将方程式(2.1)的边界条件改为方程式(2.12)
此时,方程的解析解为
。有限差分法的求解过程稍有变化。实现
u
′(0)=0的边界条件的方法也不是唯一的,下面看看如下两种方法。
方法一: 用前向差分来实现 u ′(0)=0,即 u 1 -u 0 =0 ,这样有 u 1 =u 0 ,我们知道前向差分近似一阶微分具有一阶精度。虽然此时 u 0 未知,但是我们知道 u 1 =u 0 ,所以未知数还是5个,但是线性方程组变为方程式(2.13)
方法二: 用中心差分来实现 u ′(0)=0,即 u 1 -u -1=0,这样需要引入编号为-1的虚拟点,它位于0点的左方 -h 处,从而有 u 1 =u -1,这种近似方法具有二阶精度。这时未知数中就需要加入 u 0 ,线性方程组变为方程式(2.14)
如果将上面线性方程组的第一行的两边同时除以2,方程式(2.14)变为方程式(2.15)
图2.4画出了此种边界条件下方程的解析解以及如上两种有限差分方法的解,从图中可以清楚地看到两种差分方法的精度。
图2.4 自由-固定边界条件下方程式(2.1)的解析解和有限差分法解