又是新的一天, 继续开始有限元从0开始学习, 参考资料
Brenner S, Scott R. The mathematical theory of finite element methods[M]. Springer Science & Business Media, 2007.
昨天内容回顾
- 利用模型问题, 构造了其变分形式, 并且验证了当 f f f 和 u u u 的光滑性足够时, 变分问题能够得到边值问题对古典解.
- 阐述了 Ritz-Galerkin 框架的逼近过程, 并给出了简单的离散系统的解的存在唯一性的证明.(到后面可以直接使用 Lax-Milgram 定理).
- 给出了一维模型问题 Ritz-Galerkin 框架下的能量误差以及 L 2 L^{2} L2 范数误差估计的示范.
下面开始今天内容的学习.
0.4 分片多项式空间-有限元方法
前面介绍 Ritz-Galerkin 框架时, 没有给出子空间 S S S 的具体形式, 实际上对于选取不同的子空间, 可以给出不同的方法(谱方法, 有限元方法) 等, 这里主要考虑有限元方法, 在本章会给出第一个有限元基函数空间, 并且定义简单的插值算子, 以及给出插值误差估计.
继续考虑模型问题
{ − d 2 u d x 2 = f ∈ ( 0 , 1 ) , u ( 0 ) = 0 , u ′ ( 1 ) = 0. . \begin{cases} -\dfrac{d^{2}u}{dx^{2}} = f \in (0, 1), \\ u(0) = 0, \ u^{'}(1) = 0. \end{cases}. ⎩⎨⎧−dx2d2u=f∈(0,1),u(0)=0, u′(1)=0..
对应的弱形式
find u ∈ V s . t . , a ( u , v ) = ( f , v ) ∀ v ∈ V . ( WP ) \text{find} \ u \in V \ s.t., \ a(u, v) = (f, v) \ \forall v \in V. \ \color{red}{(\text{WP}}) find u∈V s.t., a(u,v)=(f,v) ∀v∈V. (WP)
以及 Ritz-Galerkin 方法的离散问题
find u s ∈ S ⊂ V s . t . , a ( u s , v ) = ( f , v ) ∀ v ∈ S ⊂ V . ( R-G ) \text{find} \ u_{s} \in S \subset V \ s.t., \ a(u_{s}, v) = (f, v) \ \forall v \in S \subset V. \ \color{red}{(\text{R-G}}) find us∈S⊂V s.t., a(us,v)=(f,v) ∀v∈S⊂V. (R-G)
其中, 空间 V V V 定义如下:
V = H ⋄ 1 ( 0 , 1 ) = { u ∈ H 1 ( 0 , 1 ) ∣ u ( 0 ) = 0 } . V = H^{1}_{\diamond}(0, 1) = \left\lbrace \left. u \in H^{1}(0, 1) \right| u(0) = 0 \right\rbrace. V=H⋄1(0,1)={
u∈H1(0,1)∣∣u(0)=0}.
前面只是抽像地给出了问题在子空间 S S S 下的计算, 下面定义第一个有限元空间:
记 0 = x 0 < x 1 < ⋯ < x n = 1 0 = x_{0} < x_{1} < \cdots < x_{n} = 1 0=x0<x1<⋯<xn=1 为区间 [ 0 , 1 ] [0, 1] [0,1] 上的剖分, 定义空间 S S S 为满足如下条件的函数 v v v 构成的线性空间:
- v ∈ C 0 [ 0 , 1 ] v \in C^{0}[0, 1] v∈C0[0,1],
- v ∣ [ x i − 1 , x i ] \left. v \right|_{[x_{i-1}, x_{i}]} v∣[xi−1,xi] 为线性多项式,
- v ( 0 ) = 0 v(0) = 0 v(0)=0
下面自然的会有两个问题
- 上面定义的 S S S 是不是 V V V 的子空间,
- 如何找出 S S S 的基函数, 应该取什么样的基函数,
这里先回答第二个问题, 对于第一个问题留在后面回答.
定义 S S S 的基函列 { ϕ i } i = 1 n \left\lbrace \phi_{i} \right\rbrace_{i = 1}^{n} {
ϕi}i=1n, 满足 ϕ i ( x j ) = δ i j \phi_{i}(x_{j}) = \delta_{ij} ϕi(xj)=δij , 这个性质称为插值性质.
引理: 满足上面条件的函数序列存在唯一, 并且构成子空间 S S S 的基.
注1 称上面的 { ϕ i } \left\lbrace \phi_{i} \right\rbrace {
ϕi} 为空间 S S S 的节点基函数, 称 { v ( x i ) } \left\lbrace v(x_{i}) \right\rbrace {
v(xi)} 为函数 v v v 在节点处的值.
定义 对 v ∈ C 0 ( [ 0 , 1 ] ) v \in C^{0}([0, 1]) v∈C0([0,1]), 定义插值算子 I : C 0 ( [ 0 , 1 ] ) → S I: C^{0}([0, 1]) \to S I:C0([0,1])→S
v I ( x ) : = I v ( x ) = ∑ i = 1 n v ( x i ) ϕ ( x ) . v_{I}(x):= Iv(x) = \sum\limits_{i = 1}^{n} v(x_{i})\phi(x). vI(x):=Iv(x)=i=1∑nv(xi)ϕ(x).
由上面插值算子的定义, 可以知道, 显然 ϕ i \phi_{i} ϕi 可以张成整个空间 S S S, 根据基函数的插值性质, 容易验证 { ϕ i } i = 1 n \left\lbrace \phi_{i} \right\rbrace_{i=1}^{n} {
ϕi}i=1n 是线性无关的.
引理: 设 v ∈ S v \in S v∈S, 则 v I = v v_{I} = v vI=v.
证明, 只要验证 ∀ x ∈ [ 0 , 1 ] , v I ( x ) = v ( x ) \forall x \in [0, 1], \ \ v_{I}(x) = v(x) ∀x∈[0,1], vI(x)=v(x) 即可.显然, 有
v I ( x i − 1 ) − v ( x i − 1 ) = 0 v I ( x i ) − v ( x i ) = 0 v_{I}(x_{i-1}) - v(x_{i-1}) = 0 \\ v_{I}(x_{i}) - v(x_{i}) = 0 vI(xi−1)−v(xi−1)=0vI(xi)−v(xi)=0
注意到 v I ( x ) , v ( x ) v_{I}(x), v(x) vI(x),v(x) 限制在每个区间上都是分片多项式. 因此 v I ( x ) = v ( x ) in [ x i − 1 , x i ] ∀ i v_{I}(x) = v(x) \ \text{in} \ [x_{i-1}, x_{i}] \ \forall \ i vI(x)=v(x) in [xi−1,xi] ∀ i, 从而 v I ( x ) = v ( x ) v_{I}(x) = v(x) vI(x)=v(x),
下面给出插值误差在能量范数下的误差估计.
定理: 设 h = max 1 ≤ i ≤ n ( x i − x i − 1 ) h = \max_{1 \leq i \leq n} \left( x_{i} - x_{i-1}\right) h=max