【連立方皋匏線】消去法ず階段行列

こんにちは、おぐえもん(@oguemon_com)です。

今たでの蚘事で行列の基本を孊習したしたので、これからは行列をガンガン䜿っお色々考えおいきたいず思いたす。

たずは、行列ず深い結び぀きを持぀「連立1次方皋匏」に぀いお䜕回かに分けお議論を展開しおいきたす。

解法の鉄板「消去法」

䞭孊校のおさらいですこれ、どうやっお解きたすか

{5x−2y=5(1)x+y=8(2)\begin{aligned} \left\{ \begin{array}{rclc} 5x-2y&=&5 &(1) \\ x+y&=&8 &(2) \end{array} \right. \end{aligned}

倚分、匏の䞡蟺にある数を掛けたり、互いの匏を足し合わせたりしお、倉数の数を枛らしおいきたすよね

この匏だず、こんな感じ。

ステップ1(2)を−5-5倍したものを(1)に足し合わせたす぀たり5倍したものを匕く

{5x−2y−5(x+y)=5−5∗8(1)x+y=8(2)\begin{aligned} \left\{ \begin{array}{rclc} 5x-2y-5(x+y)&=&5-5*8 &(1)\\ x+y&=&8 &(2) \end{array} \right. \end{aligned}

ステップ2(1)の䞡蟺に−17-\frac{1}{7}を掛けたす=−7-7でわる

{−7y∗(−17)=−35∗(−17)(1)x+y=8(2)\begin{aligned} \left\{ \begin{array}{rclc} -7y*(-\frac{1}{7})&=&-35*(-\frac{1}{7}) &(1)\\ x+y&=&8 &(2) \end{array} \right. \end{aligned}

ステップ3(1)ず(2)で入れ替えたす。

{x+y=8(1)y=5(2)\begin{aligned} \left\{ \begin{array}{rclc} x+y&=&8 &(1)\\ y&=&5 &(2) \end{array} \right. \end{aligned}

ステップ4(1)にy=5y=5を代入する

{x+5=8(1)y=5(2)\begin{aligned} \left\{ \begin{array}{rclc} x+5&=&8 &(1)\\ y&=&5 &(2) \end{array} \right. \end{aligned}

→答えずしお「x=3,y=5x=3,y=5」が導かれお終了。

さお、こうやっお、

  1. ある方皋匏を䜕倍かにする
  2. ある方皋匏を䜕倍かにしたものを他の方皋匏に加える
  3. ある2぀の方皋匏を入れ替える

ずいう地道な操䜜をひたすら繰り返しお、倉数を消しおいきたした。

このように、䞊の3操䜜を駆䜿しお連立方皋匏を簡単にしおいく方法を「消去法」ず蚀いたす。

ここで、ステップ3の時点でyyの倀が刀明しおおり、あずは思考停止で代入しおいくだけずいう状況ですので、消去法では、ステップ3のような状況次匏みたいな状況を目指しお頑匵るこずになりたす。

{x+y=8(1)y=5(2)\begin{aligned} \left\{ \begin{array}{rclc} x+y&=&8 &(1)\\ y&=&5 &(2) \end{array} \right. \end{aligned}

ステップ3の匏は、䞋に行くほど倉数の個数が少なく、巊蟺がギザギザの階段状になっおいるのが特城です。この特城は埌ほど重芁になっおきたす。

階段行列

さお、これからは連立方皋匏を行列に芋立おお蚈算しおいきたす。

前に觊れたように、

{5x−2y=5x+y=8\begin{aligned} \left\{ \begin{array}{rcl} 5x-2y&=&5 \\ x+y&=&8 \end{array} \right. \end{aligned}

は、次のような行列ずベクトルの積の圢に倉換できたした。

(5−211)(xy)=(58)\left( \begin{array}{cc} 5 & -2 \\ 1 & 1 \end{array} \right) \left( \begin{array}{c} x \\ y \end{array} \right)= \left( \begin{array}{c} 5 \\ 8 \end{array} \right)

ここで、次のAAを係数行列ず呌びたす。その名の通り、連立方皋匏の係数をたずめた行列です。

A=(5−211),b=(58)A=\left( \begin{array}{cc} 5 & -2 \\ 1 & 1 \end{array} \right), \boldsymbol{b}=\left( \begin{array}{c} 5 \\ 8 \end{array} \right)

そしお、定数項をたずめたベクトルb\boldsymbol{b}を係数行列AAの右偎にくっ぀けた

[A b]=(5−25118)[A \ \boldsymbol{b}]=\left( \begin{array}{ccc} 5 & -2 & 5\\ 1 & 1 & 8 \end{array} \right)

を拡倧係数行列ず呌びたす。これからは、連立方皋匏に察応する拡倧係数行列に぀いお考えるこずになりたす。

連立方皋匏を解くにあたっお、拡倧係数行列に察しお次に掲げる操䜜行基本操䜜を行うこずで、前項のステップ3のような状況を䜜りたす。

行基本操䜜
  1. ある行を䜕倍かにする
  2. ある行を䜕倍かにしたものを他の行に加える
  3. ある2぀の行を入れ替える

連立方皋匏を解くために、チマチマやっおきた操䜜ず同じですね。行列に察しおチマチマず行基本操䜜を繰り返すず、やがお次のような圢をした行列になりたす。

(118015)\left( \begin{array}{ccc} 1&1&8 \\ 0&1&5 \end{array} \right)

これ、さっき出おきた消去法の「ステップ3」に䌌おたすよね

ここでのポむントは、行を䞋るほど、巊偎にある0の個数が倚くなり、ギザギザの階段状になっおいる点です。行列のサむズが小さ過ぎお階段状ず蚀えるか埮劙ですが 

このような行列を階段行列ず呌ぶこずにしたす。

階段行列ず階数(rank)

行番号が増えるほど巊端から連続する0の数が増える行列のこずを階段行列ずいう以䞋の行列AAがその䟋。

A=(0054932300001342000003100000000300000000)A=\left( \begin{array}{cccccccc} 0&0&5&4&9&3&2&3 \\ 0&0&0&0&1&3&4&2 \\ 0&0&0&0&0&3&1&0 \\ 0&0&0&0&0&0&0&3 \\ 0&0&0&0&0&0&0&0 \\ \end{array} \right)

たた、階段行列においお、0でない成分が存圚する行の数を階数ずいい、AAの階数をrankA{\rm rank}Aず曞く䞊の䟋においおrankA=4{\rm rank}A=4である。

ただし、AAが階段行列でない堎合は、AAに察しお行基本操䜜を行っお埗られた階段行列の階数のこずをAAの階数rankA{\rm rank}Aをいう。

ここで、階段行列は、ある1぀の連立方皋匏に察しお無数のパタヌンがあるこずに泚意ですただし、階段行列のパタヌンこそ無数にあれど、その階数はみんな同じなので、今埌の議論に支障はありたせん階数が同じっお話は今埌どこかの蚘事で扱いたす。

䟋えば、先ほどの行列

(118015)\left( \begin{array}{ccc} 1&1&8 \\ 0&1&5 \end{array} \right)

の階数は2です。

A=(549323012456012313000143)A=\left( \begin{array}{cccccc} 5&4&9&3&2&3 \\ 0&1&2&4&5&6 \\ 0&1&2&3&1&3 \\ 0&0&0&1&4&3 \end{array} \right)

こんな行列はどうでしょうかっお

バカダロり2行目ず3行目で巊から䞊ぶ0の数が被っおるじゃねえか

こんなのは、行基本操䜜が甘い蚌拠です。ちょこちょこっずいじっお 

A′=(549323012313000143000000)A'=\left( \begin{array}{cccccc} 5&4&9&3&2&3 \\ 0&1&2&3&1&3 \\ 0&0&0&1&4&3 \\ 0&0&0&0&0&0 \end{array} \right)

これで初めお階段行列ずなりたす。ちなみに階数は3です。

たた、零行列の階数は0ずいうこずになっおいるこずも芚えおおきたしょう。

階段行列の䜜り方

䞀芋難しそうですが、あるルヌルに埓っお行基本操䜜を繰り返せば必ず階段行列が䜜れたす。

念のため、行基本操䜜を再掲したす。

行基本操䜜
  • 【操䜜1】ある行を䜕倍かにする
  • 【操䜜2】ある行を䜕倍かにしたものを他の行に加える
  • 【操䜜3】ある2぀の行を入れ替える

さお、䜜っおいきたしょう

階段行列の䜜り方
A=(a∗11a∗12
a_1na∗21a∗22
a_2n⋮⋮⋱⋮a∗m1a∗m2
a_mn)A=\left( \begin{array}{cccc} a*{11}&a*{12}&\ldots&a\_{1n} \\ a*{21}&a*{22}&\ldots&a\_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a*{m1}&a*{m2}&\ldots&a\_{mn} \\ \end{array} \right)

に察しお行基本操䜜を繰り返しお階段行列を䜜りたす。

【ステップ1】

a_11=0a\_{11}=0ならば、1列目にある他の成分の䞭から0でないものを探し、その行ず1行目をチェンゞしたしょう操䜜3。

1列目の成分が党郚00でどうしようも無いならステップ3ぞ進みたしょう。

【ステップ2】

ステップ1でa_11≠0a\_{11} \neq 0になったら、

(i行目)−(1行目)×1a11ai1(i\text{行目})-(1\text{行目}) \times \frac{1}{a_{11}}a_{i1}

を2行目からnn行目最終行たでの党おに察しお行いたしょう操䜜2。これで、a∗21a*{21}〜a∗n1a*{n1}が党お0になりたす。

【ステップ3】

ステップ2をこなしたら(1)の圢を行列が出来䞊がり、ステップ2を飛ばした堎合は(2)のようになったず思いたす。

(1) (a∗11a∗12
a_1n0a11′ a1(n−1)′⋮⋮⋱⋮0a(m−1)1′ a(m−1)(n−1)′)(1) \ \left( \begin{array}{cccc} a*{11}&a*{12}&\ldots&a\_{1n} \\ 0&a'_{11}&\ldots&a'_{1(n-1)} \\ \vdots&\vdots&\ddots&\vdots \\ 0&a'_{(m-1)1}&\ldots&a'_{(m-1)(n-1)} \end{array} \right) (2) (0a∗11
a∗1(n−1)0a21′′ a2(n−1)′′⋮⋮⋱⋮0am1′′ am(n−1)′′)(2) \ \left( \begin{array}{cccc} 0&a*{11}&\ldots&a*{1(n-1)} \\ 0&a''_{21}&\ldots&a''_{2(n-1)} \\ \vdots&\vdots&\ddots&\vdots \\ 0&a''_{m1}&\ldots&a''_{m(n-1)} \end{array} \right)

(1)なら、郚分的な行列

A′=(a11′ a1(n−1)′⋮⋱⋮a(m−1)1′ a(m−1)(n−1)′)A'=\left( \begin{array}{ccc} a'_{11}&\ldots&a'_{1(n-1)} \\ \vdots&\ddots&\vdots \\ a'_{(m-1)1}&\ldots&a'_{(m-1)(n-1)} \\ \end{array} \right)

を、

(2)なら、郚分的な行列

A′′=(a∗11
a∗1(n−1)a21′′ a2(n−1)′′⋮⋱⋮am1′′ am(n−1)′′)A''=\left( \begin{array}{ccc} a*{11}&\ldots&a*{1(n-1)} \\ a''_{21}&\ldots&a''_{2(n-1)} \\ \vdots&\ddots&\vdots \\ a''_{m1}&\ldots&a''_{m(n-1)} \\ \end{array} \right)

に぀いお、再びステップ1の䜜業を行い、これを繰り返す高々列数分の繰り返しこずで階段行列が完成したす。

連立方皋匏から拡倧係数行列[A b][A \ \boldsymbol{b}]を䜜っお、それに察しお行基本操䜜を次々に展開するこずで、階段行列を䜜る。やっおいるこず自䜓は、今たでの解き方ず倉わらないのですが、行列に芋立おた䞊で「階数」ずいう抂念を導入するこずで、連立方皋匏を解くこずができるだけでなく、連立方皋匏の解の性質などに぀いおも考えるこずができるようになりたす。

次回では、階段行列や階数を絡め぀぀、連立方皋匏の解に関する性質を玐解いおいきたす。

▲ トップぞ戻る