コンテンツにスキップ

有限要素法 II:三角形要素・補間誤差・L² 評価と放物型問題

対象読者: 本テーマの有限要素法 I(Galerkin 近似・Céa の補題)と、Sobolev 空間(弱微分・トレース定理)、楕円型方程式の弱解を学んだ人。2 次元の有限要素は未習でもよいです。

前提となる記事:有限要素法 I:Galerkin 近似・Céa の補題・1 次元の誤差評価、楕円型方程式の弱解と変分法:Lax–Milgram の定理・Gårding 不等式・Dirichlet 原理・直接法、Sobolev 空間:弱微分・埋め込み定理・Rellich のコンパクト性・トレース定理

生 Markdown

板の上の熱の広がりや、膜のたわみのような「平面の上の現象」を計算機で解くとき、領域を小さな三角形に分けて、各三角形の上では 1 次式(傾いた平面)で近似する方法があります。この記事は、そうして得た近似解が真の解からどれだけ離れるかを、三角形の大きさ hh を小さくしたときの速さとして数式で保証します。読み終えると、「三角形をつぶれた形にしてはいけない理由」「角のへこんだ領域で精度が落ちる理由」を、定数まで追って説明できるようになります。

  • 多角形領域を三角形に分け、各三角形の上で 1 次式になる連続関数の空間 VhV_h をとると、Vh⊂H01(Ω)V_h \subset H^1_0(\Omega) で、前章の Galerkin 近似の枠組みがそのまま使えます。
  • 三角形 TT(直径 hTh_T、内接円の直径 ρT\rho_T)の上の節点補間は ∥u−Ihu∥L2(T)≤hT2∣u∣H2(T)\|u - I_hu\|_{L^2(T)} \le h_T^2|u|_{H^2(T)}、∣u−Ihu∣H1(T)≤3hT2ρT∣u∣H2(T)|u - I_hu|_{H^1(T)} \le 3\frac{h_T^2}{\rho_T}|u|_{H^2(T)} を満たします。H1H^1 の評価には三角形がつぶれていないこと(形状正則性 hT/ρT≤σh_T/\rho_T \le \sigma)が要ります。
  • したがって、解が H2H^2 に属せば有限要素解の誤差は H1H^1 で O(h)O(h) です。L2L^2 で O(h2)O(h^2) になるには、双対問題(誤差そのものを右辺にした補助の方程式)の H2H^2 正則性(解が 2 階微分まで 2 乗可積分になること)が要ります。正方形では成り立ち(正弦級数で証明します)、L 字形の領域では成り立たず、次数が 2/32/3 と 4/34/3 に落ちます。
  • 要素の剛性行列の成分は向かい合う角の余接で書けます(−12cot⁡θ-\frac12\cot\theta)。辺に向かい合う 2 つの角の和が π\pi 以下なら非対角成分は 00 以下で、離散最大値原理(近似解の最大値が境界でとられ、内部に余計な山ができないこと)が成り立ちます。直角二等辺三角形の分割では剛性行列が 5 点差分に一致します。
  • 熱方程式では、誤差を「Ritz 射影(有限要素空間の中で、エネルギーの意味でいちばん解に近い関数をとること)の誤差」と「有限要素空間の中の差」に分ける方法(Wheeler)で、半離散解が L2L^2 で O(h2)O(h^2)、陰的 Euler・Crank–Nicolson による全離散解が O(h2+Δt)O(h^2 + \Delta t)・O(h2+Δt2)O(h^2 + \Delta t^2) であることが分かります。

前章では、Galerkin 近似の誤差が「有限要素空間で解をどれだけ近似できるか」に帰着すること(Céa の補題)を示し、1 次元でその近似誤差を評価しました。2 次元以上で有限要素法が力を発揮するのは、領域を三角形に分けることで、どんな多角形にも同じ手続きが使えるからです。

2 次元では、1 次元になかった問題が 3 つ現れます。

  1. 点での値. 節点補間には節点での値が要りますが、2 次元の H1H^1 関数は連続とは限りません。H2H^2 なら連続です。これを三角形の上で、定数を明示して示します。
  2. 要素の形. 区間には長さしかありませんが、三角形には形があります。細長くつぶれた三角形では補間した関数の勾配が悪くなります。
  3. 領域の角. 1 次元では弱解は常に H2H^2 に属しました。2 次元では、領域の角が凹んでいると解が H2H^2 に属さず、収束の次数が落ちます。

この章の誤差評価は、三角形の上の関数を「平均をとった 1 次の Taylor 多項式」と剰余に分ける方法で行います。この方法だと定数がすべて明示でき、三角形の形への依存がどこから来るかが見えます。弱解と Poincaré の不等式は 楕円型方程式の弱解、正則性の一般論は 楕円型方程式の正則性 にあります。

2. 三角形分割と区分 1 次の有限要素空間

Section titled “2. 三角形分割と区分 1 次の有限要素空間”

以下 Ω⊂R2\Omega \subset \mathbb{R}^2 は有界な多角形領域(境界が有限個の線分からなる連結な開集合)です。∥⋅∥\|\cdot\| と ⟨⋅,⋅⟩\langle\cdot,\cdot\rangle は L2(Ω)L^2(\Omega) のノルムと内積、H1(Ω)H^1(\Omega)、H01(Ω)H^1_0(\Omega)、H2(Ω)H^2(\Omega) は弱微分による Sobolev 空間(定義 2.1[Sobolev 空間])です。集合 SS の上で

∣u∣H1(S)=∥∇u∥L2(S),∣u∣H2(S)=∥D2u∥L2(S)=(∑i,j=12∥∂i∂ju∥L2(S)2)1/2|u|_{H^1(S)} = \|\nabla u\|_{L^2(S)},\qquad|u|_{H^2(S)} = \|D^2u\|_{L^2(S)} = \Bigl(\sum_{i,j=1}^{2}\|\partial_i\partial_ju\|_{L^2(S)}^2\Bigr)^{1/2}

と書きます。

定義 2.1(三角形分割・形状正則性・準一様性)↗

閉じた三角形(内部が空でないもの)の有限集合 Th\mathcal{T}_h が Ωˉ\bar\Omega の(適合する)三角形分割であるとは、Ωˉ=⋃T∈ThT\bar\Omega = \bigcup_{T\in\mathcal{T}_h}T で、相異なる 2 つの三角形の共通部分が、空集合か、共通の頂点 1 つか、共通の辺 1 つの全体であることをいう。三角形の頂点を節点、∂Ω\partial\Omega の上にない節点を内部の節点という。T∈ThT \in \mathcal{T}_h について

hT=diam⁡T (最長の辺の長さ),ρT=T の内接円の直径,h=max⁡ThTh_T = \operatorname{diam}T\ (\text{最長の辺の長さ}),\qquad\rho_T = T\ \text{の内接円の直径},\qquad h = \max_Th_T

とおく。分割の族 {Th}\{\mathcal{T}_h\} が、hh によらない定数 σ\sigma について hT/ρT≤σh_T/\rho_T \le \sigma(すべての TT)を満たすとき形状正則、さらに定数 γ\gamma について hT≥h/γh_T \ge h/\gamma を満たすとき準一様であるという。

適合性は、ある三角形の頂点が隣の三角形の辺の途中に来ること(ぶら下がった節点)を禁じます。形状正則性は、最小の角が 00 に近づかないことと同値です。内接円の中心から頂点までの距離は ρT/2sin⁡(θ/2)\frac{\rho_T/2}{\sin(\theta/2)}(θ\theta はその頂点の角)で hTh_T 以下なので、sin⁡θ2≥12σ\sin\frac\theta2 \ge \frac{1}{2\sigma} です。したがって 1 つの節点を共有する三角形の個数は nσ=π/arcsin⁡12σn_\sigma = \pi/\arcsin\frac{1}{2\sigma} 以下です。

定義 2.2(重心座標と区分 1 次の有限要素空間)↗

頂点 a0,a1,a2a_0, a_1, a_2 の三角形 TT について、λi(aj)=δij\lambda_i(a_j) = \delta_{ij} を満たす 1 次式 λ0,λ1,λ2\lambda_0, \lambda_1, \lambda_2 を重心座標という。λ0+λ1+λ2=1\lambda_0 + \lambda_1 + \lambda_2 = 1 で、TT の上で λi≥0\lambda_i \ge 0 である。

Xh={v∈C(Ωˉ):v∣T は 1 次式 (T∈Th)},Vh={v∈Xh:∂Ω の上で v=0}X_h = \{v \in C(\bar\Omega) : v|_T\ \text{は 1 次式}\ (T \in \mathcal{T}_h)\},\qquad V_h = \{v \in X_h : \partial\Omega\ \text{の上で}\ v = 0\}

を区分 1 次の(連続な)有限要素空間という。節点 ziz_i ごとに φi(zj)=δij\varphi_i(z_j) = \delta_{ij} を満たす φi∈Xh\varphi_i \in X_h を節点基底という。Ωˉ\bar\Omega 上の連続関数 uu に対し Ihu=∑iu(zi)φi∈XhI_hu = \sum_iu(z_i)\varphi_i \in X_h を節点補間という。TT の上では Ihu=∑i=02u(ai)λiI_hu = \sum_{i=0}^{2}u(a_i)\lambda_i である。

1 次式は 3 頂点での値で決まり、辺の上では両端の値で決まります。したがって、節点での値を任意に与えると、三角形ごとの 1 次式が辺の上で一致して連続な関数になり、XhX_h の元がただ 1 つ定まります。VhV_h の次元は内部の節点の個数です。uu が ∂Ω\partial\Omega の上で 00 なら Ihu∈VhI_hu \in V_h です。TT の上で φi\varphi_i は重心座標 λi\lambda_i に一致するので、TT の上で ∣Ihu∣≤max⁡j∣u(aj)∣|I_hu| \le \max_j|u(a_j)| です。

適合する分割適合しない分割(ぶら下がった節点)
左は適合する分割で、隣り合う三角形は辺全体を共有する。右は一方の辺の途中に別の三角形の頂点が来ていて(ぶら下がった節点。白丸)、適合しない。この点での値は大きな三角形の辺の上の値と一致するとは限らず、連続な関数にならない。

次の補題は、三角形の境目で値がつながってさえいれば、区分的に滑らかな関数は折れ目をまたいでも弱微分をもつ、ということを述べています。証明は 2 段で、まず水平な線に沿った 1 変数の部分積分で弱微分を確かめ、次に、境界で 00 の関数の絶対値の小さい部分を切り落とした関数で近似して H01(Ω)H^1_0(\Omega) に入ることを示します。

補題 2.3(区分的に滑らかな連続関数は H¹ に属する)✓

v∈C(Ωˉ)v \in C(\bar\Omega) が、三角形分割 Th\mathcal{T}_h の各三角形 TT の上で C1C^1 級(TT の内部で C1C^1 級で、∇v\nabla v が TT まで連続に延びる)とする。このとき v∈H1(Ω)v \in H^1(\Omega) で、弱微分は三角形ごとの導関数に(ほとんどいたるところ)一致する。さらに ∂Ω\partial\Omega の上で v=0v = 0 ならば v∈H01(Ω)v \in H^1_0(\Omega) である。特に Xh⊂H1(Ω)X_h \subset H^1(\Omega)、Vh⊂H01(Ω)V_h \subset H^1_0(\Omega) である。

証明(補題 2.3)

弱微分. g1g_1 を、各三角形の内部で ∂1v\partial_1v に等しい関数とします(辺の上は測度 00 なので定めなくてよく、g1g_1 は有界です)。φ∈Cc∞(Ω)\varphi \in C_c^\infty(\Omega) をとり、w=vφw = v\varphi を Ω\Omega の外で 00 とおくと、ww は R2\mathbb{R}^2 上の連続関数で台はコンパクトです。x2x_2 を、どの節点の第 2 座標とも異なる値に固定します(除かれる x2x_2 は有限個)。水平線 R×{x2}\mathbb{R}\times\{x_2\} は、水平な辺を含まず、各辺と高々 1 点で交わります。したがって x1↦w(x1,x2)x_1 \mapsto w(x_1, x_2) は連続で、有限個の点を除いて C1C^1 級、導関数は g1φ+v ∂1φg_1\varphi + v\,\partial_1\varphi(Ω\Omega の外では 00)です。区分的に C1C^1 級の連続関数には微積分学の基本定理が区間ごとに使え、連続性から端点の値が打ち消し合うので、台がコンパクトであることから

∫R(g1φ+v ∂1φ)(x1,x2) dx1=0\int_{\mathbb{R}}\bigl(g_1\varphi + v\,\partial_1\varphi\bigr)(x_1, x_2)\,dx_1 = 0

です。被積分関数は有界で台がコンパクトなので、定理 3.4[直積測度と Fubini–Tonelli の定理] により x2x_2 について積分でき、∫Ωv ∂1φ dx=−∫Ωg1φ dx\int_\Omega v\,\partial_1\varphi\,dx = -\int_\Omega g_1\varphi\,dx です。これは g1g_1 が vv の弱微分 ∂1v\partial_1v であること(定義 2.1[Sobolev 空間])を示しています。∂2\partial_2 も同様で、vv、g1g_1、g2g_2 は有界なので v∈H1(Ω)v \in H^1(\Omega) です。

境界で 00 の場合. ε>0\varepsilon > 0 に対し vε=(v−ε)+−(−v−ε)+v_\varepsilon = (v - \varepsilon)^+ - (-v - \varepsilon)^+ とおきます。補題 6.1[楕円型正則性と最大値原理] から vε∈H1(Ω)v_\varepsilon \in H^1(\Omega) で、∇vε=1{∣v∣>ε}∇v\nabla v_\varepsilon = \mathbf{1}_{\{|v| > \varepsilon\}}\nabla v(a.e.)です。集合 {∣v∣≥ε}\{|v| \ge \varepsilon\} は Ωˉ\bar\Omega の閉部分集合で ∂Ω\partial\Omega と交わらないので、Ω\Omega のコンパクト部分集合です。vεv_\varepsilon の台はそこに含まれるので、補題 2.1[楕円型正則性と最大値原理] の最後の主張から vε∈H01(Ω)v_\varepsilon \in H^1_0(\Omega) です。∣v−vε∣≤ε|v - v_\varepsilon| \le \varepsilon なので ∥v−vε∥→0\|v - v_\varepsilon\| \to 0 です。また ∇(v−vε)=1{∣v∣≤ε}∇v\nabla(v - v_\varepsilon) = \mathbf{1}_{\{|v| \le \varepsilon\}}\nabla v は、ε→0\varepsilon \to 0 で各点で 1{v=0}∇v\mathbf{1}_{\{v = 0\}}\nabla v に収束し、∣∇v∣|\nabla v| で抑えられるので、優収束定理から ∥∇(v−vε)∥2→∫{v=0}∣∇v∣2dx\|\nabla(v - v_\varepsilon)\|^2 \to \int_{\{v=0\}}|\nabla v|^2dx です。補題 6.1[楕円型正則性と最大値原理] を vv と −v-v に使うと ∇v=∇v+−∇(−v)+=1{v≠0}∇v\nabla v = \nabla v^+ - \nabla(-v)^+ = \mathbf{1}_{\{v \ne 0\}}\nabla v(a.e.)なので、この積分は 00 です。したがって vε→vv_\varepsilon \to v(H1H^1)で、H01(Ω)H^1_0(\Omega) は閉じているので v∈H01(Ω)v \in H^1_0(\Omega) です。

モデル問題. f∈L2(Ω)f \in L^2(\Omega) に対する Poisson 方程式 −Δu=f-\Delta u = f、u∣∂Ω=0u|_{\partial\Omega} = 0 の弱解は

u∈H01(Ω),a(u,v):=⟨∇u,∇v⟩=⟨f,v⟩(v∈H01(Ω))u \in H^1_0(\Omega),\qquad a(u,v) := \langle\nabla u, \nabla v\rangle = \langle f, v\rangle\quad(v \in H^1_0(\Omega))

です(定義 3.1[楕円型方程式の弱解と変分法])。Ω\Omega が幅 dd の帯に含まれるとき、Poincaré の不等式 ∥v∥≤d∥∇v∥\|v\| \le d\|\nabla v\|(補題 2.1[楕円型方程式の弱解と変分法])から、∥v∥V=∥∇v∥\|v\|_V = \|\nabla v\| は V=H01(Ω)V = H^1_0(\Omega) のノルムで、aa はこのノルムの内積そのものです(M=α=1M = \alpha = 1)。弱解はただ 1 つ存在します(定理 4.2[楕円型方程式の弱解と変分法])。補題 2.3 から Vh⊂VV_h \subset V なので、有限要素解 uh∈Vhu_h \in V_h(a(uh,vh)=⟨f,vh⟩a(u_h, v_h) = \langle f, v_h\rangle)について、前章の適切性(定理 2.3[有限要素法 I])、Galerkin 直交性(補題 2.4[有限要素法 I])、Céa の補題(定理 2.5[有限要素法 I])が成り立ちます。aa が内積なので、Céa の補題は

∥∇(u−uh)∥=min⁡vh∈Vh∥∇(u−vh)∥\|\nabla(u - u_h)\| = \min_{v_h \in V_h}\|\nabla(u - v_h)\|

という等式になります。残る仕事は右辺の評価です。

3. 三角形の上の H² 関数:連続性と 1 次式による近似

Section titled “3. 三角形の上の H² 関数:連続性と 1 次式による近似”

節点補間を定義するには、uu の点での値が要ります。全空間 Rn\mathbb{R}^n では s>n/2s > n/2 のとき HsH^s の関数が連続です(定理 4.1[Sobolev 空間])が、ここでは三角形の上で、定数が三角形の大きさにどうよるかまで必要なので、直接証明します。

定義 3.1(滑らかな関数の H² 極限)↗

