ガウスの消去法
テンプレート:出典の明記 ガウスの消去法(ガウスのしょうきょほう)あるいは掃き出し法(はきだしほう)とは、変数の数と方程式の本数が一致した連立一次方程式(線形方程式系)を解くための解法である。大きな方程式系を系統的な方法で小さな系へ分解するという考え方に基づいており[1]。、基本的には、前進消去と後退代入という2つのステップから成り立つ。
基本的な考え方
n 元連立方程式の解が<math>x_1 = c_1,x_2=c_2, ... ,x_n=c_n</math>だとすると、これは次の連立方程式を略記したものと同じである。
- <math>\begin{align}
&1x_1 + 0x_2 + \cdots + 0x_n = c_1 \\ &0x_1 + 1x_2 + \cdots + 0x_n = c_2 \\ &\vdots \\ &0x_1 + 0x_2 + \cdots + 1x_n = c_n \end{align}</math> 与えられた方程式からこの形式を導くためには、対角成分に注目して左上から式を加減していけばよいが、未知数がk 個定まった時点で残りk + 1 個の未知数を含む式が解けるため、一度に全ての変数を孤立させる必要はない。つまり、
- <math>\begin{align}
1x_1 &+& m_{12}x_2 &+ \cdots +& m_{1n}x_n &= c_1' \\ 0x_1 &+& 1x_2 &+ \cdots +& m_{2n}x_n &= c_2' \\ \vdots \\ 0x_1 &+& 0x_2 &+ \cdots +& 1x_n &= c_n \end{align}</math> となった時点で、下から順に値を代入することで全ての解を確定できる。
例
次のような線形方程式系の解を求める。
- <math>\begin{align}
2x_1 &+& 4x_2 &+& 2x_3 &=& 8 \\ 4x_1 &+& 10x_2 &+& 3x_3 &=& 17 \\ 3x_1 &+& 7x_2 &+& x_3 &=& 11 \end{align}</math>
- まず前進消去をする。
- 1 番目の方程式を 1/2 倍する。
- <math>\begin{align}
- 1 番目の方程式を 1/2 倍する。
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
4x_1 &+& 10x_2 &+& 3x_3 &=& 17 \\ 3x_1 &+& 7x_2 &+& x_3 &=& 11 \end{align}</math>
- 2 番目の方程式に 1 番目の方程式の -4 倍を足す。3 番目の方程式に 1 番目の方程式の -3 倍を足す。
- <math>\begin{align}
- 2 番目の方程式に 1 番目の方程式の -4 倍を足す。3 番目の方程式に 1 番目の方程式の -3 倍を足す。
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
&& 2x_2 &-& x_3 &=& 1 \\ && x_2 &-& 2x_3 &=& -1
\end{align}</math>
- 2 番目の方程式を 1/2 倍する。
- <math>\begin{align}
- 2 番目の方程式を 1/2 倍する。
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
&& x_2 &-& \frac{1}{2}x_3 &=& \frac{1}{2} \\ && x_2 &-& 2x_3 &=& -1
\end{align}</math>
- 3 番目の方程式に 2 番目の方程式の -1 倍を足す。
- <math>\begin{align}
- 3 番目の方程式に 2 番目の方程式の -1 倍を足す。
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
&& x_2 &-& \frac{1}{2}x_3 &=& \frac{1}{2} \\ && &-& \frac{3}{2}x_3 &=& -\frac{3}{2}
\end{align}</math>
- 次に後退代入をする。
- 3 番目の方程式を -2/3 倍する
- <math>\begin{align}
- 3 番目の方程式を -2/3 倍する
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
&& x_2 &-& \frac{1}{2}x_3 &=& \frac{1}{2} \\ && && x_3 &=& 1
\end{align}</math>
- <math>x_3 = 1</math> を 2 番目の方程式に代入する。
- <math>\begin{align}
- <math>x_3 = 1</math> を 2 番目の方程式に代入する。
x_1 &+& 2x_2 &+& x_3 &=& 4 \\
&& x_2 && &=& 1 \\ && && x_3 &=& 1
\end{align}</math>
- <math>x_3 = 1</math> と <math>x_2 = 1</math> を 1 番目の方程式に代入する。
- <math>\begin{align}
- <math>x_3 = 1</math> と <math>x_2 = 1</math> を 1 番目の方程式に代入する。
x_1 = 1 \\ x_2 = 1 \\ x_3 = 1 \end{align}</math> これで解が求まった。
注意
- 対角成分が 0 になる場合には、枢軸選択(ピボット選択)という式の交換を行う必要がある。
- 疎行列に対してガウスの消去法のステップを行うと疎性を損なう。
- 前進消去の段階において対角化を目指して、後退代入を行わずに x を直接計算する方法はガウスジョルダンの消去法(テンプレート:En)と呼ぶ。アルゴリズムは単純になるが、計算量は多くなる(変数が多い場合、ほぼ 1.5 倍になる)。
- 計算量(乗算の回数)は、変数の個数を n とすると、ほぼ n3/3 になる。大部分は前進消去にかかっており、後退代入にはそれより少ないn2/2 程度である[1]。