コンテンツにスキップ

固有値問題の離散化:差分・有限要素の固有値の収束と上界・下界

対象読者: 本テーマの差分法と有限要素法 I を学び、Rayleigh–Ritz の上界やミニマックス原理など作用素の固有値の変分的な扱いを知っている修士課程の人。

前提となる記事:有限要素法 I:Galerkin 近似・Céa の補題・1 次元の誤差評価、楕円型・放物型方程式の差分法:離散最大値原理と θ 法、無限次元の固有値の包含:Rayleigh–Ritz の上界と Temple・Lehmann–Goerisch・有限要素法の下界、作用素の収束と摂動:レゾルベント収束・解析摂動・ミニマックス原理

生 Markdown

弦や太鼓の膜の振動の音の高さ、量子力学のエネルギーの値は、どれも微分作用素の固有値という数で決まります。コンピュータでは、微分作用素を行列に置き換えて、その行列の固有値で近似します。近似値は真の値より大きくなる方法と小さくなる方法があり、誤差の減り方も固有値の大きさによって変わります。この記事では、格子を細かくしたときに誤差がどちらの向きに、どれだけの速さで減るか、下から何番目までの固有値が信頼できるかを調べます。読み終えると、上からの近似と下からの近似で真の値を挟む考え方が分かります。

  • 区間の Dirichlet ラプラシアン(両端で 0 になる条件をつけた −d2/dx2-d^2/dx^2)の 3 点差分の固有値は λkFD=4h2sin⁡2kπh2\lambda_k^{\mathrm{FD}} = \frac{4}{h^2}\sin^2\frac{k\pi h}{2} で、厳密な固有値 λk=k2π2\lambda_k = k^2\pi^2 に下から近づき、0<λk−λkFD≤λk2h2/120 \lt \lambda_k - \lambda_k^{\mathrm{FD}} \le \lambda_k^2h^2/12 です。誤差は λk2\lambda_k^2 に比例するので、信頼できるのは khkh が小さい下位の固有値だけです。
  • 適合な Galerkin 近似(Vh⊂VV_h \subset V。近似に使う関数の空間をもとの空間の部分空間にとること)の Ritz 値(近似の行列の固有値)は、厳密な固有値に上から近づきます(λk≤λkh\lambda_k \le \lambda_k^h)。部分空間を広げると単調に減ります。
  • Ritz 値の誤差は、固有関数のエネルギーノルム(微分の大きさまで含めた「距離」)での近似誤差の 2 乗の次数です。Ritz 射影(近似の空間の中でエネルギーノルムの意味で最も近い関数をとる操作。§2 で定義します)の誤差が ∥w−Phw∥a≤η∥Aw∥\|w - P_hw\|_a \le \eta\|Aw\|(AA は対象の作用素、ww はその定義域の関数)を満たせば λkh−λk≤4η2λk2\lambda_k^h - \lambda_k \le 4\eta^2\lambda_k^2 で、区分 1 次の有限要素法では η=O(h)\eta = O(h) なので O(λk2h2)O(\lambda_k^2h^2) です。
  • 1 次元の等間隔の区分 1 次要素では λkh−λk=λk2h2/12+O(h4)\lambda_k^h - \lambda_k = \lambda_k^2h^2/12 + O(h^4) で、質量行列を集中化する(質量行列を対角行列に置き換える)と 3 点差分に一致して符号が逆になります。両者の平均は O(h4)O(h^4) です。
  • 単純固有値の Ritz ベクトルの誤差は O(h)O(h)(エネルギーノルム)で、定数は固有値のすき間の逆数に比例します。
  • 全空間の問題を有限の箱で切って(両端で 0 とおいて)解くと、近似固有値は上から単調に近づき、固有関数が e−κ∣x∣e^{-\kappa|x|} で減衰するなら誤差は O(e−2κR)O(e^{-2\kappa R}) です。
  • 下に有界な自己共役作用素では、本質スペクトル(有限重複度の孤立した固有値以外のスペクトルの部分)の下端より下に偽の固有値(作用素のスペクトルと無関係に行列にだけ現れる固有値)は現れません。すき間の中の固有値にはこの保証がありません。

量子力学のハミルトニアン、膜や梁の振動、拡散の緩和時間。どれも「微分作用素の固有値を求める」問題で、計算では作用素を行列に置き換えて対角化します。行列の固有値を求める算法(QR 法、Lanczos 法、逆反復)の誤差は丸めの大きさまで小さくできますが(対称固有値問題と特異値分解)、得られるのは行列の固有値です。それが作用素の固有値からどれだけ離れているかは、離散化の問題です。

この章で答える問いは 3 つです。

  1. 格子幅 hh を半分にすると、固有値の誤差はどれだけ減るか(次数)。
  2. 近似固有値は真の値より大きいか小さいか(向き)。
  3. nn 次の行列の nn 個の固有値のうち、どこまでが信頼できるか。

2 が分かれば、上からの近似と下からの近似で真の値を挟めます。固有値の精度保証の章は、その挟み込みを丸め誤差まで含めて証明に変える方法を扱っていました。この章はその手前で、離散化の誤差の次数と向きを、差分法・有限要素法・スペクトル法・領域の切断について調べます。Rayleigh–Ritz の上界、Temple の不等式、Lehmann–Goerisch の下界、Liu の下界(どれも、近似から真の固有値の上や下の限界を与える不等式)は、既存の章の定理を使います(定理 3.1[無限次元の固有値の包含]、定理 4.1[無限次元の固有値の包含]、定理 5.2[無限次元の固有値の包含]、定理 6.3[無限次元の固有値の包含])。

2. 設定:形式の固有値問題と Galerkin 近似

Section titled “2. 設定:形式の固有値問題と Galerkin 近似”

固有値の精度保証の章の §2 と同じ設定をとります。H\mathcal{H} を実 Hilbert 空間(内積 ⟨⋅,⋅⟩\langle\cdot,\cdot\rangle、ノルム ∥⋅∥\|\cdot\|)、AA を H\mathcal{H} 上の自己共役作用素で、固有値 0<λ1≤λ2≤⋯→∞0 \lt \lambda_1 \le \lambda_2 \le \cdots \to \infty(重複度こみ)と、固有ベクトルからなる正規直交基底 {um}\{u_m\}(Aum=λmumAu_m = \lambda_mu_m)をもつとします。w=∑mcmumw = \sum_mc_mu_m について

