第六章中把几种典型的微分方程边值问题(包括不同类型的边界条件)化成了等价的变分问题或求泛函的极值问题,并介绍了用 Ritz - Galerkin 方法求解的思想和过程。但正如在最后一节中所指出的,这个方法存在着坐标函数选取技术、计算量大等缺点,因而不能获得广泛的使用。
数学在当代由工程技术人员发展起来,并在 60 年代末 70 年代初由数学家奠定严格的数学基础的有限元方法是克服上述困难的一种行之有效的计算方法,目前它已在结构力学、弹性力学、流体力学等方面得到了极大范围的使用。
本章将介绍用有限元方法求解椭圆型方程的一些基本思想、方法和过程,限于篇幅,本书将不涉及抛物型方程和双曲型方程的有限元解法,它们的基本思路是类似的。
本章中将用字母C(可带足标)来表示正常数,这些常数不依赖问题的真解、近似解和h(h是与空间剖分有关的一个量),并且有时用同一个C(带或不带足标)在不同的场合代表不同的常数,请读者阅读时加以注意。
基于变分问题的有限元方法
这里以问题
{−dxd(pdxdu)+ru=f,u(0)=0,dxdu(1)+au(1)=0x∈I,(7.1)
为例,介绍如何用有限元法求两点边值问题的近似解。
用有限元方法找问题(7.1)的近似解的过程可以分为六步。
Step1:将数学物理问题化为等价的变分问题。这一步已由第六章解决了,这里不再重复。为方便起见,将与问题(7.1)对应的变分问题再抄录一遍:
在QE1(Iˉ)中找一个函数u∗,使满足:
a(u∗,v)=f(v),∀v∈QE1(Iˉ),(7.2)
其中
Iˉ=[0,1];
a(u,v)=∫01[pdxdudxdv+ruv]dx+p(1)au(1)v(1);(7.3)
f(v)=∫01fvdx;(7.4)
QE1(Iˉ)={u∣u∈Q1(Iˉ),u(0)=0}.(7.5)
关于Q1(Iˉ)的定义见第六章,而函数p,r,f和常数a满足定理 6.1 的条件,可知解是存在的,但不属于本书讨论范围。
第二步,对求解区域进行剖分。
问题(7.1)是在区间Iˉ=[0,1]上求解,因而对区间的剖分是简单的。用I中满足:
0=x0<x1<x2<⋯<xn<xn+1=1
的n个结点xi(i=1,2,⋯,n)将区间I分割成n+1个互不包含的子区间:
Ii=[xi−1,xi](i=1,2,⋯,n+1),
每一个Ii称为单元。记
hi=xi−xi−1(i=1,2,⋯,n+1),
并记
h=max1≤i≤n+1hi.
Step3:形成单元上的形状函数。
通常将单元上的形状函数取为多项式。
我们知道,一个单变量的k次多项式需k+1个条件才能确定,所以,要将I中的n+1个单元上的形状函数都确定,需要(n+1)(k+1)个条件。特别地,当选取的形状函数为线性函数,即为一次多项式时,共需要2(n+1)个条件。
Step4:由形状函数构成试探函数空间Vh。
试探函数空间Vh应满足如下要求:
- (i) 问题(7.1)(即变分问题(7.2))的近似解uh将在Vh中寻找。
- (ii) 把Vh中的任一个函数uh限制在Ii(i=1,2,⋯,n+1)上时,它是Ii上的一个形状函数。
- (iii) Vh中的函数应满足一定的光滑性,至少应对任何函数uh,vh∈Vh,a(uh,vh)和f(vh)有意义。例如,取Vh为C01的一个子空间(光滑性的要求也可以提得更高一些,但此时将造成构造上的困难)。
对问题(7.1),可根据以上要求构造试探函数空间:Vh={uh∣uh∈C1(Iˉ),uh限制在Ii上是k次多项式,uh(0)=0}。要唯一确定Vh中的一个函数需要设置(n+1)(k+1)个条件。由于uh∈C1(Iˉ),即uh在x=xi处连续(i=1,2,⋯,n)且uh(0)=0,这共有n+1个限制条件,所以总共需设置(n+1)(k+1)−n=(n+1)k+1个条件,当k=1时,需要设置n+2个条件。
由于剖分时共设置了n+2个结点x0,x1,⋯,xn,xn+1,除了uh(x0)=0外,还留下了n+1个结点x1,x2,⋯,xn,xn+1,当k=1时,这些结点的个数与需设置的条件个数正好相等,因此很自然地会想到,把所要设置的条件放到结点x=xi(i=1,2,⋯,n+1)上。
定理 7.1 设uh(x)是Vh(1)上的一个函数,那么uh=uh(x)在Vh(1)中存在唯一函数uh(x),满足:
uh(xi)=ui(i=1,2,⋯,n+1),
反之,给定了n+1个数{ui}i=1n+1,
uh(x)={u1h1x,ui−1hixi−x+uihix−xi−1,x∈[0,x1],x∈[xi−1,xi],i=2,3,⋯,n+1,(7.7)