diff --git a/docs/02algorithms/10gaussian-elimination/index.mdx b/docs/02algorithms/10gaussian-elimination/index.mdx index 9f9819fb5..8f91f7268 100644 --- a/docs/02algorithms/10gaussian-elimination/index.mdx +++ b/docs/02algorithms/10gaussian-elimination/index.mdx @@ -89,7 +89,83 @@ Gauss の消去法は、前進消去と後退代入の二段階から成りま 先に線形代数の復習として、簡単に Gauss の消去法を説明しておきます。 -次のように $n$ 個の未知数 $x_1, x_2, x_3, \dots , x_n$ に対して、$m$ 個の方程式を考えます。 +次のように $n$ 個の未知数 $x_1, x_2, x_3, \dots , x_n$ に対して、$n$ 個の方程式を考えます。 + +$$ +\left\{ +\begin{alignat*}{5} + a_{1, 1} & x_1 + {} & a_{1, 2} & x_2 + {} & a_{1, 3} & x_3 + \dots + {} & a_{1, n} & x_n = c_1 \\ + a_{2, 1} & x_1 + {} & a_{2, 2} & x_2 + {} & a_{2, 3} & x_3 + \dots + {} & a_{2, n} & x_n = c_2 \\ + a_{3, 1} & x_1 + {} & a_{3, 2} & x_2 + {} & a_{3, 3} & x_3 + \dots + {} & a_{3, n} & x_n = c_3 \\ + & \cdots\cdot\cdot \\ + a_{n-1, 1} & x_1 + {} & a_{n-1, 2} & x_2 + {} & a_{n-1, 3} & x_3 + \dots + {} & a_{n-1, n} & x_n = c_{n-1} \\ + a_{n, 1} & x_1 + {} & a_{n, 2} & x_2 + {} & a_{n, 3} & x_3 + \dots + {} & a_{n, n} & x_n = c_n +\end{alignat*} +\right. +$$ + +この方程式系に対して、以下を行ったものは元の方程式系と同値です。 + +- 二つの方程式を入れ替える +- ある方程式に 0 でないスカラーを掛ける +- ある方程式に他の方程式のスカラー倍を掛ける + +ここで、この方程式系の拡大係数行列を考えます。 + +$$ +\tilde{A} = (A|\bm{c}) = +\left( +\begin{array}{ccccc|c} + a_{1, 1} & a_{1, 2} & a_{1, 3} & \dots & a_{1, n} & c_1 \\ + a_{2, 1} & a_{2, 2} & a_{2, 3} & \dots & a_{2, n} & c_2 \\ + a_{3, 1} & a_{3, 2} & a_{3, 3} & \dots & a_{3, n} & c_3 \\ + \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ + a_{n-1, 1} & a_{n-1, 2} & a_{n-1, 3} & \dots & a_{n-1, n} & c_{n-1,n} \\ + a_{n, 1} & a_{n, 2} & a_{n, 3} & \dots & a_{n, n} & c_n +\end{array} +\right) +$$ + +基本行列を次のように定義します。 + +- $i$ 行と $j$ 行を入れ替える行列を $P_{i, j}$ +- $i$ 行を $\lambda$ 倍する行列を $Q_{i, \lambda}$ +- $i$ 行に $j$ 行の $\lambda$ 倍を加える行列を $R_{i, j, \lambda}$ + +拡大係数行列に対して、基本行列を左から掛けて基本変形を繰り返すと、行階段行列 $\tilde{B}$ が作れます。 + +$$ +\tilde{B} = (B|\bm{d}) = +\left( +\begin{array}{cccccc|c} + 1 & b_{1,2} & b_{1,3} & \dots & b_{1,n-1} & b_{1,n} & d_1 \\ + & 1 & b_{2,3} & \dots & b_{2,n-1} & b_{2,n} & d_2 \\ + & & 1 & \dots & b_{3,n-1} & b_{3,n} & d_3 \\ + & & & \ddots & \vdots & \vdots & \vdots \\ + & & & & 1 & b_{n-1,n} & d_{n-1} \\ + \text{\huge{0}} & & & & & 1 & d_n +\end{array} +\right) +$$ + +これから、作られる方程式系は次のようになりこれははじめの方程式系と同値です。 + +$$ +\left\{ +\begin{alignat*}{5} + & x_1 + {} & b_{1,2} & x_2 + {} & b_{1,3} & x_3 + \dots + {} & b_{1,n-1} & x_{n-1} + {} & b_{1, n} & x_n = d_1 \\ + & & & x_2 + {} & b_{2,3} & x_3 + \dots + {} & b_{2,n-1} & x_{n-1} + {} & b_{2, n} & x_n = d_2 \\ + & & & & & x_3 + \dots + {} & b_{3,n-1} & x_{n-1} + {} & b_{3, n} & x_n = d_3 \\ + &\dots \\ + & & & & & & & x_{n-1} + {} & b_{n-1,n} & x_n = d_{n-1} \\ + & & & & & & & {} & & x_n = d_n \\ +\end{alignat*} +\right. +$$ + +これで $x_n$ はすぐに求めることができます。さらに、$x_n$ の解を代入すれば、$x_{n-1}$ もすぐに求まります。$x_n$ と $x_{n-1}$ の解を代入すれば、$x_{n-2}$ の解も求まります。これを繰り返していくことで、連立方程式を解くことができます。 + + +$$ 拡大係数行列に対して、基本行列を左から掛けて基本変形を繰り返すと、行階段行列 $\tilde{B}$ が作れます。 @@ -206,7 +282,7 @@ $$ \right. $$ -これで $x_n$ はすぐに求めることができます。さらに、$x_n$ の解を代入すれば、$x_{n-1}$ もすぐに求まります。これを繰り返していくことで、連立方程式を解くことができます。 +これで $x_n$ はすぐに求めることができます。さらに、$x_n$ の解を代入すれば、$x_{n-1}$ もすぐに求まります。これを繰り返していくことで、連立方程式を解くことができます。 --> 実際に具体的な連立方程式を解いてみましょう。 Gauss の消去法を次の方程式系について行ってみます。 @@ -308,13 +384,27 @@ $$ :::info 次のように、前進消去の段階で行簡約行列を作れば、後退代入を行う必要がなくなります。これは、Gauss-Jordan の消去法と呼ばれます。 -Gauss-Jordan の消去法の方が良さそうですが、実は先程のように行簡約行列まで計算しないで途中で止める Gauss の消去法の方が計算量が少し少なくなります。そのため、Gauss の消去法の方がよく使われます。 +Gauss-Jordan の消去法の方が良さそうですが、実は先程のように行簡約行列まで計算しないで途中で止める Gauss の消去法の方が少し計算量が少なくなります。そのため、Gauss の消去法の方がよく使われます。 Gauss-Jordan の消去法で先程の連立方程式を解いてみます。 拡大係数行列に基本変形を繰り返すと、次のような行簡約行列が得られます。 $$ +\tilde{B} = (B|\bm{d}) = +\left( +\begin{array}{cccccc|c} + 1 & & & & & \text{\huge{0}} & d_1 \\ + & 1 & & & & & d_2 \\ + & & 1 & & & & d_3 \\ + & & & \ddots & & & \vdots \\ + & & & & 1 & & d_{n-1} \\ + \text{\huge{0}} & & & & & 1 & d_n +\end{array} +\right) +$$ + + これから、作られる方程式系は次のようになりこれは元の方程式系と同値です。 $$ \left\{ +\begin{alignat*}{6} + & x_1 & & & & & & & & & & = d_1 \\ + & & & x_2 & & & & & & & & = d_2 \\ + & & & & & x_3 & & & & & & = d_3 \\ + & \ldots \\ + & & & & & & & x_{n-1} & & & & = d_{n-1} \\ + & & & & & & & & & x_n & & = d_n \\ +\end{alignat*} +\right. +$$ + + これで連立方程式を解くことができました。