V={w:∑mλmcm2<∞},a(w,w′)=∑mλmcmcm′,∥w∥a=a(w,w)1/2V = \Bigl\{w : \sum_m\lambda_mc_m^2 \lt \infty\Bigr\},\qquad a(w, w') = \sum_m\lambda_mc_mc_m',\qquad \|w\|_a = a(w, w)^{1/2}

を AA の形式とその定義域、エネルギーノルムとします(微分作用素なら、a(w,w)a(w,w) は ∫∣w′∣2\int|w'|^2 のように「微分の大きさの 2 乗」を測る量です)。D(A)={w:∑mλm2cm2<∞}⊂VD(A) = \{w : \sum_m\lambda_m^2c_m^2 \lt \infty\} \subset V で、w∈D(A)w \in D(A) について ∥Aw∥2=∑mλm2cm2\|Aw\|^2 = \sum_m\lambda_m^2c_m^2、a(w,v)=⟨Aw,v⟩a(w, v) = \langle Aw, v\rangle(v∈Vv \in V)です。とくに a(um,v)=λm⟨um,v⟩a(u_m, v) = \lambda_m\langle u_m, v\rangle です。A−1A^{-1} は H\mathcal{H} 全体で定義された有界作用素(A−1w=∑m(cm/λm)umA^{-1}w = \sum_m(c_m/\lambda_m)u_m)で、値域は D(A)D(A) です。λ1∥w∥2≤∥w∥a2\lambda_1\|w\|^2 \le \|w\|_a^2 です。

モデル問題は次の 2 つです。

  • 区間: H=L2(0,1)\mathcal{H} = L^2(0,1)、V=H01(0,1)V = H^1_0(0,1)、a(u,v)=∫01u′v′ dxa(u,v) = \int_0^1u'v'\,dx。A=−d2/dx2A = -d^2/dx^2(Dirichlet 条件)、λk=k2π2\lambda_k = k^2\pi^2、uk=2sin⁡kπxu_k = \sqrt2\sin k\pi x(命題 6.2[Sturm–Liouville 問題と Green 関数])、D(A)=H2(0,1)∩H01(0,1)D(A) = H^2(0,1)\cap H^1_0(0,1)、∥Aw∥=∥w′′∥\|Aw\| = \|w''\|。
  • 有界領域 Ω\Omega の Dirichlet ラプラシアン: V=H01(Ω)V = H^1_0(\Omega)、a(u,v)=∫Ω∇u⋅∇v dxa(u,v) = \int_\Omega\nabla u\cdot\nabla v\,dx(Dirichlet ラプラシアンと Weyl の法則)。

次の補題は、固有値を「部分空間を動かして Rayleigh 商の最大値を最小にしたもの」として書き直します。後の上界の証明は、動かす部分空間の範囲が狭いほど最小値が大きくなる、という一点に帰着します。

補題 2.1(形式についてのミニマックス原理)✓

上の設定で、R(w)=a(w,w)/∥w∥2R(w) = a(w,w)/\|w\|^2(w∈Vw \in V、w≠0w \ne 0)を Rayleigh 商とすると、k≥1k \ge 1 について

λk=min⁡F⊂Vdim⁡F=k max⁡w∈F, w≠0R(w)\lambda_k = \min_{\substack{F \subset V\\ \dim F = k}}\ \max_{w \in F,\ w \ne 0}R(w)

が成り立つ。

証明(補題 2.1)

F0=span{u1,…,uk}F_0 = \mathrm{span}\{u_1, \ldots, u_k\} とすると、w=∑m≤kcmumw = \sum_{m\le k}c_mu_m について a(w,w)=∑m≤kλmcm2≤λk∥w∥2a(w,w) = \sum_{m\le k}\lambda_mc_m^2 \le \lambda_k\|w\|^2 で、w=ukw = u_k で等号なので、max⁡F0R=λk\max_{F_0}R = \lambda_k です。逆に、F⊂VF \subset V を任意の kk 次元部分空間とします。線形写像 F→Rk−1F \to \mathbb{R}^{k-1}、w↦(⟨u1,w⟩,…,⟨uk−1,w⟩)w \mapsto (\langle u_1, w\rangle, \ldots, \langle u_{k-1}, w\rangle) は、次元の比較から核に 0 でない元 ww をもちます。この ww は c1=⋯=ck−1=0c_1 = \cdots = c_{k-1} = 0 なので a(w,w)=∑m≥kλmcm2≥λk∥w∥2a(w,w) = \sum_{m\ge k}\lambda_mc_m^2 \ge \lambda_k\|w\|^2、すなわち max⁡FR≥λk\max_FR \ge \lambda_k です。

これは、下に有界な自己共役作用素のミニマックス原理(定理 6.3[作用素の収束と摂動])と、計数関数についての変分原理(補題 2.2[Dirichlet ラプラシアンの固有値と Weyl 則])の、いまの設定での形です。行列の場合は Courant–Fischer の定理(定理 3.1[行列の固有値評価と不等式])です。

定義 2.2(固有値問題の Galerkin 近似)↗

Vh⊂VV_h \subset V を nn 次元の部分空間とする。uh∈Vhu^h \in V_h、uh≠0u^h \ne 0 と実数 λh\lambda^h が

a(uh,v)=λh⟨uh,v⟩(すべての v∈Vh)a(u^h, v) = \lambda^h\langle u^h, v\rangle\qquad(\text{すべての}\ v \in V_h)

を満たすとき、λh\lambda^h を Ritz 値、uhu^h を Ritz ベクトルという。VhV_h の基底 φ1,…,φn\varphi_1, \ldots, \varphi_n について、剛性行列 K=(a(φj,φi))K = (a(\varphi_j, \varphi_i)) と質量行列 G=(⟨φj,φi⟩)G = (\langle\varphi_j, \varphi_i\rangle) をとると、uh=∑jxjφju^h = \sum_jx_j\varphi_j について上の式は一般化固有値問題 Kx=λhGxK\boldsymbol{x} = \lambda^hG\boldsymbol{x} である。Vh⊂VV_h \subset V であるとき近似は適合であるといい、そうでないとき(差分法、質量行列の集中化、不連続な試験関数など)非適合であるという。a(w−Phw,v)=0a(w - P_hw, v) = 0(すべての v∈Vhv \in V_h)で定まる Ph:V→VhP_h : V \to V_h を Ritz 射影(aa についての直交射影)という。

Ritz 射影は 有限要素法 Iの 定義 2.2[有限要素法 I] の RhR_h と同じものです。aa についての直交射影なので、∥w∥a2=∥Phw∥a2+∥w−Phw∥a2\|w\|_a^2 = \|P_hw\|_a^2 + \|w - P_hw\|_a^2、∥w−Phw∥a=min⁡v∈Vh∥w−v∥a\|w - P_hw\|_a = \min_{v\in V_h}\|w - v\|_a が成り立ちます(定理 2.5[有限要素法 I] の対称な場合)。

補題 2.3(Ritz 値のミニマックス表示)✓

Vh⊂VV_h \subset V を nn 次元の部分空間とする。実数 λ1h≤⋯≤λnh\lambda_1^h \le \cdots \le \lambda_n^h と VhV_h の基底 u1h,…,unhu_1^h, \ldots, u_n^h で

⟨uih,ujh⟩=δij,a(uih,ujh)=λihδij\langle u_i^h, u_j^h\rangle = \delta_{ij},\qquad a(u_i^h, u_j^h) = \lambda_i^h\delta_{ij}

を満たすものが存在し、Ritz 値はこの λ1h,…,λnh\lambda_1^h, \ldots, \lambda_n^h ですべてである。さらに k=1,…,nk = 1, \ldots, n について

λkh=min⁡F⊂Vhdim⁡F=k max⁡w∈F, w≠0R(w)\lambda_k^h = \min_{\substack{F \subset V_h\\ \dim F = k}}\ \max_{w \in F,\ w \ne 0}R(w)

が成り立つ。

証明(補題 2.3)

VhV_h の ⟨⋅,⋅⟩\langle\cdot,\cdot\rangle についての正規直交基底 ψ1,…,ψn\psi_1, \ldots, \psi_n をとり(定理 6.1[内積空間とグラム・シュミット直交化])、K^=(a(ψj,ψi))\hat K = (a(\psi_j, \psi_i)) とします。K^\hat K は実対称行列なので、直交行列 OO と対角行列 diag(λ1h,…,λnh)\mathrm{diag}(\lambda_1^h, \ldots, \lambda_n^h)(小さい順に並べる)で OTK^O=diag(λih)O^{\mathsf T}\hat KO = \mathrm{diag}(\lambda_i^h) と書けます(系 4.3[スペクトル定理])。uih=∑jOjiψju_i^h = \sum_jO_{ji}\psi_j とおくと、⟨uih,ujh⟩=(OTO)ij=δij\langle u_i^h, u_j^h\rangle = (O^{\mathsf T}O)_{ij} = \delta_{ij}、a(uih,ujh)=(OTK^O)ij=λihδija(u_i^h, u_j^h) = (O^{\mathsf T}\hat KO)_{ij} = \lambda_i^h\delta_{ij} です。v=ujhv = u_j^h で確かめると a(uih,v)=λih⟨uih,v⟩a(u_i^h, v) = \lambda_i^h\langle u_i^h, v\rangle がすべての v∈Vhv \in V_h で成り立つので、λih\lambda_i^h は Ritz 値です。逆に (λh,uh)(\lambda^h, u^h) が Ritz 値と Ritz ベクトルなら、uh=∑ibiuihu^h = \sum_ib_iu_i^h と書いて v=ujhv = u_j^h をとると λjhbj=λhbj\lambda_j^hb_j = \lambda^hb_j で、bj≠0b_j \ne 0 となる jj について λh=λjh\lambda^h = \lambda_j^h です。

ミニマックス表示は、w=∑ibiuihw = \sum_ib_iu_i^h について ∥w∥2=∑ibi2\|w\|^2 = \sum_ib_i^2、a(w,w)=∑iλihbi2a(w,w) = \sum_i\lambda_i^hb_i^2 となるので、補題 2.1 の証明が umu_m を uihu_i^h に、VV を VhV_h に替えてそのまま通ります。

定理 3.1(3 点差分の固有値)✓

M≥2M \ge 2、h=1/Mh = 1/M とし、区間のモデル問題を 3 点差分で離散化した (M−1)(M-1) 次の行列 Ah=1h2tridiag(−1,2,−1)A_h = \frac{1}{h^2}\mathrm{tridiag}(-1, 2, -1) を考える。

  1. AhA_h の固有値は λkFD=4h2sin⁡2kπh2\lambda_k^{\mathrm{FD}} = \dfrac{4}{h^2}\sin^2\dfrac{k\pi h}{2}(k=1,…,M−1k = 1, \ldots, M-1)で、固有ベクトルは厳密な固有関数の格子値 (sin⁡kπxj)j=1M−1(\sin k\pi x_j)_{j=1}^{M-1} である。
  2. k=1,…,M−1k = 1, \ldots, M-1 について 0<λk−λkFD≤λk2h212,4π2<λkFDλk<1.0 \lt \lambda_k - \lambda_k^{\mathrm{FD}} \le \frac{\lambda_k^2h^2}{12},\qquad \frac{4}{\pi^2} \lt \frac{\lambda_k^{\mathrm{FD}}}{\lambda_k} \lt 1.
証明(定理 3.1)
  1. 補題 8.3[行列のノルムと線形方程式の条件数] を n=M−1n = M - 1、α=2/h2\alpha = 2/h^2、β=−1/h2\beta = -1/h^2 で使うと、固有値は 2h2(1−cos⁡kπM)=4h2sin⁡2kπh2\frac{2}{h^2}(1 - \cos\frac{k\pi}{M}) = \frac{4}{h^2}\sin^2\frac{k\pi h}{2}、固有ベクトルは (sin⁡(jkπ/M))j=(sin⁡kπxj)j(\sin(jk\pi/M))_j = (\sin k\pi x_j)_j です(命題 3.1[楕円型・放物型方程式の差分法] の 1 と同じ内容です)。

  2. x=kπh/2x = k\pi h/2 とおくと 0<x<π/20 \lt x \lt \pi/2 で、λk=4x2/h2\lambda_k = 4x^2/h^2、λkFD=4sin⁡2x/h2\lambda_k^{\mathrm{FD}} = 4\sin^2x/h^2 です。0<sin⁡x<x0 \lt \sin x \lt x から λkFD<λk\lambda_k^{\mathrm{FD}} \lt \lambda_k。x>0x \gt 0 で sin⁡x≥x−x3/6\sin x \ge x - x^3/6(Taylor の定理 定理 5.3[平均値の定理とテイラーの定理] で、剰余項 cos⁡ξ120x5\frac{\cos\xi}{120}x^5 は 0<x<π/20 \lt x \lt \pi/2 で正)で、右辺は x<6x \lt \sqrt6 で正なので、sin⁡2x≥x2−x4/3+x6/36≥x2−x4/3\sin^2x \ge x^2 - x^4/3 + x^6/36 \ge x^2 - x^4/3 です。よって

λk−λkFD=4h2(x2−sin⁡2x)≤4h2⋅x43=k4π4h212=λk2h212\lambda_k - \lambda_k^{\mathrm{FD}} = \frac{4}{h^2}(x^2 - \sin^2x) \le \frac{4}{h^2}\cdot\frac{x^4}{3} = \frac{k^4\pi^4h^2}{12} = \frac{\lambda_k^2h^2}{12}

です。比は (sin⁡x/x)2(\sin x/x)^2 で、sin⁡x/x\sin x/x は (0,π/2](0, \pi/2] で減少し x=π/2x = \pi/2 で 2/π2/\pi なので、4/π24/\pi^2 より大きくなります。

差分の固有ベクトルが厳密な固有関数の格子値に一致するのは、定数係数で格子が等間隔という特別な事情によります。固有値の誤差の式から、相対誤差は λkh2/12=(kπh)2/12\lambda_kh^2/12 = (k\pi h)^2/12 以下です。相対誤差を 1% 以下にするには kπh≤0.35k\pi h \le 0.35、すなわち k≤0.11 Mk \le 0.11\,M 程度でなければなりません。M−1M - 1 個の固有値のうち、使えるのは下から 1 割ほどです。最大の固有値は λM−1FD≈4/h2\lambda_{M-1}^{\mathrm{FD}} \approx 4/h^2 で、対応する厳密な値 π2/h2\pi^2/h^2 の約 4 割しかありません。

命題 3.2(5 点差分の固有値)✓

単位正方形の Dirichlet ラプラシアン(固有値 λjk=π2(j2+k2)\lambda_{jk} = \pi^2(j^2 + k^2)、j,k≥1j, k \ge 1)の、h=1/Mh = 1/M の格子での 5 点差分の固有値は λjkFD=λjFD+λkFD\lambda_{jk}^{\mathrm{FD}} = \lambda_j^{\mathrm{FD}} + \lambda_k^{\mathrm{FD}}(1≤j,k≤M−11 \le j, k \le M-1)で、

0<λjk−λjkFD≤π4(j4+k4)h212≤λjk2h2120 \lt \lambda_{jk} - \lambda_{jk}^{\mathrm{FD}} \le \frac{\pi^4(j^4 + k^4)h^2}{12} \le \frac{\lambda_{jk}^2h^2}{12}

を満たす。両方を小さい順に並べたとき、mm 番目の差分の固有値は mm 番目の厳密な固有値より小さい(m≤(M−1)2m \le (M-1)^2)。

証明(命題 3.2)

固有値が 1 次元の固有値の和であることは 命題 3.1[楕円型・放物型方程式の差分法] の 2 です(固有ベクトルは sin⁡(jπxa)sin⁡(kπyb)\sin(j\pi x_a)\sin(k\pi y_b))。厳密な固有値は 補題 3.2[Dirichlet ラプラシアンの固有値と Weyl 則] によります。定理 3.1 の 2 を jj と kk について足すと不等式が出ます(j4+k4≤(j2+k2)2j^4 + k^4 \le (j^2 + k^2)^2)。

並べ替えについて: 厳密な固有値を小さい順に μ1≤μ2≤⋯\mu_1 \le \mu_2 \le \cdots とし、μ1,…,μm\mu_1, \ldots, \mu_m を与える添字 (j,k)(j,k) を mm 個選びます。どれも λjk≤μm\lambda_{jk} \le \mu_m を満たします。(a) 選んだ添字がすべて 1≤j,k≤M−11 \le j, k \le M-1 の範囲にあるとき、それぞれについて λjkFD<λjk≤μm\lambda_{jk}^{\mathrm{FD}} \lt \lambda_{jk} \le \mu_m なので、μm\mu_m より小さい差分の固有値が mm 個以上あり、mm 番目の差分の固有値は μm\mu_m より小さくなります。(b) 範囲の外の添字(j≥Mj \ge M または k≥Mk \ge M)が含まれるとき、μm≥π2(M2+1)\mu_m \ge \pi^2(M^2 + 1) です。一方、差分の固有値はすべて 4h2+4h2=8M2\frac{4}{h^2} + \frac{4}{h^2} = 8M^2 より小さく、8<π28 \lt \pi^2 なので 8M2<μm8M^2 \lt \mu_m です。

「差分の固有値は下界になる」は、定数係数のラプラシアンと長方形の格子に特有の性質です。一般には成り立ちません。

例 3.3(差分の固有値が上にずれる例)

−((1+10x)u′)′=λu-((1 + 10x)u')' = \lambda u、u(0)=u(1)=0u(0) = u(1) = 0 を、係数を格子点の中点で評価する標準的な 3 点差分

−pj+1/2(uj+1−uj)−pj−1/2(uj−uj−1)h2=λuj,pj±1/2=1+10 (xj±h/2)-\frac{p_{j+1/2}(u_{j+1} - u_j) - p_{j-1/2}(u_j - u_{j-1})}{h^2} = \lambda u_j,\qquad p_{j\pm1/2} = 1 + 10\,(x_j \pm h/2)

で離散化します。参照値は Chebyshev 選点法(スペクトル法の 命題 7.5[スペクトル法] の微分行列)で求め、点の数を変えて一致を確かめます。

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
import numpy as np
from scipy.linalg import eigh_tridiagonal
def cheb(N):
j = np.arange(N + 1)
x = np.cos(np.pi * j / N)
c = np.where((j == 0) | (j == N), 2.0, 1.0) * (-1.0) ** j
D = (c[:, None] / c[None, :]) / (x[:, None] - x[None, :] + np.eye(N + 1))
D -= np.diag(D.sum(axis=1))
return D, x
p = lambda x: 1 + 10 * x
refs = []
for N in [40, 60, 80]: # 参照値: Chebyshev 選点法(N を変えて一致を確かめる)
D, t = cheb(N)
y = (t + 1) / 2
refs.append(np.sort(np.linalg.eigvals((-4 * D @ np.diag(p(y)) @ D)[1:N, 1:N]).real)[:2])
print(f"Chebyshev N = {N}: lambda_1 = {refs[-1][0]:.10f}, lambda_2 = {refs[-1][1]:.10f}")
print(" M lambda_1^h - lambda_1 lambda_2^h - lambda_2")
for M in [8, 16, 32, 64]:
h = 1.0 / M
pm = p(h * (np.arange(M) + 0.5)) # 係数は格子点の中点で評価する
fd = eigh_tridiagonal((pm[:-1] + pm[1:]) / h**2, -pm[1:-1] / h**2, eigvals_only=True)[:2]
print(f"{M:5d} {fd[0] - refs[-1][0]:+.4e} {fd[1] - refs[-1][1]:+.4e}")
Chebyshev N = 40: lambda_1 = 44.4515837733, lambda_2 = 182.1541741516
Chebyshev N = 60: lambda_1 = 44.4515837733, lambda_2 = 182.1541741516
Chebyshev N = 80: lambda_1 = 44.4515837733, lambda_2 = 182.1541741516
M lambda_1^h - lambda_1 lambda_2^h - lambda_2
8 +3.7299e-01 -6.8046e+00
16 +1.0638e-01 -1.9742e+00
32 +2.7831e-02 -5.1122e-01
64 +7.0477e-03 -1.2891e-01

第 1 固有値は上から、第 2 固有値は下から近づいています。どちらも誤差は hh を半分にするごとに約 1/41/4(O(h2)O(h^2))ですが、向きは固有値ごとに違います。差分法は非適合な近似で、Rayleigh–Ritz の上界のような一方向の保証がありません。

例 3.4(離散固有値の個数と Weyl の法則)

単位正方形では、λ\lambda 以下の固有値の個数 N(λ)N(\lambda) は λ→∞\lambda \to \infty で λ/(4π)\lambda/(4\pi) のように増えます(定理 5.2[Dirichlet ラプラシアンの固有値と Weyl 則] で n=2n = 2、∣Ω∣=1|\Omega| = 1、ω2=π\omega_2 = \pi)。h=1/64h = 1/64 の 5 点差分は 632=396963^2 = 3969 個の固有値をもち、すべて 8/h2=327688/h^2 = 32768 より小さい値です。λ\lambda 以下の個数を数えます。

# Python 3.9.6 / NumPy 2.0.2
import numpy as np
M = 64
h = 1.0 / M
k = np.arange(1, M)
lam1 = 4 * np.sin(k * np.pi * h / 2) ** 2 / h**2
fd = np.add.outer(lam1, lam1).ravel() # 5 点差分の固有値((M-1)^2 個)
kk = np.arange(1, 400)
exact = np.add.outer((kk * np.pi) ** 2, (kk * np.pi) ** 2).ravel()
print(f"number of discrete eigenvalues = {fd.size}, largest = {fd.max():.1f}, 8/h^2 = {8 / h**2:.1f}")
print(" lambda lambda h^2 exact N(lambda) 5-point N_h(lambda) Weyl lambda/(4 pi)")
for lam in [500, 2000, 8000, 16000, 32000]:
print(f" {lam:6d} {lam * h**2:8.3f} {np.sum(exact <= lam):8d} {np.sum(fd <= lam):8d}"
f" {lam / (4 * np.pi):10.1f}")
number of discrete eigenvalues = 3969, largest = 32748.3, 8/h^2 = 32768.0
lambda lambda h^2 exact N(lambda) 5-point N_h(lambda) Weyl lambda/(4 pi)
500 0.122 33 33 39.8
2000 0.488 146 150 159.2
8000 1.953 612 705 636.6
16000 3.906 1234 1869 1273.2
32000 7.812 2490 3917 2546.5

差分の固有値は真の値より小さいので(命題 3.2)、個数は多めに数えられます。λh2≈0.5\lambda h^2 \approx 0.5 までは差が数個ですが、λh2≈2\lambda h^2 \approx 2 で 15% 多く、それより上では離散固有値が 8/h28/h^2 の下に押し込められて、個数が真の値の 1.5 倍になります。作用素の固有値は無限個あり、行列の固有値は有限個です。上位の離散固有値は、作用素のスペクトルではなく格子の性質を映しています。

定理 4.1(適合な Galerkin 近似の上界と単調性)✓

Vh⊂VV_h \subset V を nn 次元の部分空間、λ1h≤⋯≤λnh\lambda_1^h \le \cdots \le \lambda_n^h をその Ritz 値とする。

  1. k=1,…,nk = 1, \ldots, n について λk≤λkh\lambda_k \le \lambda_k^h。
  2. Vh⊂Vh′⊂VV_h \subset V_{h'} \subset V で、Vh′V_{h'} の Ritz 値を λkh′\lambda_k^{h'} とすると、k=1,…,nk = 1, \ldots, n について λkh′≤λkh\lambda_k^{h'} \le \lambda_k^h。
証明(定理 4.1)

補題 2.3 と 補題 2.1 から、λkh\lambda_k^h、λkh′\lambda_k^{h'}、λk\lambda_k は、同じ量 max⁡w∈FR(w)\max_{w\in F}R(w) の、kk 次元部分空間 FF をそれぞれ VhV_h、Vh′V_{h'}、VV の中で動かしたときの最小値です。Vh⊂Vh′⊂VV_h \subset V_{h'} \subset V なので、動かす範囲が広いほど最小値は小さく、λk≤λkh′≤λkh\lambda_k \le \lambda_k^{h'} \le \lambda_k^h です。

1 は 定理 3.1[無限次元の固有値の包含]、系 6.4[作用素の収束と摂動] と同じ内容で、2 は領域の単調性(系 3.1[Dirichlet ラプラシアンの固有値と Weyl 則])やミニマックス値の単調性(系 6.5[作用素の収束と摂動])と同じ仕組みです。有限要素法では、分割を細分して得た空間はもとの空間を含むので、細分するたびに各 Ritz 値は減ります(減らないこともあるが増えない)。行列の Lanczos 法で、Krylov 部分空間を広げると Ritz 値が単調に端の固有値へ近づくこと(定理 4.3[Krylov 部分空間法 I])も同じ原理です。

次に、上からどれだけ近いかを評価します。主張は、固有値の誤差が固有関数の近似誤差の 2 乗になる、というものです。たとえば固有関数の誤差が 10 分の 1 になれば、固有値の誤差は 100 分の 1 になります。証明では、固有関数 uu の誤差を直接見るかわりに A−1uA^{-1}u を挟み、Galerkin 直交性(誤差が VhV_h と aa について直交すること)を使って、誤差の積の形にします。

定理 4.2(Ritz 値の誤差は固有関数のエネルギー誤差の 2 乗)✓

Vh⊂VV_h \subset V を有限次元の部分空間、PhP_h を Ritz 射影、k≥1k \ge 1、Ek=span{u1,…,uk}E_k = \mathrm{span}\{u_1, \ldots, u_k\} とする。

  1. εk=max⁡{∥u−Phu∥a:u∈Ek, ∥u∥=1}\varepsilon_k = \max\{\|u - P_hu\|_a : u \in E_k,\ \|u\| = 1\} とおく。2εk2<λ12\varepsilon_k^2 \lt \lambda_1 ならば dim⁡Vh≥k\dim V_h \ge k で λk≤λkh≤λk1−2εk2/λ1.\lambda_k \le \lambda_k^h \le \frac{\lambda_k}{1 - 2\varepsilon_k^2/\lambda_1}.
  2. 定数 η>0\eta \gt 0 があって、すべての w∈D(A)w \in D(A) について ∥w−Phw∥a≤η∥Aw∥\|w - P_hw\|_a \le \eta\|Aw\| が成り立つとする。2η2λk<12\eta^2\lambda_k \lt 1 ならば dim⁡Vh≥k\dim V_h \ge k で λk≤λkh≤λk1−2η2λk,とくに 4η2λk≤1 なら0≤λkh−λk≤4η2λk2.\lambda_k \le \lambda_k^h \le \frac{\lambda_k}{1 - 2\eta^2\lambda_k},\qquad\text{とくに}\ 4\eta^2\lambda_k \le 1\ \text{なら}\quad 0 \le \lambda_k^h - \lambda_k \le 4\eta^2\lambda_k^2.
証明(定理 4.2)

u=∑m≤kcmum∈Eku = \sum_{m\le k}c_mu_m \in E_k、∥u∥=1\|u\| = 1 とし、z=A−1u=∑m≤k(cm/λm)um∈Ekz = A^{-1}u = \sum_{m\le k}(c_m/\lambda_m)u_m \in E_k とおきます。

内積 ⟨u,u−Phu⟩\langle u, u - P_hu\rangle の評価。 Az=uAz = u なので ⟨u,u−Phu⟩=a(z,u−Phu)\langle u, u - P_hu\rangle = a(z, u - P_hu) です。Ritz 射影の定義から a(Phz,u−Phu)=0a(P_hz, u - P_hu) = 0 なので、Cauchy–Schwarz の不等式(aa は VV の内積)から

⟨u,u−Phu⟩=a(z−Phz,u−Phu)≤∥z−Phz∥a ∥u−Phu∥a\langle u, u - P_hu\rangle = a(z - P_hz, u - P_hu) \le \|z - P_hz\|_a\,\|u - P_hu\|_a

です。1 の場合: z∈Ekz \in E_k、∥z∥2=∑cm2/λm2≤1/λ12\|z\|^2 = \sum c_m^2/\lambda_m^2 \le 1/\lambda_1^2 なので ∥z−Phz∥a≤εk∥z∥≤εk/λ1\|z - P_hz\|_a \le \varepsilon_k\|z\| \le \varepsilon_k/\lambda_1、∥u−Phu∥a≤εk\|u - P_hu\|_a \le \varepsilon_k で、右辺は σ:=εk2/λ1\sigma := \varepsilon_k^2/\lambda_1 以下です。2 の場合: ∥z−Phz∥a≤η∥Az∥=η\|z - P_hz\|_a \le \eta\|Az\| = \eta、∥u−Phu∥a≤η∥Au∥≤ηλk\|u - P_hu\|_a \le \eta\|Au\| \le \eta\lambda_k(∥Au∥2=∑m≤kλm2cm2≤λk2\|Au\|^2 = \sum_{m\le k}\lambda_m^2c_m^2 \le \lambda_k^2)で、右辺は σ:=η2λk\sigma := \eta^2\lambda_k 以下です。

PhuP_hu の大きさ。 どちらの場合も

∥Phu∥2=∥u−(u−Phu)∥2=1−2⟨u,u−Phu⟩+∥u−Phu∥2≥1−2σ>0\|P_hu\|^2 = \|u - (u - P_hu)\|^2 = 1 - 2\langle u, u - P_hu\rangle + \|u - P_hu\|^2 \ge 1 - 2\sigma \gt 0

です。したがって PhP_h は EkE_k の上で単射で、F=PhEk⊂VhF = P_hE_k \subset V_h は kk 次元です(とくに dim⁡Vh≥k\dim V_h \ge k)。

Rayleigh 商。 PhP_h は aa についての直交射影なので a(Phu,Phu)≤a(u,u)≤λka(P_hu, P_hu) \le a(u, u) \le \lambda_k です。よって FF の 0 でない元 PhuP_hu(u∈Eku \in E_k を ∥u∥=1\|u\| = 1 に正規化)について R(Phu)≤λk/(1−2σ)R(P_hu) \le \lambda_k/(1 - 2\sigma) で、補題 2.3 から λkh≤max⁡FR≤λk/(1−2σ)\lambda_k^h \le \max_FR \le \lambda_k/(1 - 2\sigma) です。下界 λk≤λkh\lambda_k \le \lambda_k^h は 定理 4.1 です。4η2λk≤14\eta^2\lambda_k \le 1 なら 1−2σ≥1/21 - 2\sigma \ge 1/2 で、λkh−λk≤λk⋅2σ/(1−2σ)≤4σλk=4η2λk2\lambda_k^h - \lambda_k \le \lambda_k\cdot2\sigma/(1 - 2\sigma) \le 4\sigma\lambda_k = 4\eta^2\lambda_k^2 です。

証明の要点は、⟨u,u−Phu⟩\langle u, u - P_hu\rangle が誤差の 2 つの因子の積になることです。u−Phuu - P_hu を素直に評価すると ∥u−Phu∥=O(ε)\|u - P_hu\| = O(\varepsilon) ですが、Galerkin 直交性のおかげで z−Phzz - P_hz をもう 1 つ挟め、O(ε2)O(\varepsilon^2) になります。境界値問題の L2L^2 誤差の評価(Aubin–Nitsche の双対論法。定理 5.2[有限要素法 I])と同じ仕組みです。Rayleigh 商が固有ベクトルで停留する(1 次の変分が 0)ことの現れでもあります。

2 の仮定は、有限要素法では補間誤差の評価と H2H^2 正則性(ラプラシアンの値で 2 階微分の大きさが押さえられること)から出ます。

  • 1 次元の区分 1 次要素(幅の最大が hh の任意の分割): Ritz 射影はエネルギーノルムでの最良近似なので、節点補間 Ihw∈VhI_hw \in V_h と比べて、w∈D(A)=H2∩H01w \in D(A) = H^2\cap H^1_0 について ∥w−Phw∥a≤∥(w−Ihw)′∥≤hπ∥w′′∥\|w - P_hw\|_a \le \|(w - I_hw)'\| \le \frac h\pi\|w''\|(定理 4.1[有限要素法 I] の 1)で、η=h/π\eta = h/\pi ととれます(等間隔の分割では Ritz 射影は節点補間そのものです。補題 6.2[無限次元の固有値の包含])。したがって λkh2≤π2/4\lambda_kh^2 \le \pi^2/4(kh≤1/2kh \le 1/2)のとき 0≤λkh−λk≤4π2λk2h2.0 \le \lambda_k^h - \lambda_k \le \frac{4}{\pi^2}\lambda_k^2h^2.
  • 2 次元の三角形要素: 単位正方形(Creg=1C_{\mathrm{reg}} = 1。より一般に、H2H^2 正則性 ∥D2w∥≤Creg∥Δw∥\|D^2w\| \le C_{\mathrm{reg}}\|\Delta w\| が成り立つ多角形領域)の形状正則な分割では、Céa の補題と補間誤差の評価から ∥w−Phw∥a≤CIh ∣w∣H2≤CICregh ∥Aw∥\|w - P_hw\|_a \le C_Ih\,|w|_{H^2} \le C_IC_{\mathrm{reg}}h\,\|Aw\| で(有限要素法 IIの 定理 5.1[有限要素法 II] と 補題 5.2[有限要素法 II])、η=CICregh\eta = C_IC_{\mathrm{reg}}h です。固有値の誤差はやはり O(λk2h2)O(\lambda_k^2h^2) です。

どちらも、誤差の定数が λk2\lambda_k^2 に比例します。差分法の場合(定理 3.1)と同じで、高い固有値ほど細かい格子が要ります。固有関数が H2H^2 に属さない領域(凹角のある多角形)では 2 の仮定が成り立たず、1 の εk\varepsilon_k が O(h)O(h) より遅くしか減らないので、次数が落ちます(例 4.5)。

1 次元の等間隔の分割では、Ritz 値が閉じた形で求まり、誤差の定数まで分かります。

定理 4.3(1 次元の区分 1 次要素の固有値)✓

区間のモデル問題を、等間隔の分割(h=1/Mh = 1/M)の区分 1 次の有限要素空間 Vh⊂H01(0,1)V_h \subset H^1_0(0,1) で離散化する。θk=kπh\theta_k = k\pi h(k=1,…,M−1k = 1, \ldots, M-1)とおく。

  1. Ritz 値は λkh=6h2⋅1−cos⁡θk2+cos⁡θk(k=1,…,M−1)\lambda_k^h = \frac{6}{h^2}\cdot\frac{1 - \cos\theta_k}{2 + \cos\theta_k}\qquad(k = 1, \ldots, M-1) で、Ritz ベクトルは sin⁡kπx\sin k\pi x の節点補間である。
  2. 質量行列 GG を対角行列 hIhI に置き換える(集中化)と、一般化固有値問題は 3 点差分の固有値問題に一致し、固有値は 定理 3.1 の λkFD\lambda_k^{\mathrm{FD}} になる。
  3. kk を固定して h→0h \to 0 とすると λkh=λk+λk2h212+λk3h4360+O(h6),λkFD=λk−λk2h212+λk3h4360+O(h6)\lambda_k^h = \lambda_k + \frac{\lambda_k^2h^2}{12} + \frac{\lambda_k^3h^4}{360} + O(h^6),\qquad \lambda_k^{\mathrm{FD}} = \lambda_k - \frac{\lambda_k^2h^2}{12} + \frac{\lambda_k^3h^4}{360} + O(h^6) で、平均は 12(λkh+λkFD)=λk+λk3h4360+O(h6)\frac12(\lambda_k^h + \lambda_k^{\mathrm{FD}}) = \lambda_k + \dfrac{\lambda_k^3h^4}{360} + O(h^6) である。
証明(定理 4.3)
  1. 節点基底についての剛性行列と質量行列は K=1htridiag(−1,2,−1)K = \frac1h\mathrm{tridiag}(-1,2,-1)、G=h6tridiag(1,4,1)G = \frac h6\mathrm{tridiag}(1,4,1) です(命題 6.1[有限要素法 I] の 1)。補題 8.3[行列のノルムと線形方程式の条件数] から、vk=(sin⁡jθk)j=1M−1\boldsymbol{v}_k = (\sin j\theta_k)_{j=1}^{M-1} は KK と GG の共通の固有ベクトルで
Kvk=2−2cos⁡θkhvk,Gvk=h(4+2cos⁡θk)6vkK\boldsymbol{v}_k = \frac{2 - 2\cos\theta_k}{h}\boldsymbol{v}_k,\qquad G\boldsymbol{v}_k = \frac{h(4 + 2\cos\theta_k)}{6}\boldsymbol{v}_k

です。よって Kvk=λkhGvkK\boldsymbol{v}_k = \lambda_k^hG\boldsymbol{v}_k、λkh=6(2−2cos⁡θk)h2(4+2cos⁡θk)\lambda_k^h = \frac{6(2 - 2\cos\theta_k)}{h^2(4 + 2\cos\theta_k)} です。v1,…,vM−1\boldsymbol{v}_1, \ldots, \boldsymbol{v}_{M-1} は 1 次独立で、VhV_h の次元は M−1M - 1 なので、Ritz 値はこれですべてです(補題 2.3)。vk\boldsymbol{v}_k を係数とする VhV_h の元は、節点 xjx_j で sin⁡kπxj\sin k\pi x_j をとる区分 1 次関数です。

  1. Kx=λhIxK\boldsymbol{x} = \lambda hI\boldsymbol{x} は 1h2tridiag(−1,2,−1)x=λx\frac{1}{h^2}\mathrm{tridiag}(-1,2,-1)\boldsymbol{x} = \lambda\boldsymbol{x} です。

  2. θ=θk\theta = \theta_k とすると θ2=λkh2\theta^2 = \lambda_kh^2 で、λkFD/λk=Ψ(θ):=2(1−cos⁡θ)/θ2\lambda_k^{\mathrm{FD}}/\lambda_k = \Psi(\theta) := 2(1 - \cos\theta)/\theta^2、λkh/λk=Φ(θ):=3Ψ(θ)/(2+cos⁡θ)\lambda_k^h/\lambda_k = \Phi(\theta) := 3\Psi(\theta)/(2 + \cos\theta) です。Taylor の定理(定理 5.3[平均値の定理とテイラーの定理])から 1−cos⁡θ=θ22−θ424+θ6720+O(θ8)1 - \cos\theta = \frac{\theta^2}{2} - \frac{\theta^4}{24} + \frac{\theta^6}{720} + O(\theta^8) なので

Ψ(θ)=1−θ212+θ4360+O(θ6),32+cos⁡θ=(1−θ26+θ472+O(θ6))−1=1+θ26+θ472+O(θ6)\Psi(\theta) = 1 - \frac{\theta^2}{12} + \frac{\theta^4}{360} + O(\theta^6),\qquad \frac{3}{2 + \cos\theta} = \Bigl(1 - \frac{\theta^2}{6} + \frac{\theta^4}{72} + O(\theta^6)\Bigr)^{-1} = 1 + \frac{\theta^2}{6} + \frac{\theta^4}{72} + O(\theta^6)

です(最後は (1−c)−1=1+c+c2+O(c3)(1 - c)^{-1} = 1 + c + c^2 + O(c^3) に c=θ2/6−θ4/72c = \theta^2/6 - \theta^4/72 を入れ、θ4\theta^4 の係数 −172+136=172-\frac1{72} + \frac1{36} = \frac1{72} を得る)。積をとると

Φ(θ)=1+(16−112)θ2+(172−172+1360)θ4+O(θ6)=1+θ212+θ4360+O(θ6)\Phi(\theta) = 1 + \Bigl(\frac16 - \frac1{12}\Bigr)\theta^2 + \Bigl(\frac1{72} - \frac1{72} + \frac1{360}\Bigr)\theta^4 + O(\theta^6) = 1 + \frac{\theta^2}{12} + \frac{\theta^4}{360} + O(\theta^6)

です。λk\lambda_k を掛け、θ2=λkh2\theta^2 = \lambda_kh^2 を入れると主張の式になります。

適合な近似(一致質量)は上から、集中質量(=差分)は下から、同じ大きさ λk2h2/12\lambda_k^2h^2/12 の誤差で近づきます。先頭の誤差項が打ち消し合うので、2 つの平均は 4 次の精度になります。定理 4.2 から出る上界の定数 4/π2≈0.414/\pi^2 \approx 0.41 は、正確な定数 1/12≈0.0831/12 \approx 0.083 の約 5 倍で、次数 λk2h2\lambda_k^2h^2 は一致しています。

例 4.4(1 次元の 3 つの離散化の比較)

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
import numpy as np
from scipy.linalg import eigh, eigh_tridiagonal
def eigs(M):
"""-u'' = lambda u(u(0) = u(1) = 0)、h = 1/M。差分・一致質量の有限要素・集中質量の固有値。"""
h, n = 1.0 / M, M - 1
K = (2 * np.eye(n) - np.eye(n, k=1) - np.eye(n, k=-1)) / h
Mass = h * (4 * np.eye(n) + np.eye(n, k=1) + np.eye(n, k=-1)) / 6
fd = eigh_tridiagonal(2 * np.ones(n) / h**2, -np.ones(n - 1) / h**2, eigvals_only=True)
fem = eigh(K, Mass, eigvals_only=True)
lumped = eigh(K, h * np.eye(n), eigvals_only=True)
return fd, fem, lumped
k = np.arange(1, 6)
exact = (k * np.pi) ** 2
for M in [16, 64]:
h = 1.0 / M
fd, fem, lumped = eigs(M)
th = k * np.pi * h
closed_fd = 4 * np.sin(th / 2) ** 2 / h**2
closed_fem = 6 * (1 - np.cos(th)) / (h**2 * (2 + np.cos(th)))
print(f"M = {M}: max |closed form - computed|: FD {np.max(np.abs(fd[:5] - closed_fd)):.1e}, "
f"FEM {np.max(np.abs(fem[:5] - closed_fem)):.1e}, lumped - FD {np.max(np.abs(lumped[:5] - fd[:5])):.1e}")
print(" k FD - exact FEM - exact average - exact (FEM - exact) / (lambda^2 h^2 / 12)")
for i in range(5):
print(f" {k[i]} {fd[i] - exact[i]:+.4e} {fem[i] - exact[i]:+.4e} "
f"{0.5 * (fd[i] + fem[i]) - exact[i]:+.4e} {(fem[i] - exact[i]) / (exact[i]**2 * h**2 / 12):.4f}")
fd, fem, _ = eigs(64)
print("M = 64, k = 63 (the largest): FD / exact =", f"{fd[-1] / (63 * np.pi)**2:.4f}",
", FEM / exact =", f"{fem[-1] / (63 * np.pi)**2:.4f}")
M = 16: max |closed form - computed|: FD 8.8e-13, FEM 2.6e-13, lumped - FD 9.8e-13
k FD - exact FEM - exact average - exact (FEM - exact) / (lambda^2 h^2 / 12)
1 -3.1668e-02 +3.1749e-02 +4.0655e-05 1.0013
2 -5.0474e-01 +5.0991e-01 +2.5834e-03 1.0051
3 -2.5389e+00 +2.5970e+00 +2.9057e-02 1.0111
4 -7.9523e+00 +8.2726e+00 +1.6013e-01 1.0191
5 -1.9192e+01 +2.0380e+01 +5.9395e-01 1.0284
M = 64: max |closed form - computed|: FD 4.2e-12, FEM 6.2e-12, lumped - FD 4.7e-12
k FD - exact FEM - exact average - exact (FEM - exact) / (lambda^2 h^2 / 12)
1 -1.9816e-03 +1.9820e-03 +1.5916e-07 1.0001
2 -3.1699e-02 +3.1719e-02 +1.0181e-05 1.0003
3 -1.6041e-01 +1.6064e-01 +1.1589e-04 1.0007
4 -5.0669e-01 +5.0799e-01 +6.5048e-04 1.0013
5 -1.2361e+00 +1.2411e+00 +2.4781e-03 1.0020
M = 64, k = 63 (the largest): FD / exact = 0.4180 , FEM / exact = 1.2525

符号は定理のとおりで、hh を 1/41/4 にすると差分と有限要素の誤差は約 1/161/16、平均の誤差は約 1/2561/256 になっています(k=1k = 1 で 4.07×10−5→1.59×10−74.07\times10^{-5} \to 1.59\times10^{-7}。予言値 λ13h4/360\lambda_1^3h^4/360 は 4.07×10−54.07\times10^{-5} と 1.59×10−71.59\times10^{-7})。誤差は kk とともに λk2∝k4\lambda_k^2 \propto k^4 で増え、M=16M = 16 の第 5 固有値(λ5≈247\lambda_5 \approx 247)は 8% ずれています。最大の離散固有値は、差分では厳密な値の 0.420.42 倍、有限要素では 1.251.25 倍です。

例 4.5(単位正方形と L 字形領域)

単位正方形の固有値は π2(j2+k2)\pi^2(j^2 + k^2) で、小さい方から 2π22\pi^2、5π25\pi^2(2 重)、8π28\pi^2、10π210\pi^2(2 重)です。正方形の格子を対角線で直角二等辺三角形に分けた区分 1 次要素で、下位 6 個の Ritz 値を求めます(scipy.sparse.linalg.eigsh のシフト反転、σ=0\sigma = 0)。あわせて、1 辺 1 の正方形 3 個からなる L 字形領域の第 1 固有値を求めます。参照値 9.63972384402199.6397238440219 は Betcke–Trefethen の計算(参考文献 [5])によります。

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
import numpy as np
from scipy.sparse import coo_matrix
from scipy.sparse.linalg import eigsh
def p1_matrices(cells, h):
"""cells[i, j] が真の正方形セル(1 辺 h)を対角線で 2 つの直角二等辺三角形に分け、
区分 1 次要素の剛性行列 K と質量行列 M を内部節点について組み立てる。"""
n = cells.shape[0]
i, j = np.nonzero(cells)
idx = lambda a, b: a * (n + 1) + b
tris = np.concatenate([np.stack([idx(i, j), idx(i + 1, j), idx(i + 1, j + 1)], axis=1),
np.stack([idx(i, j), idx(i, j + 1), idx(i + 1, j + 1)], axis=1)])
KE = np.array([[1, -1, 0], [-1, 2, -1], [0, -1, 1]]) / 2.0 # 直角は 2 番目の頂点
ME = h**2 * (np.ones((3, 3)) + np.eye(3)) / 24.0
rows, cols = np.repeat(tris, 3, axis=1).ravel(), np.tile(tris, (1, 3)).ravel()
size = (n + 1) ** 2
K = coo_matrix((np.tile(KE.ravel(), len(tris)), (rows, cols)), shape=(size, size)).tocsr()
M = coo_matrix((np.tile(ME.ravel(), len(tris)), (rows, cols)), shape=(size, size)).tocsr()
inner = cells[:-1, :-1] & cells[:-1, 1:] & cells[1:, :-1] & cells[1:, 1:] # まわりの 4 セルが領域内
a, b = np.nonzero(inner)
keep = idx(a + 1, b + 1)
return K[keep][:, keep], M[keep][:, keep]
exact = np.pi**2 * np.array([2, 5, 5, 8, 10, 10])
print("unit square: (lambda_h - lambda) / (lambda^2 h^2) for the six smallest eigenvalues")
for n in [16, 32, 64]:
h = 1.0 / n
K, M = p1_matrices(np.ones((n, n), dtype=bool), h)
lam = np.sort(eigsh(K, k=6, M=M, sigma=0.0, which="LM", return_eigenvectors=False))
print(f" h = 1/{n:<3d}: " + " ".join(f"{(l - e) / (e**2 * h**2):.4f}" for l, e in zip(lam, exact)))
print(" h = 1/64 : lambda_h =", " ".join(f"{l:.5f}" for l in lam))
ref = 9.6397238440219 # L 字形領域(1 辺 1 の正方形 3 個)の第 1 固有値の文献値
print("L-shaped domain: the smallest eigenvalue")
prev = None
for n in [16, 32, 64, 128]:
cells = np.ones((n, n), dtype=bool)
cells[n // 2:, n // 2:] = False
K, M = p1_matrices(cells, 2.0 / n)
err = eigsh(K, k=1, M=M, sigma=0.0, which="LM", return_eigenvectors=False)[0] - ref
print(f" h = 1/{n // 2:<3d}: lambda_h = {ref + err:.6f}, error = {err:.3e}"
+ ("" if prev is None else f", order = {np.log2(prev / err):.2f}"))
prev = err
unit square: (lambda_h - lambda) / (lambda^2 h^2) for the six smallest eigenvalues
h = 1/16 : 0.1252 0.0860 0.1351 0.1238 0.0989 0.1012
h = 1/32 : 0.1251 0.0860 0.1343 0.1247 0.0985 0.0990
h = 1/64 : 0.1250 0.0860 0.1341 0.1249 0.0984 0.0985
h = 1/64 : lambda_h = 19.75110 49.39914 49.42774 79.14698 98.92999 98.93031
L-shaped domain: the smallest eigenvalue
h = 1/8 : lambda_h = 9.965977, error = 3.263e-01
h = 1/16 : lambda_h = 9.740817, error = 1.011e-01, order = 1.69
h = 1/32 : lambda_h = 9.672951, error = 3.323e-02, order = 1.61
h = 1/64 : lambda_h = 9.651203, error = 1.148e-02, order = 1.53

単位正方形では、誤差を λ2h2\lambda^2h^2 で割った値が hh によらず 0.090.09〜0.130.13 で、定理 4.2 の O(λk2h2)O(\lambda_k^2h^2) のとおりです。誤差はすべて正です(定理 4.1)。厳密には 2 重の固有値 5π2≈49.3485\pi^2 \approx 49.348 が、離散では 49.39949.399 と 49.42849.428 に分かれています。対角線の向きが分割の対称性を壊し、2 つの固有関数(の 1 次結合)の近似の精度が異なるためです。

L 字形領域では、次数が 2 より小さく、hh とともに下がっています。凹角(内角 3π/23\pi/2)の頂点の近くで固有関数が r2/3sin⁡(2ϑ/3)r^{2/3}\sin(2\vartheta/3) のように振る舞い、H2H^2 に属さないためです。一様な分割ではエネルギー誤差が O(h2/3)O(h^{2/3})、固有値の誤差がその 2 乗の O(h4/3)O(h^{4/3}) になることが知られていて(Strang–Fix の教科書、参考文献 [1])、観測された次数はこの値に向かって下がっています。頂点に向けて分割を細かくすれば次数 2 が回復します。

固有値の誤差は固有値そのものだけで決まりましたが、固有ベクトルの誤差は、隣の固有値とのすき間に依存します。

次の命題の証明の方針は、Ritz 射影した PhukP_hu_k を「近似の固有ベクトル」とみて、Ritz ベクトルの基底で展開することです。kk 番目以外の成分は、鍵になる等式により(誤差)÷(固有値の差)で押さえられます。この「固有値の差」が小さいと割り算で誤差が大きくなる、というのが、すき間 gkg_k が定数に入る理由です。

補題 5.1(Ritz 射影の誤差の双対評価)✓

定理 4.2 の 2 の仮定(すべての w∈D(A)w \in D(A) で ∥w−Phw∥a≤η∥Aw∥\|w - P_hw\|_a \le \eta\|Aw\|)のもとで、すべての w∈Vw \in V について

∥w−Phw∥≤η ∥w−Phw∥a\|w - P_hw\| \le \eta\,\|w - P_hw\|_a

が成り立つ。とくに w∈D(A)w \in D(A) なら ∥w−Phw∥≤η2∥Aw∥\|w - P_hw\| \le \eta^2\|Aw\| である。

証明(補題 5.1)

e=w−Phwe = w - P_hw、z=A−1e∈D(A)z = A^{-1}e \in D(A) とおくと、∥e∥2=⟨Az,e⟩=a(z,e)\|e\|^2 = \langle Az, e\rangle = a(z, e) です。a(Phz,e)=a(e,Phz)=0a(P_hz, e) = a(e, P_hz) = 0(Ritz 射影の定義で v=Phz∈Vhv = P_hz \in V_h)なので

∥e∥2=a(z−Phz,e)≤∥z−Phz∥a∥e∥a≤η∥Az∥ ∥e∥a=η∥e∥ ∥e∥a\|e\|^2 = a(z - P_hz, e) \le \|z - P_hz\|_a\|e\|_a \le \eta\|Az\|\,\|e\|_a = \eta\|e\|\,\|e\|_a

で、∥e∥\|e\| で割ると主張が出ます(e=0e = 0 のときは自明)。

命題 5.2(単純固有値の Ritz ベクトルの誤差)✓

定理 4.2 の 2 の仮定のもとで、n=dim⁡Vh≥kn = \dim V_h \ge k とし、λk\lambda_k を単純固有値(λk−1<λk<λk+1\lambda_{k-1} \lt \lambda_k \lt \lambda_{k+1}。k=1k = 1 では右の不等式だけ)、uku_k を ∥uk∥=1\|u_k\| = 1 の固有ベクトルとする。補題 2.3 の Ritz ベクトル ujhu_j^h について、j≠kj \ne k で λjh≠λk\lambda_j^h \ne \lambda_k とし、

ρ=max⁡j≠kλk∣λjh−λk∣\rho = \max_{j \ne k}\frac{\lambda_k}{|\lambda_j^h - \lambda_k|}

とおく。ukhu_k^h の符号を ⟨Phuk,ukh⟩≥0\langle P_hu_k, u_k^h\rangle \ge 0 となるように選ぶと

∥uk−ukh∥≤2(1+ρ) ∥uk−Phuk∥≤2(1+ρ) η2λk,∥uk−ukh∥a2=λk∥uk−ukh∥2+(λkh−λk)\|u_k - u_k^h\| \le 2(1 + \rho)\,\|u_k - P_hu_k\| \le 2(1 + \rho)\,\eta^2\lambda_k,\qquad \|u_k - u_k^h\|_a^2 = \lambda_k\|u_k - u_k^h\|^2 + (\lambda_k^h - \lambda_k)

が成り立つ。さらに、すき間 gk=min⁡(λk−λk−1,λk+1−λk)g_k = \min(\lambda_k - \lambda_{k-1}, \lambda_{k+1} - \lambda_k)(k=1k = 1 では λ2−λ1\lambda_2 - \lambda_1)について 8η2λk2≤gk8\eta^2\lambda_k^2 \le g_k かつ 4η2λk≤14\eta^2\lambda_k \le 1 ならば、ρ≤2λk/gk\rho \le 2\lambda_k/g_k で

∥uk−ukh∥a≤2ηλk(1+(1+2λkgk)ηλk1/2)\|u_k - u_k^h\|_a \le 2\eta\lambda_k\Bigl(1 + \Bigl(1 + \frac{2\lambda_k}{g_k}\Bigr)\eta\lambda_k^{1/2}\Bigr)

である。

証明(命題 5.2)

鍵になる等式。 j=1,…,nj = 1, \ldots, n について、Ritz ベクトルの式(v=Phuk∈Vhv = P_hu_k \in V_h)と aa の対称性、Ritz 射影の定義、a(uk,v)=λk⟨uk,v⟩a(u_k, v) = \lambda_k\langle u_k, v\rangle から

λjh⟨Phuk,ujh⟩=a(Phuk,ujh)=a(uk,ujh)=λk⟨uk,ujh⟩\lambda_j^h\langle P_hu_k, u_j^h\rangle = a(P_hu_k, u_j^h) = a(u_k, u_j^h) = \lambda_k\langle u_k, u_j^h\rangle

です。両辺から λk⟨Phuk,ujh⟩\lambda_k\langle P_hu_k, u_j^h\rangle を引くと (λjh−λk)⟨Phuk,ujh⟩=λk⟨uk−Phuk,ujh⟩(\lambda_j^h - \lambda_k)\langle P_hu_k, u_j^h\rangle = \lambda_k\langle u_k - P_hu_k, u_j^h\rangle です。

L2L^2 ノルム。 βj=⟨Phuk,ujh⟩\beta_j = \langle P_hu_k, u_j^h\rangle とおくと Phuk=∑jβjujhP_hu_k = \sum_j\beta_ju_j^h({ujh}\{u_j^h\} は VhV_h の正規直交基底)で、上の等式と ρ\rho の定義、Bessel の不等式から

∥Phuk−βkukh∥2=∑j≠kβj2≤ρ2∑j≠k⟨uk−Phuk,ujh⟩2≤ρ2∥uk−Phuk∥2\|P_hu_k - \beta_ku_k^h\|^2 = \sum_{j\ne k}\beta_j^2 \le \rho^2\sum_{j\ne k}\langle u_k - P_hu_k, u_j^h\rangle^2 \le \rho^2\|u_k - P_hu_k\|^2

です。よって ∥uk−βkukh∥≤(1+ρ)∥uk−Phuk∥\|u_k - \beta_ku_k^h\| \le (1 + \rho)\|u_k - P_hu_k\| です。βk≥0\beta_k \ge 0 なので ∣1−βk∣=∣∥uk∥−∥βkukh∥∣≤∥uk−βkukh∥|1 - \beta_k| = \bigl|\|u_k\| - \|\beta_ku_k^h\|\bigr| \le \|u_k - \beta_ku_k^h\| で、

∥uk−ukh∥≤∥uk−βkukh∥+∣βk−1∣ ∥ukh∥≤2(1+ρ)∥uk−Phuk∥\|u_k - u_k^h\| \le \|u_k - \beta_ku_k^h\| + |\beta_k - 1|\,\|u_k^h\| \le 2(1 + \rho)\|u_k - P_hu_k\|

です。補題 5.1 から ∥uk−Phuk∥≤η2∥Auk∥=η2λk\|u_k - P_hu_k\| \le \eta^2\|Au_k\| = \eta^2\lambda_k です。

エネルギーノルム。 a(uk,uk)=λka(u_k, u_k) = \lambda_k、a(ukh,ukh)=λkha(u_k^h, u_k^h) = \lambda_k^h、a(uk,ukh)=λk⟨uk,ukh⟩a(u_k, u_k^h) = \lambda_k\langle u_k, u_k^h\rangle、∥uk−ukh∥2=2−2⟨uk,ukh⟩\|u_k - u_k^h\|^2 = 2 - 2\langle u_k, u_k^h\rangle から

∥uk−ukh∥a2=λk−2λk⟨uk,ukh⟩+λkh=λk∥uk−ukh∥2+(λkh−λk)\|u_k - u_k^h\|_a^2 = \lambda_k - 2\lambda_k\langle u_k, u_k^h\rangle + \lambda_k^h = \lambda_k\|u_k - u_k^h\|^2 + (\lambda_k^h - \lambda_k)

です。

すき間による評価。 j>kj \gt k なら 定理 4.1 から λjh≥λj≥λk+1\lambda_j^h \ge \lambda_j \ge \lambda_{k+1} で、λjh−λk≥gk\lambda_j^h - \lambda_k \ge g_k。j<kj \lt k なら、4η2λk−1≤4η2λk≤14\eta^2\lambda_{k-1} \le 4\eta^2\lambda_k \le 1 なので 定理 4.2 の 2 から λjh≤λk−1h≤λk−1+4η2λk−12≤λk−1+gk/2\lambda_j^h \le \lambda_{k-1}^h \le \lambda_{k-1} + 4\eta^2\lambda_{k-1}^2 \le \lambda_{k-1} + g_k/2 で、λk−λjh≥gk/2\lambda_k - \lambda_j^h \ge g_k/2。よって ρ≤2λk/gk\rho \le 2\lambda_k/g_k です。エネルギーノルムの等式に、L2L^2 の評価と λkh−λk≤4η2λk2\lambda_k^h - \lambda_k \le 4\eta^2\lambda_k^2 を入れ、x2+y2≤x+y\sqrt{x^2 + y^2} \le x + y を使うと

∥uk−ukh∥a≤λk1/2⋅2(1+2λkgk)η2λk+2ηλk\|u_k - u_k^h\|_a \le \lambda_k^{1/2}\cdot2\Bigl(1 + \frac{2\lambda_k}{g_k}\Bigr)\eta^2\lambda_k + 2\eta\lambda_k

で、主張の式です。

区分 1 次の有限要素法(η=O(h)\eta = O(h))では、Ritz ベクトルの誤差はエネルギーノルムで O(h)O(h)、L2L^2 ノルムで O(h2)O(h^2) です。境界値問題の誤差と同じ次数で、固有値の誤差 O(h2)O(h^2) はエネルギーノルムの誤差の 2 乗になっています(エネルギーノルムの等式がこの関係を厳密に表しています)。定数には λk/gk\lambda_k/g_k が入り、近接した固有値の固有ベクトルは精度が悪くなります。これは対称行列の固有ベクトルの摂動についての sin⁡θ\sin\theta 評価(定理 5.2[対称固有値問題と特異値分解の計算]。残差をすき間で割る)と同じ構造で、鍵になる等式は「PhukP_hu_k を近似固有ベクトルとみたときの残差」を表しています。例 4.5 で 2 重固有値が分かれたように、重複した固有値では個々の固有ベクトルは定まらず、固有空間どうしの距離を考える必要があります。

注意 5.3(重複固有値と固有値の集まり(文献))

重複した固有値、近接した固有値の集まり、非対称な問題を含む一般論は Babuška–Osborn の理論で、固有空間のあいだのすき間(gap)と、固有値の平均の誤差が評価されます(参考文献 [2])。証明は作用素の Riesz 射影と解作用素の収束を使うので、この章では単純固有値の場合に限りました。

Ritz 値は上界です。同じ仮定から下界も出るので、真の固有値を挟めます。

命題 6.1(Ritz 値による上界と Liu の下界の幅)✓

定理 4.2 の 2 の仮定(∥w−Phw∥a≤η∥Aw∥\|w - P_hw\|_a \le \eta\|Aw\|、w∈D(A)w \in D(A))のもとで、k≤dim⁡Vhk \le \dim V_h について

λkh1+η2λkh≤λk≤λkh\frac{\lambda_k^h}{1 + \eta^2\lambda_k^h} \le \lambda_k \le \lambda_k^h

が成り立つ。区間の幅は η2(λkh)21+η2λkh≤η2(λkh)2\dfrac{\eta^2(\lambda_k^h)^2}{1 + \eta^2\lambda_k^h} \le \eta^2(\lambda_k^h)^2 である。また η2λk<1\eta^2\lambda_k \lt 1 なら λkh≤λk/(1−η2λk)\lambda_k^h \le \lambda_k/(1 - \eta^2\lambda_k) である。

証明(命題 6.1)

上界は 定理 4.1 です。補題 5.1 から、すべての w∈Vw \in V について ∥w−Phw∥≤η∥w−Phw∥a\|w - P_hw\| \le \eta\|w - P_hw\|_a なので、定理 6.3[無限次元の固有値の包含] の仮定が Ch=ηC_h = \eta で満たされ、λk≥λkh/(1+η2λkh)\lambda_k \ge \lambda_k^h/(1 + \eta^2\lambda_k^h) です。幅は λkh−λkh/(1+η2λkh)=η2(λkh)2/(1+η2λkh)\lambda_k^h - \lambda_k^h/(1 + \eta^2\lambda_k^h) = \eta^2(\lambda_k^h)^2/(1 + \eta^2\lambda_k^h)。下界の式を λkh\lambda_k^h について解くと、λkh(1−η2λk)≤λk\lambda_k^h(1 - \eta^2\lambda_k) \le \lambda_k です。

挟む区間の幅は O(η2λk2)O(\eta^2\lambda_k^2) で、定理 4.2 の誤差の次数と同じです。つまり、Liu の下界は「大きさの順序が合っているだけの粗い下界」ではなく、h→0h \to 0 で Ritz 値と同じ速さで真の値に近づきます。最後の式は 定理 4.2 の 2 の評価の定数を 2 倍改善しています。1 次元の区分 1 次要素(η=h/π\eta = h/\pi)では、幅は (λkh)2h2/π2(\lambda_k^h)^2h^2/\pi^2 以下で、正確な誤差 λk2h2/12\lambda_k^2h^2/12(定理 4.3)の約 1.21.2 倍です。

この挟み込みを証明として使うには、定数 η\eta(2 次元では補間誤差の定数)の具体的な値と、行列の固有値 λkh\lambda_k^h の計算の丸め誤差の評価が要ります。それが固有値の精度保証の章の内容です。そこでは、より鋭い下界を与える Lehmann–Goerisch の方法(定理 5.2[無限次元の固有値の包含])も扱っています。

全直線の Schrödinger 作用素 −d2dx2+V-\frac{d^2}{dx^2} + V の固有値を計算するには、区間 (−R,R)(-R, R) に切って両端で 0 とします。これも Galerkin 近似の一種で(H01(−R,R)H^1_0(-R,R) の元を 0 で延長すれば全直線の関数になる)、誤差の向きと大きさが同じ道具で分かります。

この節では、V:R→RV : \mathbb{R} \to \mathbb{R} を連続で下に有界な関数とし、

a(u,v)=∫R(u′v′+Vuv) dx,R(w)=a(w,w)∥w∥2,Ek(R)=inf⁡F⊂H01(−R,R)dim⁡F=k max⁡w∈F, w≠0R(w)a(u, v) = \int_{\mathbb{R}}(u'v' + Vuv)\,dx,\qquad R(w) = \frac{a(w,w)}{\|w\|^2},\qquad E_k(R) = \inf_{\substack{F \subset H^1_0(-R,R)\\ \dim F = k}}\ \max_{w\in F,\ w\ne0}R(w)

とおきます(∥⋅∥\|\cdot\| は L2(R)L^2(\mathbb{R}) のノルム)。Ek(R)E_k(R) は、区間 (−R,R)(-R,R) の Dirichlet 問題 −u′′+Vu=Eu-u'' + Vu = Eu、u(±R)=0u(\pm R) = 0 の小さい方から kk 番目の固有値です(VV に定数を足して正にすれば §2 の設定に入り、補題 2.1 が使えます。定数を足すと R(w)R(w) と固有値は同じだけずれます)。

次の定理の 2 は、全直線の固有関数の裾を切り落とし関数で滑らかに 0 に落として箱の中の試験関数にし、その Rayleigh 商が EkE_k からどれだけ増えるかを測ります。増える分は、固有関数の裾の部分の大きさ δ\delta だけで押さえられます。証明の中の長い積分の展開は、「エネルギーの増加分がちょうど切り落としの傾きのある薄い層での u2u^2 の積分になる」という等式を出すための計算です。

定理 7.1(領域の切断による固有値の誤差)✓

上の設定で次が成り立つ。

  1. 0<R<R′0 \lt R \lt R' なら Ek(R′)≤Ek(R)E_k(R') \le E_k(R)。
  2. 実数 E1≤⋯≤EkE_1 \le \cdots \le E_k と実数値の u1,…,uk∈H1(R)u_1, \ldots, u_k \in H^1(\mathbb{R}) が、⟨ui,uj⟩=δij\langle u_i, u_j\rangle = \delta_{ij} と ∫R(ui′v′+Vuiv) dx=Ei∫Ruiv dx(台がコンパクトなすべての v∈H1(R))\int_{\mathbb{R}}(u_i'v' + Vu_iv)\,dx = E_i\int_{\mathbb{R}}u_iv\,dx\qquad(\text{台がコンパクトなすべての}\ v \in H^1(\mathbb{R})) を満たすとする(全直線の問題の固有値と固有関数)。E∗=max⁡i∣Ei∣E^{*} = \max_i|E_i|、R>1R \gt 1、δ=∑i=1k∫∣x∣>R−1ui2 dx\delta = \sum_{i=1}^{k}\int_{|x| \gt R-1}u_i^2\,dx とおく。δ<1\delta \lt 1 ならば Ek(R)≤Ek+(2E∗+1) δ1−δ.E_k(R) \le E_k + \frac{(2E^{*} + 1)\,\delta}{1 - \delta}.
  3. さらに ∣ui(x)∣≤Ce−κ∣x∣|u_i(x)| \le Ce^{-\kappa|x|}(i≤ki \le k)なら δ≤kC2κe−2κ(R−1)\delta \le \dfrac{kC^2}{\kappa}e^{-2\kappa(R-1)} で、誤差の上界は O(e−2κR)O(e^{-2\kappa R}) である。
  4. E1,…,EkE_1, \ldots, E_k が、H01(−R,R)H^1_0(-R,R)(0 で延長)を含む空間 VV の上の形式 aa について 補題 2.1 の λ1,…,λk\lambda_1, \ldots, \lambda_k であるとき(V(x)→∞V(x) \to \infty の場合)、Ek≤Ek(R)E_k \le E_k(R) である。
証明(定理 7.1)
  1. H01(−R,R)⊂H01(−R′,R′)H^1_0(-R,R) \subset H^1_0(-R',R')(0 で延長)なので、下限をとる部分空間の範囲が広がります。

  2. χ\chi を、∣x∣≤R−1|x| \le R - 1 で 1、R−1≤∣x∣≤RR - 1 \le |x| \le R で R−∣x∣R - |x|、∣x∣≥R|x| \ge R で 0 の関数とします。χ\chi は Lipschitz 連続で 0≤χ≤10 \le \chi \le 1、∣χ′∣≤1|\chi'| \le 1、χ′\chi' は R−1≤∣x∣≤RR - 1 \le |x| \le R の外で 0 です。wi=χuiw_i = \chi u_i は H01(−R,R)H^1_0(-R,R) に属し、wi′=χ′ui+χui′w_i' = \chi'u_i + \chi u_i' です。

等式。 a(wi,wj)=Ei+Ej2⟨wi,wj⟩+∫χ′2uiuj dxa(w_i, w_j) = \frac{E_i + E_j}{2}\langle w_i, w_j\rangle + \int\chi'^2u_iu_j\,dx を示します。展開すると

a(wi,wj)=∫(χ′2uiuj+χχ′(uiuj)′+χ2ui′uj′+Vχ2uiuj)dxa(w_i, w_j) = \int\bigl(\chi'^2u_iu_j + \chi\chi'(u_iu_j)' + \chi^2u_i'u_j' + V\chi^2u_iu_j\bigr)dx

です。uiu_i の式で v=χ2ujv = \chi^2u_j(台がコンパクトで H1H^1)とすると、v′=2χχ′uj+χ2uj′v' = 2\chi\chi'u_j + \chi^2u_j' から

∫(2χχ′ui′uj+χ2ui′uj′+Vχ2uiuj)dx=Ei⟨wi,wj⟩\int\bigl(2\chi\chi'u_i'u_j + \chi^2u_i'u_j' + V\chi^2u_iu_j\bigr)dx = E_i\langle w_i, w_j\rangle

で、ii と jj を入れ替えた式との平均をとると、ui′uj+uiuj′=(uiuj)′u_i'u_j + u_iu_j' = (u_iu_j)' から

∫(χχ′(uiuj)′+χ2ui′uj′+Vχ2uiuj)dx=Ei+Ej2⟨wi,wj⟩\int\bigl(\chi\chi'(u_iu_j)' + \chi^2u_i'u_j' + V\chi^2u_iu_j\bigr)dx = \frac{E_i + E_j}{2}\langle w_i, w_j\rangle

です。これを展開の式に入れれば等式が出ます。

試験空間。 c∈Rkc \in \mathbb{R}^k、∣c∣=1|c| = 1 について u=∑iciuiu = \sum_ic_iu_i、u~=∑iciEiui\tilde u = \sum_ic_iE_iu_i、w=∑iciwi=χuw = \sum_ic_iw_i = \chi u とおきます。等式から

a(w,w)=∑i,jcicjEi+Ej2⟨χui,χuj⟩+∫χ′2u2=∫χ2u~ u dx+∫χ′2u2 dxa(w, w) = \sum_{i,j}c_ic_j\frac{E_i + E_j}{2}\langle\chi u_i, \chi u_j\rangle + \int\chi'^2u^2 = \int\chi^2\tilde u\,u\,dx + \int\chi'^2u^2\,dx

です。∫u~u=∑ici2Ei≤Ek\int\tilde uu = \sum_ic_i^2E_i \le E_k です。1−χ21 - \chi^2 と χ′2\chi'^2 は ∣x∣≤R−1|x| \le R - 1 で 0、それ以外で 1 以下なので、各点での Cauchy–Schwarz の不等式 u2≤∑iui2u^2 \le \sum_iu_i^2、u~2≤(E∗)2∑iui2\tilde u^2 \le (E^{*})^2\sum_iu_i^2 から

∫(1−χ2)u2≤δ,∫χ′2u2≤δ,∣∫(1−χ2)u~u∣≤(∫∣x∣>R−1u~2)1/2(∫∣x∣>R−1u2)1/2≤E∗δ\int(1-\chi^2)u^2 \le \delta,\qquad \int\chi'^2u^2 \le \delta,\qquad \Bigl|\int(1 - \chi^2)\tilde uu\Bigr| \le \Bigl(\int_{|x| \gt R-1}\tilde u^2\Bigr)^{1/2}\Bigl(\int_{|x| \gt R-1}u^2\Bigr)^{1/2} \le E^{*}\delta

です。したがって

a(w,w)≤Ek+(E∗+1)δ=:N0,1−δ≤∥w∥2=1−∫(1−χ2)u2≤1a(w,w) \le E_k + (E^{*} + 1)\delta =: N_0,\qquad 1 - \delta \le \|w\|^2 = 1 - \int(1-\chi^2)u^2 \le 1

です。とくに w≠0w \ne 0 なので w1,…,wkw_1, \ldots, w_k は 1 次独立で、F=span{wi}F = \mathrm{span}\{w_i\} は H01(−R,R)H^1_0(-R,R) の kk 次元部分空間です。a(w,w)≥0a(w,w) \ge 0 なら R(w)≤N0/(1−δ)=Ek+(Ekδ+(E∗+1)δ)/(1−δ)≤Ek+(2E∗+1)δ/(1−δ)R(w) \le N_0/(1 - \delta) = E_k + (E_k\delta + (E^{*}+1)\delta)/(1-\delta) \le E_k + (2E^{*}+1)\delta/(1-\delta)、a(w,w)<0a(w,w) \lt 0 なら ∥w∥2≤1\|w\|^2 \le 1 から R(w)≤a(w,w)≤N0≤Ek+(2E∗+1)δ/(1−δ)R(w) \le a(w,w) \le N_0 \le E_k + (2E^{*}+1)\delta/(1-\delta) です。Ek(R)≤max⁡FRE_k(R) \le \max_FR から結論が出ます。

  1. ∫∣x∣>R−1ui2≤2C2∫R−1∞e−2κxdx=C2κe−2κ(R−1)\int_{|x| \gt R-1}u_i^2 \le 2C^2\int_{R-1}^\infty e^{-2\kappa x}dx = \frac{C^2}{\kappa}e^{-2\kappa(R-1)} を ii について足します。

  2. 補題 2.1 の最小値は VV のすべての kk 次元部分空間についてとるので、H01(−R,R)H^1_0(-R,R) の中に限った下限 Ek(R)E_k(R) 以下です(定理 4.1 と同じ議論)。

1 と 4 は Dirichlet ラプラシアンの領域の単調性(系 3.1[Dirichlet ラプラシアンの固有値と Weyl 則])と同じ主張です。2 の証明の等式は、固有関数に切り落とし関数を掛けても、エネルギーの増加が ∫χ′2u2\int\chi'^2u^2(切り落としの勾配がある層での固有関数の大きさ)だけで済むことを言っています。誤差が固有関数の裾の 2 乗で決まるのは、定理 4.2 と同じく、固有値の誤差が固有関数の誤差の 2 乗の次数だからです。層の幅を 1 にとったのは式を簡単にするためで、幅 ℓ\ell の層を使えば χ′2≤ℓ−2\chi'^2 \le \ell^{-2}、裾は ∣x∣>R−ℓ|x| \gt R - \ell になります(演習 9.3)。

注意 7.2(本質スペクトルがある場合の下界)

4 は、全直線の作用素が離散スペクトルだけをもつ場合(V→∞V \to \infty)の主張です。V→0V \to 0(∣x∣→∞|x| \to \infty)のように本質スペクトル [0,∞)[0, \infty) がある場合も、その下端より下の固有値については、形式についてのミニマックス原理(Reed–Simon の教科書、参考文献 [3] の第 XIII 章)から同じ不等式 Ek≤Ek(R)E_k \le E_k(R) が成り立ちます。既存の章のミニマックス原理(定理 6.3[作用素の収束と摂動])は試験空間が作用素の定義域に含まれる場合の形なので、ここでは定理に含めず、下の例で数値を確かめるにとどめます。基底状態が正にとれて単純であること(定理 5.4[Feller 過程と Feynman–Kac] が仮定として使う性質。この章では証明しません)は、切断した問題でも同じです。

例 7.3(調和振動子と Pöschl–Teller ポテンシャル)

(a) 調和振動子 V=x2V = x^2。固有値は Ek=2k−1E_k = 2k - 1、基底状態は u1=π−1/4e−x2/2u_1 = \pi^{-1/4}e^{-x^2/2} で、δ=∫∣x∣>R−1u12=erfc(R−1)\delta = \int_{|x| \gt R-1}u_1^2 = \mathrm{erfc}(R - 1) です。k=1k = 1、E∗=1E^{*} = 1 なので、定理 7.1 の上界は 3δ/(1−δ)3\delta/(1-\delta) です。

(b) Pöschl–Teller ポテンシャル V=−2/cosh⁡2xV = -2/\cosh^2x。u1=12cosh⁡xu_1 = \frac{1}{\sqrt2\cosh x} は −u1′′+Vu1=−u1-u_1'' + Vu_1 = -u_1 を満たし((1/cosh⁡x)′′=1/cosh⁡x−2/cosh⁡3x(1/\cosh x)'' = 1/\cosh x - 2/\cosh^3x)、∥u1∥=1\|u_1\| = 1、E1=−1E_1 = -1 です。∣u1∣≤2e−∣x∣|u_1| \le \sqrt2e^{-|x|}(κ=1\kappa = 1)で、δ=∫∣x∣>R−1dx2cosh⁡2x=1−tanh⁡(R−1)\delta = \int_{|x| \gt R-1}\frac{dx}{2\cosh^2x} = 1 - \tanh(R-1)、上界は同じく 3δ/(1−δ)3\delta/(1-\delta) です。

区間の Dirichlet 固有値は、Chebyshev 選点法(120 点)で求めます。離散化の誤差は表の値より十分小さいです。

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
import numpy as np
from scipy.special import erfc
def cheb(N):
j = np.arange(N + 1)
x = np.cos(np.pi * j / N)
c = np.where((j == 0) | (j == N), 2.0, 1.0) * (-1.0) ** j
D = (c[:, None] / c[None, :]) / (x[:, None] - x[None, :] + np.eye(N + 1))
D -= np.diag(D.sum(axis=1))
return D, x
def box_eigs(V, R, N=120, k=3):
"""-u'' + V u = E u(u(±R) = 0)の小さい方から k 個の固有値(Chebyshev 選点法)。"""
D, x = cheb(N)
H = -(D @ D)[1:N, 1:N] / R**2 + np.diag(V(R * x[1:N]))
return np.sort(np.linalg.eigvals(H).real)[:k]
print("harmonic oscillator V = x^2 (E_k = 2k - 1)")
print(" R E_1(R) - 1 E_2(R) - 3 E_3(R) - 5 bound for k = 1: 3 delta / (1 - delta)")
for R in [2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]:
E = box_eigs(lambda x: x**2, R)
delta = erfc(R - 1)
print(f" {R:3.1f} {E[0] - 1:.3e} {E[1] - 3:.3e} {E[2] - 5:.3e} {3 * delta / (1 - delta):.3e}")
print("Poschl-Teller V = -2 / cosh^2 x (E_1 = -1)")
print(" R E_1(R) + 1 bound 3 delta / (1 - delta) ratio of successive errors (R -> R + 1)")
prev = None
for R in [3.0, 4.0, 5.0, 6.0, 7.0, 8.0]:
E = box_eigs(lambda x: -2 / np.cosh(x) ** 2, R, k=1)[0] + 1
delta = 1 - np.tanh(R - 1)
print(f" {R:3.1f} {E:.3e} {3 * delta / (1 - delta):.3e}" + ("" if prev is None else f" {prev / E:.3f}"))
prev = E
print(" e^2 =", f"{np.exp(2):.3f}")
harmonic oscillator V = x^2 (E_k = 2k - 1)
R E_1(R) - 1 E_2(R) - 3 E_3(R) - 5 bound for k = 1: 3 delta / (1 - delta)
2.0 7.492e-02 5.296e-01 1.800e+00 5.600e-01
2.5 9.908e-03 1.028e-01 4.734e-01 1.053e-01
3.0 7.822e-04 1.216e-02 8.225e-02 1.410e-02
3.5 3.609e-05 7.990e-04 7.940e-03 1.221e-03
4.0 9.817e-07 2.921e-05 4.024e-04 6.627e-05
4.5 1.588e-08 6.083e-07 1.101e-05 2.229e-06
5.0 1.535e-10 7.343e-09 1.680e-07 4.625e-08
Poschl-Teller V = -2 / cosh^2 x (E_1 = -1)
R E_1(R) + 1 bound 3 delta / (1 - delta) ratio of successive errors (R -> R + 1)
3.0 2.025e-02 1.119e-01
4.0 2.695e-03 1.491e-02 7.514
5.0 3.635e-04 2.013e-03 7.414
6.0 4.916e-05 2.724e-04 7.394
7.0 6.652e-06 3.687e-05 7.390
8.0 9.003e-07 4.989e-06 7.389
e^2 = 7.389

誤差はすべて正で、RR とともに単調に減り、上界の内側にあります。Pöschl–Teller では RR を 1 増やすごとに誤差が 1/e21/e^2 になり、定理 7.1 の 3 の e−2κRe^{-2\kappa R}(κ=1\kappa = 1)のとおりです。調和振動子では固有関数が Gauss 関数的に減衰するので、誤差は e−R2e^{-R^2} のように、指数関数より速く減ります。励起状態ほど固有関数が外に広がるので、同じ RR での誤差は大きくなります。必要な箱の大きさは、求めたい最も高い固有状態の広がりで決まります。

離散化した行列の固有値が、作用素のスペクトルと無関係な場所に現れる現象をスペクトル汚染、その固有値を偽の固有値といいます。§2 の設定(離散スペクトルだけをもつ正の作用素)では、定理 4.1 から kk 番目の Ritz 値は kk 番目の固有値より下に来ないので、下からの汚染はありません。本質スペクトルをもつ作用素でも、その下端より下では同じです。

命題 8.1(本質スペクトルの下端より下には偽の固有値が現れない)✓

H\mathcal{H} を無限次元の Hilbert 空間、AA を下に有界な自己共役作用素、Σ=inf⁡σess(A)\Sigma = \inf\sigma_{\mathrm{ess}}(A)、μk(A)\mu_k(A) をミニマックス値(定義 6.1[作用素の収束と摂動])とする。Vh⊂D(A)V_h \subset D(A) を nn 次元の部分空間、Λ1≤⋯≤Λn\Lambda_1 \le \cdots \le \Lambda_n を、VhV_h の正規直交基底 ψi\psi_i についての行列 (⟨ψi,Aψj⟩)(\langle\psi_i, A\psi_j\rangle) の固有値(Ritz 値)とする。

  1. k=1,…,nk = 1, \ldots, n について Λk≥μk(A)\Lambda_k \ge \mu_k(A)。
  2. c<Σc \lt \Sigma とすると、cc より小さい Ritz 値の個数は、cc より小さい AA の固有値の個数(重複度こみ)以下である。とくに inf⁡σ(A)\inf\sigma(A) より小さい Ritz 値はなく、Λk<Σ\Lambda_k \lt \Sigma ならば AA は Σ\Sigma より小さい固有値を kk 個以上もち、小さい方から kk 番目の固有値は Λk\Lambda_k 以下である。
証明(命題 8.1)
  1. 行列 (⟨ψi,Aψj⟩)(\langle\psi_i, A\psi_j\rangle) はエルミートで、Courant–Fischer の定理(定理 3.1[行列の固有値評価と不等式]。固有値を小さい順に数え直す)から、VhV_h の kk 次元部分空間 FF で max⁡{⟨ψ,Aψ⟩:ψ∈F, ∥ψ∥=1}=Λk\max\{\langle\psi, A\psi\rangle : \psi \in F,\ \|\psi\| = 1\} = \Lambda_k となるものがあります。F⊂D(A)F \subset D(A) なので、系 6.4[作用素の収束と摂動] から μk(A)≤Λk\mu_k(A) \le \Lambda_k です。

  2. cc より小さい Ritz 値が kk 個あるとすると Λk<c<Σ\Lambda_k \lt c \lt \Sigma で、1 から μk(A)<Σ\mu_k(A) \lt \Sigma です。ミニマックス原理(定理 6.3[作用素の収束と摂動])の 2 つの場合のうち、μk=Σ\mu_k = \Sigma となる場合は起こらないので、AA は Σ\Sigma より小さい固有値を kk 個以上もち、μk(A)\mu_k(A) は小さい方から kk 番目の固有値です。μ1≤⋯≤μk≤Λk<c\mu_1 \le \cdots \le \mu_k \le \Lambda_k \lt c なので、cc より小さい固有値が kk 個以上あります。μ1(A)=inf⁡σ(A)≤Λ1\mu_1(A) = \inf\sigma(A) \le \Lambda_1 から残りの主張が出ます。

次の例の直感は単純です。この作用素は、一方の成分には +1+1 倍、もう一方には −1-1 倍として働きます。両方の成分を混ぜた試験ベクトルの Rayleigh 商は、+1+1 と −1-1 の重みつき平均になるので、そのあいだの値がいくらでも現れます。

例 8.2(スペクトルのすき間に現れる偽の固有値)

H=ℓ2(N)⊕ℓ2(N)\mathcal{H} = \ell^2(\mathbb{N})\oplus\ell^2(\mathbb{N})、A(x⊕y)=x⊕(−y)A(x \oplus y) = x \oplus (-y) とします。AA は有界な自己共役作用素で、スペクトルは {−1,1}\{-1, 1\}(どちらも無限重の固有値)、Σ=−1\Sigma = -1 です。ee を ℓ2(N)\ell^2(\mathbb{N}) の単位ベクトルとし、ψt=cos⁡t (e⊕0)+sin⁡t (0⊕e)\psi_t = \cos t\,(e \oplus 0) + \sin t\,(0 \oplus e) の張る 1 次元の部分空間をとると、Ritz 値は ⟨ψt,Aψt⟩=cos⁡2t−sin⁡2t=cos⁡2t\langle\psi_t, A\psi_t\rangle = \cos^2t - \sin^2t = \cos2t です。tt を動かすと [−1,1][-1, 1] のどの値にもなり、すき間 (−1,1)(-1, 1) の中の値は AA のスペクトルに属しません。命題 8.1 が保証するのは Σ=−1\Sigma = -1 より下だけで、本質スペクトルの 2 つの部分に挟まれたすき間では、試験関数が両側の成分を混ぜると偽の固有値が現れます。Dirac 作用素(正と負のエネルギーの連続スペクトルのすき間に束縛状態がある)や、周期的な媒質の欠陥の準位の計算で実際に起こります。

注意 8.3(すき間の中の固有値(文献))

すき間の中で偽の固有値が現れる条件と、それを避ける方法(試験空間の選び方、2 次の相対スペクトルなど)は、Davies–Plum と Lewin–Séré の論文(参考文献 [6]、[7])にあります。この章では扱いません。

定理 4.2 の 1 は、近似空間が何であっても成り立ちます。近似空間を三角多項式にとれば、固有関数の滑らかさに応じた速さで収束します。

命題 8.4(Fourier–Galerkin 法の固有値の指数収束)✓

H\mathcal{H} を周期 2π2\pi の実数値関数の L2L^2 空間(内積 ⟨u,v⟩=12π∫−ππuv dx\langle u, v\rangle = \frac{1}{2\pi}\int_{-\pi}^{\pi}uv\,dx)、VcV_c を連続な周期関数で 1≤Vc(x)≤V11 \le V_c(x) \le V_1 を満たすものとし、V=Hper1V = H^1_{\mathrm{per}} 上の形式 a(u,v)=⟨u′,v′⟩+⟨Vcu,v⟩a(u,v) = \langle u', v'\rangle + \langle V_cu, v\rangle が §2 の設定を満たすとする(固有値 λm\lambda_m、固有関数 umu_m)。N=2K+1N = 2K+1、Vh=SNV_h = S_N(次数 KK 以下の実三角多項式の空間。スペクトル法の 定義 2.1[スペクトル法])とし、その Ritz 値を λkN\lambda_k^N と書く。u1,…,uku_1, \ldots, u_k が帯状領域 {∣Im z∣<a0}\{|\mathrm{Im}\,z| \lt a_0\} に正則に延長され、そこで ∣ui∣≤M0|u_i| \le M_0 を満たすなら、0<b<a00 \lt b \lt a_0 について、NN によらない定数 CC があって、十分大きいすべての NN で

0≤λkN−λk≤C (N+1)2e−bN0 \le \lambda_k^N - \lambda_k \le C\,(N+1)^2e^{-bN}

が成り立つ。C=4kM02GbebV1λk/λ1C = 4kM_0^2G_be^{b}V_1\lambda_k/\lambda_1、Gb=∑j≥1j2e−2bjG_b = \sum_{j\ge1}j^2e^{-2bj} ととれる。

証明(命題 8.4)

u=∑i≤kciuiu = \sum_{i\le k}c_iu_i、∑ci2=1\sum c_i^2 = 1 とします。Ritz 射影は aa のノルムでの最良近似なので、Fourier 切断 PNu∈SNP_Nu \in S_N と比べて ∥u−Phu∥a≤∥u−PNu∥a\|u - P_hu\|_a \le \|u - P_Nu\|_a です。a(v,v)≤V1(∥v′∥2+∥v∥2)=V1∥v∥H12a(v,v) \le V_1(\|v'\|^2 + \|v\|^2) = V_1\|v\|_{H^1}^2 です。Fourier 係数は 補題 3.1[数値積分 II] と Cauchy–Schwarz の不等式から ∣u^(n)∣≤∑i∣ci∣∣u^i(n)∣≤kM0e−b∣n∣|\hat u(n)| \le \sum_i|c_i||\hat u_i(n)| \le \sqrt kM_0e^{-b|n|} なので

∥u−PNu∥H12=∑∣n∣>K(1+n2)∣u^(n)∣2≤4kM02∑n>Kn2e−2bn≤4kM02(K+1)2e−2bK∑j≥1j2e−2bj\|u - P_Nu\|_{H^1}^2 = \sum_{|n| \gt K}(1 + n^2)|\hat u(n)|^2 \le 4kM_0^2\sum_{n \gt K}n^2e^{-2bn} \le 4kM_0^2(K+1)^2e^{-2bK}\sum_{j\ge1}j^2e^{-2bj}

です(1+n2≤2n21 + n^2 \le 2n^2 と、n=K+j≤(K+1)jn = K + j \le (K+1)j を使った)。よって 定理 4.2 の εk\varepsilon_k は εk2≤4kM02GbV1(K+1)2e−2bK\varepsilon_k^2 \le 4kM_0^2G_bV_1(K+1)^2e^{-2bK} を満たし、N→∞N \to \infty で 0 に収束します。4εk2≤λ14\varepsilon_k^2 \le \lambda_1 となる NN では、同じ定理の 1 から

0≤λkN−λk≤λk⋅2εk2/λ11−2εk2/λ1≤4λkλ1εk20 \le \lambda_k^N - \lambda_k \le \lambda_k\cdot\frac{2\varepsilon_k^2/\lambda_1}{1 - 2\varepsilon_k^2/\lambda_1} \le \frac{4\lambda_k}{\lambda_1}\varepsilon_k^2

です。(K+1)2=(N+1)2/4(K+1)^2 = (N+1)^2/4、e−2bK=ebe−bNe^{-2bK} = e^{b}e^{-bN} を入れると主張の式が出ます。

例 8.5(Mathieu 型の問題の固有値)

−u′′+2qcos⁡(2x) u=λu-u'' + 2q\cos(2x)\,u = \lambda u(周期 2π2\pi)の固有値は、Mathieu 関数の特性値 am(q)a_m(q)、bm(q)b_m(q) です。ポテンシャルに定数を足せば 命題 8.4 の形になり(固有値の差は変わらない)、係数が整関数の線形常微分方程式の解は整関数なので、固有関数は任意の幅の帯状領域で正則です。einxe^{inx} を基底にとると、Galerkin 法の行列は diag(n2)\mathrm{diag}(n^2) に、nn と n±2n \pm 2 を結ぶ成分 qq を加えたものです。q=5q = 5 で、下位 3 個の固有値を Fourier–Galerkin 法と Fourier 選点法(スペクトル法の 2 階のスペクトル微分行列に diag(2qcos⁡2xj)\mathrm{diag}(2q\cos2x_j) を加えた行列)で求め、scipy.special の特性値と比べます。

# Python 3.9.6 / NumPy 2.0.2 / SciPy 1.13.1
import numpy as np
from scipy.special import mathieu_a, mathieu_b
q = 5.0
ref = np.sort([mathieu_a(0, q), mathieu_b(1, q), mathieu_a(1, q)])
print("reference (scipy.special):", " ".join(f"{r:.10f}" for r in ref))
print(" N Galerkin: lambda_k^N - lambda_k (k = 1, 2, 3) collocation: lambda_k^N - lambda_k")
for N in [9, 13, 17, 21, 25, 29]:
K = (N - 1) // 2
n = np.arange(-K, K + 1)
G = np.diag(n.astype(float) ** 2) + q * (np.eye(N, k=2) + np.eye(N, k=-2)) # e^{inx} についての行列
gal = np.linalg.eigvalsh(G)[:3]
x = 2 * np.pi * np.arange(N) / N
k = np.fft.fftfreq(N, d=1.0 / N)
D2 = np.real(np.fft.ifft(-(k**2)[:, None] * np.fft.fft(np.eye(N), axis=0), axis=0))
col = np.linalg.eigvalsh(-D2 + np.diag(2 * q * np.cos(2 * x)))[:3]
print(f"{N:5d} " + " ".join(f"{l - r:+.2e}" for l, r in zip(gal, ref)) + " "
+ " ".join(f"{l - r:+.2e}" for l, r in zip(col, ref)))
reference (scipy.special): -5.8000460209 -5.7900805986 1.8581875415
N Galerkin: lambda_k^N - lambda_k (k = 1, 2, 3) collocation: lambda_k^N - lambda_k
9 +1.28e-02 +8.95e-02 +3.32e-01 -4.50e-02 -4.18e-02 -3.04e-01
13 +1.13e-04 +1.39e-03 +1.02e-02 -1.64e-04 -4.91e-04 -4.75e-03
17 +3.88e-07 +7.44e-06 +7.00e-05 -3.75e-07 -1.89e-06 -2.02e-05
21 +6.15e-10 +1.70e-08 +1.87e-07 -4.52e-10 -3.43e-09 -4.08e-08
25 +4.88e-13 +1.92e-11 +2.36e-10 -3.12e-13 -3.26e-12 -4.18e-11
29 +8.88e-16 +9.77e-15 +1.44e-13 +2.22e-14 +0.00e+00 -8.84e-14

NN を 4 増やすごとに誤差が 2〜3 桁減り、N=29N = 29 で丸めの大きさです。2 次の中心差分で同じ精度(10−1310^{-13})を得るには、第 1 固有値の誤差が約 1.0 h21.0\,h^2 なので(N=200,400,800N = 200, 400, 800 点の周期的な 3 点差分で確かめた値)、h≈3×10−7h \approx 3\times10^{-7}、すなわち 10710^7 個程度の格子点が要ることになります。Galerkin 法の誤差はすべて正です(定理 4.1)。選点法の誤差は同じ速さで減りますが、符号は負で、上界にはなっていません。選点法は積 VcuV_cu を格子点で標本化するので折り返しが入り(定理 6.3[スペクトル法])、適合な Galerkin 近似ではないからです。

演習 9.1易

区間のモデル問題を h=1/4h = 1/4 で離散化する。3 点差分の第 1 固有値、区分 1 次要素の第 1 Ritz 値、両者の平均を求め、λ1=π2≈9.8696\lambda_1 = \pi^2 \approx 9.8696 と比べよ。

解答

θ1=π/4\theta_1 = \pi/4 です。定理 3.1 から λ1FD=64sin⁡2(π/8)=32(1−cos⁡(π/4))≈9.3726\lambda_1^{\mathrm{FD}} = 64\sin^2(\pi/8) = 32(1 - \cos(\pi/4)) \approx 9.3726。定理 4.3 から λ1h=96 1−cos⁡(π/4)2+cos⁡(π/4)≈96×0.2928932.707107≈10.3866\lambda_1^h = 96\,\frac{1 - \cos(\pi/4)}{2 + \cos(\pi/4)} \approx 96\times\frac{0.292893}{2.707107} \approx 10.3866。誤差は −0.497-0.497 と +0.517+0.517 で、先頭項 λ12h2/12≈0.507\lambda_1^2h^2/12 \approx 0.507 に近い値です。平均は 9.87969.8796 で、誤差は +0.0100+0.0100。予言値 λ13h4/360≈961.4/(256×360)≈0.0104\lambda_1^3h^4/360 \approx 961.4/(256\times360) \approx 0.0104 と合います。未知数 3 個の行列 2 つから、相対誤差 0.1%0.1\% の値が得られています。

演習 9.2標準

§2 の設定で、λk\lambda_k の固有ベクトル uku_k(∥uk∥=1\|u_k\| = 1)と、∥v∥=1\|v\| = 1 である任意の v∈Vv \in V について

R(v)−λk=∥v−uk∥a2−λk∥v−uk∥2R(v) - \lambda_k = \|v - u_k\|_a^2 - \lambda_k\|v - u_k\|^2

を示せ。これから、R(v)R(v) の λk\lambda_k からのずれが vv の誤差の 2 乗の次数であることを説明せよ。

解答

a(uk,v)=λk⟨uk,v⟩a(u_k, v) = \lambda_k\langle u_k, v\rangle、a(uk,uk)=λka(u_k,u_k) = \lambda_k から ∥v−uk∥a2=a(v,v)−2λk⟨uk,v⟩+λk\|v - u_k\|_a^2 = a(v,v) - 2\lambda_k\langle u_k, v\rangle + \lambda_k です。∥v−uk∥2=2−2⟨uk,v⟩\|v - u_k\|^2 = 2 - 2\langle u_k, v\rangle なので λk∥v−uk∥2=2λk−2λk⟨uk,v⟩\lambda_k\|v - u_k\|^2 = 2\lambda_k - 2\lambda_k\langle u_k, v\rangle。差をとると a(v,v)−λk=R(v)−λka(v,v) - \lambda_k = R(v) - \lambda_k です。右辺は ∥v−uk∥a2\|v - u_k\|_a^2 以下なので、vv がエネルギーノルムで uku_k に ε\varepsilon まで近ければ、Rayleigh 商は λk\lambda_k に ε2\varepsilon^2 まで近くなります。命題 5.2 のエネルギーノルムの等式は、v=ukhv = u_k^h の場合です。k=1k = 1 なら ∥w∥a2≥λ1∥w∥2\|w\|_a^2 \ge \lambda_1\|w\|^2 から右辺は 0 以上で、Rayleigh–Ritz の上界 R(v)≥λ1R(v) \ge \lambda_1 が再び出ます。k≥2k \ge 2 では右辺は負にもなり、1 つの試験関数の Rayleigh 商は λk\lambda_k の上界とは限りません。

演習 9.3標準

定理 7.1 の設定で k=1k = 1 とし、0<ℓ<R0 \lt \ell \lt R、δℓ=∫∣x∣>R−ℓu12 dx<1\delta_\ell = \int_{|x| \gt R - \ell}u_1^2\,dx \lt 1 とする。幅 ℓ\ell の層で 1 から 0 に 1 次式で落ちる切り落とし関数を使って

E1(R)−E1≤δℓℓ2(1−δℓ)E_1(R) - E_1 \le \frac{\delta_\ell}{\ell^2(1 - \delta_\ell)}

を示せ。調和振動子の基底状態で R=4R = 4、ℓ=1\ell = 1 のときの値を、例 7.3 の表と比べよ。

解答

χ\chi を、∣x∣≤R−ℓ|x| \le R - \ell で 1、R−ℓ≤∣x∣≤RR - \ell \le |x| \le R で (R−∣x∣)/ℓ(R - |x|)/\ell、それ以外で 0 とします。定理 7.1 の証明の等式は χ\chi の形によらず成り立ち、i=j=1i = j = 1 で a(χu1,χu1)=E1∥χu1∥2+∫χ′2u12a(\chi u_1, \chi u_1) = E_1\|\chi u_1\|^2 + \int\chi'^2u_1^2 です。χ′2≤ℓ−2\chi'^2 \le \ell^{-2} で、χ′\chi' は ∣x∣>R−ℓ|x| \gt R - \ell の外で 0 なので ∫χ′2u12≤δℓ/ℓ2\int\chi'^2u_1^2 \le \delta_\ell/\ell^2、また ∥χu1∥2≥1−δℓ\|\chi u_1\|^2 \ge 1 - \delta_\ell です。χu1∈H01(−R,R)\chi u_1 \in H^1_0(-R,R) の張る 1 次元の空間を試験空間にとると

E1(R)≤R(χu1)=E1+∫χ′2u12∥χu1∥2≤E1+δℓℓ2(1−δℓ)E_1(R) \le R(\chi u_1) = E_1 + \frac{\int\chi'^2u_1^2}{\|\chi u_1\|^2} \le E_1 + \frac{\delta_\ell}{\ell^2(1 - \delta_\ell)}

です。k=1k = 1 では等式が正確なので、定理の一般の評価にある因子 2E∗+12E^{*} + 1 が要りません。調和振動子で R=4R = 4、ℓ=1\ell = 1 なら δ1=erfc(3)≈2.21×10−5\delta_1 = \mathrm{erfc}(3) \approx 2.21\times10^{-5} で、上界は 2.21×10−52.21\times10^{-5}。表の実際の誤差は 9.8×10−79.8\times10^{-7}、定理の上界は 6.6×10−56.6\times10^{-5} でした。ℓ\ell を大きくすると ℓ−2\ell^{-2} は減り δℓ\delta_\ell は増えるので、最良の ℓ\ell はその釣り合いで決まります。

演習 9.4難

1 次元の等間隔の区分 1 次要素で、質量行列を集中化した固有値問題 Kx=λhIxK\boldsymbol{x} = \lambda hI\boldsymbol{x} は、内積を ⟨u,v⟩h=h∑ju(xj)v(xj)\langle u, v\rangle_h = h\sum_ju(x_j)v(x_j)(台形則)に取り替えた Galerkin 近似とみなせることを示せ。v∈Vhv \in V_h について ⟨v,v⟩h≥∥v∥2\langle v, v\rangle_h \ge \|v\|^2 であることを示し、これから集中質量の固有値が一致質量の Ritz 値以下になること(λkFD≤λkh\lambda_k^{\mathrm{FD}} \le \lambda_k^h)を、定理 3.1 と 定理 4.3 の閉じた形を使わずに導け。

解答

u=∑jxjφj∈Vhu = \sum_jx_j\varphi_j \in V_h について u(xj)=xju(x_j) = x_j なので、⟨φj,φi⟩h=hδij\langle\varphi_j, \varphi_i\rangle_h = h\delta_{ij} で、a(u,v)=λ⟨u,v⟩ha(u, v) = \lambda\langle u, v\rangle_h(v∈Vhv \in V_h)は Kx=λhIxK\boldsymbol{x} = \lambda hI\boldsymbol{x} です。

1 つの要素 [xj,xj+1][x_j, x_{j+1}] の上で vv は 1 次式で、端の値を α,β\alpha, \beta とすると ∫v2=h3(α2+αβ+β2)\int v^2 = \frac h3(\alpha^2 + \alpha\beta + \beta^2)、台形則は h2(α2+β2)\frac h2(\alpha^2 + \beta^2) です。差は h6(α2−2αβ+β2)=h6(α−β)2≥0\frac h6(\alpha^2 - 2\alpha\beta + \beta^2) = \frac h6(\alpha - \beta)^2 \ge 0。要素について足すと ⟨v,v⟩h≥∥v∥2\langle v, v\rangle_h \ge \|v\|^2 です(v(0)=v(1)=0v(0) = v(1) = 0 なので、台形則の和は h∑jv(xj)2h\sum_jv(x_j)^2 に等しい)。

補題 2.3 の証明は内積を ⟨⋅,⋅⟩h\langle\cdot,\cdot\rangle_h に替えても通るので、集中質量の第 kk 固有値は min⁡dim⁡F=kmax⁡v∈Fa(v,v)/⟨v,v⟩h\min_{\dim F = k}\max_{v\in F}a(v,v)/\langle v, v\rangle_h です。各 vv で a(v,v)/⟨v,v⟩h≤a(v,v)/∥v∥2a(v,v)/\langle v,v\rangle_h \le a(v,v)/\|v\|^2 なので、max⁡\max も min⁡\min も大きくならず、λkFD≤λkh\lambda_k^{\mathrm{FD}} \le \lambda_k^h です。差は h6∑j(v(xj+1)−v(xj))2=h26∥v′∥2\frac h6\sum_j(v(x_{j+1}) - v(x_j))^2 = \frac{h^2}{6}\|v'\|^2 で、⟨v,v⟩h=∥v∥2+h26a(v,v)\langle v, v\rangle_h = \|v\|^2 + \frac{h^2}{6}a(v,v) という等式になっています。これを Rayleigh 商に入れると 1λFD=1λh+h26\frac{1}{\lambda^{\mathrm{FD}}} = \frac{1}{\lambda^h} + \frac{h^2}{6} が同じ固有ベクトルについて成り立ち、定理 4.3 の 2 つの閉じた形の関係(h24sin⁡2(θ/2)−h2(2+cos⁡θ)6(1−cos⁡θ)=h26\frac{h^2}{4\sin^2(\theta/2)} - \frac{h^2(2 + \cos\theta)}{6(1 - \cos\theta)} = \frac{h^2}{6})と一致します。集中化は、内積を大きくすることで固有値を下げます。真の値 λk\lambda_k を下回るかどうかはこの議論からは分からず、定数係数の場合は 定理 3.1 の計算で確かめられた事実です。

  1. G. Strang, G. J. Fix, An Analysis of the Finite Element Method, Prentice-Hall, 1973 — 第 6 章(固有値問題。Ritz 値の誤差が固有関数の誤差の 2 乗になること)、第 8 章(特異点のある領域)。
  2. I. Babuška, J. Osborn, “Eigenvalue problems”, in Handbook of Numerical Analysis, Vol. II (P. G. Ciarlet, J. L. Lions, eds.), North-Holland, 1991, 641–787.
  3. M. Reed, B. Simon, Methods of Modern Mathematical Physics IV: Analysis of Operators, Academic Press, 1978 — 第 XIII 章(ミニマックス原理)。
  4. D. Boffi, “Finite element approximation of eigenvalue problems”, Acta Numerica 19 (2010), 1–120.
  5. T. Betcke, L. N. Trefethen, “Reviving the method of particular solutions”, SIAM Review 47 (2005), 469–491 — L 字形領域の固有値の高精度の値。
  6. E. B. Davies, M. Plum, “Spectral pollution”, IMA Journal of Numerical Analysis 24 (2004), 417–438.
  7. M. Lewin, É. Séré, “Spectral pollution and how to avoid it”, Proceedings of the London Mathematical Society 100 (2010), 864–900.

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

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

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

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