ガウス・ザイデル法 シミュレーター 戻る
数値線形代数シミュレーター

ガウス・ザイデル法 シミュレーター — 線形連立方程式の反復解法

3 元連立 1 次方程式 Ax=b をガウス・ザイデル反復で解き、(x, y, z) の収束軌跡と誤差対数減少を可視化。SOR 緩和係数 ω を 0.5〜1.9 で振り、最適 ω の存在を直感的に体感できます。

パラメータ設定
初期推測値 x_0 (3 成分共通)
最大反復回数
許容差 1e^-n
SOR 緩和係数 ω
A = [[2, 1, 1], [1, 3, 1], [1, 1, 4]]
b = [4, 5, 6]
真の解 x* = (1, 1, 1)

既定値(x_0=0, ω=1, tol=1e-6)で約 11 反復で収束。ω を 1.1〜1.2 にすると反復回数が減り、ω を 1.5 以上に上げると振動して収束が遅くなります。ω≧2 は発散領域。

計算結果
解 x
解 y
解 z
反復回数

反復軌跡(成分ごと x, y, z)

横軸 反復番号 k、縦軸 成分値。赤=x、緑=y、青=z。点線は真の解 (1,1,1)。各反復のドットがマーカー。ω によって振動の幅と収束速度が変わります。

誤差 ||x^(k+1)-x^(k)||_∞ の収束(log10)

横軸 反復番号 n、縦軸 連続反復間の無限ノルム誤差を log10 でプロット。線形収束では直線的に減少。赤破線は許容差 tol。傾きが急なほど収束が速い(最適 ω 近傍)。

理論・主要公式

ガウス・ザイデル反復(成分形式):

$$x_{i}^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j\lt i} a_{ij} x_{j}^{(k+1)} - \sum_{j\gt i} a_{ij} x_{j}^{(k)}\right)$$

SOR(逐次過緩和):

$$x_{i}^{(k+1)} = (1-\omega)\,x_{i}^{(k)} + \omega \cdot x_{i,\text{GS}}^{(k+1)}$$

行列形式(D 対角、L 下三角、U 上三角):

$$(D + \omega L)\,x^{(k+1)} = \omega b - [\omega U + (\omega-1)D]\,x^{(k)}$$

$\omega=1$ で純ガウス・ザイデル、$1<\omega<2$ で過緩和、$0<\omega<1$ で不足緩和。Kahan の定理より $\omega \notin (0,2)$ では発散します。最適 $\omega_{\text{opt}} = 2/(1+\sqrt{1-\rho_{GS}^{2}})$($\rho_{GS}$ はガウス・ザイデル反復行列のスペクトル半径)。

ガウス・ザイデル法 シミュレーターとは

🙋
既定値で 11 反復って書いてあって、本当に (1, 1, 1) にビタッと収束しました。これって一発で逆行列を計算するのと比べて何が嬉しいんですか?
🎓
いい質問。3 元なら直接法(LU 分解)で一瞬だけど、CAE で出てくる連立方程式は 100 万元〜10 億元級だ。直接法は記憶量も計算量も O(N³) で爆発するから、対角優位やスパースな大規模系では「反復で近づける」方が圧倒的に安い。ガウス・ザイデル法は最も古典的な反復解法で、各成分を順番に「最新値で」更新するシンプルなアルゴリズム。1 反復は O(非ゼロ要素数) で済むから、有限要素法の剛性行列のように 99% がゼロのスパース系では、直接法より桁違いに速いんだ。
🙋
じゃあ ω スライダーを 1.2 にしたら、確かに反復回数が 10 回くらいに減りました。SOR ってこれのことですか?
🎓
そう、それが SOR(Successive Over-Relaxation、逐次過緩和法)だ。式は x^(k+1) = (1-ω) x^(k) + ω · x_GS^(k+1) で、ガウス・ザイデルの新値を「やや行き過ぎ気味に」進めるイメージ。1<ω<2 が過緩和で、上手く選ぶと収束が劇的に速くなる。最適 ω は反復行列のスペクトル半径から ω_opt = 2/(1+√(1-ρ²)) で計算できるけど、実用ではスイープして谷を探すのが普通。本ツールの「ω をスイープ」ボタンで 0.5→1.9 を動かしてみて、反復回数が最少になる ω を当ててみるといいよ。
🙋
ω を 1.95 にしたら振動して、収束しなくなりました。ω を上げすぎるとダメなんですね?
🎓
大正解。Kahan の定理で「SOR が収束するには 0<ω<2 が必須」と証明されている。ω=2 は境界、それを超えると必ず発散する。さらに最適 ω は問題ごとに違って、本ツールの A=[[2,1,1],[1,3,1],[1,1,4]] は対角優位だけど対角支配が弱いので、ω_opt は 1.1〜1.3 あたり。一方、楕円型偏微分方程式(Poisson 方程式)の有限差分行列だと ω_opt が 1.7〜1.9 になることもある。実際の CAE では、Conjugate Gradient(CG)や前処理付き反復法(PCG, GMRES)に置き換わっているけど、「成分ごとの即時更新」というガウス・ザイデルの発想はマルチグリッド法のスムーザー(平滑化)として今も現役だ。
🙋
初期推測値 x_0 を 10 にしたら、反復回数が 16 回くらいに増えました。初期値ってそんなに影響しますか?
🎓
対角優位行列のガウス・ザイデル法は「線形収束」だから、誤差は反復ごとに ρ 倍(ρ<1)に縮むだけ。初期値が真の解から遠いほど、出発時の誤差が大きく、それを許容差以下に下げるのに必要な反復回数が増える。具体的には、必要な反復回数は約 log(誤差/tol) / log(1/ρ) で見積もれる。ニュートン法のような 2 次収束(誤差が反復ごとに 2 乗で縮む)と比べると遅いけど、その代わり「ヤコビアンを計算しなくていい」「実装が簡単」「並列化しやすい」という利点がある。CAE の前処理として「数回のガウス・ザイデル」を CG の中に挟むハイブリッドが、現在の主流だね。