SS を閉じた三角形または Ωˉ\bar\Omega とする。SS の近傍で定義された C2C^2 級関数の SS への制限の全体を C2(S)C^2(S) と書く。SS の内部の上の H2H^2 関数のうち、C2(S)C^2(S) の関数列の H2H^2 ノルムでの極限になっているものの全体を H2(S)\mathcal{H}^2(S) と書く。∂Ω\partial\Omega の上で 00 である C2(Ωˉ)C^2(\bar\Omega) の関数列の H2(Ω)H^2(\Omega) ノルムでの極限になっているものの全体を HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) と書く。

注意 3.2(この定義について)

三角形や凸多角形のように境界が Lipschitz 連続な領域では、滑らかな関数が H2H^2 で稠密なので H2(S)\mathcal{H}^2(S) は H2H^2 全体に一致し、凸多角形では HD2(Ω)=H2(Ω)∩H01(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) = H^2(\Omega)\cap H^1_0(\Omega) です(Grisvard、参考文献)。この章では、稠密性の一般論を使わずに済むよう、補間誤差の評価を H2\mathcal{H}^2 の元について述べます。正方形の上の Poisson 方程式の弱解が HD2\mathcal{H}^2_{\mathrm{D}} に属することは 補題 5.2 で直接示します。HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) は H2(Ω)H^2(\Omega) の閉部分空間で、補題 2.3 から H01(Ω)H^1_0(\Omega) に含まれます。

この節の目標は、三角形の上の H2H^2 関数 uu を「1 次式 + 小さな剰余」に分けることです。1 次式は節点補間でそのまま再現されるので、残るのは剰余の大きさだけで、これを 2 階導関数で抑えます。次の補題の証明は、線分に沿った 1 変数の Taylor の公式を、出発点 yy について TT の上で平均する、という流れです。変数変換 z=y+t(x−y)z = y + t(x - y) は、平均に現れる yy を、xx に向かって縮めた三角形の上の変数 zz に取り替えて、∣D2u(z)∣|D^2u(z)| の積分にまとめるためのものです。

補題 3.3(三角形の上の H² 関数の連続性と平均 Taylor 多項式)✓

TT を閉じた三角形(面積 ∣T∣|T|、直径 hTh_T)とし、u∈C2(T)u \in C^2(T) に対し

QTu(x)=1∣T∣∫T(u(y)+∇u(y)⋅(x−y)) dyQ_Tu(x) = \frac{1}{|T|}\int_T\bigl(u(y) + \nabla u(y)\cdot(x - y)\bigr)\,dy

とおく。QTuQ_Tu は xx の 1 次式で、uu が 1 次式なら QTu=uQ_Tu = u である。すべての x∈Tx \in T について

∣u(x)−QTu(x)∣≤hT22∣T∣1/2∣u∣H2(T),∣u(x)∣≤1∣T∣1/2(∥u∥L2(T)+hT∣u∣H1(T)+hT22∣u∣H2(T))|u(x) - Q_Tu(x)| \le \frac{h_T^2}{2|T|^{1/2}}|u|_{H^2(T)},\qquad|u(x)| \le \frac{1}{|T|^{1/2}}\Bigl(\|u\|_{L^2(T)} + h_T|u|_{H^1(T)} + \frac{h_T^2}{2}|u|_{H^2(T)}\Bigr)

が成り立つ。したがって、u∈H2(T)u \in \mathcal{H}^2(T) は TT の上で連続な代表元をもち、QTuQ_Tu を同じ式で定めれば、その代表元について上の 2 つの評価が成り立つ。

証明(補題 3.3)

QTuQ_Tu が 1 次式であることは定義から、1 次式 uu では u(y)+∇u⋅(x−y)=u(x)u(y) + \nabla u\cdot(x - y) = u(x) なので QTu=uQ_Tu = u です。

積分表示. u∈C2(T)u \in C^2(T)、x,y∈Tx, y \in T とし、ϕ(t)=u(y+t(x−y))\phi(t) = u(y + t(x - y))(0≤t≤10 \le t \le 1。TT は凸なので線分は TT に含まれます)とおきます。部分積分で ∫01(1−t)ϕ′′(t) dt=−ϕ′(0)+ϕ(1)−ϕ(0)\int_0^1(1 - t)\phi''(t)\,dt = -\phi'(0) + \phi(1) - \phi(0) なので

u(x)=u(y)+∇u(y)⋅(x−y)+∫01(1−t) (x−y)TD2u(y+t(x−y))(x−y) dtu(x) = u(y) + \nabla u(y)\cdot(x - y) + \int_0^1(1 - t)\,(x - y)^{\mathsf{T}}D^2u\bigl(y + t(x - y)\bigr)(x - y)\,dt

です。yy について TT の上で平均すると u(x)=QTu(x)+R(x)u(x) = Q_Tu(x) + R(x)、

∣R(x)∣≤1∣T∣∫01(1−t)∫T∣x−y∣2 ∣D2u(y+t(x−y))∣ dy dt|R(x)| \le \frac{1}{|T|}\int_0^1(1 - t)\int_T|x - y|^2\,\bigl|D^2u\bigl(y + t(x - y)\bigr)\bigr|\,dy\,dt

です(∣D2u∣|D^2u| は成分の 2 乗和の平方根で、∣ξTD2u ξ∣≤∣D2u∣∣ξ∣2|\xi^{\mathsf{T}}D^2u\,\xi| \le |D^2u||\xi|^2)。

変数変換. t∈[0,1)t \in [0, 1) を固定し、z=y+t(x−y)=x+(1−t)(y−x)z = y + t(x - y) = x + (1 - t)(y - x) とおきます。y↦zy \mapsto z は TT から Tt=x+(1−t)(T−x)T_t = x + (1 - t)(T - x) への全単射で、TT が凸で x∈Tx \in T なので Tt⊂TT_t \subset T、また dy=(1−t)−2dzdy = (1-t)^{-2}dz、x−y=(x−z)/(1−t)x - y = (x - z)/(1 - t) です。したがって内側の積分は (1−t)−4∫Tt∣x−z∣2∣D2u(z)∣ dz(1-t)^{-4}\int_{T_t}|x - z|^2|D^2u(z)|\,dz で、定理 3.3[直積測度と Fubini–Tonelli の定理] により積分の順序を交換して

∣R(x)∣≤1∣T∣∫T∣x−z∣2∣D2u(z)∣(∫01(1−t)−31Tt(z) dt)dz|R(x)| \le \frac{1}{|T|}\int_T|x - z|^2|D^2u(z)|\Bigl(\int_0^1(1 - t)^{-3}\mathbf{1}_{T_t}(z)\,dt\Bigr)dz

です。z∈Ttz \in T_t なら ∣z−x∣≤(1−t)hT|z - x| \le (1 - t)h_T、すなわち 1−t≥∣z−x∣/hT1 - t \ge |z - x|/h_T なので、s=1−ts = 1 - t として括弧の中は ∫∣z−x∣/hT1s−3ds≤hT22∣z−x∣2\int_{|z-x|/h_T}^{1}s^{-3}ds \le \frac{h_T^2}{2|z - x|^2} 以下です。したがって、Cauchy–Schwarz の不等式から

∣R(x)∣≤hT22∣T∣∫T∣D2u(z)∣ dz≤hT22∣T∣1/2∣u∣H2(T)|R(x)| \le \frac{h_T^2}{2|T|}\int_T|D^2u(z)|\,dz \le \frac{h_T^2}{2|T|^{1/2}}|u|_{H^2(T)}

です。これが第 1 の評価です。

第 2 の評価. ∣x−y∣≤hT|x - y| \le h_T と Cauchy–Schwarz の不等式から ∣QTu(x)∣≤1∣T∣(∣T∣1/2∥u∥L2(T)+hT∣T∣1/2∣u∣H1(T))|Q_Tu(x)| \le \frac{1}{|T|}\bigl(|T|^{1/2}\|u\|_{L^2(T)} + h_T|T|^{1/2}|u|_{H^1(T)}\bigr) で、∣u(x)∣≤∣QTu(x)∣+∣R(x)∣|u(x)| \le |Q_Tu(x)| + |R(x)| です。

H2(T)\mathcal{H}^2(T) の元. un∈C2(T)u_n \in C^2(T)、un→uu_n \to u(H2H^2)とします。第 2 の評価を un−umu_n - u_m に使うと、(un)(u_n) は TT の上で一様に Cauchy 列をなすので、連続関数 u~\tilde u に一様収束します。un→uu_n \to u は L2L^2 でも成り立つので u~=u\tilde u = u(a.e.)です。QTun→QTuQ_Tu_n \to Q_Tu は一様収束(係数が unu_n、∇un\nabla u_n の積分で、L2L^2 収束から収束する)なので、2 つの評価は極限でも成り立ちます。

2 つ目の不等式が、三角形の上の Sobolev の埋め込み H2⊂CH^2 \subset C です。2 次元であることは、∫s−3ds\int s^{-3}ds の特異性 ∣z−x∣−2|z - x|^{-2} が、分子の ∣x−z∣2|x - z|^2 とちょうど打ち消し合うところに現れています(3 次元では dy=(1−t)−3dzdy = (1-t)^{-3}dz となって ∣z−x∣−1|z - x|^{-1} が残り、別の評価が要ります)。QTuQ_Tu は、各点 yy のまわりの 1 次の Taylor 多項式を yy について平均したもので、平均 Taylor 多項式と呼ばれます。

勾配の誤差には、平均が 00 の関数についての Poincaré の不等式を使います。

補題 3.4(凸集合の上の Poincaré の不等式)✓

TT を閉じた三角形、v∈C1(T)v \in C^1(T)、vˉ=1∣T∣∫Tv dx\bar v = \frac{1}{|T|}\int_Tv\,dx とすると

∥v−vˉ∥L2(T)≤2 hT∥∇v∥L2(T).\|v - \bar v\|_{L^2(T)} \le \sqrt2\,h_T\|\nabla v\|_{L^2(T)}.
証明(補題 3.4)

x,y∈Tx, y \in T について v(x)−v(y)=∫01∇v(y+t(x−y))⋅(x−y) dtv(x) - v(y) = \int_0^1\nabla v(y + t(x - y))\cdot(x - y)\,dt なので、Cauchy–Schwarz の不等式から ∣v(x)−v(y)∣2≤hT2∫01∣∇v(y+t(x−y))∣2dt|v(x) - v(y)|^2 \le h_T^2\int_0^1|\nabla v(y + t(x - y))|^2dt です。xx、yy について積分し、tt の範囲を 2 つに分けます。

t∈[12,1]t \in [\frac12, 1] では、yy を固定して z=y+t(x−y)z = y + t(x - y) と変換すると、x↦zx \mapsto z は TT から y+t(T−y)⊂Ty + t(T - y) \subset T への全単射で dx=t−2dz≤4 dzdx = t^{-2}dz \le 4\,dz なので、∫T∣∇v(y+t(x−y))∣2dx≤4∥∇v∥L2(T)2\int_T|\nabla v(y + t(x-y))|^2dx \le 4\|\nabla v\|_{L^2(T)}^2 です。yy と tt について積分すると 12⋅∣T∣⋅4∥∇v∥2=2∣T∣∥∇v∥2\frac12\cdot|T|\cdot4\|\nabla v\|^2 = 2|T|\|\nabla v\|^2 以下です。t∈[0,12]t \in [0, \frac12] では、xx を固定して z=x+(1−t)(y−x)z = x + (1-t)(y - x) と変換すれば dy=(1−t)−2dz≤4 dzdy = (1-t)^{-2}dz \le 4\,dz で、同じ評価が得られます。合わせて

∫T∫T∣v(x)−v(y)∣2dx dy≤4hT2∣T∣ ∥∇v∥L2(T)2\int_T\int_T|v(x) - v(y)|^2dx\,dy \le 4h_T^2|T|\,\|\nabla v\|_{L^2(T)}^2

です。左辺は、展開すると 2∣T∣∫Tv2−2(∫Tv)2=2∣T∣∫T(v−vˉ)2dx2|T|\int_Tv^2 - 2(\int_Tv)^2 = 2|T|\int_T(v - \bar v)^2dx なので、∥v−vˉ∥L2(T)2≤2hT2∥∇v∥L2(T)2\|v - \bar v\|_{L^2(T)}^2 \le 2h_T^2\|\nabla v\|_{L^2(T)}^2 です。

補題 3.5(1 次式による近似(Bramble–Hilbert の補題の 1 次の場合))✓

TT を閉じた三角形、u∈H2(T)u \in \mathcal{H}^2(T) とする。補題 3.3 の 1 次式 p=QTup = Q_Tu は

∥u−p∥L∞(T)≤hT22∣T∣1/2∣u∣H2(T),∥u−p∥L2(T)≤hT22∣u∣H2(T),∣u−p∣H1(T)≤2 hT∣u∣H2(T)\|u - p\|_{L^\infty(T)} \le \frac{h_T^2}{2|T|^{1/2}}|u|_{H^2(T)},\qquad\|u - p\|_{L^2(T)} \le \frac{h_T^2}{2}|u|_{H^2(T)},\qquad|u - p|_{H^1(T)} \le \sqrt2\,h_T|u|_{H^2(T)}

を満たす。

証明(補題 3.5)

まず u∈C2(T)u \in C^2(T) とします。第 1 の評価は 補題 3.3 で、第 2 の評価は ∥w∥L2(T)≤∣T∣1/2∥w∥L∞(T)\|w\|_{L^2(T)} \le |T|^{1/2}\|w\|_{L^\infty(T)} から従います。QTuQ_Tu の定義を xx で微分すると ∇(QTu)=1∣T∣∫T∇u(y) dy\nabla(Q_Tu) = \frac{1}{|T|}\int_T\nabla u(y)\,dy で、これは ∇u\nabla u の平均です。∂1u\partial_1u、∂2u∈C1(T)\partial_2u \in C^1(T) のそれぞれに 補題 3.4 を使うと

∣u−p∣H1(T)2=∑i=12∥∂iu−∂iu‾∥L2(T)2≤2hT2∑i=12∥∇∂iu∥L2(T)2=2hT2∣u∣H2(T)2|u - p|_{H^1(T)}^2 = \sum_{i=1}^{2}\|\partial_iu - \overline{\partial_iu}\|_{L^2(T)}^2 \le 2h_T^2\sum_{i=1}^{2}\|\nabla\partial_iu\|_{L^2(T)}^2 = 2h_T^2|u|_{H^2(T)}^2

です。u∈H2(T)u \in \mathcal{H}^2(T) のときは、un∈C2(T)u_n \in C^2(T)、un→uu_n \to u(H2H^2)について評価を書き、極限をとります(un→uu_n \to u は 補題 3.3 から一様収束でもあり、QTun→QTuQ_Tu_n \to Q_Tu は一様かつ H1H^1 で収束します)。

Bramble–Hilbert の補題は、ふつう「1 次式を法とする商ノルムが H2H^2 の半ノルムと同値である」という形で述べられ、Rellich のコンパクト性定理による背理法で証明されます。その証明は短い代わりに定数の値が分かりません。ここでは 1 次式 pp を具体的に作ったので、定数が hTh_T と ∣T∣|T| だけで書けています。右辺に ∥u∥\|u\| や ∣u∣H1|u|_{H^1} が現れず、2 階の導関数だけで抑えられていることが要点です。

三角形の上の量を計算するときは、1 つの参照三角形 T^\hat T(頂点 (0,0)(0,0)、(1,0)(1,0)、(0,1)(0,1))に移すのが便利です。T^\hat T の直径は h^=2\hat h = \sqrt2、内接円の直径は ρ^=2−2\hat\rho = 2 - \sqrt2、面積は 12\frac12 です。頂点 a0,a1,a2a_0, a_1, a_2 の三角形 TT に対し、B=(a1−a0  a2−a0)B = (a_1 - a_0\ \ a_2 - a_0)(2×22 \times 2 行列)、F(x^)=Bx^+a0F(\hat x) = B\hat x + a_0 とすると、FF は T^\hat T を TT に写すアフィン写像で、∣T∣=12∣det⁡B∣|T| = \frac12|\det B| です。

補題 4.1(アフィン写像による半ノルムの変換)✓

F(x^)=Bx^+bF(\hat x) = B\hat x + b(BB は正則)が三角形 T^\hat T を TT に写すとし、TT 上の関数 vv に v^=v∘F\hat v = v \circ F を対応させる。∥B∥\|B\| を Euclid ノルムから誘導される行列ノルムとする。

  1. v∈Cm(T)v \in C^m(T)(m=0,1,2m = 0, 1, 2)について ∣v^∣Hm(T^)≤∥B∥m∣det⁡B∣−1/2∣v∣Hm(T)|\hat v|_{H^m(\hat T)} \le \|B\|^m|\det B|^{-1/2}|v|_{H^m(T)}、∣v∣Hm(T)≤∥B−1∥m∣det⁡B∣1/2∣v^∣Hm(T^)|v|_{H^m(T)} \le \|B^{-1}\|^m|\det B|^{1/2}|\hat v|_{H^m(\hat T)}(∣⋅∣H0|\cdot|_{H^0} は L2L^2 ノルム)。
  2. ∥B∥≤hTρ^\|B\| \le \dfrac{h_T}{\hat\rho}、∥B−1∥≤h^ρT\|B^{-1}\| \le \dfrac{\hat h}{\rho_T}。ここで h^\hat h、ρ^\hat\rho は T^\hat T の直径と内接円の直径である。
証明(補題 4.1)

