4. 二维Poisson方程弱形式推导

二维Poisson方程是有限元方法最经典的教学载体,它足够简单,能让我们把弱形式推导的每一步都看清楚;又足够典型,涵盖了椭圆型边值问题在有限元实现中几乎所有关键环节。本节以它为例,完整走一遍从强形式到弱形式、再到可编程离散形式的推导链条,并明确每一步背后的数学依据与工程含义。

一、强形式:控制方程与边界条件

设求解区域为 Ω(二维有界区域,边界记为 Γ = ∂Ω),未知场为 u(x, y)。二维Poisson方程的标准强形式写作:

-∇²u = f   在 Ω 内
 u = g_D    在 Γ_D 上(Dirichlet 边界)
 ∂u/∂n = g_N 在 Γ_N 上(Neumann 边界)

其中 ∇²u = ∂²u/∂x² + ∂²u/∂y² 为拉普拉斯算子,f 为给定的源项(例如热源强度、电荷密度),n 为边界外法向单位向量,Γ_D 与 Γ_N 构成整个边界且互不重叠(Γ_D ∪ Γ_N = Γ,Γ_D ∩ Γ_N = ∅)。

强形式要求 u 二阶连续可微,这一要求对工程问题往往过强:真实问题的解可能在材料界面处导数不连续,或者区域本身带有角点。弱形式的核心动机,就是把对 u 的光滑性要求从二阶降到一阶,从而扩大可求解问题的范围,同时为分片多项式逼近(有限元)铺平道路。

二、加权残值法与弱形式的出发点

强形式的残差定义为 R(u) = -∇²u - f。若 u 是精确解,则 R ≡ 0。加权残值法的思想是:不要求残差在每一点为零,而要求残差在某种“加权平均”意义下为零。取检验函数(权函数)v,令

∫_Ω (-∇²u - f) v dΩ = 0,  对所有允许的 v 成立

这一步把逐点成立的微分方程转化为积分意义下的等式。但此时式中仍含 u 的二阶导数,对 u 的光滑性要求并未降低。关键的一步是使用格林公式把导数“转移”到检验函数 v 上。

三、格林公式与分部积分:降低导数阶数

二维格林第一公式(即高维分部积分)为:

∫_Ω (∇u · ∇v) dΩ = ∮_Γ v (∂u/∂n) dΓ - ∫_Ω v ∇²u dΩ

移项即得 ∫_Ω (-∇²u) v dΩ = ∫_Ω ∇u · ∇v dΩ - ∮_Γ v (∂u/∂n) dΓ。将其代入加权残值式,得到:

∫_Ω ∇u · ∇v dΩ - ∮_Γ v (∂u/∂n) dΓ = ∫_Ω f v dΩ

此时对 u 的导数要求已从二阶降为一阶,这正是弱形式“弱”之所在。边界积分项 ∮_Γ v (∂u/∂n) dΓ 需要按边界类型拆分:在 Γ_N 上法向导数已知为 g_N,直接代入;在 Γ_D 上 u 已知,我们要求检验函数 v 在 Γ_D 上取零(v|_ΓD = 0),于是该段边界积分为零。整理后得到弱形式。

区域 Ω 与边界分区 Ω -∇²u = f Γ_D:u = g_D 检验函数 v = 0 Γ_N: ∂u/∂n = g_N 代入边界积分 n 推导链条 ① 强形式 -∇²u = f,u 需二阶连续可微 ② 加权残值 ∫(-∇²u - f)v dΩ = 0 ③ 格林公式 / 分部积分 ∫∇u·∇v dΩ - ∮v(∂u/∂n)dΓ = ∫fv dΩ ④ 弱形式 求 u ∈ H¹,u|_ΓD = g_D,使 a(u,v) = ∫∇u·∇v dΩ = ∫fv dΩ + ∫_ΓN g_N v dΓ ⑤ 函数空间 u ∈ H¹(Ω),v ∈ H¹₀(Ω)(在 Γ_D 上为零) 边界项 拆分

四、弱形式的最终表述

综合以上步骤,二维Poisson方程的弱形式可表述为:求 u ∈ H¹(Ω) 且满足 u|_ΓD = g_D,使得对所有 v ∈ H¹₀(Ω) 有

a(u, v) = L(v)