物理モデルと主要な数式

ガウス・ザイデル法は、Carl Friedrich Gauss(1823 年、私信)と Philipp Ludwig von Seidel(1874 年、出版)によって独立に発見された反復解法で、線形連立方程式 Ax=b に対して各成分を順次更新します。ヤコビ法と異なり、同じ反復内で先に更新された成分の最新値を即座に再利用する点が特徴です。

$$x_{i}^{(k+1)} = \frac{1}{a_{ii}}\left(b_i - \sum_{j\lt i} a_{ij} x_{j}^{(k+1)} - \sum_{j\gt i} a_{ij} x_{j}^{(k)}\right)$$

$a_{ii}$ は対角要素で、ゼロでないことが必要です。本ツールの行列 A=[[2,1,1],[1,3,1],[1,1,4]] は対角要素が 2, 3, 4 で、対角優位条件 |a_ii| ≥ Σ_{j≠i} |a_ij|(2≥2, 3≥2, 4≥2)を満たします。等号を含むため広義対角優位ですが、対称正定値であるため SOR は 0<ω<2 の全領域で収束します。

SOR(逐次過緩和法)は、ガウス・ザイデルの更新値 x_GS^(k+1) と前の値 x^(k) を緩和係数 ω で重み付けします。

$$x_{i}^{(k+1)} = (1-\omega)\,x_{i}^{(k)} + \omega \cdot x_{i,\text{GS}}^{(k+1)}$$

ω=1 で純ガウス・ザイデル、1<ω<2 でオーバーリラクセーション(収束加速)、0<ω<1 でアンダーリラクセーション(収束安定化)。最適緩和係数は ω_opt = 2/(1+√(1−ρ_GS²)) で与えられ、ρ_GS はガウス・ザイデル反復行列 G_GS = −(D+L)⁻¹ U のスペクトル半径です。

収束判定は、連続する反復間の差の無限ノルム ||x^(k+1) − x^(k)||_∞ < ε が一般的です。本ツールでは ε = 10^(−n)(n は許容差スライダー)を使用しています。

実世界での応用

有限要素法(FEM)の線形ソルバー:構造解析・熱解析・電磁界解析の支配方程式を離散化すると、巨大なスパース対称正定値行列が現れます。Abaqus、ANSYS、COMSOL などの商用ソルバーは内部で前処理付き共役勾配法(PCG)や GMRES を使いますが、その「前処理」として SOR や対称 SOR(SSOR)が頻繁に組み込まれます。SSOR 前処理は実装が簡単で、メモリ効率が良く、対角優位な剛性行列に対して安定に動作するため、200 万自由度クラスの構造解析でも実用的です。