1. 連鎖律から ∇^v^(x^)=BT(∇v)(F(x^))\hat\nabla\hat v(\hat x) = B^{\mathsf{T}}(\nabla v)(F(\hat x))、D^2v^(x^)=BT(D2v)(F(x^))B\hat D^2\hat v(\hat x) = B^{\mathsf{T}}(D^2v)(F(\hat x))B です。∣BTξ∣≤∥B∥∣ξ∣|B^{\mathsf{T}}\xi| \le \|B\||\xi| で、行列 NN の成分の 2 乗和の平方根 ∣N∣|N| について ∣BTNB∣≤∥B∥2∣N∣|B^{\mathsf{T}}NB| \le \|B\|^2|N| です(∣BTN∣≤∥B∥∣N∣|B^{\mathsf{T}}N| \le \|B\||N| を列ごとに、∣N′B∣≤∣N′∣∥B∥|N'B| \le |N'|\|B\| を行ごとに使う)。したがって ∣D^mv^(x^)∣≤∥B∥m∣Dmv(F(x^))∣|\hat D^m\hat v(\hat x)| \le \|B\|^m|D^mv(F(\hat x))| で、変数変換 x=F(x^)x = F(\hat x)、dx=∣det⁡B∣ dx^dx = |\det B|\,d\hat x から

∣v^∣Hm(T^)2≤∥B∥2m∫T^∣Dmv(F(x^))∣2dx^=∥B∥2m∣det⁡B∣−1∣v∣Hm(T)2|\hat v|_{H^m(\hat T)}^2 \le \|B\|^{2m}\int_{\hat T}|D^mv(F(\hat x))|^2d\hat x = \|B\|^{2m}|\det B|^{-1}|v|_{H^m(T)}^2

です。逆向きは、v=v^∘F−1v = \hat v\circ F^{-1}、F−1(x)=B−1x−B−1bF^{-1}(x) = B^{-1}x - B^{-1}b に同じ議論を使います。

2. T^\hat T の内接円の中心を c^\hat c とします。∣ξ∣=ρ^|\xi| = \hat\rho である任意のベクトル ξ\xi について、x^=c^+ξ/2\hat x = \hat c + \xi/2 と y^=c^−ξ/2\hat y = \hat c - \xi/2 は内接円の上の点で T^\hat T に属し、Bξ=F(x^)−F(y^)B\xi = F(\hat x) - F(\hat y) は TT の 2 点の差なので ∣Bξ∣≤hT|B\xi| \le h_T です。したがって ∥B∥=max⁡∣ξ∣=ρ^∣Bξ∣/ρ^≤hT/ρ^\|B\| = \max_{|\xi| = \hat\rho}|B\xi|/\hat\rho \le h_T/\hat\rho です。F−1F^{-1} は TT を T^\hat T に写すので、役割を入れ替えて ∥B−1∥≤h^/ρT\|B^{-1}\| \le \hat h/\rho_T です。

1 は、導関数を 1 回とるごとに ∥B∥≈hT\|B\| \approx h_T が掛かること(長さのスケール)と、積分で ∣det⁡B∣≈hT2|\det B| \approx h_T^2 が掛かること(面積のスケール)を表しています。2 が、三角形の形(ρT\rho_T)が評価に入ってくる場所です。逆不等式(§6)ではこの補題を使います。補間誤差は、前節の評価が TT の上で直接成り立つので、写像を経由せずに証明できます。

定理 4.2(三角形の上の節点補間の誤差)✓

TT を閉じた三角形、u∈H2(T)u \in \mathcal{H}^2(T) とし、ITu=∑i=02u(ai)λiI_Tu = \sum_{i=0}^{2}u(a_i)\lambda_i(uu は連続な代表元)とする。このとき

∥u−ITu∥L2(T)≤hT2∣u∣H2(T),∣u−ITu∣H1(T)≤3 hT2ρT∣u∣H2(T)\|u - I_Tu\|_{L^2(T)} \le h_T^2|u|_{H^2(T)},\qquad|u - I_Tu|_{H^1(T)} \le 3\,\frac{h_T^2}{\rho_T}|u|_{H^2(T)}

が成り立つ。形状正則な分割(hT≤σρTh_T \le \sigma\rho_T)では右辺は 3σhT∣u∣H2(T)3\sigma h_T|u|_{H^2(T)} 以下である。

証明(定理 4.2)

p=QTup = Q_Tu、w=u−pw = u - p とおきます。pp は 1 次式なので ITp=pI_Tp = p で、ITI_T は線形なので

u−ITu=(u−p)−IT(u−p)=w−ITwu - I_Tu = (u - p) - I_T(u - p) = w - I_Tw

です。補題 3.5 から ∥w∥L∞(T)≤hT22∣T∣1/2∣u∣H2(T)\|w\|_{L^\infty(T)} \le \frac{h_T^2}{2|T|^{1/2}}|u|_{H^2(T)} です。

L2L^2 ノルム. TT の上で λi≥0\lambda_i \ge 0、∑iλi=1\sum_i\lambda_i = 1 なので ∣ITw∣≤∥w∥L∞(T)|I_Tw| \le \|w\|_{L^\infty(T)} で、∥ITw∥L2(T)≤∣T∣1/2∥w∥L∞(T)≤hT22∣u∣H2(T)\|I_Tw\|_{L^2(T)} \le |T|^{1/2}\|w\|_{L^\infty(T)} \le \frac{h_T^2}{2}|u|_{H^2(T)} です。補題 3.5 の ∥w∥L2(T)≤hT22∣u∣H2(T)\|w\|_{L^2(T)} \le \frac{h_T^2}{2}|u|_{H^2(T)} と合わせて ∥u−ITu∥L2(T)≤hT2∣u∣H2(T)\|u - I_Tu\|_{L^2(T)} \le h_T^2|u|_{H^2(T)} です。

H1H^1 半ノルム. λi\lambda_i は、頂点 aia_i で 11、向かい合う辺の上で 00 の 1 次式なので、∣∇λi∣=1/Hi|\nabla\lambda_i| = 1/H_i(HiH_i は aia_i から向かい合う辺への高さ)です。内接円は TT に含まれ、その直径は高さを超えないので Hi≥ρTH_i \ge \rho_T、したがって ∣∇λi∣≤1/ρT|\nabla\lambda_i| \le 1/\rho_T です。∇(ITw)=∑iw(ai)∇λi\nabla(I_Tw) = \sum_iw(a_i)\nabla\lambda_i から ∣∇(ITw)∣≤3ρT∥w∥L∞(T)|\nabla(I_Tw)| \le \frac{3}{\rho_T}\|w\|_{L^\infty(T)} で、

∣ITw∣H1(T)≤∣T∣1/2⋅3ρT⋅hT22∣T∣1/2∣u∣H2(T)=3hT22ρT∣u∣H2(T)|I_Tw|_{H^1(T)} \le |T|^{1/2}\cdot\frac{3}{\rho_T}\cdot\frac{h_T^2}{2|T|^{1/2}}|u|_{H^2(T)} = \frac{3h_T^2}{2\rho_T}|u|_{H^2(T)}

です。補題 3.5 の ∣w∣H1(T)≤2 hT∣u∣H2(T)|w|_{H^1(T)} \le \sqrt2\,h_T|u|_{H^2(T)} と、ρT≤hT\rho_T \le h_T から hT≤hT2/ρTh_T \le h_T^2/\rho_T であることを合わせて

∣u−ITu∣H1(T)≤(2+32)hT2ρT∣u∣H2(T)≤3 hT2ρT∣u∣H2(T)|u - I_Tu|_{H^1(T)} \le \Bigl(\sqrt2 + \frac32\Bigr)\frac{h_T^2}{\rho_T}|u|_{H^2(T)} \le 3\,\frac{h_T^2}{\rho_T}|u|_{H^2(T)}

です。

L2L^2 の評価には三角形の形が現れず、H1H^1 の評価にだけ 1/ρT1/\rho_T が現れます。原因は補間した関数の勾配 ∇λi\nabla\lambda_i で、高さの低い三角形では、頂点での値のわずかな違いが大きな勾配になります。

例 4.3(つぶれた三角形では H¹ の補間誤差が悪化する)

0<ε≤10 < \varepsilon \le 1 とし、頂点 (−1,0)(-1, 0)、(1,0)(1, 0)、(0,ε)(0, \varepsilon) の三角形 TεT_\varepsilon と u(x,y)=x2u(x,y) = x^2 を考えます。頂点での値は 1,1,01, 1, 0 なので、補間は ITu=1−y/εI_Tu = 1 - y/\varepsilon です。∂yu=0\partial_yu = 0、∂y(ITu)=−1/ε\partial_y(I_Tu) = -1/\varepsilon なので

∣u−ITu∣H1(Tε)2≥∫Tε1ε2 dx=∣Tε∣ε2=1ε,∣u∣H2(Tε)2=∫Tε22dx=4ε|u - I_Tu|_{H^1(T_\varepsilon)}^2 \ge \int_{T_\varepsilon}\frac{1}{\varepsilon^2}\,dx = \frac{|T_\varepsilon|}{\varepsilon^2} = \frac{1}{\varepsilon},\qquad|u|_{H^2(T_\varepsilon)}^2 = \int_{T_\varepsilon}2^2dx = 4\varepsilon

です。hT=2h_T = 2 は一定なのに、比 ∣u−ITu∣H1/∣u∣H2≥12ε|u - I_Tu|_{H^1}/|u|_{H^2} \ge \frac{1}{2\varepsilon} は ε→0\varepsilon \to 0 で発散します。内接円の直径は ρT≤ε\rho_T \le \varepsilon(高さ以下)なので、これは 定理 4.2 の hT2/ρT≥4/εh_T^2/\rho_T \ge 4/\varepsilon と矛盾せず、1/ρT1/\rho_T の因子が証明の都合でないことを示しています。この三角形は (0,ε)(0,\varepsilon) の角が π\pi に近づきます。

注意 4.4(最大角の条件)

つぶれた三角形がすべて悪いわけではありません。頂点 (0,0)(0,0)、(1,0)(1,0)、(0,ε)(0,\varepsilon) の細長い直角三角形では、H1H^1 の補間誤差は ε\varepsilon によらず O(hT)O(h_T) のままです。補間誤差が O(hT)O(h_T) であるために本質的なのは、最小の角が 00 から離れていること(形状正則性)ではなく、最大の角が π\pi から離れていることです(Babuška–Aziz、参考文献)。境界層のように一方向にだけ急に変わる解には、この性質を使って細長い要素をわざと使います。この章では扱いやすい形状正則性を仮定します。

定理 5.1(エネルギーノルムでの誤差)✓

Ω\Omega を多角形領域、Th\mathcal{T}_h を hT/ρT≤σh_T/\rho_T \le \sigma を満たす三角形分割とする。任意の w∈HD2(Ω)w \in \mathcal{H}^2_{\mathrm{D}}(\Omega) は Ωˉ\bar\Omega で連続で ∂Ω\partial\Omega の上で 00 の代表元をもち、Ihw∈VhI_hw \in V_h が定まって ∥∇(w−Ihw)∥≤3σh∣w∣H2(Ω)\|\nabla(w - I_hw)\| \le 3\sigma h|w|_{H^2(\Omega)} である。したがって、f∈L2(Ω)f \in L^2(\Omega) に対する Poisson 方程式の弱解 uu が HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属するならば、区分 1 次の有限要素解 uh∈Vhu_h \in V_h は

∥∇(u−uh)∥≤∥∇(u−Ihu)∥≤3σh∣u∣H2(Ω)\|\nabla(u - u_h)\| \le \|\nabla(u - I_hu)\| \le 3\sigma h|u|_{H^2(\Omega)}

を満たす。

証明(定理 5.1)

u∈HD2(Ω)u \in \mathcal{H}^2_{\mathrm{D}}(\Omega) を任意にとり(前半の ww を uu と書きます)、un∈C2(Ωˉ)u_n \in C^2(\bar\Omega)、un∣∂Ω=0u_n|_{\partial\Omega} = 0、un→uu_n \to u(H2(Ω)H^2(\Omega))とします。各 T∈ThT \in \mathcal{T}_h の上で u∣T∈H2(T)u|_T \in \mathcal{H}^2(T) で、補題 3.3 から unu_n は TT の上で一様収束します。三角形は有限個なので、unu_n は Ωˉ\bar\Omega の上で一様収束し、極限 u~\tilde u は Ωˉ\bar\Omega で連続、∂Ω\partial\Omega の上で 00、u~=u\tilde u = u(a.e.)です。したがって IhuI_hu が定まって Ihu∈VhI_hu \in V_h で、TT の上で Ihu=ITuI_hu = I_Tu です。

補題 2.3 から IhuI_hu の弱微分は三角形ごとの勾配なので、定理 4.2 を三角形ごとに使って足すと

∥∇(u−Ihu)∥2=∑T∣u−ITu∣H1(T)2≤∑T(3σhT)2∣u∣H2(T)2≤(3σh)2∣u∣H2(Ω)2\|\nabla(u - I_hu)\|^2 = \sum_{T}|u - I_Tu|_{H^1(T)}^2 \le \sum_T(3\sigma h_T)^2|u|_{H^2(T)}^2 \le (3\sigma h)^2|u|_{H^2(\Omega)}^2

です。これが前半です。uu が弱解のときは、aa が VV の内積なので、Céa の補題(定理 2.5[有限要素法 I] の対称な場合)から ∥∇(u−uh)∥≤∥∇(u−Ihu)∥\|\nabla(u - u_h)\| \le \|\nabla(u - I_hu)\| で、後半を得ます。

仮定「u∈HD2(Ω)u \in \mathcal{H}^2_{\mathrm{D}}(\Omega)」がいつ成り立つかが問題です。正方形では、固有関数展開で直接示せます。

補題 5.2(正方形での H² 正則性)✓

Ω=(0,1)2\Omega = (0,1)^2、f∈L2(Ω)f \in L^2(\Omega) とする。−Δu=f-\Delta u = f の弱解 u∈H01(Ω)u \in H^1_0(\Omega) は HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属し、

∣u∣H2(Ω)=∥D2u∥=∥f∥|u|_{H^2(\Omega)} = \|D^2u\| = \|f\|

を満たす。

証明(補題 5.2)

k=(k1,k2)∈N2k = (k_1, k_2) \in \mathbb{N}^2 について sk(x)=2sin⁡(k1πx1)sin⁡(k2πx2)s_k(x) = 2\sin(k_1\pi x_1)\sin(k_2\pi x_2)、μk=π2(k12+k22)\mu_k = \pi^2(k_1^2 + k_2^2) とおきます。補題 3.2[Dirichlet ラプラシアンの固有値と Weyl 則] から {sk}\{s_k\} は L2(Ω)L^2(\Omega) の正規直交基底で、余弦の積 ek(x)=2cos⁡(k1πx1)cos⁡(k2πx2)e_k(x) = 2\cos(k_1\pi x_1)\cos(k_2\pi x_2)(k1,k2≥1k_1, k_2 \ge 1)は正規直交系です。sks_k は Ωˉ\bar\Omega の近傍で滑らかで ∂Ω\partial\Omega の上で 00、−Δsk=μksk-\Delta s_k = \mu_ks_k です。

有限和での等式. 有限和 w=∑kckskw = \sum_kc_ks_k について、∂12w=−∑kckπ2k12sk\partial_1^2w = -\sum_kc_k\pi^2k_1^2s_k、∂22w=−∑kckπ2k22sk\partial_2^2w = -\sum_kc_k\pi^2k_2^2s_k、∂1∂2w=∑kckπ2k1k2ek\partial_1\partial_2w = \sum_kc_k\pi^2k_1k_2e_k なので、正規直交性から

∣w∣H2(Ω)2=∥∂12w∥2+2∥∂1∂2w∥2+∥∂22w∥2=∑kck2π4(k14+2k12k22+k24)=∑kck2μk2=∥Δw∥2|w|_{H^2(\Omega)}^2 = \|\partial_1^2w\|^2 + 2\|\partial_1\partial_2w\|^2 + \|\partial_2^2w\|^2 = \sum_kc_k^2\pi^4(k_1^4 + 2k_1^2k_2^2 + k_2^4) = \sum_kc_k^2\mu_k^2 = \|\Delta w\|^2

です。同様に、補題 3.3[Dirichlet ラプラシアンの固有値と Weyl 則] から ∥∇w∥2=∑kck2μk\|\nabla w\|^2 = \sum_kc_k^2\mu_k、∥w∥2=∑kck2\|w\|^2 = \sum_kc_k^2 で、μk≥2π2>1\mu_k \ge 2\pi^2 > 1 なのでどちらも ∥Δw∥2\|\Delta w\|^2 以下です。

極限. f=∑kfkskf = \sum_kf_ks_k(L2L^2 収束)と展開し、fN=∑∣k∣≤Nfkskf_N = \sum_{|k| \le N}f_ks_k、uN=∑∣k∣≤Nfkμksku_N = \sum_{|k| \le N}\frac{f_k}{\mu_k}s_k とおくと、−ΔuN=fN-\Delta u_N = f_N です。上の等式を uN−uMu_N - u_M に使うと ∥uN−uM∥2+∥∇(uN−uM)∥2+∣uN−uM∣H22≤3∥fN−fM∥2→0\|u_N - u_M\|^2 + \|\nabla(u_N - u_M)\|^2 + |u_N - u_M|_{H^2}^2 \le 3\|f_N - f_M\|^2 \to 0 で、(uN)(u_N) は H2(Ω)H^2(\Omega) の Cauchy 列です。H2(Ω)H^2(\Omega) は完備(命題 2.3[Sobolev 空間])なので uN→u~u_N \to \tilde u(H2H^2)となる u~\tilde u があり、uN∈C2(Ωˉ)u_N \in C^2(\bar\Omega) は ∂Ω\partial\Omega の上で 00 なので u~∈HD2(Ω)\tilde u \in \mathcal{H}^2_{\mathrm{D}}(\Omega)、∣u~∣H2=lim⁡N∥fN∥=∥f∥|\tilde u|_{H^2} = \lim_N\|f_N\| = \|f\| です。

