ガウスの消去法(定理2.2 変形定理)†
連立一次方程式はガウスの消去法を用いることで必ず解くことができる。
本項目の目的†
物理学やその他のシミュレーションでは、
何万、何十万の変数を持つ連立一次方程式を解かなければならない。
- 大きな次数の計算は「行き当たりばったり」では困るので、
「必ず解ける解法」を知りたい
- 方程式の性質を行列を使って理解したい
というのが、以降で扱う内容になる。
(計算機で必要になる「本当に効率の良い計算方法」はやらない)
「ガウスの消去法」は一次連立方程式を解くための1つの方法ではあるが、
これは必ずしも「計算を楽にするため」に勉強しているのではなく、
「後の話を理解するために必要だから」勉強しているものなので、
「別に他のやり方でも解けるし」などと考えることなく、
この解法をしっかりマスターして欲しい。
連立一次方程式を解く(普通に)†
を解こう。
∴
より
あるいは、
が解となる。
どうやったか?†
連立方程式の解を変化させずに以下の式変形(同値変形)が可能:
- ある式を定数倍(
)する
- ある式を定数倍して別の式に加える
- (ある式と別の式との順番を入れ替える) ←必要なら
与えられた式に上記の操作を繰り返して、最終的に
の形が得られれば、解けたことになる。
係数だけ取り出して考える†
のような連立一次方程式に対して、係数行列と定数ベクトルを並べた
を「拡大係数行列」と呼ぶ。
これに、
- ある行を定数倍(
)する
- ある行を定数倍して別の行に加える
- ある行を別の行と入れ替える
を行っても、対応する方程式の解は変わらない。
→ これら3つは「(行に対する)基本変形」と呼ばれる
したがって、拡大係数行列に基本変形を繰り返すことで、
のように 「単位行列と(始めと異なる)定数ベクトルが並ぶ形」 にできれば、
これは、
のような式に対応し、
が解となる。
(必ずこううまく行くとは限らないけど、うまく行った=解けた、である)
繰り返しになるが、「別に係数だけを取り出した行列を作らなくても計算できるし、その方が分かりやすい!」
と思っても、ここで説明される方法の通りの手順で解けるようになるよう練習して欲しい。
なぜならここで学ぶ「解き方」は必ずしも「楽に解く」ためのものではなく、
連立一次方程式の持つ性質を理解する助けとするためのものだから。
実際にやってみる → ガウスの消去法(掃出し法)†
先の問題を、拡大係数行列を変形する方法で解いてみる。
ここで採用する方法は「ガウスの消去法」あるいは「掃出し法」と呼ばれる。
より、拡大係数行列は
まず、1列目を目的の形(単位行列)と一致させたい。
そこで、(1, 1) 要素を軸にして1列目を掃き出す
(この「軸にする」「掃き出す」は専門用語)。
具体的には、(1, 1) 要素が1なので、1行目の3倍を2行目から引き、1行目の2倍を3行目に足せば、(2, 1)要素と(3, 1)要素をゼロにできる。
行列の右側に出てくる
などは、教科書と同じ書き方で、直前の行列の
行目の行ベクトルを
と書いている。あくまでメモ代わりだが、書いておくと計算間違いなどを防ぎやすい。
これで1列目を目的の形にできた。次は2列目。
(2, 2) 要素を軸に掃き出したいが、他の行が7で割り切れないので、まずは2行目に 1/7 を掛けて (2, 2) 要素を1にしておく。
そして、(2, 2) 要素を軸に2列目を掃き出す。ここでは1行目に2行目の2倍を、3行目に2行目の−2倍を加えればよい。
(3, 3) 要素は1なので、そのまま軸にして3列目を掃き出す。1行目に3行目をそのまま、2行目には2倍して加えればよい。
この形が求める物であり、
という方程式に対応する。
「式の解を変えない変形」でこの結果を得たのであるから、これは元の式の解でもある。
すなわち、
あるいは、
が与式の解となる。
解答の書き方†
問:
を解け。
解答:
拡大係数行列に行に対する基本変形を適用する。
したがって、
より、解は
注意点†
上記では基本変形を表すのに "〜" を使っている。
ここでの "〜" は同じ解を持つ連立方程式を表す行列であるという「同値関係」(これは専門用語なので余力があれば各自調べること)を表わす。
基本変形の前後で行列同士が等しいわけではないため "=" で繋いではならない。
ガウスの消去法:復習†
上で使った方針は、
- 左側の列から順に、対角成分を軸にして掃き出す
- 最後が
の形になれば解けたことになる
この方法は、任意の大きさの連立一次方程式に適用可能。
しかし、これだけではうまく行かないケースがある。
うまく行かないケース(1):行の入れ替えが必要†
基本変形による計算途中で、以下のように軸に取るべき要素がゼロになってしまう場合がある。
次に (2, 2) を軸に掃出しをしたいが、(2, 2) がゼロなので掃出しができない。
ここでは、他の行と入れ替えることで掃出しが行える。(2行目と3行目を入れ替える)
うまく行かないケース(2):軸に取るべき要素がない†
入れ替えようとしてもできない場合がある。
たとえば、計算途中で次のようになった場合、2列目を掃き出せない
→ (2, 2) 要素がゼロだし、それより下にも要素がない
その場合には、仕方がないのでその列は飛ばして、次列以降の掃き出しを続ける。
4列目も掃き出せないのでこれで終了。
- 1,3列目:掃き出せた = ある行に1を残して残りは全て0になっている
- 2,4列目:掃き出せなかった = ごちゃごちゃなまま
これに対応する方程式は、
3列目の
は、任意の
に対して成立するため、
あってもなくても同じであるが、ここでは確認のため明示している。
このような場合、「掃出しのできなかった列に対応する変数をパラメータに置く」のが良い
→ ここでは2列目 =
ただし
は任意の実数とすると、
とすれば全ての式を満たす。すなわち、
が一般解となる。
「一般解」とは?
- 一般解
- すべての解がこの形に表せることを保証できる形
- 特殊解
- その値自体は解になるが、他にも解があることを否定しない形
行数が足りない場合も同様†
に対して、1列目、2列目を掃き出した結果は次のようになる。
→ 掃き出せた列は軸とした列に1があり、残りは0になっている
3列目、4列目はこれ以上掃き出せない。対応する方程式は、
掃出しのできなかった列に対応する変数を
と置けば、
すなわち、
が一般解となる。
うまく行かないケース(3):定数項まで掃き出せてしまう†
について掃出しを進めると、
ここまででおかしな事になっているのだけれど、形式的には4列目も掃き出せてしまう。
対応する方程式は、
この連立方程式(特に3番目の式)は、どんな
に対しても成り立たないため、
「解無し」が結論になる。
本来なら、係数部分がすべてゼロで、定数部分が非ゼロの行ベクトルが現れた時点で「解無し」を結論できる。
連立一次方程式の解法†
- 掃出しにより
とできれば、解は
- 掃き出せない列があれば、飛ばして計算を続け、最後にその列をパラメータに置く
- 定数項(
)を残して他がゼロの行が現れたら「解無し」
により、どんな連立一次方程式も解ける(任意の次数でOK)
注)「解ける」=「一般解が求まる」 or 「解無しを結論する」
注2)口を酸っぱく繰り返しになるが、この方法は必ずしも「効率的な方法」を求めた物ではないが、
「どんな連立方程式もこの方法で必ず解ける」という事実が後で重要になる。
後のためにもガウスの消去法は完璧にマスターしておくように。
逆行列を求める (§2.5 を一部先取り)†
上記のように
を
について解けるようになれば、
任意の正方行列
について逆行列
を求める事もできる。
というのも、
となるような
を求め、
それを並べた行列
を考えると、
となる。すなわち、
より
である(かもしれない)。
→ 上記
個の連立方程式の解を並べて書けば、それが逆行列である!(かもしれない)
「かもしれない」の意味は・・・†
逆行列の定義は
であったのに、
を確かめていないから、そこが問題。
が正方行列であれば、
から
を導けることは後に証明する。
求め方†
(
) という
個の連立方程式を全て解くのは大変だが、例えば
を解く手順と
を解く手順を並べて書けば
となるが、「係数行列の等しい方程式の掃き出し手順は定数項によらず等しくなる」ことに気付く。
← 1列目を掃き出す手順は
の1列目で決まる
← 2列目を掃き出す手順は
の2列目で決まる
…
←
列目(定数列の直前)を掃き出す手順は
の
列目で決まる
← ←
の値に依らない!
これを利用して、次のように
個の方程式を一度に解くことができる。
例 = 教科書P47 2.2(2):
の逆行列を求める。
の右に単位行列
を並べた行列に掃き出し法を適用する。
上記手順は、例えば 5, 6 列目を隠してみると
を掃き出す手順と全く同じであることが分かる。
を掃き出したとき、右端に残るのが
であること
と比べれば、
を掃き出した結果は
であることが分かる。
例 = 教科書P47 2.2(1):
の逆行列を求める。
高校で習った公式を用いて検算してみる。
まとめ†
逆行列の求め方:
-
を作って左から掃き出していく
-
の形になれば、
である。
- 途中で掃き出しができなくなったら、
は正則でない(逆行列は存在しない)
いろいろ証明せずに進んでいる所があるが、次回以降「行列の積」を用いて上記方法を理解し、
証明できるようになる。