こんにちは、おぐえもん(@oguemon_com)です。
前回の記事では、連立方程式が解を持つための条件について解説しました。
今回は、連立方程式と正則行列の間にある関係について扱います。
はじめに念のためおさらいしておきますが、
- 正方行列…行数と列数が同じ行列(正方形みたいな形をした行列)
- 正則行列…掛けると単位行列になる「逆行列」を持つ行列
である点に注意してくださいね!
今回は、特に断りがない限り、行列Aはn次の正方行列とします。
正則行列と連立方程式
連立方程式Ax=bについて、Aを「係数行列」と名付けていました。これは、行列の成分が変数の係数でできているからです。
実は、係数行列Aが正則行列であるかどうかは、連立方程式の解に大きく関係するのです。
正則行列と連立方程式に関する4命題
早速、正則行列や連立方程式などの関係性をまとめましょう。
正則行列と連立方程式
n次の正方行列Aについて、以下の 4 つの命題は同値である。
- Aは正則行列である。
- 連立一次方程式Ax=bが有する解は1組のみである。
- Aの階数について、rankA=nが成り立つ。
- Aは、行基本操作によって単位行列に変換することができる。
「1.→2.」について
Aは正則行列である。
⟹連立一次方程式Ax=bが有する解は 1 組のみである。
基本事項でありながら今まで触れたことが無かった話です。
連立方程式Ax=bについて、係数行列Aが逆行列A−1を持つ場合、左からA−1を掛けることで、
A−1AxExx=A−1b=A−1b=A−1b
が導けます。当然ながらA−1bが解であり、これが全てですので、「1.→2.」が成立します。
「2.→3.」について
連立一次方程式Ax=bが有する解は1組のみである。
⟹Aの階数について、rankA=nが成り立つ。
前回の記事でバリバリやったから省略!
「3.→4.」について
Aの階数について、rankA=nが成り立つ。
⟹Aは、行基本操作によって単位行列に変換することができる。
係数行列に対して階段行列への変換をした後に、右下から同様のことをすれば単位行列になります。
もう少し説明を加えます。
まず、rankA=nが前提にあることから、Aをこんな風に変換できます。
c_100⋮0…c_20⋮0……c_3⋮0………⋱…………⋮c_n
※ただし、c1,…,cnは全部0でない。
抽象的すぎてよく分からないことになっていますが、対角成分より下の成分が全部0である状態です。ちなみに対角成分より上はなんでもokです。対角成分は0以外ならok。
行変換操作で左下エリアを全部0にしたのと同じ要領で、右上エリアも全部0にしましょう。具体的な手順は過去の記事に記した方法を右下から順番に適用させた感じです。
c′_100⋮00c′_20⋮000c′_3⋮0………⋱…000⋮c′_n
※ただし、c′_1,…,c′_nは全部0でない。
最後に、i行目にc′_i1を掛ける作業を全ての行に対して行いましょう。すると、対角成分は全て1になります。
100⋮0010⋮0001⋮0………⋱…000⋮1
これで単位行列になったね!
「4.→1.」について
Aは、行基本操作によって単位行列に変換することができる。
⟹Aは正則行列である。
ここでは少々新しい話が登場します。
今まで直感的なやり方で行基本操作をしてきましたが、行基本操作ってある行列を左から掛けることで、各操作を行うことができるんです!
ここで、行基本操作を改めて掲載します。
行基本操作
- 【操作1】ある行を何倍かにする
- 【操作2】ある行を何倍かにしたものを他の行に加える
- 【操作3】ある2つの行を入れ替える
まずは【操作1】について。この操作を成し遂げてくれるのは、次のような行列です。
【操作1】ある行を何倍かにする
単位行列のα行α列成分をcにした行列を左から掛けると、α行目がc倍されます!
【例】4次正方行列の3行目を2倍したかったら、次の行列を左から掛けよう!
1000010000200001
この場合、積の定義より、3行目が
0×(1行目)+0×(2行目)+2×(3行目)+0×(4行目)=2×(3行目)
になりますね。他の行は同様にして、どれも自身の行の1倍になります。
【操作2】に対応する行列はこんなん↓。
【操作2】ある行を何倍かにしたものを他の行に加える
単位行列のα行β列成分をcにした行列を左から掛けると、β行目のc倍がα行目に加算されます!
【例】3次正方行列の1行目に、3行目の−2倍を加えたかったら、次の行列を左から掛けよう!
100010−201
この場合、積の定義より、1行目が
1×(1行目)+0×(2行目)−2×(3行目)=1×(1行目)−2×(3行目)
になりますね。他の行は同様にして、どれも自身の行の1倍になります。
最後に、【操作3】は次のような行列に対応します。
【操作3】ある2つの行を入れ替える
単位行列のα行β列成分とβ行α列成分を1にして、α行α列成分とβ行β列成分0にした行列を左から掛けると、α行目とβ行目が入れ替わります!
【例】5次正方行列の2行目と4行目を入れ替えたかったら、次の行列を左から掛けよう!
1000000010001000100000001
この場合、積の定義より、
2行目4行目==1×(4行目)1×(2行目)
になるのはokですよね?
どれも一般的な話の証明は、教科書を見るなり自分で考えるなりしてください(ここでは、具体例から証明方法を示唆しました)
結局のところ、行基本操作を繰り返す作業というのは、これらの行列を左からひたすら掛けているのと同じなんですね。
ゆえに、「Aに行基本操作を繰り返すと単位行列になる」というのは、Aの左からある行列の積を掛け合わせると単位行列が得られる、すなわちAが正則行列であることに他なりません。
まとめ
以上で、「1.→2.」「2.→3.」「3.→4.」「4.→1.」の成立が判りました。命題の論理関係が一巡したので、どれか1つでも成り立てば、全てが成立することになり、よって4つの命題は同値であると言えます。
行基本操作を繰り返して逆行列をゲットしよう!
行基本操作を繰り返して正方行列を単位行列まで持っていけば、それまでの操作に対応する行列の積は、係数行列の逆行列になりました。この性質を利用して逆行列をゲットしよう!!
…が、ご察しの通り、行基本操作をする度に対応する行列を引っ張り出すのは面倒です。
そこで、もっと賢い方法が編み出されました。
行基本操作で逆行列を導く
単位行列になるまで繰り出した行基本操作に対応する行列の積をPとすると、PA=Eになることが判りました。
これを利用すると、係数行列Aと単位行列Eを横にくっつけた行列[A E]について、
P[A E]=[PA PE]=[E P]
が成立します。(左辺と中辺が同じ理由が判らない人は、ブロック行列の計算方法に関する記事を見直してね)
つまり、行列[A E]に行基本操作を繰り返して、左半分が単位行列Eになったら、その右半分はPすなわち逆行列になリます!!
これなら、行基本操作に対応する行列のことを考えなくても逆行列が求められますね!
それでは実際にやってみましょう。
今回のターゲットは次の行列です。
A=(3457)
最初なので簡単な行列です^^;
まずは、Aの右に単位行列Eをくっつけましょう。
[A E]=(34571001)
今回は、途中式が分数でえげつないことにならないように、「階段行列の作り方」で扱った方法をあえて取らず、我流でゴリゴリ押し進めてみます。
それでは冒険スタートです!
①2 行目に対して、1 行目の-1 倍を加えます。
(31521−101)
②1 行目に対して、2 行目の-3 倍を加えます。
(01−124−1−31)
③2 行目に対して、1行目の 2 倍を加えます。
(01−1047−3−5)
④1 行目を-1 倍してから、1行目と 2 行目を入れ替えましょう。
(10017−4−53)
⑤ これで、行列の左半分が単位行列Eになりました。ということは、右半分がAの逆行列となります。
A−1=(7−4−53)
計算していただければ判りますが、Aの左右どちらから掛けても、積が単位行列Eになりました。
(3457)(7−4−53)(7−4−53)(3457)==(1001)(1001)
ちなみに、行基本操作をゴリゴリ進めても、左半分が単位行列になりそうもない場合があります。この時は「逆行列なし」ですので、諦めましょう。
必死に頑張ってそんな結末を迎えるのが恐ければ、まずは階段行列を作ってみて、rankA=nが成立するか確かめるのも手です。