u~\tilde u は弱解. uN∈H01(Ω)u_N \in H^1_0(\Omega)(補題 3.3[Dirichlet ラプラシアンの固有値と Weyl 則])で、v∈Cc∞(Ω)v \in C_c^\infty(\Omega) について、弱微分の定義から ⟨∇uN,∇v⟩=−⟨ΔuN,v⟩=⟨fN,v⟩\langle\nabla u_N, \nabla v\rangle = -\langle\Delta u_N, v\rangle = \langle f_N, v\rangle です。N→∞N \to \infty として ⟨∇u~,∇v⟩=⟨f,v⟩\langle\nabla\tilde u, \nabla v\rangle = \langle f, v\rangle で、Cc∞(Ω)C_c^\infty(\Omega) は H01(Ω)H^1_0(\Omega) で稠密なのですべての v∈H01(Ω)v \in H^1_0(\Omega) で成り立ちます。H01(Ω)H^1_0(\Omega) は閉じているので u~∈H01(Ω)\tilde u \in H^1_0(\Omega) で、弱解の一意性(定理 4.2[楕円型方程式の弱解と変分法])から u~=u\tilde u = u です。

辺の長さが異なる長方形でも、各方向の正弦の積が正規直交基底になることを使えば、同じ証明が通ります(下の 系 5.3)。滑らかな境界をもつ凸領域での ∥D2u∥≤∥Δu∥\|D^2u\| \le \|\Delta u\| は 定理 4.1[楕円型正則性と最大値原理] で証明されていて、一般の凸多角形にも同じ評価が成り立ちます(同じ章の注意で述べられている Grisvard の定理)。そこでこの章では、L2L^2 の評価を次の仮定のもとで述べます。

仮定 (R). 定数 CRC_R があって、すべての g∈L2(Ω)g \in L^2(\Omega) について、−Δz=g-\Delta z = g の弱解 z∈H01(Ω)z \in H^1_0(\Omega) は HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属し、∣z∣H2(Ω)≤CR∥g∥|z|_{H^2(\Omega)} \le C_R\|g\| を満たす。

補題 5.2 から、正方形では (R) が CR=1C_R = 1 で成り立ちます。辺の長さが異なる長方形でも同じです。

系 5.3(一般の長方形での H² 正則性)✓

a,b>0a, b > 0、Ω=(0,a)×(0,b)\Omega = (0,a)\times(0,b)、f∈L2(Ω)f \in L^2(\Omega) とする。−Δu=f-\Delta u = f の弱解 u∈H01(Ω)u \in H^1_0(\Omega) は HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属し、∣u∣H2(Ω)=∥f∥|u|_{H^2(\Omega)} = \|f\| を満たす。したがって、この長方形で仮定 (R) が CR=1C_R = 1 で成り立つ。

証明(系 5.3)

補題 5.2 の証明を、方向ごとに周期の違う正弦で書き直します。ℓ>0\ell > 0、m≥1m \ge 1 について σm(ℓ)(t)=2/ℓ sin⁡(mπt/ℓ)\sigma^{(\ell)}_m(t) = \sqrt{2/\ell}\,\sin(m\pi t/\ell)、γm(ℓ)(t)=2/ℓ cos⁡(mπt/ℓ)\gamma^{(\ell)}_m(t) = \sqrt{2/\ell}\,\cos(m\pi t/\ell) とおくと、補題 3.2[Dirichlet ラプラシアンの固有値と Weyl 則] の前半(区間 (0,ℓ)(0,\ell) の場合)から、{σm(ℓ)}m≥1\{\sigma^{(\ell)}_m\}_{m\ge1} と {γm(ℓ)}m≥1\{\gamma^{(\ell)}_m\}_{m\ge1} はそれぞれ L2(0,ℓ)L^2(0,\ell) の正規直交系です。k=(k1,k2)∈N2k = (k_1,k_2) \in \mathbb{N}^2 について

sk=σk1(a)(x1)σk2(b)(x2),ek=γk1(a)(x1)γk2(b)(x2),pk=γk1(a)(x1)σk2(b)(x2),qk=σk1(a)(x1)γk2(b)(x2),μk=π2(k12a2+k22b2)s_k = \sigma^{(a)}_{k_1}(x_1)\sigma^{(b)}_{k_2}(x_2),\quad e_k = \gamma^{(a)}_{k_1}(x_1)\gamma^{(b)}_{k_2}(x_2),\quad p_k = \gamma^{(a)}_{k_1}(x_1)\sigma^{(b)}_{k_2}(x_2),\quad q_k = \sigma^{(a)}_{k_1}(x_1)\gamma^{(b)}_{k_2}(x_2),\qquad\mu_k = \pi^2\Bigl(\frac{k_1^2}{a^2} + \frac{k_2^2}{b^2}\Bigr)

とおきます。

基底. 積の形 g1(x1)g2(x2)g_1(x_1)g_2(x_2) の連続関数どうしの L2(Ω)L^2(\Omega) の内積は、定理 3.4[直積測度と Fubini–Tonelli の定理] により L2(0,a)L^2(0,a) の内積と L2(0,b)L^2(0,b) の内積の積になるので、{sk}\{s_k\}、{ek}\{e_k\}、{pk}\{p_k\}、{qk}\{q_k\} はそれぞれ L2(Ω)L^2(\Omega) の正規直交系です。{sk}\{s_k\} が基底であることを示します。g∈L2((0,1)2)g \in L^2((0,1)^2) に対し (Ug)(x)=(ab)−1/2g(x1/a,x2/b)(Ug)(x) = (ab)^{-1/2}g(x_1/a, x_2/b) とおくと、変数変換 y=(x1/a,x2/b)y = (x_1/a, x_2/b)、dx=ab dydx = ab\,dy から ∥Ug∥L2(Ω)=∥g∥L2((0,1)2)\|Ug\|_{L^2(\Omega)} = \|g\|_{L^2((0,1)^2)} で、UU は逆写像 (U−1w)(y)=(ab)1/2w(ay1,by2)(U^{-1}w)(y) = (ab)^{1/2}w(ay_1, by_2) をもつので、L2((0,1)2)L^2((0,1)^2) から L2(Ω)L^2(\Omega) の上へのユニタリ写像です。単位正方形の関数 sk□(y)=2sin⁡(k1πy1)sin⁡(k2πy2)s^{\square}_k(y) = 2\sin(k_1\pi y_1)\sin(k_2\pi y_2) について Usk□=skUs^{\square}_k = s_k です。w∈L2(Ω)w \in L^2(\Omega) がすべての sks_k と直交すれば、U−1wU^{-1}w はすべての sk□s^{\square}_k と直交し、{sk□}\{s^{\square}_k\} は L2((0,1)2)L^2((0,1)^2) の正規直交基底(補題 3.2[Dirichlet ラプラシアンの固有値と Weyl 則])なので U−1w=0U^{-1}w = 0、すなわち w=0w = 0 です。したがって {sk}\{s_k\} は L2(Ω)L^2(\Omega) の正規直交基底です。

有限和での等式. 有限和 w=∑kβkskw = \sum_k\beta_ks_k について

∂1w=∑kβkπk1apk,∂2w=∑kβkπk2bqk,∂12w=−∑kβkπ2k12a2sk,∂22w=−∑kβkπ2k22b2sk,∂1∂2w=∑kβkπ2k1k2abek\partial_1w = \sum_k\beta_k\frac{\pi k_1}{a}p_k,\quad\partial_2w = \sum_k\beta_k\frac{\pi k_2}{b}q_k,\quad\partial_1^2w = -\sum_k\beta_k\frac{\pi^2k_1^2}{a^2}s_k,\quad\partial_2^2w = -\sum_k\beta_k\frac{\pi^2k_2^2}{b^2}s_k,\quad\partial_1\partial_2w = \sum_k\beta_k\frac{\pi^2k_1k_2}{ab}e_k

なので、正規直交性から ∥w∥2=∑kβk2\|w\|^2 = \sum_k\beta_k^2、∥∇w∥2=∑kβk2μk\|\nabla w\|^2 = \sum_k\beta_k^2\mu_k、

∣w∣H2(Ω)2=∥∂12w∥2+2∥∂1∂2w∥2+∥∂22w∥2=∑kβk2π4(k14a4+2k12k22a2b2+k24b4)=∑kβk2μk2=∥Δw∥2|w|_{H^2(\Omega)}^2 = \|\partial_1^2w\|^2 + 2\|\partial_1\partial_2w\|^2 + \|\partial_2^2w\|^2 = \sum_k\beta_k^2\pi^4\Bigl(\frac{k_1^4}{a^4} + \frac{2k_1^2k_2^2}{a^2b^2} + \frac{k_2^4}{b^4}\Bigr) = \sum_k\beta_k^2\mu_k^2 = \|\Delta w\|^2

です。μ∗=π2(a−2+b−2)\mu_{*} = \pi^2(a^{-2} + b^{-2}) とおくと μk≥μ∗\mu_k \ge \mu_{*} なので、∥w∥2≤μ∗−2∥Δw∥2\|w\|^2 \le \mu_{*}^{-2}\|\Delta w\|^2、∥∇w∥2≤μ∗−1∥Δw∥2\|\nabla w\|^2 \le \mu_{*}^{-1}\|\Delta w\|^2 です。

極限. f=∑kfkskf = \sum_kf_ks_k(L2L^2 収束)と展開し、fN=∑∣k∣≤Nfkskf_N = \sum_{|k|\le N}f_ks_k、uN=∑∣k∣≤Nfkμksku_N = \sum_{|k|\le N}\frac{f_k}{\mu_k}s_k とおくと −ΔuN=fN-\Delta u_N = f_N です。上の評価を uN−uMu_N - u_M に使うと

∥uN−uM∥2+∥∇(uN−uM)∥2+∣uN−uM∣H22≤(μ∗−2+μ∗−1+1)∥fN−fM∥2→0\|u_N - u_M\|^2 + \|\nabla(u_N - u_M)\|^2 + |u_N - u_M|_{H^2}^2 \le \bigl(\mu_{*}^{-2} + \mu_{*}^{-1} + 1\bigr)\|f_N - f_M\|^2 \to 0

で、(uN)(u_N) は H2(Ω)H^2(\Omega) の Cauchy 列です。命題 2.3[Sobolev 空間] から uN→u~u_N \to \tilde u(H2H^2)となる u~\tilde u があります。uNu_N は Ωˉ\bar\Omega の近傍で滑らかで ∂Ω\partial\Omega の上で 00 なので、u~∈HD2(Ω)\tilde u \in \mathcal{H}^2_{\mathrm{D}}(\Omega) で、∣u~∣H2=lim⁡N∣uN∣H2=lim⁡N∥fN∥=∥f∥|\tilde u|_{H^2} = \lim_N|u_N|_{H^2} = \lim_N\|f_N\| = \|f\| です。

u~\tilde u は弱解. Ωˉ\bar\Omega を対角線で 2 つの三角形に分けた分割に 補題 2.3 を使うと uN∈H01(Ω)u_N \in H^1_0(\Omega) です。v∈Cc∞(Ω)v \in C_c^\infty(\Omega) について、∂iuN\partial_iu_N の弱微分が ∂i2uN\partial_i^2u_N であること(滑らかな関数なので部分積分から従います)から ⟨∇uN,∇v⟩=−⟨ΔuN,v⟩=⟨fN,v⟩\langle\nabla u_N, \nabla v\rangle = -\langle\Delta u_N, v\rangle = \langle f_N, v\rangle です。N→∞N \to \infty として ⟨∇u~,∇v⟩=⟨f,v⟩\langle\nabla\tilde u, \nabla v\rangle = \langle f, v\rangle で、Cc∞(Ω)C_c^\infty(\Omega) は H01(Ω)H^1_0(\Omega) で稠密(定義 2.1[Sobolev 空間] の H01H^1_0 の定義)なので、すべての v∈H01(Ω)v \in H^1_0(\Omega) で成り立ちます。H01(Ω)H^1_0(\Omega) は H1(Ω)H^1(\Omega) の閉部分空間なので u~∈H01(Ω)\tilde u \in H^1_0(\Omega) で、弱解の一意性(定理 4.2[楕円型方程式の弱解と変分法])から u~=u\tilde u = u です。

平行移動しても弱解・H2H^2 半ノルム・L2L^2 ノルムは変わらないので、辺が座標軸に平行な任意の長方形 x0+(0,a)×(0,b)x_0 + (0,a)\times(0,b) でも同じ結論が成り立ちます。

ここまでの H1H^1 の誤差は O(h)O(h) でした。L2L^2 の誤差 ∥e∥\|e\| では、さらに hh が 1 つ分よくなることを示します。そのために ∥e∥2=⟨e,e⟩\|e\|^2 = \langle e, e\rangle に注目し、ee 自身を右辺にもつ補助の方程式 −Δz=e-\Delta z = e(双対問題)を立てます。すると ∥e∥2\|e\|^2 が「zz の補間誤差」と「∥∇e∥\|\nabla e\|」の積に書き直せ、zz の補間誤差のほうにもう 1 つ hh が出ます。

定理 5.4(L² ノルムでの誤差(Aubin–Nitsche))✓

Ω\Omega を多角形領域、Th\mathcal{T}_h を hT/ρT≤σh_T/\rho_T \le \sigma を満たす三角形分割とし、仮定 (R) が成り立つとする。w∈H01(Ω)w \in H^1_0(\Omega) とその Ritz 射影 Rhw∈VhR_hw \in V_h(⟨∇(Rhw−w),∇vh⟩=0\langle\nabla(R_hw - w), \nabla v_h\rangle = 0、vh∈Vhv_h \in V_h)について

∥w−Rhw∥≤3σCRh ∥∇(w−Rhw)∥\|w - R_hw\| \le 3\sigma C_Rh\,\|\nabla(w - R_hw)\|

が成り立つ。さらに w∈HD2(Ω)w \in \mathcal{H}^2_{\mathrm{D}}(\Omega) ならば ∥w−Rhw∥≤CAh2∣w∣H2(Ω)\|w - R_hw\| \le C_Ah^2|w|_{H^2(\Omega)}、CA=9σ2CRC_A = 9\sigma^2C_R である。特に、Poisson 方程式の弱解 uu((R) から HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属する)とその有限要素解 uh=Rhuu_h = R_hu について

∥u−uh∥≤9σ2CRh2∣u∣H2(Ω)≤9σ2CR2h2∥f∥.\|u - u_h\| \le 9\sigma^2C_Rh^2|u|_{H^2(\Omega)} \le 9\sigma^2C_R^2h^2\|f\|.
証明(定理 5.4)

e=w−Rhw∈H01(Ω)e = w - R_hw \in H^1_0(\Omega) とし、−Δz=e-\Delta z = e の弱解を zz とします。(R) から z∈HD2(Ω)z \in \mathcal{H}^2_{\mathrm{D}}(\Omega)、∣z∣H2≤CR∥e∥|z|_{H^2} \le C_R\|e\| です。弱解の式で試験関数を ee とし、Ritz 射影の定義 ⟨∇e,∇Ihz⟩=0\langle\nabla e, \nabla I_hz\rangle = 0(Ihz∈VhI_hz \in V_h。定理 5.1 の証明のとおり定まる)を使うと

∥e∥2=⟨∇z,∇e⟩=⟨∇(z−Ihz),∇e⟩≤∥∇(z−Ihz)∥ ∥∇e∥≤3σh CR∥e∥ ∥∇e∥\|e\|^2 = \langle\nabla z, \nabla e\rangle = \langle\nabla(z - I_hz), \nabla e\rangle \le \|\nabla(z - I_hz)\|\,\|\nabla e\| \le 3\sigma h\,C_R\|e\|\,\|\nabla e\|

です(定理 5.1 の前半を zz に使いました)。∥e∥\|e\| で割って前半です。w∈HD2(Ω)w \in \mathcal{H}^2_{\mathrm{D}}(\Omega) なら、Ritz 射影は ∥∇⋅∥\|\nabla\cdot\| についての最良近似なので ∥∇e∥≤∥∇(w−Ihw)∥≤3σh∣w∣H2\|\nabla e\| \le \|\nabla(w - I_hw)\| \le 3\sigma h|w|_{H^2} で、後半を得ます。uh=Rhuu_h = R_hu は Galerkin 直交性(補題 2.4[有限要素法 I])です。

注意 5.5(凹んだ角:L 字形の領域)

内角が π\pi を超える角(凹角)をもつ多角形では、(R) は成り立ちません。内角 ω>π\omega > \pi の角を原点とする極座標で、u=rπ/ωsin⁡(πθ/ω)u = r^{\pi/\omega}\sin(\pi\theta/\omega) は調和で、角をはさむ 2 辺の上で 00 ですが、2 階導関数は rπ/ω−2r^{\pi/\omega - 2} の大きさで、π/ω<1\pi/\omega < 1 なので 2 乗可積分ではありません。L 字形の領域(ω=3π/2\omega = 3\pi/2)では u=r2/3sin⁡(2θ/3)u = r^{2/3}\sin(2\theta/3) です。このとき、準一様な分割での有限要素解の誤差は H1H^1 で O(h2/3)O(h^{2/3})、L2L^2 で O(h4/3)O(h^{4/3}) になります。証明には重みつきの Sobolev 空間か、指数が整数でない Sobolev 空間が要るので、ここでは §8 で数値的に確かめるにとどめます。Grisvard(参考文献)が角のある領域の正則性を体系的に扱っています。角に向かって分割を細かくすれば、前章の 1 次元の例と同じく次数を回復できます。

6. 剛性行列:余接の公式、離散最大値原理、逆不等式

Section titled “6. 剛性行列:余接の公式、離散最大値原理、逆不等式”

すべての節点(境界の上のものも含む)について K~ij=⟨∇φj,∇φi⟩\tilde K_{ij} = \langle\nabla\varphi_j, \nabla\varphi_i\rangle とおき、内部の節点に対応する部分を KK(剛性行列)、Gij=⟨φj,φi⟩G_{ij} = \langle\varphi_j,\varphi_i\rangle(内部の節点)を質量行列とします。

