数学では、ガウス消去(行削減とも呼ばれる)は、一次方程式の系を解くために使用される方法である。この方法について書いた有名なドイツの数学者カール・フリードリッヒ・ガウスにちなんで命名されましたが、この方法を発明したわけではありませんでした。
ガウス除去を実行するには,線形方程式系の項の係数を用いて,拡張行列と呼ばれる種類の行列を作成します.次に,この行列を単純化するために,初歩的な行操作が用いられます.使用される行操作には、以下の3種類があります。
タイプ1:1つの行を別の行に切り替える
タイプ2: 行に0以外の数を乗算する。
タイプ3:別の行から1つの行を足したり引いたりすること。
ガウス除去の目的は,行列を行-列形式にすることです.行列が行-列形式である場合、左から右へ読むと、各行はその上の行よりも少なくとも 1 つ多くのゼロ項から始まることを意味します。ガウシアン消去の定義の中には,行列の結果が縮小された行エセロン形式でなければならないというものがあります.これは,行列が行-エヘロン形式であり,各行の唯一の非ゼロ項が 1 であることを意味します. 縮小された行-エヘロン行列の結果を生成するガウス除去は,ガウス-ヨルダン除去と呼ばれることもあります.
定義と目的の補足
ガウス消去法(Gaussian elimination)は、線形方程式系を解くために拡張行列(係数行列に定数項を付けた行列)に対して基本行操作を行い、行階段形(行エシェロン形、row-echelon form)あるいは縮約された行階段形(reduced row-echelon form)に変形する手続きです。最終的に得られる形から
- 一意解(unique solution)、
- 無限解(free variables を持つ場合)、
- 矛盾(解なし)
手順(基本的なアルゴリズム)
代表的な流れは次の通りです。
- 係数行列と定数項から拡張行列を作る。
- 左上から右下へ順にピボット(先頭の非ゼロ要素)を選び、ピボットの位置がゼロであれば行交換(タイプ1)などで非ゼロ要素を持つ行を持ってくる。
- ピボット行をそのピボットが1になるように定数倍(タイプ2)して正規化することもできる(ただし後述の簡略化手順では最後に行う場合もある)。
- ピボットの下の行に対して、ピボット行の適切な倍数を引く(タイプ3)ことでその列の下側をゼロにする(前進消去/forward elimination)。
- 全ての列について前進消去が終わったら、行階段形が得られる。必要に応じて後退代入(back substitution)を用いて解を求める。あるいはさらに上三角もゼロにして縮約された行階段形にすることで直接解が読み取れる(これがガウス-ジョルダン法)。
行基本操作のまとめ(復習)
- 行の交換(タイプ1):任意の2行を入れ替える。ピボットがゼロのときに用いる。
- 行のスカラー倍(タイプ2):行全体を0でない定数で掛ける。ピボットを1にする際に使う。
- 行の加算(タイプ3):ある行の定数倍を別の行に足す(引く)。消去操作の本体。
ガウス-ジョルダン法(Gauss–Jordan)との違い
ガウス消去は一般に前進消去と後退代入を組み合わせて解を求めますが、ガウス-ジョルダン法はさらに進めて各ピボット列の上下すべてを消去し、縮約された行階段形(reduced row-echelon form)を直接得ます。これにより、後退代入を行わずとも解が各行に一意に現れるため、未知数の表現が読み取りやすくなります。ただし計算量はやや増えます。
ピボット選択と数値安定性
実際の数値計算では、ピボットに小さな値(ほぼゼロ)を選ぶと丸め誤差の問題が発生します。そのため
- 部分ピボット(partial pivoting):現在の列で絶対値が最大の要素をピボットとして行を交換する。
- 完全ピボット(full pivoting):残りの行列領域全体で絶対値最大の要素を選び、行と列の両方を交換する(実装はやや複雑)。
部分ピボットは多くの用途で十分であり、数値的に安定した解を与えることが多いです。
解の判定(ランクと整合性)
拡張行列の行階段形から次が判定できます。
- 係数行列のランクが拡張行列のランクと等しく、かつランクが未知数の数に等しい → 一意解。
- 係数行列のランクが拡張行列のランクと等しいが、ランク < 未知数の数 → 無限に多くの解(自由変数あり)。
- 係数行列のランク < 拡張行列のランク → 矛盾があり解なし。
計算量と応用
n×n 行列の連立一次方程式をガウス消去で解く場合、一般に計算量は O(n^3)(浮動小数点演算回数のオーダ)です。実用上以下のような応用があります。
- 線形方程式の解法(工学・物理・統計など)
- 行列の逆行列計算(拡張行列として単位行列を付けて消去する)
- 行列式の計算(行交換の符号と対角要素の積から求められる)
- 連立差分方程式や最小二乗問題への応用(正規方程式を解くなど)
簡単な例
次の連立方程式を考える:
x + 2y = 5
2x - y = 1
拡張行列は
[ [1, 2 | 5], [2, -1 | 1] ]
前進消去で第1列のピボットを使い、第2行から2倍の第1行を引く:
第1行: [1, 2 | 5]
第2行: [0, -5 | -9]
第2行を -1/5 倍して正規化すると第2行は [0, 1 | 9/5]。後退代入で第1行から2倍の第2行を引くと 第1行は [1, 0 | 1/5]。よって解は x = 1/5, y = 9/5。
注意点とまとめ
- ガウス消去は理論的に単純で強力だが、数値計算ではピボット選択や丸め誤差に注意する必要がある。
- 行基本操作のいずれも解集合を変えないため、操作を正しく行えば解の検出やランクの判定が確実にできる。
- 大規模問題では直接法(ガウス消去)に代わり、反復法(共役勾配法など)が使われることも多い。