大きな連立方程式を、一度に解くのではなく「いまの答えの見積もりを少しずつ直す」操作の繰り返しで解く方法を扱います。たとえば 2 つの未知数 x 1 x_1 x 1 , x 2 x_2 x 2 があるとき、x 2 x_2 x 2 の今の値から x 1 x_1 x 1 を計算し直し、その x 1 x_1 x 1 から x 2 x_2 x 2 を計算し直す、という往復です。この記事を読むと、そうした繰り返しがいつ正しい答えに近づくのか、近づく速さは何で決まるのか、更新の幅をどう選ぶと速くなるのかが分かります。
連立一次方程式 A x = b A\boldsymbol{x} = \boldsymbol{b} A x = b の係数行列を A = M − N A = M - N A = M − N と分け、M x k + 1 = N x k + b M\boldsymbol{x}_{k+1} = N\boldsymbol{x}_k + \boldsymbol{b} M x k + 1 = N x k + b を繰り返すのが定常反復法 です。任意の初期値で収束することと、反復行列のスペクトル半径 (固有値の絶対値の最大)が ρ ( M − 1 N ) < 1 \rho(M^{-1}N) < 1 ρ ( M − 1 N ) < 1 であることは同値で、1 回あたり誤差はおよそ ρ \rho ρ 倍になります。
狭義対角優位(各行で対角成分が他の成分の絶対値の和より大きいこと)なら Jacobi 法と Gauss–Seidel 法は収束します。正定値 Hermite 行列なら、SOR 法は 0 < ω < 2 0 < \omega < 2 0 < ω < 2 で収束します(Ostrowski–Reich)。逆に、どんな行列でも ρ ( L ω ) ≥ ∣ ω − 1 ∣ \rho(\mathcal{L}_\omega) \ge |\omega - 1| ρ ( L ω ) ≥ ∣ ω − 1∣ なので、0 < ω < 2 0 < \omega < 2 0 < ω < 2 は収束に必要です(Kahan)。
矛盾なく順序づけられた 行列(未知数の番号づけが、隣り合う未知数の間で規則正しく上下する行列。§4 で定義します)、たとえば三重対角行列や、格子の自然な順序・赤黒順序(格子点を市松模様に塗り分け、赤の点を先に並べる順序)の離散 Laplace 行列では、Jacobi 法の固有値 μ \mu μ と SOR 法の固有値 λ \lambda λ が ( λ + ω − 1 ) 2 = λ ω 2 μ 2 (\lambda + \omega - 1)^2 = \lambda\omega^2\mu^2 ( λ + ω − 1 ) 2 = λ ω 2 μ 2 で結ばれます(Young の定理)。ここから ρ G S = ρ J 2 \rho_{\mathrm{GS}} = \rho_{\mathrm{J}}^2 ρ GS = ρ J 2 と最適な緩和係数 ω o p t = 2 / ( 1 + 1 − ρ J 2 ) \omega_{\mathrm{opt}} = 2/(1 + \sqrt{1 - \rho_{\mathrm{J}}^2}) ω opt = 2/ ( 1 + 1 − ρ J 2 ) が出ます。
離散 Laplace 方程式(格子幅 h h h )では ρ J = cos π h \rho_{\mathrm{J}} = \cos\pi h ρ J = cos π h で、10 桁縮めるのに必要な反復回数は Jacobi 法・Gauss–Seidel 法で h − 2 h^{-2} h − 2 、最適 SOR 法で h − 1 h^{-1} h − 1 に比例します。
この遅さが、Krylov 部分空間 法(共役勾配法 )と前処理、多重格子法へ進む理由です。
この記事で使う事前知識
スペクトル半径 : 正方行列の固有値の絶対値の最大。→ スペクトル半径
誘導ノルム : ベクトルのノルムから決まる、行列の「拡大率の最大」としてのノルム。→ 誘導ノルム
正定値 : 零でないすべてのベクトル x \boldsymbol{x} x で x ∗ A x > 0 \boldsymbol{x}^{*}A\boldsymbol{x} > 0 x ∗ A x > 0 となる Hermite 行列の性質。→ 正定値
特性多項式 : det ( t I − A ) \det(tI - A) det ( t I − A ) のことで、その根が固有値。→ 特性多項式
行列式 : 三角行列では対角成分の積になり、積の定理 det ( A B ) = det A det B \det(AB) = \det A\det B det ( A B ) = det A det B を満たす量。→ 行列式
狭義対角優位 : 各行で対角成分の絶対値が他の成分の絶対値の和より大きいこと。→ 行列の固有値評価と不等式
偏微分方程式を差分法で離散化すると、未知数が 10 6 10^6 1 0 6 を超える疎な連立一次方程式が現れます。Gauss 消去は fill-in(もとは 0 0 0 だった成分が消去の途中で非零になること)のためにメモリも演算量も膨らみますが、行列とベクトルの積や「各未知数を隣接する値から更新する」操作なら、非零成分の個数に比例する手間で済みます。
Laplace 方程式 − Δ u = f -\Delta u = f − Δ u = f の 5 点差分では、各格子点の値は「上下左右の値の平均 + h 2 f / 4 +\ h^2f/4 + h 2 f /4 」です。この関係を、いまの近似値を右辺に入れて左辺を更新する、という形で繰り返すのが Jacobi 法です。更新した値をすぐ使えば Gauss–Seidel 法、更新幅を ω \omega ω 倍に伸ばせば SOR 法(逐次過緩和法)になります。
本章の問いは 3 つです。いつ収束するか。どれくらいの速さか。ω \omega ω をどう選べばよいか。答えはすべて反復行列のスペクトル半径 で書けます。スペクトル半径と行列の冪の関係は 行列のノルムと線形方程式の条件数 の結果を使い、固有値の計算は 冪乗法・逆反復の章 と同じく固有ベクトルでの展開が基本になります。
定義 2.1 (行列の分割と定常反復 ) ↗
A ∈ C n × n A \in \mathbb{C}^{n\times n} A ∈ C n × n を正則とする。A = M − N A = M - N A = M − N (M M M は正則)を A A A の分割 という。x 0 ∈ C n \boldsymbol{x}_0 \in \mathbb{C}^n x 0 ∈ C n から
M x k + 1 = N x k + b , すなわち x k + 1 = G x k + M − 1 b , G = M − 1 N M\boldsymbol{x}_{k+1} = N\boldsymbol{x}_k + \boldsymbol{b},\qquad\text{すなわち}\qquad \boldsymbol{x}_{k+1} = G\boldsymbol{x}_k + M^{-1}\boldsymbol{b},\quad G = M^{-1}N M x k + 1 = N x k + b , すなわち x k + 1 = G x k + M − 1 b , G = M − 1 N で x k \boldsymbol{x}_k x k を作る反復を定常反復 、G G G を反復行列 という。
「定常」とは、G G G と M − 1 b M^{-1}\boldsymbol{b} M − 1 b が k k k によらないことを指します。M M M は「M y = c M\boldsymbol{y} = \boldsymbol{c} M y = c が安く解ける」ように選びます。A A A の対角部分を D D D 、狭義下三角部分の符号を変えたものを L L L 、狭義上三角部分の符号を変えたものを U U U として A = D − L − U A = D - L - U A = D − L − U と書くと、代表的な 3 つの方法は次の分割です(D D D は正則、つまり対角成分はすべて 0 0 0 でないとする)。
方法 M M M 反復行列 Jacobi 法 D D D G J = D − 1 ( L + U ) G_{\mathrm{J}} = D^{-1}(L + U) G J = D − 1 ( L + U ) Gauss–Seidel 法 D − L D - L D − L G G S = ( D − L ) − 1 U G_{\mathrm{GS}} = (D - L)^{-1}U G GS = ( D − L ) − 1 U SOR 法(緩和係数 ω ≠ 0 \omega \ne 0 ω = 0 ) ω − 1 D − L \omega^{-1}D - L ω − 1 D − L L ω = ( D − ω L ) − 1 ( ( 1 − ω ) D + ω U ) \mathcal{L}_\omega = (D - \omega L)^{-1}\bigl((1 - \omega)D + \omega U\bigr) L ω = ( D − ω L ) − 1 ( ( 1 − ω ) D + ω U )
Gauss–Seidel 法は ω = 1 \omega = 1 ω = 1 の SOR 法です。成分で書くと、Gauss–Seidel 法は i = 1 , 2 , … , n i = 1, 2, \ldots, n i = 1 , 2 , … , n の順に
x i ( k + 1 ) = 1 a i i ( b i − ∑ j < i a i j x j ( k + 1 ) − ∑ j > i a i j x j ( k ) ) x_i^{(k+1)} = \frac{1}{a_{ii}}\Bigl(b_i - \sum_{j<i}a_{ij}x_j^{(k+1)} - \sum_{j>i}a_{ij}x_j^{(k)}\Bigr) x i ( k + 1 ) = a ii 1 ( b i − j < i ∑ a ij x j ( k + 1 ) − j > i ∑ a ij x j ( k ) )
と、更新済みの成分をすぐに使います。SOR 法はこの右辺を x ~ i \tilde{x}_i x ~ i として x i ( k + 1 ) = ( 1 − ω ) x i ( k ) + ω x ~ i x_i^{(k+1)} = (1 - \omega)x_i^{(k)} + \omega\tilde{x}_i x i ( k + 1 ) = ( 1 − ω ) x i ( k ) + ω x ~ i とします。D − L D - L D − L と D − ω L D - \omega L D − ω L は対角成分が 0 0 0 でない下三角行列で、行列式は対角成分の積(命題 3.3[行列式とその性質] の 2)なので正則です。
小さな例で動きを見ます。A = ( 2 − 1 − 1 2 ) A = \begin{pmatrix} 2 & -1 \\ -1 & 2 \end{pmatrix} A = ( 2 − 1 − 1 2 ) , b = ( 1 , 1 ) T \boldsymbol{b} = (1, 1)^{\mathsf{T}} b = ( 1 , 1 ) T の解は x ∗ = ( 1 , 1 ) T \boldsymbol{x}^{*} = (1, 1)^{\mathsf{T}} x ∗ = ( 1 , 1 ) T です。x 0 = 0 \boldsymbol{x}_0 = \boldsymbol{0} x 0 = 0 から Jacobi 法を 3 回回すと、x 1 = x 2 x_1 = x_2 x 1 = x 2 が 0.5 , 0.75 , 0.875 0.5,\ 0.75,\ 0.875 0.5 , 0.75 , 0.875 と進み、誤差は毎回ちょうど半分になります。Gauss–Seidel 法では、更新したばかりの x 1 x_1 x 1 をすぐ x 2 x_2 x 2 の計算に使うので、( x 1 , x 2 ) (x_1, x_2) ( x 1 , x 2 ) は ( 0.5 , 0.75 ) (0.5, 0.75) ( 0.5 , 0.75 ) , ( 0.875 , 0.9375 ) (0.875, 0.9375) ( 0.875 , 0.9375 ) , ( 0.96875 , 0.984375 ) (0.96875, 0.984375) ( 0.96875 , 0.984375 ) と進み、誤差は毎回 1 / 4 1/4 1/4 になります。同じ 3 回でも、誤差は Jacobi 法で 0.125 0.125 0.125 、Gauss–Seidel 法で 0.03125 0.03125 0.03125 以下です。この「毎回何倍になるか」が、次の定理が扱う反復行列のスペクトル半径で、この例では Jacobi 法が 1 / 2 1/2 1/2 、Gauss–Seidel 法が 1 / 4 1/4 1/4 です(演習で確かめます)。
次の定理は、反復が収束するかどうかが反復行列 G G G のスペクトル半径だけで決まることを述べます。3 の ε \varepsilon ε は、スペクトル半径がほぼ「1 回あたりの縮み率」になることを正確に言うための小さな余裕です。
定理 2.2 (定常反復の収束の同値条件 ) ✓
定義 2.1 の定常反復について、x ∗ = A − 1 b \boldsymbol{x}^{*} = A^{-1}\boldsymbol{b} x ∗ = A − 1 b とする。
誤差 e k = x k − x ∗ \boldsymbol{e}_k = \boldsymbol{x}_k - \boldsymbol{x}^{*} e k = x k − x ∗ は e k = G k e 0 \boldsymbol{e}_k = G^k\boldsymbol{e}_0 e k = G k e 0 を満たす。
すべての初期値 x 0 ∈ C n \boldsymbol{x}_0 \in \mathbb{C}^n x 0 ∈ C n について x k → x ∗ \boldsymbol{x}_k \to \boldsymbol{x}^{*} x k → x ∗ となるための必要十分条件は ρ ( G ) < 1 \rho(G) < 1 ρ ( G ) < 1 である。A A A , M M M , b \boldsymbol{b} b が実のとき、「すべての実の初期値」としても同じである。
ρ ( G ) < 1 \rho(G) < 1 ρ ( G ) < 1 のとき、任意の ε > 0 \varepsilon > 0 ε > 0 に対し、e 0 \boldsymbol{e}_0 e 0 によらない定数 c ε c_\varepsilon c ε があって ∥ e k ∥ 2 ≤ c ε ( ρ ( G ) + ε ) k ∥ e 0 ∥ 2 \|\boldsymbol{e}_k\|_2 \le c_\varepsilon(\rho(G) + \varepsilon)^k\|\boldsymbol{e}_0\|_2 ∥ e k ∥ 2 ≤ c ε ( ρ ( G ) + ε ) k ∥ e 0 ∥ 2 。一方、G G G の固有値 λ \lambda λ で ∣ λ ∣ = ρ ( G ) |\lambda| = \rho(G) ∣ λ ∣ = ρ ( G ) となるものの固有ベクトルを e 0 \boldsymbol{e}_0 e 0 にとると ∥ e k ∥ 2 = ρ ( G ) k ∥ e 0 ∥ 2 \|\boldsymbol{e}_k\|_2 = \rho(G)^k\|\boldsymbol{e}_0\|_2 ∥ e k ∥ 2 = ρ ( G ) k ∥ e 0 ∥ 2 である。
証明(定理 2.2)
M x ∗ = N x ∗ + b M\boldsymbol{x}^{*} = N\boldsymbol{x}^{*} + \boldsymbol{b} M x ∗ = N x ∗ + b (A x ∗ = b A\boldsymbol{x}^{*} = \boldsymbol{b} A x ∗ = b の書き直し)を反復の式から引くと M e k + 1 = N e k M\boldsymbol{e}_{k+1} = N\boldsymbol{e}_k M e k + 1 = N e k 、すなわち e k + 1 = G e k \boldsymbol{e}_{k+1} = G\boldsymbol{e}_k e k + 1 = G e k です。
ρ ( G ) < 1 \rho(G) < 1 ρ ( G ) < 1 なら G k → O G^k \to O G k → O (系 5.3[行列のノルムと線形方程式の条件数] )なので、1 から任意の e 0 \boldsymbol{e}_0 e 0 で e k → 0 \boldsymbol{e}_k \to \boldsymbol{0} e k → 0 です。逆に ρ ( G ) ≥ 1 \rho(G) \ge 1 ρ ( G ) ≥ 1 なら、∣ λ ∣ ≥ 1 |\lambda| \ge 1 ∣ λ ∣ ≥ 1 の固有値 λ \lambda λ と固有ベクトル z \boldsymbol{z} z をとり x 0 = x ∗ + z \boldsymbol{x}_0 = \boldsymbol{x}^{*} + \boldsymbol{z} x 0 = x ∗ + z とすると e k = λ k z \boldsymbol{e}_k = \lambda^k\boldsymbol{z} e k = λ k z で、∥ e k ∥ = ∣ λ ∣ k ∥ z ∥ ↛ 0 \|\boldsymbol{e}_k\| = |\lambda|^k\|\boldsymbol{z}\| \not\to 0 ∥ e k ∥ = ∣ λ ∣ k ∥ z ∥ → 0 です。実の場合、すべての実の初期値で収束するなら、z = z R + i z I \boldsymbol{z} = \boldsymbol{z}_{\mathrm{R}} + i\boldsymbol{z}_{\mathrm{I}} z = z R + i z I (実部と虚部)について G k z R → 0 G^k\boldsymbol{z}_{\mathrm{R}} \to \boldsymbol{0} G k z R → 0 、G k z I → 0 G^k\boldsymbol{z}_{\mathrm{I}} \to \boldsymbol{0} G k z I → 0 (G G G は実行列)なので G k z → 0 G^k\boldsymbol{z} \to \boldsymbol{0} G k z → 0 となり、上と矛盾します。
スペクトル半径と誘導ノルムの定理(定理 5.2[行列のノルムと線形方程式の条件数] の 2)により、あるノルム ∥ ⋅ ∥ ε \|\cdot\|_\varepsilon ∥ ⋅ ∥ ε とその誘導ノルムで ∥ G ∥ ε ≤ ρ ( G ) + ε \|G\|_\varepsilon \le \rho(G) + \varepsilon ∥ G ∥ ε ≤ ρ ( G ) + ε です。よって ∥ e k ∥ ε ≤ ( ρ ( G ) + ε ) k ∥ e 0 ∥ ε \|\boldsymbol{e}_k\|_\varepsilon \le (\rho(G) + \varepsilon)^k\|\boldsymbol{e}_0\|_\varepsilon ∥ e k ∥ ε ≤ ( ρ ( G ) + ε ) k ∥ e 0 ∥ ε で、有限次元のノルムの同値性(補題 3.2[行列のノルムと線形方程式の条件数] )から a ∥ ⋅ ∥ 2 ≤ ∥ ⋅ ∥ ε ≤ b ∥ ⋅ ∥ 2 a\|\cdot\|_2 \le \|\cdot\|_\varepsilon \le b\|\cdot\|_2 a ∥ ⋅ ∥ 2 ≤ ∥ ⋅ ∥ ε ≤ b ∥ ⋅ ∥ 2 となる正の定数 a a a , b b b があるので、c ε = b / a c_\varepsilon = b/a c ε = b / a とすればよい。後半は 2 の後半と同じ計算です。
∎
3 の上下の評価から、誤差を 10 − d 10^{-d} 1 0 − d 倍にするのに必要な反復回数は、最悪の初期値についておよそ d ln 10 / ( − ln ρ ( G ) ) d\ln 10/(-\ln\rho(G)) d ln 10/ ( − ln ρ ( G )) です。この分母 − ln ρ ( G ) -\ln\rho(G) − ln ρ ( G ) を漸近収束率 といいます。ρ ( G ) = 1 − η \rho(G) = 1 - \eta ρ ( G ) = 1 − η (η \eta η は小さい)なら − ln ρ ( G ) ≈ η -\ln\rho(G) \approx \eta − ln ρ ( G ) ≈ η で、回数は 1 / η 1/\eta 1/ η に比例します。
定理 3.1 (狭義対角優位なら Jacobi 法と Gauss–Seidel 法は収束する ) ✓
A = ( a i j ) A = (a_{ij}) A = ( a ij ) が行について狭義対角優位、すなわちすべての i i i で ∣ a i i ∣ > ∑ j ≠ i ∣ a i j ∣ |a_{ii}| > \sum_{j\ne i}|a_{ij}| ∣ a ii ∣ > ∑ j = i ∣ a ij ∣ とする。このとき ρ ( G G S ) ≤ ∥ G J ∥ ∞ < 1 \rho(G_{\mathrm{GS}}) \le \|G_{\mathrm{J}}\|_\infty < 1 ρ ( G GS ) ≤ ∥ G J ∥ ∞ < 1 かつ ρ ( G J ) ≤ ∥ G J ∥ ∞ < 1 \rho(G_{\mathrm{J}}) \le \|G_{\mathrm{J}}\|_\infty < 1 ρ ( G J ) ≤ ∥ G J ∥ ∞ < 1 であり、Jacobi 法と Gauss–Seidel 法は任意の初期値で収束する。
証明(定理 3.1) A A A は狭義対角優位なので正則で(系 2.3[行列の固有値評価と不等式] の 1)、対角成分は 0 0 0 でありません。s i − = ∑ j < i ∣ a i j ∣ / ∣ a i i ∣ s_i^- = \sum_{j<i}|a_{ij}|/|a_{ii}| s i − = ∑ j < i ∣ a ij ∣/∣ a ii ∣ 、s i + = ∑ j > i ∣ a i j ∣ / ∣ a i i ∣ s_i^+ = \sum_{j>i}|a_{ij}|/|a_{ii}| s i + = ∑ j > i ∣ a ij ∣/∣ a ii ∣ とおくと、仮定は s i − + s i + < 1 s_i^- + s_i^+ < 1 s i − + s i + < 1 です。
Jacobi 法. G J G_{\mathrm{J}} G J の第 i i i 行は − a i j / a i i -a_{ij}/a_{ii} − a ij / a ii (j ≠ i j \ne i j = i )と対角の 0 0 0 なので、行和の最大の公式(命題 4.2[行列のノルムと線形方程式の条件数] の 2)から ∥ G J ∥ ∞ = max i ( s i − + s i + ) < 1 \|G_{\mathrm{J}}\|_\infty = \max_i(s_i^- + s_i^+) < 1 ∥ G J ∥ ∞ = max i ( s i − + s i + ) < 1 です。スペクトル半径は誘導ノルム以下(定理 5.2[行列のノルムと線形方程式の条件数] の 1)なので ρ ( G J ) < 1 \rho(G_{\mathrm{J}}) < 1 ρ ( G J ) < 1 です。
Gauss–Seidel 法. λ \lambda λ を G G S G_{\mathrm{GS}} G GS の固有値、z \boldsymbol{z} z を固有ベクトルとし、∣ z i ∣ = max j ∣ z j ∣ > 0 |z_i| = \max_j|z_j| > 0 ∣ z i ∣ = max j ∣ z j ∣ > 0 となる i i i をとります。U z = λ ( D − L ) z U\boldsymbol{z} = \lambda(D - L)\boldsymbol{z} U z = λ ( D − L ) z の第 i i i 成分は
λ a i i z i = − λ ∑ j < i a i j z j − ∑ j > i a i j z j \lambda a_{ii}z_i = -\lambda\sum_{j<i}a_{ij}z_j - \sum_{j>i}a_{ij}z_j λ a ii z i = − λ j < i ∑ a ij z j − j > i ∑ a ij z j です。両辺の絶対値をとって ∣ a i i ∣ ∣ z i ∣ |a_{ii}||z_i| ∣ a ii ∣∣ z i ∣ で割ると、∣ z j ∣ ≤ ∣ z i ∣ |z_j| \le |z_i| ∣ z j ∣ ≤ ∣ z i ∣ から ∣ λ ∣ ≤ ∣ λ ∣ s i − + s i + |\lambda| \le |\lambda|s_i^- + s_i^+ ∣ λ ∣ ≤ ∣ λ ∣ s i − + s i + 、すなわち ∣ λ ∣ ( 1 − s i − ) ≤ s i + |\lambda|(1 - s_i^-) \le s_i^+ ∣ λ ∣ ( 1 − s i − ) ≤ s i + です。1 − s i − > s i + ≥ 0 1 - s_i^- > s_i^+ \ge 0 1 − s i − > s i + ≥ 0 なので ∣ λ ∣ ≤ s i + / ( 1 − s i − ) < 1 |\lambda| \le s_i^+/(1 - s_i^-) < 1 ∣ λ ∣ ≤ s i + / ( 1 − s i − ) < 1 で、さらに s i + / ( 1 − s i − ) ≤ s i − + s i + s_i^+/(1 - s_i^-) \le s_i^- + s_i^+ s i + / ( 1 − s i − ) ≤ s i − + s i + (両辺に 1 − s i − 1 - s_i^- 1 − s i − を掛けると s i + ≤ s i − + s i + − s i − ( s i − + s i + ) s_i^+ \le s_i^- + s_i^+ - s_i^-(s_i^- + s_i^+) s i + ≤ s i − + s i + − s i − ( s i − + s i + ) 、つまり s i − ( s i − + s i + ) ≤ s i − s_i^-(s_i^- + s_i^+) \le s_i^- s i − ( s i − + s i + ) ≤ s i − で、これは s i − + s i + < 1 s_i^- + s_i^+ < 1 s i − + s i + < 1 から成り立つ)なので ∣ λ ∣ ≤ ∥ G J ∥ ∞ |\lambda| \le \|G_{\mathrm{J}}\|_\infty ∣ λ ∣ ≤ ∥ G J ∥ ∞ です。収束は 定理 2.2 から従います。
∎
正定値な行列では、ノルムとしてエネルギーノルム ∥ e ∥ A = ( e ∗ A e ) 1 / 2 \|\boldsymbol{e}\|_A = (\boldsymbol{e}^{*}A\boldsymbol{e})^{1/2} ∥ e ∥ A = ( e ∗ A e ) 1/2 を使うと見通しがよくなります。A A A が正定値なので e ∗ A e \boldsymbol{e}^{*}A\boldsymbol{e} e ∗ A e は e ≠ 0 \boldsymbol{e} \ne \boldsymbol{0} e = 0 で正であり、これを長さの 2 乗とみなしたものです。次の補題は、誤差がこの長さで見て毎回確実に縮むための分割の条件を与えます。証明では ∥ e ∥ A 2 − ∥ G e ∥ A 2 \|\boldsymbol{e}\|_A^2 - \|G\boldsymbol{e}\|_A^2 ∥ e ∥ A 2 − ∥ G e ∥ A 2 を計算し、それがちょうど M + M ∗ − A M + M^{*} - A M + M ∗ − A の形の二次形式になることから、この条件が出てきます。
補題 3.2 (エネルギーノルムが減る分割 ) ✓
A A A を正定値 Hermite 行列、A = M − N A = M - N A = M − N を分割とし、M + M ∗ − A M + M^{*} - A M + M ∗ − A が正定値 Hermite 行列であるとする。このとき G = M − 1 N = I − M − 1 A G = M^{-1}N = I - M^{-1}A G = M − 1 N = I − M − 1 A について、任意の e ≠ 0 \boldsymbol{e} \ne \boldsymbol{0} e = 0 で ∥ G e ∥ A < ∥ e ∥ A \|G\boldsymbol{e}\|_A < \|\boldsymbol{e}\|_A ∥ G e ∥ A < ∥ e ∥ A であり、ρ ( G ) < 1 \rho(G) < 1 ρ ( G ) < 1 である。
証明(補題 3.2) y = M − 1 A e \boldsymbol{y} = M^{-1}A\boldsymbol{e} y = M − 1 A e とおくと G e = e − y G\boldsymbol{e} = \boldsymbol{e} - \boldsymbol{y} G e = e − y 、A e = M y A\boldsymbol{e} = M\boldsymbol{y} A e = M y です。
∥ G e ∥ A 2 = e ∗ A e − y ∗ A e − e ∗ A y + y ∗ A y \|G\boldsymbol{e}\|_A^2 = \boldsymbol{e}^{*}A\boldsymbol{e} - \boldsymbol{y}^{*}A\boldsymbol{e} - \boldsymbol{e}^{*}A\boldsymbol{y} + \boldsymbol{y}^{*}A\boldsymbol{y} ∥ G e ∥ A 2 = e ∗ A e − y ∗ A e − e ∗ A y + y ∗ A y で、y ∗ A e = y ∗ M y \boldsymbol{y}^{*}A\boldsymbol{e} = \boldsymbol{y}^{*}M\boldsymbol{y} y ∗ A e = y ∗ M y 、e ∗ A y = ( A e ) ∗ y = y ∗ M ∗ y \boldsymbol{e}^{*}A\boldsymbol{y} = (A\boldsymbol{e})^{*}\boldsymbol{y} = \boldsymbol{y}^{*}M^{*}\boldsymbol{y} e ∗ A y = ( A e ) ∗ y = y ∗ M ∗ y なので
∥ e ∥ A 2 − ∥ G e ∥ A 2 = y ∗ ( M + M ∗ − A ) y \|\boldsymbol{e}\|_A^2 - \|G\boldsymbol{e}\|_A^2 = \boldsymbol{y}^{*}(M + M^{*} - A)\boldsymbol{y} ∥ e ∥ A 2 − ∥ G e ∥ A 2 = y ∗ ( M + M ∗ − A ) y です。A A A , M M M は正則なので e ≠ 0 \boldsymbol{e} \ne \boldsymbol{0} e = 0 なら y ≠ 0 \boldsymbol{y} \ne \boldsymbol{0} y = 0 で、右辺は正です。固有値については、G e = λ e G\boldsymbol{e} = \lambda\boldsymbol{e} G e = λ e (e ≠ 0 \boldsymbol{e} \ne \boldsymbol{0} e = 0 )なら ∥ G e ∥ A = ∣ λ ∣ ∥ e ∥ A \|G\boldsymbol{e}\|_A = |\lambda|\|\boldsymbol{e}\|_A ∥ G e ∥ A = ∣ λ ∣∥ e ∥ A で、∥ e ∥ A > 0 \|\boldsymbol{e}\|_A > 0 ∥ e ∥ A > 0 なので ∣ λ ∣ < 1 |\lambda| < 1 ∣ λ ∣ < 1 です。
∎
定理 3.3 (Ostrowski–Reich の定理 ) ✓
A A A を正定値 Hermite 行列とする。SOR 法は 0 < ω < 2 0 < \omega < 2 0 < ω < 2 のとき任意の初期値で収束し、反復ごとに誤差のエネルギーノルムは真に減少する。
証明(定理 3.3) A A A は Hermite なので U = L ∗ U = L^{*} U = L ∗ で、A = D − L − L ∗ A = D - L - L^{*} A = D − L − L ∗ です。D D D の対角成分 a i i = e i ∗ A e i a_{ii} = \boldsymbol{e}_i^{*}A\boldsymbol{e}_i a ii = e i ∗ A e i は正定値性から正です。SOR 法の M = ω − 1 D − L M = \omega^{-1}D - L M = ω − 1 D − L について
M + M ∗ − A = 2 ω D − L − L ∗ − ( D − L − L ∗ ) = ( 2 ω − 1 ) D M + M^{*} - A = \frac{2}{\omega}D - L - L^{*} - (D - L - L^{*}) = \Bigl(\frac{2}{\omega} - 1\Bigr)D M + M ∗ − A = ω 2 D − L − L ∗ − ( D − L − L ∗ ) = ( ω 2 − 1 ) D で、0 < ω < 2 0 < \omega < 2 0 < ω < 2 なら 2 / ω − 1 > 0 2/\omega - 1 > 0 2/ ω − 1 > 0 なので正定値です。補題 3.2 と 定理 2.2 から主張が従います。
∎
系 3.4 (正定値行列の Gauss–Seidel 法 ) ✓
正定値 Hermite 行列に対する Gauss–Seidel 法は任意の初期値で収束する。
証明(系 3.4) Gauss–Seidel 法は ω = 1 \omega = 1 ω = 1 の SOR 法なので、定理 3.3 の特別な場合です。
∎
Jacobi 法には同じ主張がありません。M = D M = D M = D なので条件は「2 D − A 2D - A 2 D − A が正定値」で、これは正定値な A A A でも成り立つとは限りません(演習を参照)。
定理 3.5 (Kahan の必要条件 ) ✓
A A A の対角成分がすべて 0 0 0 でないとき、任意の ω ≠ 0 \omega \ne 0 ω = 0 について ρ ( L ω ) ≥ ∣ ω − 1 ∣ \rho(\mathcal{L}_\omega) \ge |\omega - 1| ρ ( L ω ) ≥ ∣ ω − 1∣ である。とくに SOR 法が任意の初期値で収束するなら 0 < ω < 2 0 < \omega < 2 0 < ω < 2 (ω \omega ω が実数のとき)である。
証明(定理 3.5) 三角行列の行列式は対角成分の積(命題 3.3[行列式とその性質] の 2)なので det ( D − ω L ) = det D \det(D - \omega L) = \det D det ( D − ω L ) = det D 、det ( ( 1 − ω ) D + ω U ) = ( 1 − ω ) n det D \det((1 - \omega)D + \omega U) = (1 - \omega)^n\det D det (( 1 − ω ) D + ω U ) = ( 1 − ω ) n det D です。積の定理(定理 6.1[行列式とその性質] )から
det L ω = det ( D − ω L ) − 1 det ( ( 1 − ω ) D + ω U ) = ( 1 − ω ) n . \det\mathcal{L}_\omega = \det(D - \omega L)^{-1}\det\bigl((1 - \omega)D + \omega U\bigr) = (1 - \omega)^n . det L ω = det ( D − ω L ) − 1 det ( ( 1 − ω ) D + ω U ) = ( 1 − ω ) n . 行列式は重複を込めた固有値の積です(系 4.5[固有値と固有ベクトル] 。複素数上で特性多項式は一次式の積に分解する)。n n n 個の固有値の絶対値の積が ∣ 1 − ω ∣ n |1 - \omega|^n ∣1 − ω ∣ n なので、そのうち最大のものは ∣ 1 − ω ∣ |1 - \omega| ∣1 − ω ∣ 以上です。後半は 定理 2.2 の 2 から、∣ ω − 1 ∣ < 1 |\omega - 1| < 1 ∣ ω − 1∣ < 1 が必要だからです。
∎
例 3.6 (Jacobi 法は発散し Gauss–Seidel 法は収束する例 )
A = ( 2 − 1 1 2 2 2 − 1 − 1 2 ) A = \begin{pmatrix} 2 & -1 & 1 \\ 2 & 2 & 2 \\ -1 & -1 & 2 \end{pmatrix} A = 2 2 − 1 − 1 2 − 1 1 2 2 は対角優位でも正定値(対称)でもありません。Jacobi 法の反復行列は
G J = ( 0 1 / 2 − 1 / 2 − 1 0 − 1 1 / 2 1 / 2 0 ) , det ( t I − G J ) = t 3 + 5 4 t G_{\mathrm{J}} = \begin{pmatrix} 0 & 1/2 & -1/2 \\ -1 & 0 & -1 \\ 1/2 & 1/2 & 0 \end{pmatrix},\qquad \det(tI - G_{\mathrm{J}}) = t^3 + \tfrac{5}{4}t G J = 0 − 1 1/2 1/2 0 1/2 − 1/2 − 1 0 , det ( t I − G J ) = t 3 + 4 5 t で、固有値は 0 , ± i 5 / 2 0, \pm i\sqrt{5}/2 0 , ± i 5 /2 、ρ ( G J ) = 5 / 2 ≈ 1.118 > 1 \rho(G_{\mathrm{J}}) = \sqrt{5}/2 \approx 1.118 > 1 ρ ( G J ) = 5 /2 ≈ 1.118 > 1 なので発散します。一方 Gauss–Seidel 法では
G G S = ( D − L ) − 1 U = ( 0 1 / 2 − 1 / 2 0 − 1 / 2 − 1 / 2 0 0 − 1 / 2 ) G_{\mathrm{GS}} = (D - L)^{-1}U = \begin{pmatrix} 0 & 1/2 & -1/2 \\ 0 & -1/2 & -1/2 \\ 0 & 0 & -1/2 \end{pmatrix} G GS = ( D − L ) − 1 U = 0 0 0 1/2 − 1/2 0 − 1/2 − 1/2 − 1/2 が上三角で、固有値は 0 , − 1 / 2 , − 1 / 2 0, -1/2, -1/2 0 , − 1/2 , − 1/2 、ρ ( G G S ) = 1 / 2 \rho(G_{\mathrm{GS}}) = 1/2 ρ ( G GS ) = 1/2 なので収束します(G G S G_{\mathrm{GS}} G GS は ( D − L ) G G S = U (D - L)G_{\mathrm{GS}} = U ( D − L ) G GS = U を第 1 行から順に解けば求まります)。どちらが速いかは行列しだいで、逆向きの例(Jacobi 法だけが収束する)もあります。
SOR 法の ω \omega ω をどう選ぶかに答えるには、L ω \mathcal{L}_\omega L ω の固有値を Jacobi 法の固有値で表す必要があります。それが可能になる行列の構造が次の性質です。以下 A = D − L − U A = D - L - U A = D − L − U 、D D D は正則とし、α ≠ 0 \alpha \ne 0 α = 0 に対して
B ( α ) = α D − 1 L + α − 1 D − 1 U B(\alpha) = \alpha D^{-1}L + \alpha^{-1}D^{-1}U B ( α ) = α D − 1 L + α − 1 D − 1 U
とおきます。B ( 1 ) = G J B(1) = G_{\mathrm{J}} B ( 1 ) = G J です。
SOR 法の反復行列には L L L と U U U が別々の重みで入っています。これを Jacobi 法の反復行列と結びつけるには、L L L の部分を α \alpha α 倍、U U U の部分を α − 1 \alpha^{-1} α − 1 倍しても固有値が変わらない、という性質があると都合がよくなります。次の定義はその性質を取り出したもので、α \alpha α はこのためだけに導入する補助のパラメータです。具体的には、三重対角行列や格子の行列がこの性質をもつことを、次の補題で確かめます。
定義 4.1 (矛盾なく順序づけられた行列 ) ↗
すべての α ≠ 0 \alpha \ne 0 α = 0 について B ( α ) B(\alpha) B ( α ) の特性多項式 det ( t I − B ( α ) ) \det(tI - B(\alpha)) det ( t I − B ( α )) が α \alpha α によらないとき、A A A は矛盾なく順序づけられている (consistently ordered)という。
定義は抽象的ですが、次の補題で判定できます。
補題 4.2 (番号づけによる判定 ) ✓
整数 γ ( 1 ) , … , γ ( n ) \gamma(1), \ldots, \gamma(n) γ ( 1 ) , … , γ ( n ) があって、i ≠ j i \ne j i = j 、a i j ≠ 0 a_{ij} \ne 0 a ij = 0 のとき、j < i j < i j < i なら γ ( i ) − γ ( j ) = 1 \gamma(i) - \gamma(j) = 1 γ ( i ) − γ ( j ) = 1 、j > i j > i j > i なら γ ( i ) − γ ( j ) = − 1 \gamma(i) - \gamma(j) = -1 γ ( i ) − γ ( j ) = − 1 が成り立つとする。このとき A A A は矛盾なく順序づけられている。とくに次の行列はそうである。
三重対角行列(γ ( i ) = i \gamma(i) = i γ ( i ) = i )。
m × m m\times m m × m の格子の点 ( p , q ) (p, q) ( p , q ) (1 ≤ p , q ≤ m 1 \le p, q \le m 1 ≤ p , q ≤ m )を辞書式(自然な順序)に並べ、上下左右の隣接点の間にだけ非対角成分をもつ行列(γ ( p , q ) = p + q \gamma(p, q) = p + q γ ( p , q ) = p + q )。
2 と同じ格子で、p + q p + q p + q が偶数の点(赤)をすべて先に、奇数の点(黒)を後に並べた行列(赤黒順序。γ = 0 \gamma = 0 γ = 0 (赤)、1 1 1 (黒))。
証明(補題 4.2) S = diag ( α γ ( 1 ) , … , α γ ( n ) ) S = \operatorname{diag}(\alpha^{\gamma(1)}, \ldots, \alpha^{\gamma(n)}) S = diag ( α γ ( 1 ) , … , α γ ( n ) ) とおくと、S B ( 1 ) S − 1 S B(1) S^{-1} S B ( 1 ) S − 1 の ( i , j ) (i, j) ( i , j ) 成分は α γ ( i ) − γ ( j ) \alpha^{\gamma(i) - \gamma(j)} α γ ( i ) − γ ( j ) と B ( 1 ) B(1) B ( 1 ) の ( i , j ) (i, j) ( i , j ) 成分の積です。B ( 1 ) B(1) B ( 1 ) の ( i , j ) (i, j) ( i , j ) 成分は j < i j < i j < i なら D − 1 L D^{-1}L D − 1 L の、j > i j > i j > i なら D − 1 U D^{-1}U D − 1 U の成分で、a i j ≠ 0 a_{ij} \ne 0 a ij = 0 のときだけ零でありません。仮定からその位置で α γ ( i ) − γ ( j ) \alpha^{\gamma(i) - \gamma(j)} α γ ( i ) − γ ( j ) は j < i j < i j < i なら α \alpha α 、j > i j > i j > i なら α − 1 \alpha^{-1} α − 1 なので、S B ( 1 ) S − 1 = B ( α ) SB(1)S^{-1} = B(\alpha) S B ( 1 ) S − 1 = B ( α ) です。相似な行列の特性多項式は等しい(積の定理 定理 6.1[行列式とその性質] から det ( t I − S B S − 1 ) = det S det ( t I − B ) det S − 1 \det(tI - SB S^{-1}) = \det S\det(tI - B)\det S^{-1} det ( t I − S B S − 1 ) = det S det ( t I − B ) det S − 1 )ので、主張が従います。
1 では非零の非対角成分は j = i ± 1 j = i \pm 1 j = i ± 1 だけです。2 では隣接点 ( p ′ , q ′ ) (p', q') ( p ′ , q ′ ) は ( p ± 1 , q ) (p \pm 1, q) ( p ± 1 , q ) か ( p , q ± 1 ) (p, q \pm 1) ( p , q ± 1 ) で、辞書式の順序で前にあるのは ( p − 1 , q ) (p - 1, q) ( p − 1 , q ) と ( p , q − 1 ) (p, q - 1) ( p , q − 1 ) 、すなわち γ \gamma γ が 1 1 1 小さい点です。3 では赤の点の隣接点はすべて黒、黒の隣接点はすべて赤(p + q p + q p + q の偶奇が変わる)で、黒は赤より後に並ぶので、j < i j < i j < i の非零成分は(黒の行,赤の列)、j > i j > i j > i は(赤の行,黒の列)に限られます。
∎
赤 黒
格子点を市松模様に塗り分けた赤黒順序。赤の点(p + q が偶数)の上下左右の隣は必ず黒で、黒の隣は必ず赤である。
定理 4.3 (Young の定理 ) ✓
A A A は矛盾なく順序づけられているとし、ω ≠ 0 \omega \ne 0 ω = 0 とする。
μ \mu μ が G J G_{\mathrm{J}} G J の固有値なら − μ -\mu − μ もそうである。
μ \mu μ が G J G_{\mathrm{J}} G J の固有値で、λ \lambda λ が
( λ + ω − 1 ) 2 = λ ω 2 μ 2 (\lambda + \omega - 1)^2 = \lambda\,\omega^2\mu^2 ( λ + ω − 1 ) 2 = λ ω 2 μ 2 を満たすなら、λ \lambda λ は L ω \mathcal{L}_\omega L ω の固有値である。逆に λ ≠ 0 \lambda \ne 0 λ = 0 が L ω \mathcal{L}_\omega L ω の固有値なら、上の関係を満たす G J G_{\mathrm{J}} G J の固有値 μ \mu μ がある。
3. とくに ρ ( G G S ) = ρ ( G J ) 2 \rho(G_{\mathrm{GS}}) = \rho(G_{\mathrm{J}})^2 ρ ( G GS ) = ρ ( G J ) 2 である。
証明の方針は次のとおりです。det ( λ I − L ω ) \det(\lambda I - \mathcal{L}_\omega) det ( λ I − L ω ) を、B ( α ) B(\alpha) B ( α ) の特性多項式で書き直します。そのとき L L L の係数が λ ω \lambda\omega λω 、U U U の係数が ω \omega ω と食い違うので、λ \lambda λ の平方根 s s s を使って L L L に s s s 、U U U に s − 1 s^{-1} s − 1 を掛けた形に直し、共通の因子 ω s \omega s ω s をくくり出します。こうすると B ( s ) B(s) B ( s ) が現れ、矛盾なく順序づけられているという仮定で s s s によらない特性多項式に置き換えられます。
証明(定理 4.3) p ( t ) = det ( t I − G J ) p(t) = \det(tI - G_{\mathrm{J}}) p ( t ) = det ( t I − G J ) とおくと、定義から det ( t I − B ( α ) ) = p ( t ) \det(tI - B(\alpha)) = p(t) det ( t I − B ( α )) = p ( t ) がすべての α ≠ 0 \alpha \ne 0 α = 0 で成り立ちます。
B ( − 1 ) = − G J B(-1) = -G_{\mathrm{J}} B ( − 1 ) = − G J なので p ( t ) = det ( t I + G J ) = ( − 1 ) n p ( − t ) p(t) = \det(tI + G_{\mathrm{J}}) = (-1)^n p(-t) p ( t ) = det ( t I + G J ) = ( − 1 ) n p ( − t ) で、p ( μ ) = 0 p(\mu) = 0 p ( μ ) = 0 なら p ( − μ ) = 0 p(-\mu) = 0 p ( − μ ) = 0 です。
積の定理(定理 6.1[行列式とその性質] )と det ( D − ω L ) = det D \det(D - \omega L) = \det D det ( D − ω L ) = det D (三角行列、命題 3.3[行列式とその性質] の 2)から
det ( λ I − L ω ) = det ( λ ( D − ω L ) − ( 1 − ω ) D − ω U ) det D = det ( ( λ + ω − 1 ) I − λ ω D − 1 L − ω D − 1 U ) \det(\lambda I - \mathcal{L}_\omega) = \frac{\det\bigl(\lambda(D - \omega L) - (1 - \omega)D - \omega U\bigr)}{\det D} = \det\bigl((\lambda + \omega - 1)I - \lambda\omega D^{-1}L - \omega D^{-1}U\bigr) det ( λ I − L ω ) = det D det ( λ ( D − ω L ) − ( 1 − ω ) D − ω U ) = det ( ( λ + ω − 1 ) I − λω D − 1 L − ω D − 1 U ) です。λ ≠ 0 \lambda \ne 0 λ = 0 のとき、λ \lambda λ の平方根の 1 つを s s s とすると λ ω D − 1 L + ω D − 1 U = ω s B ( s ) \lambda\omega D^{-1}L + \omega D^{-1}U = \omega s\,B(s) λω D − 1 L + ω D − 1 U = ω s B ( s ) なので
det ( λ I − L ω ) = det ( ( λ + ω − 1 ) I − ω s B ( s ) ) = ( ω s ) n p ( λ + ω − 1 ω s ) \det(\lambda I - \mathcal{L}_\omega) = \det\bigl((\lambda + \omega - 1)I - \omega sB(s)\bigr) = (\omega s)^n\,p\Bigl(\frac{\lambda + \omega - 1}{\omega s}\Bigr) det ( λ I − L ω ) = det ( ( λ + ω − 1 ) I − ω s B ( s ) ) = ( ω s ) n p ( ω s λ + ω − 1 ) です。よって λ ≠ 0 \lambda \ne 0 λ = 0 が L ω \mathcal{L}_\omega L ω の固有値であることと、ν = ( λ + ω − 1 ) / ( ω s ) \nu = (\lambda + \omega - 1)/(\omega s) ν = ( λ + ω − 1 ) / ( ω s ) が G J G_{\mathrm{J}} G J の固有値であることは同値です。ν \nu ν が固有値なら μ = ν \mu = \nu μ = ν が関係式を満たし(両辺を 2 乗)、逆に関係式を満たす固有値 μ \mu μ があれば ν = ± μ \nu = \pm\mu ν = ± μ で、1 から ν \nu ν も固有値です。これで λ ≠ 0 \lambda \ne 0 λ = 0 の場合が示せました。λ = 0 \lambda = 0 λ = 0 が関係式を満たすのは ω = 1 \omega = 1 ω = 1 のときで、このとき L 1 = ( D − L ) − 1 U \mathcal{L}_1 = (D - L)^{-1}U L 1 = ( D − L ) − 1 U は det U = 0 \det U = 0 det U = 0 (U U U は対角成分が 0 0 0 の三角行列)から特異なので、0 0 0 は固有値です。
ω = 1 \omega = 1 ω = 1 では関係式は λ 2 = λ μ 2 \lambda^2 = \lambda\mu^2 λ 2 = λ μ 2 で、零でない固有値は λ = μ 2 \lambda = \mu^2 λ = μ 2 (μ \mu μ は G J G_{\mathrm{J}} G J の固有値)と一致します。L 1 \mathcal{L}_1 L 1 の固有値は 0 0 0 と { μ 2 } \{\mu^2\} { μ 2 } の部分集合で、2 の前半から各 μ 2 \mu^2 μ 2 は実際に固有値なので、ρ ( G G S ) = max ∣ μ ∣ 2 = ρ ( G J ) 2 \rho(G_{\mathrm{GS}}) = \max|\mu|^2 = \rho(G_{\mathrm{J}})^2 ρ ( G GS ) = max ∣ μ ∣ 2 = ρ ( G J ) 2 です。
∎
3 の意味は、Gauss–Seidel 法は Jacobi 法のちょうど 2 倍の漸近収束率をもつ、ということです(− ln ρ 2 = − 2 ln ρ -\ln\rho^2 = -2\ln\rho − ln ρ 2 = − 2 ln ρ )。さらに ω \omega ω を最適に選ぶと、収束率は桁違いに改善します。
系 4.4 (最適な緩和係数 ) ✓
A A A は矛盾なく順序づけられており、G J G_{\mathrm{J}} G J の固有値はすべて実数で ρ J = ρ ( G J ) < 1 \rho_{\mathrm{J}} = \rho(G_{\mathrm{J}}) < 1 ρ J = ρ ( G J ) < 1 とする。0 < ω < 2 0 < \omega < 2 0 < ω < 2 について
ρ ( L ω ) = { 1 4 ( ω ρ J + ω 2 ρ J 2 − 4 ( ω − 1 ) ) 2 ( 0 < ω ≤ ω o p t ) ω − 1 ( ω o p t ≤ ω < 2 ) , ω o p t = 2 1 + 1 − ρ J 2 \rho(\mathcal{L}_\omega) = \begin{cases} \dfrac{1}{4}\Bigl(\omega\rho_{\mathrm{J}} + \sqrt{\omega^2\rho_{\mathrm{J}}^2 - 4(\omega - 1)}\Bigr)^2 & (0 < \omega \le \omega_{\mathrm{opt}}) \\[2mm] \omega - 1 & (\omega_{\mathrm{opt}} \le \omega < 2) \end{cases},\qquad \omega_{\mathrm{opt}} = \frac{2}{1 + \sqrt{1 - \rho_{\mathrm{J}}^2}} ρ ( L ω ) = ⎩ ⎨ ⎧ 4 1 ( ω ρ J + ω 2 ρ J 2 − 4 ( ω − 1 ) ) 2 ω − 1 ( 0 < ω ≤ ω opt ) ( ω opt ≤ ω < 2 ) , ω opt = 1 + 1 − ρ J 2 2 であり、ρ ( L ω ) \rho(\mathcal{L}_\omega) ρ ( L ω ) は ω = ω o p t \omega = \omega_{\mathrm{opt}} ω = ω opt でだけ最小値 ω o p t − 1 \omega_{\mathrm{opt}} - 1 ω opt − 1 をとる。
証明の方針は次のとおりです。Young の定理により、L ω \mathcal{L}_\omega L ω の固有値は Jacobi 法の固有値 μ \mu μ ごとに、λ \lambda λ の 2 次方程式の根として決まります。まず 1 つの μ \mu μ について根の絶対値を調べ、それが ∣ μ ∣ |\mu| ∣ μ ∣ とともに増えることから、最大の ρ J \rho_{\mathrm{J}} ρ J の場合だけを見ればよいと分かります。ω \omega ω が小さいうちは根が実数で、ω \omega ω を大きくすると下がります。ω o p t \omega_{\mathrm{opt}} ω opt を超えると根が複素数になり、絶対値が ω − 1 \omega - 1 ω − 1 に固定されて今度は ω \omega ω とともに増えるので、境目の ω o p t \omega_{\mathrm{opt}} ω opt が最小になります。
証明(系 4.4) 1 つの μ \mu μ に対する根. 実数 μ \mu μ を固定し、m = ∣ μ ∣ m = |\mu| m = ∣ μ ∣ とします。関係式 ( λ + ω − 1 ) 2 = λ ω 2 μ 2 (\lambda + \omega - 1)^2 = \lambda\omega^2\mu^2 ( λ + ω − 1 ) 2 = λ ω 2 μ 2 は λ \lambda λ の 2 次方程式
λ 2 − ( ω 2 m 2 − 2 ( ω − 1 ) ) λ + ( ω − 1 ) 2 = 0 \lambda^2 - \bigl(\omega^2m^2 - 2(\omega - 1)\bigr)\lambda + (\omega - 1)^2 = 0 λ 2 − ( ω 2 m 2 − 2 ( ω − 1 ) ) λ + ( ω − 1 ) 2 = 0 で、判別式は ω 2 m 2 d \omega^2m^2\,d ω 2 m 2 d 、d = ω 2 m 2 − 4 ( ω − 1 ) d = \omega^2m^2 - 4(\omega - 1) d = ω 2 m 2 − 4 ( ω − 1 ) です。
d < 0 d < 0 d < 0 のとき(このとき ω > 1 \omega > 1 ω > 1 )、2 根は共役な複素数で、絶対値の 2 乗は根の積 ( ω − 1 ) 2 (\omega - 1)^2 ( ω − 1 ) 2 に等しいので、どちらも絶対値 ω − 1 \omega - 1 ω − 1 です。
d ≥ 0 d \ge 0 d ≥ 0 のとき、2 根は実数で、積 ( ω − 1 ) 2 ≥ 0 (\omega - 1)^2 \ge 0 ( ω − 1 ) 2 ≥ 0 と和 ω 2 m 2 − 2 ( ω − 1 ) ≥ 0 \omega^2m^2 - 2(\omega - 1) \ge 0 ω 2 m 2 − 2 ( ω − 1 ) ≥ 0 (ω ≥ 1 \omega \ge 1 ω ≥ 1 なら d ≥ 0 d \ge 0 d ≥ 0 から和 ≥ 2 ( ω − 1 ) \ge 2(\omega - 1) ≥ 2 ( ω − 1 ) 、ω < 1 \omega < 1 ω < 1 なら各項が非負)から非負です。大きい方の根は、展開して確かめられるとおり ( ( ω m + d ) / 2 ) 2 \bigl((\omega m + \sqrt{d})/2\bigr)^2 ( ( ω m + d ) /2 ) 2 です。
そこで g ( ω , m ) g(\omega, m) g ( ω , m ) を、d ≥ 0 d \ge 0 d ≥ 0 なら ( ( ω m + d ) / 2 ) 2 \bigl((\omega m + \sqrt{d})/2\bigr)^2 ( ( ω m + d ) /2 ) 2 、d < 0 d < 0 d < 0 なら ω − 1 \omega - 1 ω − 1 と定めると、g g g は 2 根の絶対値の大きい方です。ω \omega ω を固定すると、d ≥ 0 d \ge 0 d ≥ 0 の範囲では ω m \omega m ω m も d d d も m m m について増加し、境界 d = 0 d = 0 d = 0 では g = ω 2 m 2 / 4 = ω − 1 g = \omega^2m^2/4 = \omega - 1 g = ω 2 m 2 /4 = ω − 1 なので、g ( ω , ⋅ ) g(\omega, \cdot) g ( ω , ⋅ ) は m ≥ 0 m \ge 0 m ≥ 0 について非減少です。
ρ ( L ω ) = g ( ω , ρ J ) \rho(\mathcal{L}_\omega) = g(\omega, \rho_{\mathrm{J}}) ρ ( L ω ) = g ( ω , ρ J ) . 定理 4.3 の 2 の後半から、L ω \mathcal{L}_\omega L ω の零でない固有値は、ある固有値 μ \mu μ (実数で ∣ μ ∣ ≤ ρ J |\mu| \le \rho_{\mathrm{J}} ∣ μ ∣ ≤ ρ J )についての根なので、絶対値は g ( ω , ∣ μ ∣ ) ≤ g ( ω , ρ J ) g(\omega, |\mu|) \le g(\omega, \rho_{\mathrm{J}}) g ( ω , ∣ μ ∣ ) ≤ g ( ω , ρ J ) 以下です。一方 ρ J \rho_{\mathrm{J}} ρ J または − ρ J -\rho_{\mathrm{J}} − ρ J は固有値なので、2 の前半から絶対値 g ( ω , ρ J ) g(\omega, \rho_{\mathrm{J}}) g ( ω , ρ J ) の根は L ω \mathcal{L}_\omega L ω の固有値です。
ω \omega ω についての形. ρ = ρ J \rho = \rho_{\mathrm{J}} ρ = ρ J とし、d ( ω ) = ρ 2 ω 2 − 4 ω + 4 d(\omega) = \rho^2\omega^2 - 4\omega + 4 d ( ω ) = ρ 2 ω 2 − 4 ω + 4 とおきます。d d d の零点は ω = 2 / ( 1 ± 1 − ρ 2 ) \omega = 2/(1 \pm \sqrt{1 - \rho^2}) ω = 2/ ( 1 ± 1 − ρ 2 ) で、小さい方が ω o p t ∈ [ 1 , 2 ) \omega_{\mathrm{opt}} \in [1, 2) ω opt ∈ [ 1 , 2 ) 、大きい方は 2 2 2 以上です(ρ = 0 \rho = 0 ρ = 0 なら d = 4 − 4 ω d = 4 - 4\omega d = 4 − 4 ω で零点は 1 = ω o p t 1 = \omega_{\mathrm{opt}} 1 = ω opt だけ)。よって 0 < ω ≤ ω o p t 0 < \omega \le \omega_{\mathrm{opt}} 0 < ω ≤ ω opt で d ≥ 0 d \ge 0 d ≥ 0 、ω o p t ≤ ω < 2 \omega_{\mathrm{opt}} \le \omega < 2 ω opt ≤ ω < 2 で d ≤ 0 d \le 0 d ≤ 0 となり、主張の式を得ます(ω = ω o p t \omega = \omega_{\mathrm{opt}} ω = ω opt では両方の式が ω − 1 \omega - 1 ω − 1 に一致します)。
単調性. ω o p t ≤ ω < 2 \omega_{\mathrm{opt}} \le \omega < 2 ω opt ≤ ω < 2 では ω − 1 \omega - 1 ω − 1 は増加です。0 < ω < ω o p t 0 < \omega < \omega_{\mathrm{opt}} 0 < ω < ω opt では d > 0 d > 0 d > 0 で、s ( ω ) = ( ω ρ + d ) / 2 > 0 s(\omega) = (\omega\rho + \sqrt{d})/2 > 0 s ( ω ) = ( ω ρ + d ) /2 > 0 の導関数は
s ′ ( ω ) = 1 2 ( ρ − 2 − ρ 2 ω d ) s'(\omega) = \frac{1}{2}\Bigl(\rho - \frac{2 - \rho^2\omega}{\sqrt{d}}\Bigr) s ′ ( ω ) = 2 1 ( ρ − d 2 − ρ 2 ω ) です。( 2 − ρ 2 ω ) 2 − ρ 2 d = 4 ( 1 − ρ 2 ) > 0 (2 - \rho^2\omega)^2 - \rho^2d = 4(1 - \rho^2) > 0 ( 2 − ρ 2 ω ) 2 − ρ 2 d = 4 ( 1 − ρ 2 ) > 0 と 2 − ρ 2 ω > 0 2 - \rho^2\omega > 0 2 − ρ 2 ω > 0 から 2 − ρ 2 ω > ρ d 2 - \rho^2\omega > \rho\sqrt{d} 2 − ρ 2 ω > ρ d なので s ′ < 0 s' < 0 s ′ < 0 で、s 2 s^2 s 2 は減少です。s 2 s^2 s 2 は ω o p t \omega_{\mathrm{opt}} ω opt で連続に ω o p t − 1 \omega_{\mathrm{opt}} - 1 ω opt − 1 につながるので、最小は ω o p t \omega_{\mathrm{opt}} ω opt でだけとられます。
∎
0 0.5 1 0 0.5 1 1.5 2 ω ω_opt Gauss–Seidel(0.854) 最小値 ω_opt − 1 ≈ 0.446 ρ_J = cos(π/8) ≈ 0.924(7×7 格子の離散 Laplace 行列)のときの ρ(𝓛_ω)。ω_opt ≈ 1.446 の左では急に下がり(平方根の特異性)、右では傾き 1 の直線 ω − 1 になる。ω を最適値より少し大きめにとる方が安全である。
正方形 ( 0 , 1 ) 2 (0,1)^2 ( 0 , 1 ) 2 上の − Δ u = f -\Delta u = f − Δ u = f 、境界で u = 0 u = 0 u = 0 を、格子幅 h = 1 / ( m + 1 ) h = 1/(m+1) h = 1/ ( m + 1 ) の 5 点差分で離散化します。内部の格子点 ( p , q ) (p, q) ( p , q ) (1 ≤ p , q ≤ m 1 \le p, q \le m 1 ≤ p , q ≤ m )を自然な順序に並べると、係数行列は(h 2 h^2 h 2 を掛けて)
A = I m ⊗ T + T ⊗ I m , T = ( 2 − 1 − 1 2 ⋱ ⋱ ⋱ − 1 − 1 2 ) ∈ R m × m A = I_m \otimes T + T \otimes I_m,\qquad T = \begin{pmatrix} 2 & -1 & & \\ -1 & 2 & \ddots & \\ & \ddots & \ddots & -1 \\ & & -1 & 2 \end{pmatrix} \in \mathbb{R}^{m\times m} A = I m ⊗ T + T ⊗ I m , T = 2 − 1 − 1 2 ⋱ ⋱ ⋱ − 1 − 1 2 ∈ R m × m
です(⊗ \otimes ⊗ は Kronecker 積)。1 次元のモデル問題は A = T A = T A = T です。
命題 5.1 (離散 Laplace 方程式の収束率 ) ✓
1 次元(A = T A = T A = T )と 2 次元(A = I ⊗ T + T ⊗ I A = I \otimes T + T \otimes I A = I ⊗ T + T ⊗ I )のどちらでも、h = 1 / ( m + 1 ) h = 1/(m+1) h = 1/ ( m + 1 ) として
ρ J = cos π h , ρ G S = cos 2 π h , ω o p t = 2 1 + sin π h , ρ ( L ω o p t ) = 1 − sin π h 1 + sin π h \rho_{\mathrm{J}} = \cos\pi h,\qquad \rho_{\mathrm{GS}} = \cos^2\pi h,\qquad \omega_{\mathrm{opt}} = \frac{2}{1 + \sin\pi h},\qquad \rho(\mathcal{L}_{\omega_{\mathrm{opt}}}) = \frac{1 - \sin\pi h}{1 + \sin\pi h} ρ J = cos π h , ρ GS = cos 2 π h , ω opt = 1 + sin π h 2 , ρ ( L ω opt ) = 1 + sin π h 1 − sin π h が成り立つ。2 次元では自然な順序でも赤黒順序でも同じである。h → 0 h \to 0 h → 0 で − ln ρ J ≈ π 2 h 2 / 2 -\ln\rho_{\mathrm{J}} \approx \pi^2h^2/2 − ln ρ J ≈ π 2 h 2 /2 、− ln ρ G S ≈ π 2 h 2 -\ln\rho_{\mathrm{GS}} \approx \pi^2h^2 − ln ρ GS ≈ π 2 h 2 、− ln ρ ( L ω o p t ) ≈ 2 π h -\ln\rho(\mathcal{L}_{\omega_{\mathrm{opt}}}) \approx 2\pi h − ln ρ ( L ω opt ) ≈ 2 π h である。
証明(命題 5.1) Jacobi 法の固有値. θ k = k π h \theta_k = k\pi h θ k = k π h (k = 1 , … , m k = 1, \ldots, m k = 1 , … , m )とおきます。三重対角 Toeplitz 行列の固有値の補題(補題 8.3[行列のノルムと線形方程式の条件数] )を α = 2 \alpha = 2 α = 2 , β = − 1 \beta = -1 β = − 1 で使うと、T T T の固有値は相異なる τ k = 2 − 2 cos θ k \tau_k = 2 - 2\cos\theta_k τ k = 2 − 2 cos θ k で、固有ベクトルは v k = ( sin j θ k ) j \boldsymbol{v}_k = (\sin j\theta_k)_j v k = ( sin j θ k ) j です。
1 次元では D = 2 I D = 2I D = 2 I なので G J = I − T / 2 G_{\mathrm{J}} = I - T/2 G J = I − T /2 の固有値は 1 − τ k / 2 = cos θ k 1 - \tau_k/2 = \cos\theta_k 1 − τ k /2 = cos θ k です。
2 次元では Kronecker 積の性質 ( P ⊗ Q ) ( x ⊗ y ) = P x ⊗ Q y (P \otimes Q)(\boldsymbol{x} \otimes \boldsymbol{y}) = P\boldsymbol{x} \otimes Q\boldsymbol{y} ( P ⊗ Q ) ( x ⊗ y ) = P x ⊗ Q y (定義から成分を比べればよい)により
A ( v j ⊗ v k ) = v j ⊗ T v k + T v j ⊗ v k = ( τ j + τ k ) v j ⊗ v k A(\boldsymbol{v}_j \otimes \boldsymbol{v}_k) = \boldsymbol{v}_j \otimes T\boldsymbol{v}_k + T\boldsymbol{v}_j \otimes \boldsymbol{v}_k = (\tau_j + \tau_k)\,\boldsymbol{v}_j \otimes \boldsymbol{v}_k A ( v j ⊗ v k ) = v j ⊗ T v k + T v j ⊗ v k = ( τ j + τ k ) v j ⊗ v k です。T T T は対称なので相異なる固有値の固有ベクトルは直交し(τ j v j T v k = ( T v j ) T v k = v j T T v k = τ k v j T v k \tau_j\boldsymbol{v}_j^{\mathsf{T}}\boldsymbol{v}_k = (T\boldsymbol{v}_j)^{\mathsf{T}}\boldsymbol{v}_k = \boldsymbol{v}_j^{\mathsf{T}}T\boldsymbol{v}_k = \tau_k\boldsymbol{v}_j^{\mathsf{T}}\boldsymbol{v}_k τ j v j T v k = ( T v j ) T v k = v j T T v k = τ k v j T v k )、( x ⊗ y ) T ( x ′ ⊗ y ′ ) = ( x T x ′ ) ( y T y ′ ) (\boldsymbol{x} \otimes \boldsymbol{y})^{\mathsf{T}}(\boldsymbol{x}' \otimes \boldsymbol{y}') = (\boldsymbol{x}^{\mathsf{T}}\boldsymbol{x}')(\boldsymbol{y}^{\mathsf{T}}\boldsymbol{y}') ( x ⊗ y ) T ( x ′ ⊗ y ′ ) = ( x T x ′ ) ( y T y ′ ) なので、m 2 m^2 m 2 個の v j ⊗ v k \boldsymbol{v}_j \otimes \boldsymbol{v}_k v j ⊗ v k は零でなく互いに直交します。直交する零でないベクトルは一次独立なので、これは R m 2 \mathbb{R}^{m^2} R m 2 の基底で、A A A の固有値は τ j + τ k \tau_j + \tau_k τ j + τ k で尽きます。D = 4 I D = 4I D = 4 I なので G J = I − A / 4 G_{\mathrm{J}} = I - A/4 G J = I − A /4 の固有値は ( cos θ j + cos θ k ) / 2 (\cos\theta_j + \cos\theta_k)/2 ( cos θ j + cos θ k ) /2 です。
どちらの場合も固有値は実数で、絶対値の最大は j = k = 1 j = k = 1 j = k = 1 (または j = k = m j = k = m j = k = m )の cos π h \cos\pi h cos π h です。2 次元の赤黒順序は自然な順序の行列を置換行列 P P P で P T A P P^{\mathsf{T}}AP P T A P と並べ替えたもので、対角成分はすべて 4 4 4 のままなので G J G_{\mathrm{J}} G J も P T G J P P^{\mathsf{T}}G_{\mathrm{J}}P P T G J P になり、固有値は変わりません。
SOR 法. 1 次元の T T T は三重対角、2 次元は自然な順序でも赤黒順序でも 補題 4.2 の条件を満たすので、矛盾なく順序づけられています。定理 4.3 の 3 から ρ G S = cos 2 π h \rho_{\mathrm{GS}} = \cos^2\pi h ρ GS = cos 2 π h 、系 4.4 から ω o p t = 2 / ( 1 + 1 − cos 2 π h ) = 2 / ( 1 + sin π h ) \omega_{\mathrm{opt}} = 2/(1 + \sqrt{1 - \cos^2\pi h}) = 2/(1 + \sin\pi h) ω opt = 2/ ( 1 + 1 − cos 2 π h ) = 2/ ( 1 + sin π h ) と ρ ( L ω o p t ) = ω o p t − 1 = ( 1 − sin π h ) / ( 1 + sin π h ) \rho(\mathcal{L}_{\omega_{\mathrm{opt}}}) = \omega_{\mathrm{opt}} - 1 = (1 - \sin\pi h)/(1 + \sin\pi h) ρ ( L ω opt ) = ω opt − 1 = ( 1 − sin π h ) / ( 1 + sin π h ) です。
漸近形. ln cos x = − x 2 / 2 + O ( x 4 ) \ln\cos x = -x^2/2 + O(x^4) ln cos x = − x 2 /2 + O ( x 4 ) 、ln ( ( 1 − s ) / ( 1 + s ) ) = − 2 s + O ( s 3 ) \ln\bigl((1 - s)/(1 + s)\bigr) = -2s + O(s^3) ln ( ( 1 − s ) / ( 1 + s ) ) = − 2 s + O ( s 3 ) と sin π h = π h + O ( h 3 ) \sin\pi h = \pi h + O(h^3) sin π h = π h + O ( h 3 ) から従います。
∎
誤差を 10 − d 10^{-d} 1 0 − d 倍にする反復回数は、Jacobi 法で約 2 d ln 10 / ( π 2 h 2 ) 2d\ln 10/(\pi^2h^2) 2 d ln 10/ ( π 2 h 2 ) 、Gauss–Seidel 法でその半分、最適 SOR 法で約 d ln 10 / ( 2 π h ) d\ln 10/(2\pi h) d ln 10/ ( 2 π h ) です。格子を 2 倍細かくすると、前の 2 つは 4 倍、最適 SOR 法は 2 倍に増えます。1 回の反復の手間は未知数の個数 m 2 ≈ h − 2 m^2 \approx h^{-2} m 2 ≈ h − 2 に比例するので、全体の手間は h − 4 h^{-4} h − 4 と h − 3 h^{-3} h − 3 です。
次のコードで確かめます。Gauss–Seidel 法と SOR 法は、配列演算で書けるよう赤黒順序で実装しました(命題 5.1 により収束率は自然な順序と同じです)。
# Python 3.12.10 / NumPy 2.5.2(x86-64)
def nbr ( u ) : # 上下左右の和(境界は 0)
return u[: - 2 , 1 : - 1 ] + u[ 2 :, 1 : - 1 ] + u[ 1 : - 1 , : - 2 ] + u[ 1 : - 1 , 2 :]
def count ( m , method , w= 1.0 , tol= 1e-8 ) :
b = np. full ( (m, m) , 1.0 / (m + 1 ) ** 2 ) # f = 1 の右辺
u = np. zeros ( (m + 2 , m + 2 ) )
red = np. indices ( (m, m) ). sum ( axis = 0 ) % 2 == 0
for k in range ( 1 , 10 ** 6 ):
u[ 1 : - 1 , 1 : - 1 ] = (b + nbr ( u )) / 4
else : # 赤黒順序の SOR(w = 1 で Gauss-Seidel)
v[c] = ( 1 - w) * v[c] + w * ((b + nbr ( u )) / 4 ) [ c ]
r = b - 4 * u[ 1 : - 1 , 1 : - 1 ] + nbr ( u )
if np.linalg. norm ( r ) <= tol * np.linalg. norm ( b ):
print ( " 1/h J(予測) GS(予測) SOR(予測) " )
w = 2 / ( 1 + np. sin ( np.pi * h ))
pr = [ np. log ( 1e-8 ) / np. log ( x ) for x in (rj, rj ** 2 , w - 1 ) ]
k = [ count ( m , " J " ), count ( m , " S " ), count ( m , " S " , w ) ]
print ( f " {m + 1 :4d } " + "" . join (
f " {a :5d } ( {p :5.0f } )" for a , p in zip ( k , pr )))
16 942( 949) 480( 475) 61( 47)
32 3779( 3816) 1926( 1908) 125( 94)
64 15122(15283) 7705( 7642) 257( 188)
検算. (a) 予測は閉じた形の ρ \rho ρ による ln 10 − 8 / ln ρ \ln 10^{-8}/\ln\rho ln 1 0 − 8 / ln ρ です。(b) 反復行列のスペクトル半径そのものは次のコードで固有値を直接計算して照合します。(c) 格子幅を半分にするごとの回数の比は、Jacobi 法で 4.01 , 4.00 4.01, 4.00 4.01 , 4.00 、Gauss–Seidel 法で 4.01 , 4.00 4.01, 4.00 4.01 , 4.00 (h − 2 h^{-2} h − 2 )、最適 SOR 法で 2.05 , 2.06 2.05, 2.06 2.05 , 2.06 (h − 1 h^{-1} h − 1 )で、命題 5.1 の漸近形と合います。Jacobi 法・Gauss–Seidel 法の回数は予測と 1〜2% で一致します。最適 SOR 法の回数は予測の 1.3〜1.4 倍ですが、これは ω o p t \omega_{\mathrm{opt}} ω opt では L ω \mathcal{L}_\omega L ω の固有値が重根になり(系 4.4 の証明の d = 0 d = 0 d = 0 )、誤差が ρ k \rho^k ρ k ではなく k ρ k k\rho^k k ρ k のように減る成分をもつためです(注意 5.2 )。回数が h − 1 h^{-1} h − 1 に比例することは変わりません。
# Python 3.12.10 / NumPy 2.5.2(x86-64, OpenBLAS)
m = 7 # 内部の格子点 7×7、h = 1/8
T = 2 * np. eye ( m ) - np. eye ( m , k = 1 ) - np. eye ( m , k =- 1 )
A = np. kron ( np. eye ( m ) , T ) + np. kron ( T , np. eye ( m )) # 自然な順序
return max ( abs ( np.linalg. eigvals ( G )))
return np.linalg. solve ( D - w * L , ( 1 - w) * D + w * U )
wopt = 2 / ( 1 + np. sin ( np.pi * h ))
rows = [ ( " Jacobi " , np.linalg. solve ( D , L + U ), rj),
( " SOR w=1.5 " , sor ( 1.5 ), 0.5 ),
( " SOR w_opt " , sor ( wopt ), wopt - 1 ) ]
print ( f " {name :10s } { rho ( G ) :.6f } {t} " )
SOR w=1.5 0.500000 0.500000
SOR w_opt 0.446463 0.446463
検算. (a) 右の列は 命題 5.1 の閉じた形と、ω = 1.5 > ω o p t ≈ 1.446 \omega = 1.5 > \omega_{\mathrm{opt}} \approx 1.446 ω = 1.5 > ω opt ≈ 1.446 での 系 4.4 の値 ω − 1 \omega - 1 ω − 1 です。(b) 左の列は自然な順序の反復行列を密行列として作り、numpy.linalg.eigvals で求めた値で、6 桁一致します。(c) 4 行は 系 4.4 の曲線(上の図)の 3 点 ω = 1 , ω o p t , 1.5 \omega = 1, \omega_{\mathrm{opt}}, 1.5 ω = 1 , ω opt , 1.5 にあたります。ω o p t \omega_{\mathrm{opt}} ω opt の行列は重根をもつため固有値の計算は丸めに敏感ですが、表示した 6 桁は既定のスレッド数と 1 スレッドで一致しました。
演習 6.1 標準
1 / 2 < a < 1 1/2 < a < 1 1/2 < a < 1 とし、A = ( 1 a a a 1 a a a 1 ) A = \begin{pmatrix} 1 & a & a \\ a & 1 & a \\ a & a & 1 \end{pmatrix} A = 1 a a a 1 a a a 1 とする。A A A は正定値であるが Jacobi 法は発散し、Gauss–Seidel 法は収束することを示せ。補題 3.2 の条件 2 D − A 2D - A 2 D − A の正定値性はどうなっているか。
解答 A = ( 1 − a ) I + a 1 1 T A = (1 - a)I + a\boldsymbol{1}\boldsymbol{1}^{\mathsf{T}} A = ( 1 − a ) I + a 1 1 T で、1 \boldsymbol{1} 1 の方向の固有値は 1 + 2 a 1 + 2a 1 + 2 a 、それに直交する 2 次元の空間では 1 − a 1 - a 1 − a です。どちらも正なので A A A は正定値で、系 3.4 から Gauss–Seidel 法は収束します。D = I D = I D = I なので G J = I − A G_{\mathrm{J}} = I - A G J = I − A の固有値は − 2 a -2a − 2 a と a a a (2 重)で、ρ ( G J ) = 2 a > 1 \rho(G_{\mathrm{J}}) = 2a > 1 ρ ( G J ) = 2 a > 1 から Jacobi 法は発散します(定理 2.2 )。2 D − A = 2 I − A 2D - A = 2I - A 2 D − A = 2 I − A の固有値は 1 − 2 a < 0 1 - 2a < 0 1 − 2 a < 0 と 1 + a 1 + a 1 + a なので正定値でなく、補題の仮定が崩れています。
演習 6.2 易
2 次元のモデル問題で h = 1 / 100 h = 1/100 h = 1/100 とする。誤差を 10 − 6 10^{-6} 1 0 − 6 倍にするのに必要な反復回数を、Jacobi 法・Gauss–Seidel 法・最適 SOR 法について 命題 5.1 の ρ \rho ρ から見積もれ。
解答 π h ≈ 0.0314159 \pi h \approx 0.0314159 π h ≈ 0.0314159 です。ρ J = cos π h ≈ 0.9995066 \rho_{\mathrm{J}} = \cos\pi h \approx 0.9995066 ρ J = cos π h ≈ 0.9995066 で − ln ρ J ≈ 4.936 × 10 − 4 -\ln\rho_{\mathrm{J}} \approx 4.936\times10^{-4} − ln ρ J ≈ 4.936 × 1 0 − 4 、回数は 6 ln 10 / ( 4.936 × 10 − 4 ) ≈ 13.82 / ( 4.936 × 10 − 4 ) ≈ 2.8 × 10 4 6\ln 10/(4.936\times10^{-4}) \approx 13.82/(4.936\times10^{-4}) \approx 2.8\times10^4 6 ln 10/ ( 4.936 × 1 0 − 4 ) ≈ 13.82/ ( 4.936 × 1 0 − 4 ) ≈ 2.8 × 1 0 4 です。Gauss–Seidel 法はその半分の約 1.4 × 10 4 1.4\times10^4 1.4 × 1 0 4 回です。最適 SOR 法は sin π h ≈ 0.0314108 \sin\pi h \approx 0.0314108 sin π h ≈ 0.0314108 、ρ = ( 1 − 0.0314108 ) / ( 1 + 0.0314108 ) ≈ 0.939092 \rho = (1 - 0.0314108)/(1 + 0.0314108) \approx 0.939092 ρ = ( 1 − 0.0314108 ) / ( 1 + 0.0314108 ) ≈ 0.939092 、− ln ρ ≈ 0.06284 -\ln\rho \approx 0.06284 − ln ρ ≈ 0.06284 なので約 220 220 220 回です。
演習 6.3 標準
A = ( 2 − 1 − 1 2 ) A = \begin{pmatrix} 2 & -1 \\ -1 & 2 \end{pmatrix} A = ( 2 − 1 − 1 2 ) について、ρ J \rho_{\mathrm{J}} ρ J 、ρ G S \rho_{\mathrm{GS}} ρ GS 、ω o p t \omega_{\mathrm{opt}} ω opt 、ρ ( L ω o p t ) \rho(\mathcal{L}_{\omega_{\mathrm{opt}}}) ρ ( L ω opt ) を求めよ。さらに L ω \mathcal{L}_\omega L ω の特性多項式を直接計算し、ω = ω o p t \omega = \omega_{\mathrm{opt}} ω = ω opt で重根になることを確かめよ。
解答 G J = ( 0 1 / 2 1 / 2 0 ) G_{\mathrm{J}} = \begin{pmatrix} 0 & 1/2 \\ 1/2 & 0 \end{pmatrix} G J = ( 0 1/2 1/2 0 ) の固有値は ± 1 / 2 \pm 1/2 ± 1/2 なので ρ J = 1 / 2 \rho_{\mathrm{J}} = 1/2 ρ J = 1/2 です。A A A は三重対角なので矛盾なく順序づけられており(補題 4.2 )、定理 4.3 から ρ G S = 1 / 4 \rho_{\mathrm{GS}} = 1/4 ρ GS = 1/4 、系 4.4 から ω o p t = 2 / ( 1 + 3 / 2 ) = 4 ( 2 − 3 ) ≈ 1.0718 \omega_{\mathrm{opt}} = 2/(1 + \sqrt{3}/2) = 4(2 - \sqrt{3}) \approx 1.0718 ω opt = 2/ ( 1 + 3 /2 ) = 4 ( 2 − 3 ) ≈ 1.0718 、ρ ( L ω o p t ) = 7 − 4 3 ≈ 0.0718 \rho(\mathcal{L}_{\omega_{\mathrm{opt}}}) = 7 - 4\sqrt{3} \approx 0.0718 ρ ( L ω opt ) = 7 − 4 3 ≈ 0.0718 です。直接計算すると D − ω L = ( 2 0 − ω 2 ) D - \omega L = \begin{pmatrix} 2 & 0 \\ -\omega & 2 \end{pmatrix} D − ω L = ( 2 − ω 0 2 ) 、( 1 − ω ) D + ω U = ( 2 ( 1 − ω ) ω 0 2 ( 1 − ω ) ) (1 - \omega)D + \omega U = \begin{pmatrix} 2(1 - \omega) & \omega \\ 0 & 2(1 - \omega) \end{pmatrix} ( 1 − ω ) D + ω U = ( 2 ( 1 − ω ) 0 ω 2 ( 1 − ω ) ) で、
det ( λ ( D − ω L ) − ( 1 − ω ) D − ω U ) = 4 ( λ + ω − 1 ) 2 − λ ω 2 \det\bigl(\lambda(D - \omega L) - (1 - \omega)D - \omega U\bigr) = 4(\lambda + \omega - 1)^2 - \lambda\omega^2 det ( λ ( D − ω L ) − ( 1 − ω ) D − ω U ) = 4 ( λ + ω − 1 ) 2 − λ ω 2 です。det ( D − ω L ) = 4 \det(D - \omega L) = 4 det ( D − ω L ) = 4 で割ると特性多項式は ( λ + ω − 1 ) 2 − λ ω 2 / 4 (\lambda + \omega - 1)^2 - \lambda\omega^2/4 ( λ + ω − 1 ) 2 − λ ω 2 /4 で、これは Young の関係式で μ 2 = 1 / 4 \mu^2 = 1/4 μ 2 = 1/4 としたものです。λ \lambda λ の 2 次式として判別式は ( ω 2 / 4 ) ( ω 2 / 4 − 4 ( ω − 1 ) ) (\omega^2/4)\bigl(\omega^2/4 - 4(\omega - 1)\bigr) ( ω 2 /4 ) ( ω 2 /4 − 4 ( ω − 1 ) ) で、ω 2 − 16 ω + 16 = 0 \omega^2 - 16\omega + 16 = 0 ω 2 − 16 ω + 16 = 0 の小さい方の根 ω = 8 − 4 3 = 4 ( 2 − 3 ) \omega = 8 - 4\sqrt{3} = 4(2 - \sqrt{3}) ω = 8 − 4 3 = 4 ( 2 − 3 ) で 0 0 0 になり、重根 λ = ω − 1 = 7 − 4 3 \lambda = \omega - 1 = 7 - 4\sqrt{3} λ = ω − 1 = 7 − 4 3 をもちます。
R. S. Varga『Matrix Iterative Analysis』2nd ed., Springer, 2000 — 第 3 章(定常反復の基本)、第 4 章(SOR 法と矛盾なく順序づけられた行列)。
D. M. Young『Iterative Solution of Large Linear Systems』Academic Press, 1971 — SOR 法の理論の原典的な教科書。
Y. Saad『Iterative Methods for Sparse Linear Systems』2nd ed., SIAM, 2003 — 第 4 章(基本的な反復法)、第 12 章(多項式前処理。Chebyshev 加速を含む)。
G. H. Golub, C. F. Van Loan『Matrix Computations』4th ed., Johns Hopkins University Press, 2013 — §11.2(古典的な反復法)。
W. L. Briggs, V. E. Henson, S. F. McCormick『A Multigrid Tutorial』2nd ed., SIAM, 2000 — 第 2 章(平滑化と誤差の周波数)。
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12