次の命題の 3 の証明では、境界の最大値 mm を超える内部の節点があると仮定して、超えた分だけを集めたベクトル p\boldsymbol{p} をつくり、二次形式 pTKp\boldsymbol{p}^{\mathsf{T}}K\boldsymbol{p} を調べます。2 で示す「非対角成分が 00 以下」という符号のおかげで、ほかの項がすべて 00 以上になり、KK が正定値であることから p=0\boldsymbol{p} = \boldsymbol{0} が従います。

命題 6.1(余接の公式と離散最大値原理)✓

  1. 頂点 ai,aj,aka_i, a_j, a_k の三角形 TT で、aka_k の角を θk\theta_k とすると ∫T∇λi⋅∇λj dx=−12cot⁡θk\displaystyle\int_T\nabla\lambda_i\cdot\nabla\lambda_j\,dx = -\frac12\cot\theta_k。したがって、辺で結ばれた相異なる節点 ii、jj について K~ij=−12∑cot⁡θ\tilde K_{ij} = -\frac12\sum\cot\theta(和はその辺を含む三角形についてとり、θ\theta はその三角形で辺に向かい合う角)で、辺で結ばれていなければ K~ij=0\tilde K_{ij} = 0。
  2. 内部の節点を端点とするすべての辺について、その辺に向かい合う 2 つの角の和が π\pi 以下ならば、内部の節点 ii と任意の節点 j≠ij \ne i について K~ij≤0\tilde K_{ij} \le 0 である。このとき KK は非対角成分が 00 以下の正定値対称行列(Stieltjes 行列。定義 6.1[Krylov 部分空間法 II])である。
  3. 2 の仮定のもとで、uh∈Xhu_h \in X_h がすべての内部の節点 ii について ⟨∇uh,∇φi⟩≤0\langle\nabla u_h, \nabla\varphi_i\rangle \le 0 を満たすならば、max⁡Ωˉuh=max⁡∂Ωuh\max_{\bar\Omega}u_h = \max_{\partial\Omega}u_h である(離散最大値原理)。
証明(命題 6.1)

1. aia_i に向かい合う辺を EiE_i、その長さを ∣Ei∣|E_i|、aia_i からの高さを HiH_i とします。∇λi\nabla\lambda_i は EiE_i に垂直で三角形の内側(aia_i の側)を向き、大きさは 1/Hi=∣Ei∣/(2∣T∣)1/H_i = |E_i|/(2|T|) です。EiE_i と EjE_j は頂点 aka_k で角 θk\theta_k をなして交わり、それぞれの内向きの法線のなす角は π−θk\pi - \theta_k です。したがって

∇λi⋅∇λj=∣Ei∣∣Ej∣4∣T∣2cos⁡(π−θk)=−∣Ei∣∣Ej∣cos⁡θk4∣T∣2\nabla\lambda_i\cdot\nabla\lambda_j = \frac{|E_i||E_j|}{4|T|^2}\cos(\pi - \theta_k) = -\frac{|E_i||E_j|\cos\theta_k}{4|T|^2}

で、∣T∣=12∣Ei∣∣Ej∣sin⁡θk|T| = \frac12|E_i||E_j|\sin\theta_k を使うと ∫T∇λi⋅∇λj dx=−∣Ei∣∣Ej∣cos⁡θk4∣T∣=−12cot⁡θk\int_T\nabla\lambda_i\cdot\nabla\lambda_j\,dx = -\frac{|E_i||E_j|\cos\theta_k}{4|T|} = -\frac12\cot\theta_k です。φi\varphi_i と φj\varphi_j の台が重なるのは、両方の節点を頂点にもつ三角形の上だけで、そこでは φi=λi\varphi_i = \lambda_i、φj=λj\varphi_j = \lambda_j なので、後半が従います。

2. 内部の節点 ii を端点とする辺は ∂Ω\partial\Omega の上にないので、ちょうど 2 つの三角形に含まれます。向かい合う角を θ\theta、θ′\theta'(0<θ,θ′<π0 < \theta, \theta' < \pi)とすると

K~ij=−12(cot⁡θ+cot⁡θ′)=−sin⁡(θ+θ′)2sin⁡θsin⁡θ′\tilde K_{ij} = -\frac12(\cot\theta + \cot\theta') = -\frac{\sin(\theta + \theta')}{2\sin\theta\sin\theta'}

で、θ+θ′≤π\theta + \theta' \le \pi なら K~ij≤0\tilde K_{ij} \le 0 です。KK は対称で正定値(定理 2.3[有限要素法 I])です。

3. ∑jφj=1\sum_j\varphi_j = 1(どの節点でも値が 11 の XhX_h の元)なので、∑jK~ij=⟨∇1,∇φi⟩=0\sum_j\tilde K_{ij} = \langle\nabla1, \nabla\varphi_i\rangle = 0 です。m=max⁡∂Ωuhm = \max_{\partial\Omega}u_h とします。uhu_h は境界の辺の上で 1 次式なので、mm は境界の節点での値の最大です。dj=uh(zj)−md_j = u_h(z_j) - m とおくと、境界の節点では dj≤0d_j \le 0 で、行の和が 00 であることから、内部の節点 ii について

∑jK~ijdj=∑jK~ijuh(zj)=⟨∇uh,∇φi⟩≤0\sum_j\tilde K_{ij}d_j = \sum_j\tilde K_{ij}u_h(z_j) = \langle\nabla u_h, \nabla\varphi_i\rangle \le 0

です。内部の節点について pi=max⁡(di,0)p_i = \max(d_i, 0) とおき、上の式に pi≥0p_i \ge 0 を掛けて足すと

0≥∑i,j : 内部piKijpj+∑i,j : 内部piKij(dj−pj)+∑i : 内部 ∑j : 境界piK~ijdj0 \ge \sum_{i,j\,:\,\text{内部}}p_iK_{ij}p_j + \sum_{i,j\,:\,\text{内部}}p_iK_{ij}(d_j - p_j) + \sum_{i\,:\,\text{内部}}\ \sum_{j\,:\,\text{境界}}p_i\tilde K_{ij}d_j

です。第 2 の和では、dj−pj=min⁡(dj,0)≤0d_j - p_j = \min(d_j, 0) \le 0 で、i=ji = j の項は pimin⁡(di,0)=0p_i\min(d_i, 0) = 0、i≠ji \ne j の項は pi≥0p_i \ge 0、Kij≤0K_{ij} \le 0、dj−pj≤0d_j - p_j \le 0 の積なので 00 以上です。第 3 の和も pi≥0p_i \ge 0、K~ij≤0\tilde K_{ij} \le 0、dj≤0d_j \le 0 の積の和で 00 以上です。したがって pTKp≤0\boldsymbol{p}^{\mathsf{T}}K\boldsymbol{p} \le 0 で、KK が正定値なので p=0\boldsymbol{p} = \boldsymbol{0}、すなわち内部の節点でも uh(zi)≤mu_h(z_i) \le m です。uhu_h は各三角形の上で 1 次式なので、最大値は節点でとられ、max⁡Ωˉuh=m\max_{\bar\Omega}u_h = m です。

3 の仮定 ⟨∇uh,∇φi⟩≤0\langle\nabla u_h, \nabla\varphi_i\rangle \le 0 は、弱い意味での −Δu≤0-\Delta u \le 0(定理 6.2[楕円型正則性と最大値原理] の仮定)を試験関数 φi≥0\varphi_i \ge 0 に限ったものです。前々章の差分法の離散最大値原理(定理 2.2[楕円型・放物型方程式の差分法])の有限要素版にあたります。2 の条件「向かい合う 2 角の和が π\pi 以下」は、Delaunay 三角形分割(どの三角形の外接円の内部にも他の節点がない分割)の特徴づけになっています。すべての角が π/2\pi/2 以下(鈍角がない)なら当然満たされます。鈍角があると破れうることを §8 で見ます。

例 6.2(直角二等辺三角形の分割は 5 点差分を与える)

単位正方形を一辺 h=1/nh = 1/n の正方形に分け、各正方形を同じ向きの対角線で 2 つの直角二等辺三角形に分けます。内部の節点 ziz_i から出る辺は 6 本です。座標軸に平行な 4 本は、両側の三角形の直角をはさむ辺で、向かい合う角はどちらも π/4\pi/4 なので K~ij=−12(1+1)=−1\tilde K_{ij} = -\frac12(1 + 1) = -1 です。対角線の 2 本は両側の三角形の斜辺で、向かい合う角はどちらも π/2\pi/2 なので K~ij=0\tilde K_{ij} = 0 です。行の和が 00 なので K~ii=4\tilde K_{ii} = 4 です。したがって Kc=bK\boldsymbol{c} = \boldsymbol{b} の第 ii 式は

4ci−c東−c西−c南−c北=bi=∫Ωfφi dx4c_i - c_{\text{東}} - c_{\text{西}} - c_{\text{南}} - c_{\text{北}} = b_i = \int_\Omega f\varphi_i\,dx

で、∫Ωφi dx=6⋅13⋅h22=h2\int_\Omega\varphi_i\,dx = 6\cdot\frac13\cdot\frac{h^2}{2} = h^2(ziz_i を頂点とする 6 つの三角形の上で、1 次式 λi\lambda_i の積分は面積の 13\frac13)なので、右辺は h2h^2 と ff の重みつき平均の積です。h2h^2 で割れば 5 点差分 −Δhc=fˉ-\Delta_hc = \bar f になります。1 次元の場合(命題 6.1[有限要素法 I])と同じく、規則的な分割では有限要素法と差分法は右辺の扱いだけが違います。

命題 6.3(逆不等式と条件数)✓

  1. 三角形 TT の上の 1 次式 vv(頂点での値 α0,α1,α2\alpha_0, \alpha_1, \alpha_2)について、∥v∥L2(T)2=∣T∣12(∑iαi2+(∑iαi)2)\|v\|_{L^2(T)}^2 = \dfrac{|T|}{12}\Bigl(\sum_i\alpha_i^2 + \bigl(\sum_i\alpha_i\bigr)^2\Bigr) で、∣T∣12∑iαi2≤∥v∥L2(T)2≤∣T∣3∑iαi2\dfrac{|T|}{12}\sum_i\alpha_i^2 \le \|v\|_{L^2(T)}^2 \le \dfrac{|T|}{3}\sum_i\alpha_i^2、∥∇v∥L2(T)≤96ρT∥v∥L2(T)\|\nabla v\|_{L^2(T)} \le \dfrac{\sqrt{96}}{\rho_T}\|v\|_{L^2(T)}。
  2. 形状正則(定数 σ\sigma)で準一様(定数 γ\gamma)な分割では、すべての vh∈Xhv_h \in X_h について ∥∇vh∥≤Cinvh∥vh∥\|\nabla v_h\| \le \dfrac{C_{\mathrm{inv}}}{h}\|v_h\|、Cinv=96 γσC_{\mathrm{inv}} = \sqrt{96}\,\gamma\sigma。
  3. 2 の仮定のもとで、Ω\Omega が幅 dd の帯に含まれるとすると、κ2(G)≤8nσγ2σ2π\kappa_2(G) \le \dfrac{8n_\sigma\gamma^2\sigma^2}{\pi}、κ2(K)≤8nσγ2σ2π Cinv2d2 h−2\kappa_2(K) \le \dfrac{8n_\sigma\gamma^2\sigma^2}{\pi}\,C_{\mathrm{inv}}^2d^2\,h^{-2}。ここで nσn_\sigma は 1 つの節点を共有する三角形の個数の上界である。
  4. 2 の仮定のもとで、陽的 Euler 法 ⟨Un+1−Un,vh⟩+Δt⟨∇Un,∇vh⟩=0\langle U^{n+1} - U^n, v_h\rangle + \Delta t\langle\nabla U^n, \nabla v_h\rangle = 0(vh∈Vhv_h \in V_h)の解は、Δt≤2h2/Cinv2\Delta t \le 2h^2/C_{\mathrm{inv}}^2 ならば ∥Un+1∥≤∥Un∥\|U^{n+1}\| \le \|U^n\| を満たす。
証明(命題 6.3)

1. まず ∫Tλiλj dx=∣T∣12(1+δij)\int_T\lambda_i\lambda_j\,dx = \frac{|T|}{12}(1 + \delta_{ij}) を示します。TT を参照三角形 T^\hat T に写すアフィン写像で、λ1\lambda_1、λ2\lambda_2 は座標 x^1\hat x_1、x^2\hat x_2 になり、積分は ∣T∣/∣T^∣=2∣T∣|T|/|\hat T| = 2|T| 倍されます。∫T^x^12dx^=∫01s2(1−s) ds=112\int_{\hat T}\hat x_1^2d\hat x = \int_0^1s^2(1 - s)\,ds = \frac{1}{12}、∫T^x^1x^2 dx^=∫01s (1−s)22ds=124\int_{\hat T}\hat x_1\hat x_2\,d\hat x = \int_0^1s\,\frac{(1-s)^2}{2}ds = \frac{1}{24} なので、∫Tλ12=∣T∣6\int_T\lambda_1^2 = \frac{|T|}{6}、∫Tλ1λ2=∣T∣12\int_T\lambda_1\lambda_2 = \frac{|T|}{12} です。頂点の番号を付け替えれば他の組も同じです。v=∑iαiλiv = \sum_i\alpha_i\lambda_i から

∥v∥L2(T)2=∣T∣12(2∑iαi2+2∑i<jαiαj)=∣T∣12(∑iαi2+(∑iαi)2)\|v\|_{L^2(T)}^2 = \frac{|T|}{12}\Bigl(2\sum_i\alpha_i^2 + 2\sum_{i<j}\alpha_i\alpha_j\Bigr) = \frac{|T|}{12}\Bigl(\sum_i\alpha_i^2 + \bigl(\sum_i\alpha_i\bigr)^2\Bigr)

で、0≤(∑iαi)2≤3∑iαi20 \le (\sum_i\alpha_i)^2 \le 3\sum_i\alpha_i^2 から両側の不等式を得ます。

勾配については、v^=v∘F\hat v = v\circ F は T^\hat T の上の 1 次式 α0+(α1−α0)x^1+(α2−α0)x^2\alpha_0 + (\alpha_1 - \alpha_0)\hat x_1 + (\alpha_2 - \alpha_0)\hat x_2 で、

∣v^∣H1(T^)2=12((α1−α0)2+(α2−α0)2)≤12(2α12+2α22+4α02)≤2∑iαi2≤48∥v^∥L2(T^)2|\hat v|_{H^1(\hat T)}^2 = \tfrac12\bigl((\alpha_1 - \alpha_0)^2 + (\alpha_2 - \alpha_0)^2\bigr) \le \tfrac12\bigl(2\alpha_1^2 + 2\alpha_2^2 + 4\alpha_0^2\bigr) \le 2\sum_i\alpha_i^2 \le 48\|\hat v\|_{L^2(\hat T)}^2

です(最後に、いま示した下からの評価を ∣T^∣=12|\hat T| = \frac12 で使いました)。補題 4.1 から

∣v∣H1(T)≤∥B−1∥∣det⁡B∣1/2∣v^∣H1(T^)≤∥B−1∥∣det⁡B∣1/248 ∥v^∥L2(T^)=48 ∥B−1∥ ∥v∥L2(T)≤48⋅2ρT∥v∥L2(T)|v|_{H^1(T)} \le \|B^{-1}\||\det B|^{1/2}|\hat v|_{H^1(\hat T)} \le \|B^{-1}\||\det B|^{1/2}\sqrt{48}\,\|\hat v\|_{L^2(\hat T)} = \sqrt{48}\,\|B^{-1}\|\,\|v\|_{L^2(T)} \le \frac{\sqrt{48}\cdot\sqrt2}{\rho_T}\|v\|_{L^2(T)}

です(∥v^∥L2(T^)=∣det⁡B∣−1/2∥v∥L2(T)\|\hat v\|_{L^2(\hat T)} = |\det B|^{-1/2}\|v\|_{L^2(T)}、∥B−1∥≤h^/ρT=2/ρT\|B^{-1}\| \le \hat h/\rho_T = \sqrt2/\rho_T)。

2. ρT≥hT/σ≥h/(γσ)\rho_T \ge h_T/\sigma \ge h/(\gamma\sigma) なので、1 から ∥∇vh∥L2(T)≤96γσh∥vh∥L2(T)\|\nabla v_h\|_{L^2(T)} \le \frac{\sqrt{96}\gamma\sigma}{h}\|v_h\|_{L^2(T)} で、2 乗して三角形について足します(補題 2.3 から弱微分は三角形ごとの勾配です)。

3. vh=∑iciφi∈Vhv_h = \sum_ic_i\varphi_i \in V_h とします。1 を三角形について足すと、内部の節点 ii の値 ci2c_i^2 は、それを頂点にもつ三角形(1 個以上、nσn_\sigma 個以下)から現れるので

Amin⁡12∣c∣2≤∥vh∥2=cTGc≤nσAmax⁡3∣c∣2\frac{A_{\min}}{12}|\boldsymbol{c}|^2 \le \|v_h\|^2 = \boldsymbol{c}^{\mathsf{T}}G\boldsymbol{c} \le \frac{n_\sigma A_{\max}}{3}|\boldsymbol{c}|^2

です(Amin⁡A_{\min}、Amax⁡A_{\max} は三角形の面積の最小と最大)。三角形は直径 ρT≥h/(γσ)\rho_T \ge h/(\gamma\sigma) の円を含むので Amin⁡≥π4(hγσ)2A_{\min} \ge \frac{\pi}{4}\bigl(\frac{h}{\gamma\sigma}\bigr)^2、底辺も高さも hT≤hh_T \le h 以下なので Amax⁡≤h22A_{\max} \le \frac{h^2}{2} です。前章の 命題 6.3[有限要素法 I] の証明の冒頭の議論(Rayleigh 商の上下の評価から条件数を抑える)から κ2(G)≤4nσAmax⁡Amin⁡≤8nσγ2σ2π\kappa_2(G) \le \frac{4n_\sigma A_{\max}}{A_{\min}} \le \frac{8n_\sigma\gamma^2\sigma^2}{\pi} です。剛性行列は、Poincaré の不等式(補題 2.1[楕円型方程式の弱解と変分法])と 2 から

1d2∥vh∥2≤cTKc=∥∇vh∥2≤Cinv2h2∥vh∥2\frac{1}{d^2}\|v_h\|^2 \le \boldsymbol{c}^{\mathsf{T}}K\boldsymbol{c} = \|\nabla v_h\|^2 \le \frac{C_{\mathrm{inv}}^2}{h^2}\|v_h\|^2

なので、質量行列の評価と合わせて κ2(K)≤Cinv2d2h2⋅4nσAmax⁡Amin⁡\kappa_2(K) \le \frac{C_{\mathrm{inv}}^2d^2}{h^2}\cdot\frac{4n_\sigma A_{\max}}{A_{\min}} です。

4. Ah:Vh→VhA_h : V_h \to V_h を ⟨Ahw,vh⟩=⟨∇w,∇vh⟩\langle A_hw, v_h\rangle = \langle\nabla w, \nabla v_h\rangle(vh∈Vhv_h \in V_h)で定めると(有限次元の内積空間なので一意に定まります)、スキームは Un+1=Un−ΔtAhUnU^{n+1} = U^n - \Delta tA_hU^n です。vh=Ahwv_h = A_hw とすると、2 から ∥Ahw∥2=⟨∇w,∇Ahw⟩≤∥∇w∥⋅Cinvh∥Ahw∥\|A_hw\|^2 = \langle\nabla w, \nabla A_hw\rangle \le \|\nabla w\|\cdot\frac{C_{\mathrm{inv}}}{h}\|A_hw\|、すなわち ∥Ahw∥≤Cinvh∥∇w∥\|A_hw\| \le \frac{C_{\mathrm{inv}}}{h}\|\nabla w\| です。したがって

∥Un+1∥2=∥Un∥2−2Δt∥∇Un∥2+Δt2∥AhUn∥2≤∥Un∥2−Δt(2−Cinv2Δth2)∥∇Un∥2\|U^{n+1}\|^2 = \|U^n\|^2 - 2\Delta t\|\nabla U^n\|^2 + \Delta t^2\|A_hU^n\|^2 \le \|U^n\|^2 - \Delta t\Bigl(2 - \frac{C_{\mathrm{inv}}^2\Delta t}{h^2}\Bigr)\|\nabla U^n\|^2

で、Δt≤2h2/Cinv2\Delta t \le 2h^2/C_{\mathrm{inv}}^2 なら括弧の中は 00 以上です。

剛性行列の条件数が h−2h^{-2} に比例することは、1 次元(前章)でも 2 次元でも同じです。未知数の個数は h−2h^{-2} に増えますが、条件数は次元によりません。4 は、陽的な時間積分の安定条件が、差分法の Δt≤h2/4\Delta t \le h^2/4(2 次元)と同じく Δt=O(h2)\Delta t = O(h^2) であることを示しています。しかも有限要素法の陽的 Euler 法は、毎ステップ質量行列 GG の連立方程式を解く必要があります(集中化して対角行列にすれば不要になります)。

熱方程式 ut−Δu=fu_t - \Delta u = f(Ω×(0,Tf]\Omega\times(0, T_{\mathrm{f}}])、u=0u = 0(∂Ω\partial\Omega)、u(0)=u0u(0) = u_0 を、空間だけ有限要素法で離散化します。

定義 7.1(半離散と全離散の有限要素法)↗

uh:[0,Tf]→Vhu_h : [0, T_{\mathrm{f}}] \to V_h で

⟨∂tuh(t),vh⟩+⟨∇uh(t),∇vh⟩=⟨f(t),vh⟩(vh∈Vh),uh(0)=u0h\langle\partial_tu_h(t), v_h\rangle + \langle\nabla u_h(t), \nabla v_h\rangle = \langle f(t), v_h\rangle\quad(v_h \in V_h),\qquad u_h(0) = u_{0h}

を満たすものを半離散の有限要素解という。uh=∑jcj(t)φju_h = \sum_jc_j(t)\varphi_j と書くと、これは常微分方程式系 Gc˙+Kc=b(t)G\dot{\boldsymbol{c}} + K\boldsymbol{c} = \boldsymbol{b}(t) である。時間刻み Δt\Delta t、tn=nΔtt_n = n\Delta t、0≤θ≤10 \le \theta \le 1 に対し、Un∈VhU^n \in V_h を

⟨Un+1−UnΔt,vh⟩+⟨∇(θUn+1+(1−θ)Un),∇vh⟩=⟨θf(tn+1)+(1−θ)f(tn),vh⟩(vh∈Vh)\Bigl\langle\frac{U^{n+1} - U^n}{\Delta t}, v_h\Bigr\rangle + \bigl\langle\nabla(\theta U^{n+1} + (1-\theta)U^n), \nabla v_h\bigr\rangle = \bigl\langle\theta f(t_{n+1}) + (1-\theta)f(t_n), v_h\bigr\rangle\quad(v_h \in V_h)

で定める方法を全離散の方法といい、θ=1\theta = 1 を陰的 Euler 法、θ=12\theta = \frac12 を Crank–Nicolson 法という。

GG は正定値なので、f∈C([0,Tf];L2(Ω))f \in C([0,T_{\mathrm{f}}]; L^2(\Omega)) なら半離散の解はただ 1 つ存在します(線形の常微分方程式系 c˙=−G−1Kc+G−1b(t)\dot{\boldsymbol{c}} = -G^{-1}K\boldsymbol{c} + G^{-1}\boldsymbol{b}(t)。定理 3.1[線形微分方程式系])。全離散の方法は、行列で書けば (G+θΔtK)cn+1=(G−(1−θ)ΔtK)cn+Δt b(G + \theta\Delta tK)\boldsymbol{c}^{n+1} = (G - (1-\theta)\Delta tK)\boldsymbol{c}^n + \Delta t\,\boldsymbol{b} で、前々章の θ 法の単位行列が質量行列に置き換わったものです。

次の定理の証明では、誤差 uh−uu_h - u を「有限要素空間の中の差 θ=uh−Rhu\theta = u_h - R_hu」と「Ritz 射影の誤差 ρ=Rhu−u\rho = R_hu - u」に分けます。ρ\rho は §5 の結果でそのまま抑えられ、θ\theta は有限要素空間の中の方程式を満たすので、ρt\rho_t を右辺とする簡単な評価に帰着します。

定理 7.2(熱方程式の有限要素法の誤差評価)✓

Ω\Omega、Th\mathcal{T}_h は 定理 5.4 の仮定(形状正則性と (R))を満たすとし、CA=9σ2CRC_A = 9\sigma^2C_R とする。u:[0,Tf]→HD2(Ω)u : [0, T_{\mathrm{f}}] \to \mathcal{H}^2_{\mathrm{D}}(\Omega) は H2(Ω)H^2(\Omega) のノルムで連続微分可能で、f∈C([0,Tf];L2(Ω))f \in C([0,T_{\mathrm{f}}]; L^2(\Omega))、すべての tt と v∈H01(Ω)v \in H^1_0(\Omega) について ⟨ut,v⟩+⟨∇u,∇v⟩=⟨f,v⟩\langle u_t, v\rangle + \langle\nabla u, \nabla v\rangle = \langle f, v\rangle を満たすとする。

  1. (半離散)∥uh(t)−u(t)∥≤∥u0h−Rhu0∥+CAh2(∣u(t)∣H2+∫0t∣ut(s)∣H2 ds)\displaystyle\|u_h(t) - u(t)\| \le \|u_{0h} - R_hu_0\| + C_Ah^2\Bigl(|u(t)|_{H^2} + \int_0^t|u_t(s)|_{H^2}\,ds\Bigr)。特に u0h=Rhu0u_{0h} = R_hu_0 なら、右辺は CAh2(∣u0∣H2+2∫0t∣ut∣H2ds)C_Ah^2\bigl(|u_0|_{H^2} + 2\int_0^t|u_t|_{H^2}ds\bigr) 以下である。
  2. (陰的 Euler)uu が L2(Ω)L^2(\Omega) のノルムで 2 回連続微分可能ならば、tn≤Tft_n \le T_{\mathrm{f}} について ∥Un−u(tn)∥≤∥U0−Rhu0∥+CAh2(∣u(tn)∣H2+tnsup⁡s∣ut(s)∣H2)+Δt2 tnsup⁡s∥utt(s)∥\|U^n - u(t_n)\| \le \|U^0 - R_hu_0\| + C_Ah^2\bigl(|u(t_n)|_{H^2} + t_n\sup_s|u_t(s)|_{H^2}\bigr) + \dfrac{\Delta t}{2}\,t_n\sup_s\|u_{tt}(s)\|。
  3. (Crank–Nicolson)uu が L2(Ω)L^2(\Omega) のノルムで 3 回連続微分可能ならば、 ∥Un−u(tn)∥≤∥U0−Rhu0∥+CAh2(∣u(tn)∣H2+tnsup⁡s∣ut(s)∣H2)+Δt212 tnsup⁡s∥uttt(s)∥\|U^n - u(t_n)\| \le \|U^0 - R_hu_0\| + C_Ah^2\bigl(|u(t_n)|_{H^2} + t_n\sup_s|u_t(s)|_{H^2}\bigr) + \dfrac{\Delta t^2}{12}\,t_n\sup_s\|u_{ttt}(s)\|。
証明(定理 7.2)

誤差を θ=uh−Rhu∈Vh\theta = u_h - R_hu \in V_h と ρ=Rhu−u\rho = R_hu - u に分けます(Wheeler の方法。記号 θ\theta は、この証明では θ 法のパラメータではなくこの差を表します)。

ρ\rho の評価. u(t)∈HD2(Ω)u(t) \in \mathcal{H}^2_{\mathrm{D}}(\Omega) なので 定理 5.4 から ∥ρ(t)∥≤CAh2∣u(t)∣H2\|\rho(t)\| \le C_Ah^2|u(t)|_{H^2} です。RhR_h は H01(Ω)H^1_0(\Omega) 上の有界線形作用素(∥∇Rhw∥≤∥∇w∥\|\nabla R_hw\| \le \|\nabla w\|)で、uu は H01(Ω)H^1_0(\Omega) 値の関数としても連続微分可能なので、RhuR_hu も連続微分可能で ∂t(Rhu)=Rhut\partial_t(R_hu) = R_hu_t です。ut(t)u_t(t) は HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) の元の差分商の H2H^2 での極限なので HD2(Ω)\mathcal{H}^2_{\mathrm{D}}(\Omega) に属し、∥ρt(t)∥=∥Rhut−ut∥≤CAh2∣ut(t)∣H2\|\rho_t(t)\| = \|R_hu_t - u_t\| \le C_Ah^2|u_t(t)|_{H^2} です。