マルチグリッド法のスムーザー:CFD(計算流体力学)の Poisson 方程式(圧力補正)や熱伝導問題のマルチグリッド前処理では、各グリッドレベルで「数回のガウス・ザイデル反復」を実行する「スムージング(平滑化)」が中核アルゴリズムです。Red-Black ガウス・ザイデル法(市松模様に分割して並列化したガウス・ザイデル)は、現在の GPU マルチグリッドで標準的に使われ、流体ソルバーの圧力ステップを 100 倍以上高速化しています。

電力潮流計算(Power Flow):電力系統の交流潮流方程式(非線形)を解く際、まず線形化された方程式をガウス・ザイデル反復で初期解として求めるのが古典的手法です。ニュートン・ラフソン法ほどの精度は出ませんが、実装が簡単で、初期収束が悪いケースでも発散しにくいという利点があります。日本の電力会社の運用系統でも、緊急時の概算評価で今でも現役です。

画像処理・トモグラフィー再構成:CT・MRI 画像の反復再構成法(ART, SART)の中核がガウス・ザイデル反復です。投影データから画像を再構成する逆問題を Ax=b に書き下し、各画素値を順次更新します。SOR を組み合わせると収束が速く、医療画像の高速化(被ばく低減)に貢献しています。

よくある誤解と注意点

最も多い誤解は、「ガウス・ザイデル法は常にヤコビ法より速い」というものです。対角優位行列では確かに約 2 倍速い(漸近収束率の比較)ですが、対角優位でない、あるいは対角支配が弱い行列ではガウス・ザイデルが遅くなることもあり、極端な場合は発散します。本ツールの A は対称正定値なので両方とも収束しますが、CAE の現場では行列の性質を確認してから反復解法を選びます。

次に多いのが、「SOR の最適 ω は計算で求められる」という思い込みです。理論的には ω_opt = 2/(1+√(1−ρ_GS²)) で求められますが、ρ_GS(スペクトル半径)の計算自体が固有値問題で、Ax=b より重い計算になります。実用では、過去の経験から ω=1.7〜1.9 を初期値にしてスイープし、最少反復の ω を採用するのが普通です。本ツールの ω スイープボタンはまさにこの実務的アプローチを再現しています。

最後に、「収束判定 ||x^(k+1) − x^(k)||_∞ < ε で十分」という落とし穴です。緩和係数 ω が小さい(不足緩和)と、反復間の差は小さくても真の解からは遠い場合があります。厳密には残差ノルム ||b − Ax^(k)||_2 / ||b||_2 < ε で判定するのが安全ですが、計算コストが増えるため、実務では両方を組み合わせる「相対残差 + 反復差」のハイブリッド判定が一般的です。

よくある質問

ガウス・ザイデル法は、Ax=b を成分ごとに分解し、最新の x 値を即座に使いながら順次更新する反復解法です。式は x_i^(k+1) = (1/a_ii)(b_i − Σ_{ji} a_ij x_j^(k))。本ツールの既定例 A=[[2,1,1],[1,3,1],[1,1,4]]、b=[4,5,6] は対角優位で解 (1,1,1) を持ち、初期値 (0,0,0) から ω=1 で約 11 反復で 1e-6 精度に到達します。
ヤコビ法は前の反復の x のみを使って全成分を一斉更新します。ガウス・ザイデル法は、その反復内で既に更新された x_j^(k+1) を即座に再利用するため、対角優位行列ではヤコビ法より約 2 倍速く収束するのが一般的です。本ツールの ω=1 がガウス・ザイデル法、1<ω<2 が SOR(逐次過緩和)で、適切な ω を選ぶとさらに収束が加速します。
ω=1 が純ガウス・ザイデル法、0<ω<1 がアンダーリラクセーション(収束を安定化)、1<ω<2 が SOR(オーバーリラクセーション、収束加速)です。最適 ω は反復行列 G_GS のスペクトル半径から ω_opt = 2/(1+√(1−ρ²)) で与えられますが、実用上はスイープして最良値を探す方法が普通です。本ツールの ω スイープボタンで 0.5→1.9 を動かすと、反復回数の谷(最適 ω)が見えます。
ガウス・ザイデル法の収束十分条件は (1) A が厳密に対角優位(|a_ii| > Σ_{j≠i} |a_ij|)か、(2) A が対称正定値であることです。対角要素が小さい・ゼロの行があるとピボットで発散します。SOR では ω が 0 か 2 を超えると必ず発散します(Kahan の定理)。本ツールの A=[[2,1,1],[1,3,1],[1,1,4]] は (2−2=0、3−2=1、4−2=2) で広義対角優位かつ対称正定値なので、0<ω<2 の全領域で安定収束します。