奇妙族是一类 Lagrange 型有限元, 它在力学, 建筑学和其它工学的模拟软件里是用得很多的. 对于计算数学爱好者, 它的构造也非常值得学习: 它充分利用了节点的位置关系, 使得不仅在较少的节点下能获得同样好的效果, 并在这个过程中, 把节点都安排在每个元的边界上, 从而规避了节点在内部时函数的光滑性难以控制的弊端.
我们从最简单的 \mathbb R^2 中的奇妙有限元开始. 在这之前, 先快速提一下有限元的定义 "3-字母":
一个在 \mathbb R^n 中的有限元是指 (K, \Sigma, P), 其中
- K 是 \mathbb R^n 中有者非空内部和 Lipschitz 边界的子集;
- \Sigma 是一些定义在 C^\infty(K) 上的线性无关的线性型 T_i, i = 1, \cdots, N 的集合, 这些线性型就是有限元的自由度;
- P 是函数 K \rightarrow \mathbb R 的空间, 它里面的函数满足如下性质: 给定实数 \alpha_i, i = 1,\cdots, N, 存在唯一的 p \in P 满足 T_i(p) = \alpha_i. 换句话说, P 里面有着一组对偶于 \{T_i\} 的基. 这个基就是有限元的基函数.
1) 现在请看下图中的正方形有限元:

这里, a_1 到 a_4 是正方形的的顶点, a_5 到 a_8 是四边中点, a_9 是正方形的中心. 为了方便, 我们先把图中这个正方形看成参考单元, 即单位正方形 [0,1]^2.
如果您想在正方形元上使用分段二次多项式的基函数, 您通常考虑空间 Q_2, 即变量 x_1 和 x_2 各次数不超过 2 的空间. 在这时, 由于
Q_2 = \text{span} \{1, x_1, x_2, x_1x_2, x_1^2, x_2^2, x_1^2 x_2, x_1x_2^2, x_1^2 x_2^2\},
\dim Q_2 = 9 (通常来讲, \mathbb R^n 上的 Q_k 的维数是 (k+1)^n, 很好直接证明), 您直接使用图中的九个点就是正常的. 但这时, 由于 a_9 在元的内部, Lagrange 型元所要求的 C^0 连续性在这个点不好控制; 因为如果是一个完整网格的话, 每个 a_9 都分别在每个正方形内部, 和其它正方形不容易联系.
可是, 这些节点和顶点之间是有中点的位置关系的. 具体的写出来的话: 让 \pi_1 和 \pi_2 分别表示取出第一和第二个直角坐标, 则对于中心
\pi_i(a_9) = \frac{\pi_i(a_1) + \pi_i(a_2) + \pi_i(a_3) + \pi_i(a_4)}{4}, \quad i = 1, 2;
而对于各边中点
\begin{aligned}
\pi_i(a_5) &= \frac{\pi_i(a_1) + \pi_i(a_2)}{2}, \quad i = 1, 2;\\
\pi_i(a_6) &= \frac{\pi_i(a_2) + \pi_i(a_3)}{2}, \quad i = 1, 2;\\
\pi_i(a_7) &= \frac{\pi_i(a_3) + \pi_i(a_4)}{2}, \quad i = 1, 2;\\
\pi_i(a_8) &= \frac{\pi_i(a_4) + \pi_i(a_1)}{2}, \quad i = 1, 2.\\
\end{aligned}
也就是说, 中心坐标和顶点坐标之间是线性关系, "系数" 是 4, 边中点坐标和顶点坐标之间也是线性关系, "系数" 是 2. 因此, 应该有一个形如
4 \times \text{ 中心 } + 1 \times \text{ 顶点 } - 2 \times \text{ 边中点 } = 0
的恒等式.
实际上确实是这样. 这个恒等式不仅在 \pi_i 作用下成立, 而且在任意多项式 p \in P_2 作用下都成立. 我们把它表述成
命题: 对每个 p \in P_2, 有恒等式 \psi(p) := 4p(a_9) + \sum_{i=1}^4 p(a_i) - 2\sum_{i=5}^8 p(a_i) = 0.
为了证明它, 只需要把 \psi 当成是 P_2^* (对偶空间) 中的元素, 而
P_2 = \text{span }\{1, x_1, x_2, x_1 x_2, x_1^2, x_2^2\},
验证 \psi 在每个基上为零就行了.
在这里, 您最终代入点 a_i = (a_{1i}, a_{2i}) 的具体坐标. 可是, 即使不把它看成单位正方形, 对于任意正方形, 证明还是成立的. 因为这个性质本身不是依赖于单位正方形, 而是正方形中中心和边中点和顶点的位置关系.
用这个恒等式, 就可以 "消去" a_9. 但是还是有一个矛盾: 恒等式对 P_2 型的多项式成立, 而 "消去" a_9 之后还有八个节点, 显多; 何况您本来是打算用 Q_2 型的多项式的.
所以, 转而使用这个多项式空间 \tilde Q_2 := \{ p \in Q_2: \psi(p) = 0\}.
我们来分析 \tilde Q_2 的维数. 具体的做法是用 Q_2 = P_2 + \{x_1^2 x_2\} + \{x_1 x_2^2\} + \{x_1^2 x_2^2\} (这里的 + 表示直和), 然后看 \psi 在多出来的那三个直因子上的作用情况. 直接演算可以发现 (您可以检验这一点): x_1^2 x_2 和 x_1 x_2^2 可以零化 \psi, 而 x_1^2 x_2^2 不能. 所以, \tilde Q_2 的维数正好是 8, 而 "消去" a_9 后正好有 8 个在边上的节点. 如果 \{p(a_i), i = 1,\cdots,8\} 可以作为自由度, 情况就完美了.
注意人们通常说的 p(a_i) 作为自由度的意思 --- 按照定义, 自由度应该是一个线性泛函. 所以这句话在这里的准确涵义是: 定义
T_i(p) = p(a_i), \quad i = 1,\cdots,8,
这些 T_i 是自由度.
为了验证它们是自由度, 需要证明这些 T_i 线性无关. 利用下列事实:
- 如果对每个 i 有 p(a_i) = p(a_{1i}, a_{2i}) = 0, 则 p = 0.
这一点很容易直接验证. 而 T_i(p) = p(a_i), 如果设 T = [T_1, \cdots, T_8]^T 为 \tilde Q_2 \rightarrow \mathbb R^8, 说明 T(p) = 0 \Rightarrow p = 0, 即 \ker T = \{0\}. T 进而是单射; 而一个有限维的单射就是双射. 所以对每个 y = [y_1, \cdots, y_8]^T \in \mathbb R^8, 存在一个 p 使得 T(p) = y.
现在作出线性组合
c_1L_1 + c_2L_2 + \cdots + c_8 L_8 = 0.
它等价于
c_1 y_1 + c_2 y_2 + \cdots + c_8 y_8 = 0\quad \text{ 对所有 $y_1,\cdots, y_8 \in \mathbb R$ 成立}.
这时候, 只要取 y_i 为 \mathbb R^8 中的第 i 个标准基向量, 就得到所有的系数 c_i = 0, 线性无关性得证. 从这里, 您可以根据对偶基的关系自然求出这种有限元的基函数.
另外, 此时的有限元空间当然是 C^0 的子空间. 因为只有公共边上有公共节点, 而在这些节点处, 两边的两个二次多项式取值相等; 也就是说, 两个二次多项式在三个点处相等, 从而它们恒等.