1. θ\theta の方程式. vh∈Vhv_h \in V_h について、半離散の式、Ritz 射影の定義 ⟨∇Rhu,∇vh⟩=⟨∇u,∇vh⟩\langle\nabla R_hu, \nabla v_h\rangle = \langle\nabla u, \nabla v_h\rangle、uu の式を順に使うと

⟨θt,vh⟩+⟨∇θ,∇vh⟩=⟨f,vh⟩−⟨Rhut,vh⟩−⟨∇u,∇vh⟩=⟨ut−Rhut,vh⟩=−⟨ρt,vh⟩\langle\theta_t, v_h\rangle + \langle\nabla\theta, \nabla v_h\rangle = \langle f, v_h\rangle - \langle R_hu_t, v_h\rangle - \langle\nabla u, \nabla v_h\rangle = \langle u_t - R_hu_t, v_h\rangle = -\langle\rho_t, v_h\rangle

です。vh=θ(t)v_h = \theta(t) とすると 12ddt∥θ∥2+∥∇θ∥2=−⟨ρt,θ⟩≤∥ρt∥∥θ∥\frac12\frac{d}{dt}\|\theta\|^2 + \|\nabla\theta\|^2 = -\langle\rho_t, \theta\rangle \le \|\rho_t\|\|\theta\| です。ε>0\varepsilon > 0 に対し gε(t)=(∥θ(t)∥2+ε2)1/2g_\varepsilon(t) = (\|\theta(t)\|^2 + \varepsilon^2)^{1/2} とおくと、gε′=12gεddt∥θ∥2≤∥ρt∥∥θ∥gε≤∥ρt∥g_\varepsilon' = \frac{1}{2g_\varepsilon}\frac{d}{dt}\|\theta\|^2 \le \frac{\|\rho_t\|\|\theta\|}{g_\varepsilon} \le \|\rho_t\| なので、積分して ε→0\varepsilon \to 0 とすれば

∥θ(t)∥≤∥θ(0)∥+∫0t∥ρt(s)∥ ds≤∥u0h−Rhu0∥+CAh2∫0t∣ut(s)∣H2 ds\|\theta(t)\| \le \|\theta(0)\| + \int_0^t\|\rho_t(s)\|\,ds \le \|u_{0h} - R_hu_0\| + C_Ah^2\int_0^t|u_t(s)|_{H^2}\,ds

です。∥uh−u∥≤∥θ∥+∥ρ∥\|u_h - u\| \le \|\theta\| + \|\rho\| に代入して前半です。後半は、∣u(t)∣H2≤∣u0∣H2+∫0t∣ut∣H2ds|u(t)|_{H^2} \le |u_0|_{H^2} + \int_0^t|u_t|_{H^2}ds(u(t)−u0u(t) - u_0 の 2 階導関数に、下の「平均値の不等式」と同じ議論を使う)から従います。

平均値の不等式. g:[a,b]→L2(Ω)g : [a,b] \to L^2(\Omega) が連続微分可能なら、任意の w∈L2(Ω)w \in L^2(\Omega) について、スカラー関数 s↦⟨g(s),w⟩s \mapsto \langle g(s), w\rangle に微積分学の基本定理を使って ∣⟨g(b)−g(a),w⟩∣=∣∫ab⟨g′(s),w⟩ds∣≤∫ab∥g′(s)∥ds ∥w∥|\langle g(b) - g(a), w\rangle| = |\int_a^b\langle g'(s), w\rangle ds| \le \int_a^b\|g'(s)\|ds\,\|w\| なので、∥g(b)−g(a)∥≤∫ab∥g′(s)∥ ds≤(b−a)sup⁡s∥g′(s)∥\|g(b) - g(a)\| \le \int_a^b\|g'(s)\|\,ds \le (b - a)\sup_s\|g'(s)\| です。

2. 陰的 Euler. θn=Un−Rhu(tn)\theta^n = U^n - R_hu(t_n)、un=u(tn)u^n = u(t_n) とおきます。全離散の式(θ=1\theta = 1)と Ritz 射影の定義、t=tn+1t = t_{n+1} での uu の式から、vh∈Vhv_h \in V_h について

⟨θn+1−θnΔt,vh⟩+⟨∇θn+1,∇vh⟩=⟨ωn+1,vh⟩,ωn+1=(ut(tn+1)−un+1−unΔt)+(I−Rh)(un+1−un)Δt\Bigl\langle\frac{\theta^{n+1} - \theta^n}{\Delta t}, v_h\Bigr\rangle + \langle\nabla\theta^{n+1}, \nabla v_h\rangle = \langle\omega^{n+1}, v_h\rangle,\qquad\omega^{n+1} = \Bigl(u_t(t_{n+1}) - \frac{u^{n+1} - u^n}{\Delta t}\Bigr) + \frac{(I - R_h)(u^{n+1} - u^n)}{\Delta t}

です。第 1 項を ω1\omega_1、第 2 項を ω2\omega_2 とします。w∈L2(Ω)w \in L^2(\Omega) について、スカラー関数 ϕ(s)=⟨u(s),w⟩\phi(s) = \langle u(s), w\rangle の Taylor の定理(定理 5.3[平均値の定理とテイラーの定理])から ϕ′(tn+1)−ϕ(tn+1)−ϕ(tn)Δt=Δt2ϕ′′(c)\phi'(t_{n+1}) - \frac{\phi(t_{n+1}) - \phi(t_n)}{\Delta t} = \frac{\Delta t}{2}\phi''(c) なので、∣⟨ω1,w⟩∣≤Δt2sup⁡s∥utt(s)∥∥w∥|\langle\omega_1, w\rangle| \le \frac{\Delta t}{2}\sup_s\|u_{tt}(s)\|\|w\|、すなわち ∥ω1∥≤Δt2sup⁡∥utt∥\|\omega_1\| \le \frac{\Delta t}{2}\sup\|u_{tt}\| です。un+1−un∈HD2(Ω)u^{n+1} - u^n \in \mathcal{H}^2_{\mathrm{D}}(\Omega) に 定理 5.4 を使い、2 階導関数に平均値の不等式を使うと ∥ω2∥≤CAh2Δt∣un+1−un∣H2≤CAh2sup⁡s∣ut(s)∣H2\|\omega_2\| \le \frac{C_Ah^2}{\Delta t}|u^{n+1} - u^n|_{H^2} \le C_Ah^2\sup_s|u_t(s)|_{H^2} です。vh=θn+1v_h = \theta^{n+1} とすると

∥θn+1∥2−⟨θn,θn+1⟩+Δt∥∇θn+1∥2=Δt⟨ωn+1,θn+1⟩\|\theta^{n+1}\|^2 - \langle\theta^n, \theta^{n+1}\rangle + \Delta t\|\nabla\theta^{n+1}\|^2 = \Delta t\langle\omega^{n+1}, \theta^{n+1}\rangle