其中  a(u, v) = ∫_Ω ∇u · ∇v dΩ
      L(v)   = ∫_Ω f v dΩ + ∫_ΓN g_N v dΓ

这里 a(·,·) 是双线性型,L(·) 是线性泛函。注意 Neumann 边界条件被“自然”地吸收进了载荷项 L(v),无需在函数空间中强制满足,因此称为自然边界条件;而 Dirichlet 条件必须由试探空间强制满足,称为本质边界条件。这一区分直接决定了有限元程序中两类边界条件的不同施加方式:前者只需在右端项组装时加上边界积分,后者需要对刚度矩阵和载荷向量做行列处理(如置大数法或自由度消去法)。

五、函数空间选择:为什么是 H¹

弱形式中出现的最高阶导数是 ∇u 与 ∇v 的一阶导数,因此只需 u 的一阶导数平方可积,即 u ∈ L²(Ω) 且 ∇u ∈ [L²(Ω)]²。满足这一条件的函数构成 Sobolev 空间 H¹(Ω),其内积与范数为:

(u, v)_H1 = ∫_Ω (uv + ∇u·∇v) dΩ
||u||_H1² = ∫_Ω (u² + |∇u|²) dΩ

选择 H¹ 而非 C¹ 或 C² 的理由有三:其一,弱形式只涉及一阶导数,H¹ 恰好是使双线性型 a(u,v) 有定义的最小空间;其二,H¹ 是完备的希尔伯特空间,保证 Lax–Milgram 定理可用,从而弱解存在且唯一;其三,分片线性(P1)有限元形函数本身属于 H¹ 而不属于 C¹,H¹ 框架与有限元离散天然匹配。

对于 Dirichlet 边界,还需引入 H¹₀(Ω) = { v ∈ H¹(Ω) : v|_ΓD = 0 },作为检验函数空间。若 Γ_D = Γ(纯 Dirichlet 问题),则 H¹₀ 上的双线性型 a(u,v) 满足强制性(coercivity):存在常数 α > 0 使 a(v,v) ≥ α||v||²_H1,这正是解唯一性的保证。若 Γ_N = Γ(纯 Neumann 问题),a(v,v) 仅半正定,常数函数属于其零空间,此时解只在相差一个常数的意义下唯一,且需满足相容条件 ∫_Ω f dΩ + ∮_Γ g_N dΓ = 0。这一细节在程序实现中常表现为刚度矩阵奇异,必须通过约束一个参考点或使用罚函数处理。

六、从弱形式到离散:一个可操作的推导示例

取单位正方形 Ω = (0,1)×(0,1),设 f = 1,底边 y = 0 为 Dirichlet 边界 u = 0,其余三边为 Neumann 边界 ∂u/∂n = 0。将 u 与 v 用节点基函数展开 u ≈ Σ u_j φ_j,v 取 φ_i,代入弱形式得线性方程组:

K u = F
K_ij = ∫_Ω ∇φ_i · ∇φ_j dΩ
F_i  = ∫_Ω f φ_i dΩ + ∫_ΓN g_N φ_i dΓ

对 P1 三角形单元,单元刚度矩阵元素为 K^e_ij = A_e (∇φ_i · ∇φ_j),其中 A_e 为单元面积,梯度为常数向量。以规则网格剖分(每边 N 段,h = 1/N)为例,内部节点对应的刚度矩阵呈现经典的五点差分格式结构,这从侧面验证了弱形式推导与差分格式的一致性。组装完成后,对底边节点施加 u = 0,即可求解。判断结果是否合理,可检查:解在底边为零、在远离底边处趋于平缓、整体满足最大值原理(f > 0 时解非负),以及网格加密后节点解收敛。

推导中务必保持符号约定一致:本文取外法向 n 指向区域外部,格林公式中的边界积分项符号为“-∮ v(∂u/∂n)dΓ”。若教材采用内法向或不同的分部积分写法,边界项的符号会相应改变,但最终弱形式必须等价。实现时建议先用一维问题验证符号,再推广到二维。

本节推导链条的每一步都对应着后续程序实现中的一个具体模块:双线性型对应刚度矩阵组装,线性泛函对应载荷向量组装,H¹ 空间对应单元形函数的连续性要求,本质/自然边界条件对应两种不同的约束施加策略。理解这条链条,是读懂后续有限元程序结构的前提。