線形代数I/連立一次方程式 の履歴(No.10)
更新培風館「教養の線形代数(五訂版)」に沿って行っている授業の授業ノート(の一部)です。
2.1 連立一次方程式と行列†
連立一次方程式とは†
どういう意味か?
- 連立
- 複数ある
- 一次方程式
- 全ての項の次数が最大でも一次である方程式
「項」とは?
- 項
- +やーで繋がれたもの
なら や の他、 を項と呼ぶことも - 因子
- 積で繋がれたもの
なら や
「次数」とは?
項を構成する因子に「変数が」何個含まれているか
変数
, 定数
「一次」とは?
- 0次
- 一次
- ← 変数が1つ含まれたこういうやつ
- 二次
- 三次
- ……
∴「項の次数が0次か一次の方程式が複数ある」=「連立一次方程式」
連立一次方程式の例†
たとえば、 を解くと、
うまく解けない場合もある†
- 解がたくさん出てくる
- 解が1つもない
解がたくさん出てくる†
を解くと、
任意の
について解になる。
(下の式が上の式のちょうど2倍になっているため、 実効的には式が1つしかないのと同じ事になっている)
解が1つもない†
下の式から上の式の2倍を引くと次式を得る。
どんな を持ってきてもこの式を満たすことはできない。
したがって「解無し」
連立一次方程式の一般形†
変数の数も、式の数も、いくつでも良い。
が変数
が定数(係数)
も定数
変数に使う文字:
変数が3つまでであれば、
が使われ、
変数が4つまでであれば、
が使われる事が多い。
それ以上の時は、 の形で表すとよい。
ベクトル方程式として表す†
係数行列、変数ベクトル、定数ベクトル、をそれぞれ
、
、
と置くと、連立一次方程式は次のベクトル方程式の形に書ける。
方程式の分類†
先の例と同様に、
- 1つだけに決まる
- たくさんある
- 1つもない
のいずれかに分類できる。
なら
だから、解は必ず1つだけ求まるんじゃないの?
というのはちょっと甘い。
- が正則でない場合もあるし
- そもそも が正方行列にならない場合も考えないと
本章の目的†
物理学やその他のシミュレーションでは、 何万、何十万の変数を持つ連立一次方程式を解かなければならない。
- 大きな次数の計算は「行き当たりばったり」では困るので、 「必ず解ける解法」を知りたい
- 方程式の性質を行列を使って理解したい
というのが、以降で扱う内容。
(計算機で必要になる「本当に効率の良い計算方法」はやらないけど)
必ずしも「計算を楽にするため」に勉強しているのではなく、 その後に続くものなので、別に他のやり方でも解けるし などと考えることなく、ここで学ぶ解法をしっかりマスターして欲しい。
ガウスの消去法(定理2.2 変形定理)†
連立一次方程式を解く(普通に)†
を解こう。
∴ より
あるいは、
が解となる。
どうやったか?†
連立方程式の解を変化させずに以下の式変形が可能:
- ある式を定数倍( )する
- ある式を定数倍して別の式に加える
- (ある式を別の式を入れ替える) ←必要なら
与えられた式に上記の操作を繰り返して、最終的に
の形にできれば、解けたことになる。
係数だけ取り出して考える†
のような連立一次方程式に対して、係数行列と定数ベクトルを並べて
を「拡大係数行列」と呼ぶ。
これに、
- ある行を定数倍( )する
- ある行を定数倍して別の行に加える
- ある行を別の行と入れ替える
を行っても、対応する方程式の解は変わらない。
→ これら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列目 =
ただし は任意の実数とすると、
とすれば全ての式を満たす。すなわち、
が一般解となる。
「一般解」とは?
- 一般解
- すべての解がこの形に表せることを保証できる形
- 特殊解
- その値自体は解になるが、他にも解があることを否定しない形
行数が足りない場合も同様†
[Math Conversion Error]
に対して、1列目、2列目を掃き出した結果は次のようになる。
→ 掃き出せた列は軸とした列に1があり、残りは0になっている
3列目、4列目はこれ以上掃き出せない。対応する方程式は、
掃出しのできなかった列に対応する変数を と置けば、
すなわち、
が一般解となる。
うまく行かないケース(3):定数項まで掃き出せてしまう†
について掃出しを進めると、
ここまででおかしな事になっているのだけれど、形式的には4列目も掃き出せてしまう。
対応する方程式は、
この連立方程式(特に3番目の式)は、どんな に対しても成り立たないため、 「解無し」が結論になる。
本来なら、係数部分がすべてゼロで、定数部分が非ゼロの行ベクトルが現れた時点で「解無し」を結論できる。
連立一次方程式の解法†
- 掃出しにより とできれば、解は
- 掃き出せない列があれば、飛ばして計算を続け、最後にその列をパラメータに置く
- 定数項( )を残して他がゼロの行が現れたら「解無し」
により、どんな連立一次方程式も解ける(任意の次数でOK)
注)「解ける」=「一般解が求まる」 or 「解無しを結論する」
逆行列を求める (§2.5 を一部先取り)†
準備†
上記のように を について解けるようになれば、 与えられた正方行列 について逆行列 を求める事もできる。
というのも、
&math( A\bm x_1=\bm e_1=\begin{bmatrix}1\\0\\\vdots\\0\end{bmatrix},\ \ A\bm x_2=\bm e_2=\begin{bmatrix}0\\1\\\vdots\\0\end{bmatrix},\ \ \dots,\ \ A\bm x_n=\bm e_n=\begin{bmatrix}0\\0\\\vdots\\1\end{bmatrix} );
となるような を求め、 それを並べた行列
を考えると、
&math(AX&=\Big[\ \ A\ \ \Big] \begin{bmatrix}\bm x_1&\bm x_2&\dots&\bm x_n\end{bmatrix}\\ &=\begin{bmatrix}A\bm x_1&A\bm x_2&\dots&A\bm x_n\end{bmatrix}\\ &=\begin{bmatrix}\bm e_1&\bm e_2&\dots&\bm e_n\end{bmatrix}\\ &=I);
となる。すなわち、 より
である(かもしれない)。
→ 上記 個の連立方程式の解を並べて書けば、それが逆行列である!(かもしれない)
「かもしれない」の意味は・・・†
逆行列の定義は であったのに、 を確かめていないから、そこが問題。
が正方行列であれば、 から を導けることは後に証明する。
求め方†
( ) という 個の連立方程式を全て解くのは大変だが、例えば を解く手順と を解く手順を並べて書けば
&math( &\begin{bmatrix} &1\ \\ &0\ \\ \hspace{1cm}A\hspace{1cm}&0\ \\ &\vdots\ \\ &0\ \\ \end{bmatrix}\\ &\sim \begin{bmatrix} &\phantom{1\ }\\ &\\ \hspace{1cm}\phantom{A}\hspace{1cm}&\phantom{0}\ \\ &\\ &\\ \end{bmatrix}\\ &\sim \begin{bmatrix} &\phantom{1\ }\\ &\\ \hspace{1cm}\phantom{A}\hspace{1cm}&\phantom{0}\ \\ &\\ &\\ \end{bmatrix}\\ &\hspace{1cm}\vdots ); &math( &\begin{bmatrix} &0\ \\ &1\ \\ \hspace{1cm}A\hspace{1cm}&0\ \\ &\vdots\ \\ &0\ \\ \end{bmatrix}\\ &\sim \begin{bmatrix} &\phantom{1\ }\\ &\\ \hspace{1cm}\phantom{A}\hspace{1cm}&\phantom{0}\ \\ &\\ &\\ \end{bmatrix}\\ &\sim \begin{bmatrix} &\phantom{1\ }\\ &\\ \hspace{1cm}\phantom{A}\hspace{1cm}&\phantom{0}\ \\ &\\ &\\ \end{bmatrix}\\ &\hspace{1cm}\vdots );
となるが、「係数行列の等しい方程式の掃き出し手順は定数項によらず等しくなる」ことに気付く。
← 1列目を掃き出す手順は
の1列目で決まる
← 2列目を掃き出す手順は
の2列目で決まる
…
←
列目(定数列の直前)を掃き出す手順は
の
列目で決まる
← ←
の値に依らない!
これを利用して、次のように 個の方程式を一度に解くことができる。
例 = 教科書P47 2.2(2):
の逆行列を求める。
の右に単位行列 を並べた行列に掃き出し法を適用する。
&math(\Bigg[\ A\ \ \ I\ \ \Bigg]=&\begin{bmatrix} 1&2&3&1&0&0\\ 2&4&5&0&1&0\\ 3&5&6&0&0&1\\ \end{bmatrix}\begin{array}{lll}\bm r_1\\\bm r_2\\\bm r_3\end{array}\\ \sim&\begin{bmatrix} 1&2&3&1&0&0\\ 0&0&-1&-2&1&0\\ 0&-1&-3&-3&0&1\\ \end{bmatrix}\begin{array}{lll}\bm r_1\\\bm r_2-2\bm r_1=\bm r_4\\\bm r_3-3\bm r_1=\bm r_5\end{array}\\ \sim&\begin{bmatrix} 1&2&3&1&0&0\\ 0&-1&-3&-3&0&1\\ 0&0&-1&-2&1&0\\ \end{bmatrix}\begin{array}{lll}\bm r_1\\\bm r_5\\\bm r_4\end{array}\\ \sim&\begin{bmatrix} 1&0&-3&-5&0&2\\ 0&-1&-3&-3&0&1\\ 0&0&-1&-2&1&0\\ \end{bmatrix}\begin{array}{lll}\bm r_1+2\bm r_5=\bm r_6\\\bm r_5\\\bm r_4\end{array}\\ \sim&\begin{bmatrix} 1&0&0&1&-3&2\\ 0&-1&0&3&-3&1\\ 0&0&-1&-2&1&0\\ \end{bmatrix}\begin{array}{lll}\bm r_6-3\bm r_4=\bm r_7\\\bm r_5-3\bm r_4=\bm r_8\\\bm r_4\end{array}\\ \sim&\begin{bmatrix} 1&0&0&1&-3&2\\ 0&1&0&-3&3&-1\\ 0&0&1&2&-1&0\\ \end{bmatrix}\begin{array}{lll}\bm r_7\\-\bm r_8\\-\bm r_4\end{array}\\ &\hspace{2cm}\underbrace{\smash{\hspace{2cm}}}_{\displaystyle A^{-1}} );
&math( \therefore A^{-1}=\begin{bmatrix} 1&-3&2\\
- 3&3&-1\\ 2&-1&0\\ \end{bmatrix} );
上記手順は、例えば 5, 6 列目を隠してみると を掃き出す手順と全く同じであることが分かる。
を掃き出したとき、右端に残るのが であること
&math( \Big[\ A\ \ \bm e_1\ \Big]\sim \Big[\ I\ \ \bm x_1\ \Big] );
と比べれば、
&math( \Bigg[\ A\ \ \bm e_1\ \bm e_2\ \dots\ \bm e_n\ \Bigg] ); を掃き出した結果は
&math( \sim\Bigg[\ I\ \ \bm x_1\ \bm x_2\ \dots\ \bm x_n\ \Bigg]=\Big[\ I\ \ X\ \Big]=\Big[\ I\ \ A^{-1}\ \Big] );
であることが分かる。
例 = 教科書P47 2.2(1):
&math( A=\begin{bmatrix} 7&8\\ 8&9 \end{bmatrix} ); の逆行列を求める。
&math( \Big[A\ I\,\Big]=&\begin{bmatrix} 7&8&1&0\\ 8&9&0&1 \end{bmatrix} \begin{array}{l}\bm r_1\\\bm r_2\end{array}\\ \sim&\begin{bmatrix}
- 1&-1&1&-1\\ 8&9&0&1 \end{bmatrix} \begin{array}{l}\bm r_1-\bm r_2=\bm r_3\\\bm r_2\end{array}\\ \sim&\begin{bmatrix}
- 1&-1&1&-1\\ 0&1&8&-7 \end{bmatrix} \begin{array}{l}\bm r_3\\\bm r_2+8\bm r_3=\bm r_4\end{array}\\ \sim&\begin{bmatrix}
- 1&0&9&-8\\ 0&1&8&-7 \end{bmatrix} \begin{array}{l}\bm r_3+\bm r_4=\bm r_5\\\bm r_4\end{array}\\ \sim&\begin{bmatrix} 1&0&-9&8\\ 0&1&8&-7 \end{bmatrix} \begin{array}{l}-\bm r_5\\\bm r_4\end{array}\\ );
高校で習った公式を用いて検算してみる。
&math( A^{-1}=&\frac{1}{ad-bc}\begin{bmatrix}d&-b\\-c&a\end{bmatrix}\\ =&\frac{1}{7\times 9-8\times 8}\begin{bmatrix}9&-8\\-8&7\end{bmatrix}\\ =&-1\times \begin{bmatrix}9&-8\\-8&7\end{bmatrix}\\ =&\begin{bmatrix}-9&8\\8&-7\end{bmatrix}\\ );
まとめ†
逆行列の求め方:
- を作って左から掃き出していく
- の形になれば、 である。
- 途中で掃き出しができなくなったら、 は正則でない(逆行列は存在しない)
いろいろ証明せずに進んでいる所があるが、次回以降「行列の積」を用いて上記方法を理解し、 証明できるようになる。