なので ∥θn+1∥2≤(∥θn∥+Δt∥ωn+1∥)∥θn+1∥\|\theta^{n+1}\|^2 \le (\|\theta^n\| + \Delta t\|\omega^{n+1}\|)\|\theta^{n+1}\|、すなわち ∥θn+1∥≤∥θn∥+Δt∥ωn+1∥\|\theta^{n+1}\| \le \|\theta^n\| + \Delta t\|\omega^{n+1}\| です。くり返して ∥θn∥≤∥θ0∥+tnmax⁡k∥ωk∥\|\theta^n\| \le \|\theta^0\| + t_n\max_k\|\omega^k\| で、∥Un−un∥≤∥θn∥+∥ρ(tn)∥\|U^n - u^n\| \le \|\theta^n\| + \|\rho(t_n)\| に代入して主張を得ます。

3. Crank–Nicolson. 同じ計算で、tnt_n と tn+1t_{n+1} での uu の式の平均を使うと

⟨θn+1−θnΔt,vh⟩+⟨∇θn+1+θn2,∇vh⟩=⟨ωn+1,vh⟩,ωn+1=(ut(tn+1)+ut(tn)2−un+1−unΔt)+ω2\Bigl\langle\frac{\theta^{n+1} - \theta^n}{\Delta t}, v_h\Bigr\rangle + \Bigl\langle\nabla\frac{\theta^{n+1} + \theta^n}{2}, \nabla v_h\Bigr\rangle = \langle\omega^{n+1}, v_h\rangle,\qquad\omega^{n+1} = \Bigl(\frac{u_t(t_{n+1}) + u_t(t_n)}{2} - \frac{u^{n+1} - u^n}{\Delta t}\Bigr) + \omega_2

です。ψ=ϕ′\psi = \phi'(ϕ(s)=⟨u(s),w⟩\phi(s) = \langle u(s), w\rangle)について、部分積分を 2 回行うと

∫tntn+1(s−tn)(tn+1−s)ψ′′(s) ds=Δt(ψ(tn)+ψ(tn+1))−2∫tntn+1ψ(s) ds\int_{t_n}^{t_{n+1}}(s - t_n)(t_{n+1} - s)\psi''(s)\,ds = \Delta t\bigl(\psi(t_n) + \psi(t_{n+1})\bigr) - 2\int_{t_n}^{t_{n+1}}\psi(s)\,ds

で、∫tntn+1(s−tn)(tn+1−s) ds=Δt36\int_{t_n}^{t_{n+1}}(s - t_n)(t_{n+1} - s)\,ds = \frac{\Delta t^3}{6} なので、∣ψ(tn)+ψ(tn+1)2−ϕ(tn+1)−ϕ(tn)Δt∣≤Δt212sup⁡∣ψ′′∣\bigl|\frac{\psi(t_n) + \psi(t_{n+1})}{2} - \frac{\phi(t_{n+1}) - \phi(t_n)}{\Delta t}\bigr| \le \frac{\Delta t^2}{12}\sup|\psi''| です(台形則の誤差)。したがって ∥ω1∥≤Δt212sup⁡∥uttt∥\|\omega_1\| \le \frac{\Delta t^2}{12}\sup\|u_{ttt}\| です。vh=θn+1+θn2v_h = \frac{\theta^{n+1} + \theta^n}{2} とすると

∥θn+1∥2−∥θn∥22Δt+∥∇θn+1+θn2∥2≤∥ωn+1∥ ∥θn+1∥+∥θn∥2\frac{\|\theta^{n+1}\|^2 - \|\theta^n\|^2}{2\Delta t} + \Bigl\|\nabla\frac{\theta^{n+1} + \theta^n}{2}\Bigr\|^2 \le \|\omega^{n+1}\|\,\frac{\|\theta^{n+1}\| + \|\theta^n\|}{2}

で、∥θn+1∥+∥θn∥>0\|\theta^{n+1}\| + \|\theta^n\| > 0 なら割って ∥θn+1∥−∥θn∥≤Δt∥ωn+1∥\|\theta^{n+1}\| - \|\theta^n\| \le \Delta t\|\omega^{n+1}\|(00 なら自明)です。あとは 2 と同じです。

証明の構造は、前々章の差分法と同じ「局所誤差 ω\omega の積み上げ」で、安定性は試験関数に解そのものをとるエネルギー法から出ています。違いは、空間の誤差を Ritz 射影 RhuR_hu との比較にまとめたことです。uu と直接比べると ∥∇(u−uh)∥\|\nabla(u - u_h)\| の O(h)O(h) が現れてしまいますが、RhuR_hu と比べると、Ritz 射影の定義によって勾配の項が消え、L2L^2 の O(h2)O(h^2) だけが残ります。初期値 u0hu_{0h} は、Rhu0R_hu_0 の代わりに節点補間 Ihu0I_hu_0 をとっても、∥Ihu0−Rhu0∥≤∥Ihu0−u0∥+∥u0−Rhu0∥=O(h2)\|I_hu_0 - R_hu_0\| \le \|I_hu_0 - u_0\| + \|u_0 - R_hu_0\| = O(h^2)(定理 4.2 と 定理 5.4)なので、次数は変わりません。連続の問題の最大値原理(定理 3.1[熱方程式])の離散版は、質量行列を集中化し、命題 6.1 の角度の条件を仮定すると、前々章の 定理 4.3[楕円型・放物型方程式の差分法] と同じ議論で得られます。

注意 7.3(この先)

区分 2 次以上の要素では、解が滑らかなら次数が上がります(kk 次要素で H1H^1 の誤差 O(hk)O(h^k))。四角形要素、曲がった境界を近似するアイソパラメトリック要素、計算した解から誤差を見積もる事後誤差評価と、それに基づく適応的な細分、最大値ノルムでの誤差評価(O(h2∣log⁡h∣)O(h^2|\log h|))は、どれも証明に新しい道具が要るので、この章では扱いません。Brenner–Scott と Ciarlet(参考文献)に証明があります。有限要素法による固有値の計算と、その誤差定数を使った固有値の下界は、固有値の包含の章 で扱っています。そこで必要になる「射影の誤差定数」は、定理 5.4 の前半の形の不等式 ∥w−Rhw∥≤Ch∥∇(w−Rhw)∥\|w - R_hw\| \le C_h\|\nabla(w - R_hw)\| の定数です。

まず、以下の実験で共通に使う部品をまとめます。格子から三角形分割を作る関数、剛性行列・質量行列・荷重ベクトルを組み立てる関数、Dirichlet 問題を解く関数、誤差を計算する関数です。組み立てでは、要素ごとの 3×33 \times 3 の行列の成分を、行と列の節点番号とともに 1 本の配列に並べ、coo_matrix に渡します。同じ位置に複数の値があると足し合わされるので、これがそのまま組み立てになります。このファイルを fem2d.py として保存し、後のコードから読み込みます。

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1(arm64)
import numpy as np
import scipy.sparse as sp
from scipy.sparse.linalg import spsolve
def grid_mesh(xs, ys, keep=lambda xc, yc: True):
"""格子の各セル(中心が keep を満たすもの)を対角線で 2 つの三角形に分ける。"""
nx, ny = len(xs) - 1, len(ys) - 1
idx = lambda i, j: i * (ny + 1) + j
X, Y = np.meshgrid(xs, ys, indexing="ij")
tri = []
for i in range(nx):
for j in range(ny):
if keep(0.5 * (xs[i] + xs[i + 1]), 0.5 * (ys[j] + ys[j + 1])):
tri.append([idx(i, j), idx(i + 1, j), idx(i + 1, j + 1)])
tri.append([idx(i, j), idx(i + 1, j + 1), idx(i, j + 1)])
tri = np.array(tri)
used = np.unique(tri) # 使われる節点だけに番号を振り直す
new = -np.ones((nx + 1) * (ny + 1), dtype=int)
new[used] = np.arange(len(used))
return np.column_stack([X.ravel(), Y.ravel()])[used], new[tri]
def geometry(p, t):
"""各三角形の面積と、重心座標の勾配(3 頂点ぶん)。"""
a, b, c = p[t[:, 0]], p[t[:, 1]], p[t[:, 2]]
det = (b[:, 0] - a[:, 0]) * (c[:, 1] - a[:, 1]) - (b[:, 1] - a[:, 1]) * (c[:, 0] - a[:, 0])
g = np.stack([np.column_stack([b[:, 1] - c[:, 1], c[:, 0] - b[:, 0]]),
np.column_stack([c[:, 1] - a[:, 1], a[:, 0] - c[:, 0]]),
np.column_stack([a[:, 1] - b[:, 1], b[:, 0] - a[:, 0]])], axis=1)
return 0.5 * np.abs(det), g / det[:, None, None]
QP = np.array([[2/3, 1/6, 1/6], [1/6, 2/3, 1/6], [1/6, 1/6, 2/3]]) # 2 次まで正確な 3 点則
def assemble(p, t, f=None):
"""剛性行列 K、質量行列 G、荷重ベクトル b(coo_matrix が重複した添字を足し合わせる)。"""
area, g = geometry(p, t)
n = len(p)
I = np.repeat(t, 3, axis=1).ravel()
J = np.tile(t, (1, 3)).ravel()
Ke = area[:, None, None] * np.einsum("eid,ejd->eij", g, g)
Ge = area[:, None, None] / 12.0 * (np.ones((3, 3)) + np.eye(3))
K = sp.coo_matrix((Ke.ravel(), (I, J)), shape=(n, n)).tocsr()
G = sp.coo_matrix((Ge.ravel(), (I, J)), shape=(n, n)).tocsr()
b = np.zeros(n)
if f is not None:
for lam in QP: # 求積点 x = Σ λ_i a_i
xq = np.einsum("i,eid->ed", lam, p[t])
np.add.at(b, t, area[:, None] / 3.0 * f(xq[:, 0], xq[:, 1])[:, None] * lam[None, :])
return K, G, b
def boundary_nodes(t, n):
"""1 つの三角形にしか属さない辺の端点。"""
e = np.sort(np.vstack([t[:, [0, 1]], t[:, [1, 2]], t[:, [2, 0]]]), axis=1)
ue, cnt = np.unique(e, axis=0, return_counts=True)
return np.unique(ue[cnt == 1])
def solve_dirichlet(p, t, f, gD):
K, G, b = assemble(p, t, f)
bd = boundary_nodes(t, len(p))
it = np.setdiff1d(np.arange(len(p)), bd)
u = np.zeros(len(p))
u[bd] = gD(p[bd, 0], p[bd, 1])
u[it] = spsolve(K[it][:, it].tocsc(), b[it] - K[it][:, bd].dot(u[bd]))
return u, K, G
def errors(p, t, u, uex, grad):
"""L2 誤差と H1 半ノルム誤差(3 点則)。"""
area, g = geometry(p, t)
gu = np.einsum("ei,eid->ed", u[t], g)
e0 = e1 = 0.0
for lam in QP:
xq = np.einsum("i,eid->ed", lam, p[t])
e0 += np.sum(area / 3.0 * (uex(xq[:, 0], xq[:, 1]) - np.einsum("ei,i->e", u[t], lam))**2)
gx, gy = grad(xq[:, 0], xq[:, 1])
e1 += np.sum(area / 3.0 * ((gx - gu[:, 0])**2 + (gy - gu[:, 1])**2))
return np.sqrt(e0), np.sqrt(e1)

要素剛性行列は ∣T∣ ∇λi⋅∇λj|T|\,\nabla\lambda_i\cdot\nabla\lambda_j、要素質量行列は ∣T∣12(1+δij)\frac{|T|}{12}(1 + \delta_{ij})(命題 6.3 の証明)です。重心座標の勾配は、頂点 a,b,ca, b, c について ∇λa=(b2−c2, c1−b1)/det⁡\nabla\lambda_a = (b_2 - c_2,\ c_1 - b_1)/\det などで、det⁡\det は BB の行列式です。

正方形での製造解. Ω=(0,1)2\Omega = (0,1)^2、u=sin⁡πxsin⁡πyu = \sin\pi x\sin\pi y、f=2π2uf = 2\pi^2u を、一辺 1/n1/n の直角二等辺三角形の分割で解きます。

from fem2d import *
pi = np.pi
uex = lambda x, y: np.sin(pi * x) * np.sin(pi * y)
grad = lambda x, y: (pi * np.cos(pi * x) * np.sin(pi * y), pi * np.sin(pi * x) * np.cos(pi * y))
f = lambda x, y: 2 * pi**2 * uex(x, y)
E0, E1, EP = [], [], []
for n in (8, 16, 32, 64, 128):
p, t = grid_mesh(np.linspace(0, 1, n + 1), np.linspace(0, 1, n + 1))
u, K, G = solve_dirichlet(p, t, f, lambda x, y: 0 * x)
e0, e1 = errors(p, t, u, uex, grad)
E0.append(e0); E1.append(e1)
EP.append(np.sqrt(pi**2 / 2 - u.dot(K.dot(u)))) # ‖∇u‖² − ‖∇u_h‖² の平方根
if n == 8: # 5 点差分との照合
i = np.argmin(np.abs(p[:, 0] - 0.5) + np.abs(p[:, 1] - 0.5))
row = K[i].toarray().ravel()
print("中央の節点の行の非零成分:", np.round(np.sort(row[np.abs(row) > 1e-12]), 12))
for lab, E in (("H1", E1), ("L2", E0), ("Pyth", EP)):
o = [np.log2(E[i] / E[i + 1]) for i in range(4)]
print(f"{lab:4s} " + " ".join(f"{v:9.2e}" for v in E) + " |" + " ".join(f"{v:5.2f}" for v in o))
中央の節点の行の非零成分: [-1. -1. -1. -1. 4.]
H1 4.32e-01 2.18e-01 1.09e-01 5.45e-02 2.73e-02 | 0.99 1.00 1.00 1.00
L2 2.04e-02 5.20e-03 1.31e-03 3.27e-04 8.18e-05 | 1.97 1.99 2.00 2.00
Pyth 4.31e-01 2.17e-01 1.09e-01 5.45e-02 2.73e-02 | 0.99 1.00 1.00 1.00

検算. (a) 参照解は製造解です。(b) 観測次数は H1H^1 で 11、L2L^2 で 22 で、定理 5.1 と 定理 5.4(正方形では (R) が CR=1C_R = 1 で成り立つ)に合います。直角二等辺三角形では σ=2/(2−2)=2.41\sigma = \sqrt2/(2 - \sqrt2) = 2.41、∣u∣H2=π2|u|_{H^2} = \pi^2(∥uxx∥2+2∥uxy∥2+∥uyy∥2=π4(14+24+14)\|u_{xx}\|^2 + 2\|u_{xy}\|^2 + \|u_{yy}\|^2 = \pi^4(\frac14 + \frac24 + \frac14))で、n=8n = 8(h=2/8h = \sqrt2/8)での上界は 3σh∣u∣H2=12.63\sigma h|u|_{H^2} = 12.6 と 9σ2h2∣u∣H2=16.29\sigma^2h^2|u|_{H^2} = 16.2 です。観測値 0.4320.432、0.02040.0204 はその内側ですが、上界はかなり粗い値です。この章の定数は、どんな三角形にも通用するように作ったためです。(c) 別の方法による照合として、Galerkin 直交性から ∥∇(u−uh)∥2=∥∇u∥2−∥∇uh∥2\|\nabla(u - u_h)\|^2 = \|\nabla u\|^2 - \|\nabla u_h\|^2(前章の 定理 2.6[有限要素法 I] の 3 と同じ内容)で、∥∇u∥2=π2/2\|\nabla u\|^2 = \pi^2/2、∥∇uh∥2=cTK~c\|\nabla u_h\|^2 = \boldsymbol{c}^{\mathsf{T}}\tilde K\boldsymbol{c} です。Pyth の行がこれで、求積で直接計算した H1 の行と 3 桁まで一致します(荷重と誤差の計算に使った求積則の誤差の範囲)。(d) 中央の節点の行は 44 と −1-1 が 4 つで、例 6.2 のとおり 5 点差分です。

L 字形の領域. (−1,1)2(-1,1)^2 から第 4 象限 [0,1)×(−1,0][0,1)\times(-1,0] を除いた領域で、調和関数 u=r2/3sin⁡(2θ/3)u = r^{2/3}\sin(2\theta/3)(0≤θ≤3π/20 \le \theta \le 3\pi/2)を境界値として与え、f=0f = 0 で解きます。

from fem2d import *
def uex(x, y): # r^(2/3) sin(2θ/3)、θ ∈ [0, 3π/2]
th = np.mod(np.arctan2(y, x), 2 * np.pi)
return (x**2 + y**2)**(1 / 3) * np.sin(2 * th / 3)
def grad(x, y):
r, th = np.sqrt(x**2 + y**2), np.mod(np.arctan2(y, x), 2 * np.pi)
ur, ut = 2 / 3 * r**(-1 / 3) * np.sin(2 * th / 3), 2 / 3 * r**(-1 / 3) * np.cos(2 * th / 3)
return ur * np.cos(th) - ut * np.sin(th), ur * np.sin(th) + ut * np.cos(th)
keep = lambda xc, yc: not (xc > 0 and yc < 0) # L 字形: (-1,1)^2 から第 4 象限を除く
E0, E1 = [], []
for n in (8, 16, 32, 64, 128):
xs = np.linspace(-1, 1, 2 * n + 1)
p, t = grid_mesh(xs, xs, keep)
u, K, G = solve_dirichlet(p, t, None, uex)
e0, e1 = errors(p, t, u, uex, grad)
E0.append(e0); E1.append(e1)
for lab, E in (("H1", E1), ("L2", E0)):
o = [np.log2(E[i] / E[i + 1]) for i in range(4)]
print(f"{lab} " + " ".join(f"{v:9.2e}" for v in E) + " |" + " ".join(f"{v:5.2f}" for v in o))
H1 1.15e-01 7.34e-02 4.67e-02 2.96e-02 1.87e-02 | 0.64 0.65 0.66 0.66
L2 6.50e-03 2.68e-03 1.09e-03 4.43e-04 1.78e-04 | 1.28 1.29 1.30 1.31

