見出し画像

掃き出し法 MATLAB


掃き出し法

線形代数学において、連立1次方程式の解を求める際に、拡大係数行列を掃き出し法によって、変形し解を求めるやり方がある。これをMATLABで行う方法をみていく。
掃き出し法は、行基本変形を行うことにより、簡約行列を作る方法である。行基本変形は、以下の操作から成り立つ。

  1. ある行を$${k}$$倍($${k \neq 0}$$)する。

  2. ある行にほかの行の$${k}$$倍を加える。

  3. ある行とほかの行を入れかえる。

掃き出し法の具体的な例は、今回の目的外なので、関連記事を参照ください。

MATLABで掃き出し法を行う

MATLABでは、掃き出し法を行うための関数として、rref関数がある。
次のような連立1次方程式を考えてみる。

$$
\left\{ \,
\begin{aligned}
& 2x-y = 0 \\ & x+2y = 5\\
\end{aligned}
\right.
$$

拡大係数行列$${A}$$は、

$$
A = 
\begin{bmatrix}
2 & -1 &0 \\
1 & 2 &5 \\
\end{bmatrix}
$$

となる。

MATLABで掃き出し法を実行するには、以下のコードで実行できる。

A = [2, -1, 0; 1, 2, 5];
solve = rref(A);

結果

図1 掃き出し法の結果

実際に、手計算により掃き出し法を行うとわかるが、図1に示すように解がちゃんと得られている。

自由度を持つ場合と解なしの場合

先の例では、自由度がない場合の掃き出し法を行った、次に方程式が自由度を持つ場合をみていく。

連立1次方程式

$$
\left\{ \,
\begin{aligned}
& x-2y = 0 \\ & 3x-6y = 0\\
\end{aligned}
\right.
$$

拡大係数行列$${A}$$

$$
A = 
\begin{bmatrix}
1 & -2 &0 \\
3 & -6 &0 \\
\end{bmatrix}
$$

コード

A = [1, -2, 0; 3, -6, 0];
solve = rref(A);

結果

図2 自由度がある場合の掃き出し法の結果

方程式が自由度を持つ場合も問題なく実行できていることが分かる。
次に、解なしの場合をみていく。

連立1次方程式

$$
\left\{ \,
\begin{aligned}
& 3x-6y = 0 \\ & 2x-4y = 1\\
\end{aligned}
\right.
$$

拡大係数行列$${A}$$

$$
A = 
\begin{bmatrix}
3 & -6 &0 \\
2 & -4 &1 \\
\end{bmatrix}
$$

コード

A = [3, -6, 0; 2, -4, 1];
solve = rref(A);

結果

図3 解なしの場合の掃き出し法の結果

図3より解なしの場合も問題なく実行できている。

まとめると、rref関数を使うと、連立1次方程式の解の有無にかかわらず、掃き出し法を実行できる。

関連記事

掃き出し法 線形代数学
https://note.com/elemag/n/nd3be47d80c19?sub_rt=share_pw

サイト

https://sites.google.com/view/elemagscience/%E3%83%9B%E3%83%BC%E3%83%A0

この記事が気に入ったらサポートをしてみませんか?