観測次数は H1H^1 で 0.660.66、L2L^2 で 1.311.31 に近づき、注意 5.5 の 2/32/3 と 4/34/3 に合います。解が H2H^2 に属さないので 定理 5.1 の仮定が成り立たず、次数 11 と 22 は得られません。境界値が 00 でない問題は、境界の節点の値を固定し、その寄与を右辺に移して解いています(solve_dirichlet)。検算として、uu が調和であることは、極座標で Δ(rαsin⁡αθ)=(α(α−1)+α−α2)rα−2sin⁡αθ=0\Delta(r^\alpha\sin\alpha\theta) = (\alpha(\alpha - 1) + \alpha - \alpha^2)r^{\alpha - 2}\sin\alpha\theta = 0 から、凹角をはさむ 2 辺(θ=0\theta = 0 と θ=3π/2\theta = 3\pi/2)で 00 であることは sin⁡0=sin⁡π=0\sin0 = \sin\pi = 0 から確かめられます。誤差の積分は特異点の近くで求積の誤差を含みますが、次数の読み取りには影響しない大きさです(nn を変えても次数が安定しています)。

例 8.1(鈍角のある分割では剛性行列に正の非対角成分が現れる)

単位正方形を nx×nyn_x \times n_y 個の長方形(横 hxh_x、縦 hyh_y)に分け、各長方形を中心の点と 4 頂点で 4 つの三角形に分けます。水平な辺は、上下の長方形の中心を頂点とする 2 つの三角形に共有され、向かい合う角 θ\theta は tan⁡θ2=hx/hy\tan\frac\theta2 = h_x/h_y を満たします。hx>hyh_x > h_y なら θ>π/2\theta > \pi/2(鈍角)で、和 2θ2\theta は π\pi を超えます。命題 6.1 の 1 から、この辺に対応する成分は −cot⁡θ=r2−12r-\cot\theta = \frac{r^2 - 1}{2r}(r=hx/hyr = h_x/h_y)で、正です。

from fem2d import *
def crisscross(nx, ny):
"""各セルを中心の節点と 4 頂点で 4 つの三角形に分ける。"""
xs, ys = np.linspace(0, 1, nx + 1), np.linspace(0, 1, ny + 1)
X, Y = np.meshgrid(xs, ys, indexing="ij")
Xc, Yc = np.meshgrid(0.5 * (xs[:-1] + xs[1:]), 0.5 * (ys[:-1] + ys[1:]), indexing="ij")
p = np.vstack([np.column_stack([X.ravel(), Y.ravel()]),
np.column_stack([Xc.ravel(), Yc.ravel()])])
v = lambda i, j: i * (ny + 1) + j
c = lambda i, j: (nx + 1) * (ny + 1) + i * ny + j
t = [[a, b, c(i, j)] for i in range(nx) for j in range(ny)
for a, b in ((v(i, j), v(i + 1, j)), (v(i + 1, j), v(i + 1, j + 1)),
(v(i + 1, j + 1), v(i, j + 1)), (v(i, j + 1), v(i, j)))]
return p, np.array(t)
for nx, ny in ((8, 8), (4, 12), (4, 24)):
p, t = crisscross(nx, ny)
K, G, _ = assemble(p, t)
bd = boundary_nodes(t, len(p))
it = np.setdiff1d(np.arange(len(p)), bd)
Kii = K[it][:, it].toarray()
off = Kii - np.diag(np.diag(Kii))
Kinv = np.linalg.inv(Kii)
print(f"セル {nx}x{ny} (hx/hy={ny / nx:3.1f}) 非対角成分の最大={off.max():7.4f}"
f" K^-1 の最小成分={Kinv.min():9.2e}")
セル 8x8 (hx/hy=1.0) 非対角成分の最大= 0.0000 K^-1 の最小成分= 5.86e-05
セル 4x12 (hx/hy=3.0) 非対角成分の最大= 1.3333 K^-1 の最小成分= 2.87e-05
セル 4x24 (hx/hy=6.0) 非対角成分の最大= 2.9167 K^-1 の最小成分=-1.40e-02

非対角成分の最大は公式の値 r2−12r\frac{r^2 - 1}{2r}(r=3r = 3 で 86=1.3333\frac{8}{6} = 1.3333、r=6r = 6 で 3512=2.9167\frac{35}{12} = 2.9167)と一致します。r=6r = 6 では K−1K^{-1} に負の成分が現れます。これは、ある 1 つの節点に正の荷重をかけた(b≥0\boldsymbol{b} \ge \boldsymbol{0})のに、離散解 K−1bK^{-1}\boldsymbol{b} がどこかで負になることを意味し、最大値原理(の最小についての形)が破れています。連続の問題では f≥0f \ge 0 なら u≥0u \ge 0(定理 6.2[楕円型正則性と最大値原理])なので、これは離散化が作った現象です。r=3r = 3 では非対角成分に正の値があっても K−1K^{-1} は非負のままで、命題 6.1 の角度の条件が十分条件であって必要条件ではないことが分かります。r=1r = 1 は直角二等辺三角形の分割で、条件を満たします。

熱方程式の全離散. Ω=(0,1)2\Omega = (0,1)^2、u0=sin⁡πxsin⁡πyu_0 = \sin\pi x\sin\pi y(厳密解は e−2π2tu0e^{-2\pi^2t}u_0)を、Δt=h/4\Delta t = h/4(h=1/nh = 1/n は格子の一辺)として Tf=0.125T_{\mathrm{f}} = 0.125 まで解きます。初期値は節点補間です。

from fem2d import *
from scipy.sparse.linalg import splu
pi, T = np.pi, 0.125
u0 = lambda x, y: np.sin(pi * x) * np.sin(pi * y)
def heat_theta(n, theta):
p, t = grid_mesh(np.linspace(0, 1, n + 1), np.linspace(0, 1, n + 1))
K, G, _ = assemble(p, t)
it = np.setdiff1d(np.arange(len(p)), boundary_nodes(t, len(p)))
K, G = K[it][:, it].tocsc(), G[it][:, it].tocsc()
steps = n // 2 # dt = T / steps = h / 4
dt = T / steps
lu = splu((G + theta * dt * K).tocsc())
U = u0(p[it, 0], p[it, 1])
for _ in range(steps):
U = lu.solve((G - (1 - theta) * dt * K).dot(U))
u = np.zeros(len(p)); u[it] = U
ex = lambda x, y: np.exp(-2 * pi**2 * T) * u0(x, y)
return errors(p, t, u, ex, lambda x, y: (0 * x, 0 * x))[0]
for lab, th in (("CN dt=h/4", 0.5), ("BE dt=h/4", 1.0)):
E = [heat_theta(n, th) for n in (8, 16, 32, 64)]
o = [np.log2(E[i] / E[i + 1]) for i in range(3)]
print(f"{lab} " + " ".join(f"{v:9.2e}" for v in E) + " |" + " ".join(f"{v:5.2f}" for v in o))
CN dt=h/4 8.23e-03 2.10e-03 5.29e-04 1.32e-04 | 1.97 1.99 2.00
BE dt=h/4 2.49e-02 1.44e-02 7.65e-03 3.93e-03 | 0.79 0.91 0.96

検算. (a) 参照解は固有関数展開の閉じた形で、Tf=0.125T_{\mathrm{f}} = 0.125 で e−2π2Tf=0.0848e^{-2\pi^2T_{\mathrm{f}}} = 0.0848 です。(b) Δt\Delta t を hh に比例させているので、定理 7.2 の評価は Crank–Nicolson で O(h2+Δt2)=O(h2)O(h^2 + \Delta t^2) = O(h^2)、陰的 Euler で O(h2+Δt)=O(h)O(h^2 + \Delta t) = O(h) で、観測次数 22 と 11(に近づく値)に合います。(c) 行列 G+θΔtKG + \theta\Delta tK は nn によらず 1 回だけ LU 分解し、毎ステップは代入だけです。この行列は帯幅が nn 程度の疎行列で、前々章の 1 次元の三重対角行列にあたります。

演習 9.1易

参照三角形 T^\hat T(頂点 a0=(0,0)a_0 = (0,0)、a1=(1,0)a_1 = (1,0)、a2=(0,1)a_2 = (0,1))の重心座標とその勾配を求め、要素剛性行列 (∫T^∇λj⋅∇λi)i,j\bigl(\int_{\hat T}\nabla\lambda_j\cdot\nabla\lambda_i\bigr)_{i,j} を計算せよ。結果を余接の公式(命題 6.1 の 1)で確かめよ。

解答

λ1=x1\lambda_1 = x_1、λ2=x2\lambda_2 = x_2、λ0=1−x1−x2\lambda_0 = 1 - x_1 - x_2 で、勾配は ∇λ1=(1,0)\nabla\lambda_1 = (1,0)、∇λ2=(0,1)\nabla\lambda_2 = (0,1)、∇λ0=(−1,−1)\nabla\lambda_0 = (-1,-1) です。∣T^∣=12|\hat T| = \frac12 を掛けて

KT^=12(2−1−1−110−101)K_{\hat T} = \frac12\begin{pmatrix}2 & -1 & -1\\ -1 & 1 & 0\\ -1 & 0 & 1\end{pmatrix}

です(行と列は a0,a1,a2a_0, a_1, a_2 の順)。角は a0a_0 で π2\frac\pi2、a1a_1 と a2a_2 で π4\frac\pi4 です。余接の公式では、(a1,a2)(a_1, a_2) の成分は向かい合う a0a_0 の角から −12cot⁡π2=0-\frac12\cot\frac\pi2 = 0、(a0,a1)(a_0, a_1) の成分は向かい合う a2a_2 の角から −12cot⁡π4=−12-\frac12\cot\frac\pi4 = -\frac12 で、一致します。対角成分は行の和が 00 であることから決まります。

演習 9.2標準

ff が定数のとき、荷重ベクトルの成分は bi=f3∑T∋zi∣T∣b_i = \frac{f}{3}\sum_{T \ni z_i}|T| であることを示せ。直角二等辺三角形の規則的な分割(例 6.2)では bi=fh2b_i = fh^2 になることを確かめよ。

解答

bi=f∫Ωφi dx=f∑T∋zi∫Tλi dxb_i = f\int_\Omega\varphi_i\,dx = f\sum_{T\ni z_i}\int_T\lambda_i\,dx です。∫Tλi dx\int_T\lambda_i\,dx は 3 つの重心座標について等しく(命題 6.3 の証明と同じく、参照三角形に写して頂点の番号を付け替えればよい)、和は ∫T1 dx=∣T∣\int_T1\,dx = |T| なので、∫Tλi dx=∣T∣/3\int_T\lambda_i\,dx = |T|/3 です。規則的な分割では、内部の節点は面積 h2/2h^2/2 の三角形 6 個に共有されるので bi=f3⋅6⋅h22=fh2b_i = \frac f3\cdot6\cdot\frac{h^2}{2} = fh^2 です。

演習 9.3標準

半離散の有限要素解(定義 7.1)が ∥uh(t)∥≤∥u0h∥+∫0t∥f(s)∥ ds\|u_h(t)\| \le \|u_{0h}\| + \int_0^t\|f(s)\|\,ds を満たすことを示せ。f=0f = 0 のとき、Ω\Omega が幅 dd の帯に含まれるなら ∥uh(t)∥≤e−t/d2∥u0h∥\|u_h(t)\| \le e^{-t/d^2}\|u_{0h}\| であることも示せ。

解答

半離散の式で vh=uh(t)v_h = u_h(t) とすると 12ddt∥uh∥2+∥∇uh∥2=⟨f,uh⟩≤∥f∥∥uh∥\frac12\frac{d}{dt}\|u_h\|^2 + \|\nabla u_h\|^2 = \langle f, u_h\rangle \le \|f\|\|u_h\| です。定理 7.2 の証明の 1 と同じく、gε=(∥uh∥2+ε2)1/2g_\varepsilon = (\|u_h\|^2 + \varepsilon^2)^{1/2} について gε′≤∥f∥g_\varepsilon' \le \|f\| なので、積分して ε→0\varepsilon \to 0 とすれば前半です。

f=0f = 0 のとき、Poincaré の不等式(補題 2.1[楕円型方程式の弱解と変分法]。uh(t)∈Vh⊂H01(Ω)u_h(t) \in V_h \subset H^1_0(\Omega))から ∥∇uh∥2≥d−2∥uh∥2\|\nabla u_h\|^2 \ge d^{-2}\|u_h\|^2 なので、y(t)=∥uh(t)∥2y(t) = \|u_h(t)\|^2 は y′≤−2d2yy' \le -\frac{2}{d^2}y を満たします。ddt(e2t/d2y)≤0\frac{d}{dt}\bigl(e^{2t/d^2}y\bigr) \le 0 から y(t)≤e−2t/d2y(0)y(t) \le e^{-2t/d^2}y(0) で、平方根をとって後半です。この評価は hh によらず、分割の形にもよりません。半離散の方法の安定性は、楕円型の場合と同じく、連続の問題のエネルギー評価からそのまま受け継がれます。

演習 9.4難

一辺 hh の正三角形で平面を埋めた分割で、内部の節点 ziz_i の行の成分 K~ii\tilde K_{ii}、K~ij\tilde K_{ij} を求めよ。滑らかな uu の節点での値にこの行を作用させたものを ∫φi=32h2\int\varphi_i = \frac{\sqrt3}{2}h^2 で割ると、−Δu(zi)-\Delta u(z_i) を O(h2)O(h^2) の誤差で近似することを示せ。

解答

ziz_i から 6 本の辺が出ていて、各辺に向かい合う角は両側とも π3\frac\pi3 です。余接の公式から K~ij=−12⋅2cot⁡π3=−13\tilde K_{ij} = -\frac12\cdot2\cot\frac\pi3 = -\frac{1}{\sqrt3} で、行の和が 00 なので K~ii=63=23\tilde K_{ii} = \frac{6}{\sqrt3} = 2\sqrt3 です。ziz_i を頂点とする三角形は 6 個で、面積は 34h2\frac{\sqrt3}{4}h^2 なので ∫φi=13⋅6⋅34h2=32h2\int\varphi_i = \frac13\cdot6\cdot\frac{\sqrt3}{4}h^2 = \frac{\sqrt3}{2}h^2 です。

隣の節点は zi+hnkz_i + h\boldsymbol{n}_k、nk=(cos⁡kπ3,sin⁡kπ3)\boldsymbol{n}_k = (\cos\frac{k\pi}{3}, \sin\frac{k\pi}{3})(k=0,…,5k = 0, \ldots, 5)です。u∈C4u \in C^4 として Taylor 展開すると、nk+3=−nk\boldsymbol{n}_{k+3} = -\boldsymbol{n}_k なので奇数次の項は打ち消し合い、

∑k=05(u(zi+hnk)−u(zi))=h22∑k=05nkTD2u(zi) nk+O(h4)\sum_{k=0}^{5}\bigl(u(z_i + h\boldsymbol{n}_k) - u(z_i)\bigr) = \frac{h^2}{2}\sum_{k=0}^{5}\boldsymbol{n}_k^{\mathsf{T}}D^2u(z_i)\,\boldsymbol{n}_k + O(h^4)

です。∑knknkT\sum_k\boldsymbol{n}_k\boldsymbol{n}_k^{\mathsf{T}} は、∑kcos⁡2kπ3=∑ksin⁡2kπ3=3\sum_k\cos^2\frac{k\pi}{3} = \sum_k\sin^2\frac{k\pi}{3} = 3、∑kcos⁡kπ3sin⁡kπ3=0\sum_k\cos\frac{k\pi}{3}\sin\frac{k\pi}{3} = 0 から 3I3I なので、右辺は 3h22Δu(zi)+O(h4)\frac{3h^2}{2}\Delta u(z_i) + O(h^4) です。したがって

132h2∑jK~iju(zj)=23h2⋅(−13)∑k(u(zi+hnk)−u(zi))=−Δu(zi)+O(h2)\frac{1}{\frac{\sqrt3}{2}h^2}\sum_j\tilde K_{ij}u(z_j) = \frac{2}{\sqrt3h^2}\cdot\Bigl(-\frac{1}{\sqrt3}\Bigr)\sum_k\bigl(u(z_i + h\boldsymbol{n}_k) - u(z_i)\bigr) = -\Delta u(z_i) + O(h^2)

です。正三角形の分割の有限要素法は、6 つの隣接点を使う 7 点差分になります。

  • S. C. Brenner, L. R. Scott『The Mathematical Theory of Finite Element Methods』3rd ed., Springer, 2008 — 第 4 章(平均 Taylor 多項式と Bramble–Hilbert の補題、補間誤差)、第 5 章(多角形領域での誤差評価と双対論法)。
  • P. G. Ciarlet『The Finite Element Method for Elliptic Problems』North-Holland, 1978(SIAM Classics, 2002)— アフィン同値な要素族、補間誤差、逆不等式、離散最大値原理。
  • V. Thomée『Galerkin Finite Element Methods for Parabolic Problems』2nd ed., Springer, 2006 — 第 1 章(半離散と全離散の標準的な誤差評価)。
  • P. Grisvard『Elliptic Problems in Nonsmooth Domains』Pitman, 1985(SIAM Classics, 2011)— 凸領域の H2H^2 正則性、角のある領域での解の特異性。
  • I. Babuška, A. K. Aziz, “On the angle condition in the finite element method”, SIAM Journal on Numerical Analysis 13 (1976), 214–226 — 最大角の条件。
  • M. F. Wheeler, “A priori L2L_2 error estimates for Galerkin approximations to parabolic partial differential equations”, SIAM Journal on Numerical Analysis 10 (1973), 723–759 — Ritz 射影との比較による放物型問題の誤差評価。
  • T. Dupont, R. Scott, “Polynomial approximation of functions in Sobolev spaces”, Mathematics of Computation 34 (1980), 441–463 — 平均 Taylor 多項式による近似。

このテーマの 100 本ノック(50 問)

執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。