Googleクラスルーム
GeoGebraGeoGebra Classroom

連立方程式の解法〜行列でやると

余因子を使う逆行列

1.余因子と逆行列

連立方程式の問題は、 小学生なら消去算として、 中高では連立方程式として、 教科書や参考書でさんざんやってきているでしょう。 この回では、 連立方程式の解法を 一般化することにチャレンジしよう。 いろいろなやり方がある。 連立方程式を解くときの係数に着目して 行列を使って解の定式化してみよう。 未知数が5個、列ベクトルにして =に対して、 係数が5✕5の要素の行列(5個の行ベクトルa1,a2,a3,a4,a5A= 係数行列Aと列ベクトル積を列ベクトル b=とする。 つまり、連立方程式は Ax=b x=とも、かけるね。 Aのi行目だけを取り出すと、aix=biとなる。 この内積の式を全部で5行並べて書き出すと、普通の連立方程式になるね。 <余因子行列式法> Aの逆行列が出せると、xが出せるはずだ。 Ax=bの両辺に左からA-1をかけると、x=A-1bとなる。 だから、連立方程式を解くことは、Aの逆行列の求め方の問題に置き換えることもできるね。 x=A-1b     j列 A-1=1/det(A){… … …      i行 … (Aji) …        … … …} =1/det(A ) t {{A11,A12,A13,A14,A15}, {A21,A22,A23,A24,A25}, {A31,A32,A33,A34,A35}, {A41,A42,A43,A44,A45}, {A51,A52,A53,A54,A55}} A-1i行j列1/det(A) (Aji) (★転置 [ transpose]していることに注意しよう) Aijは、Aのi行j列の成分aijに対する余因子行列式(Aのi行とj列をぬいた残り要素の行列式に符号つけ) たとえば、3次のときなら、 A={{a11, a12, a13}, {a21, a22, a23}, {a31, a32, a33}} b={b1,b2,b3} det(A)= a11a22a33+a12a23a31+a13a21a32 -( a11a23a32+a12a21a33+a13a22a31) A-1=  =1/det(A) {{+(a22a33-a23a32), -(a21a22-a23a31), +(a21a32-a22a31)}, { -(a12a33-a13a32), +(a11a33-a13a31), -(a11a32-a12a31)}, {+(a12a23-a13a22), -(a11a23-a13a21), +(a11a22-a12a21)}} (例) A={{0, −1, 1}, {1, 2, −1}, {2, 1, 2}}の逆行列は? det(A)= (0+2+1) -(4-2+0)=1 A-1=    t {{+(2・2-1・(-1)), -(1・2-2・(-1)), +(1・2-2・2)} { -(−1・2-1・1), +(0−1・2), -(0ー2・(-1))}, {+((-1)(-1)-2・1), -(0-1・1) , +(0ー1(-1))}} = =

クラメールの公式

2.クラメールの公式

<列ごとおきかえ行列式法> 逆行列を出さずに、直接、解xを計算する解法もある。 クラメールの公式とも言われているね。 xi =|Ai|/det(A)   ( |Ai|はAのi列を列ベクトルbにおきかえた行列式。) 3次のとき、 A={{a11, a12, a13}, {a21, a22, a23}, {a31, a32, a33}} b= det(A) = a11a22a33+a12a23a31+a13a21a32 -( a11a23a32+a12a21a33+a13a22a31) det(A1)= b1a22a33 +a12a23b3 +a13b2a32 -( b1a23a32 +a12b2a33 +a13a22b3) det(A2)= a11b2a33 +b1a23a31 +a13a21b3 -( a11a23b3 +b1a21a33 +a13 b2a31) det(A3)= a11a22b3 +a12b2a31 +b1a21a32 -( a11b2a32 +a12a21b3 +b1a22a31) x == (例) x -2y +z =-6 2x+y +3z =-5 x -y -2z =5 をクラメールの方式で解くと? A= {{1, −2, 1}, {2, 1, 3}, {1, −1, −2}} b= det(A) = (-2)+(-6)+(-2) - (1+8+(-3)) = -10-6=-16 det(A1)= (12)+(-30)+(5) - ( 5+(-20)+18)= -13-3=-16 det(A2)= (10+(-18)+10) -(-5+24+15)=2-34=-32 det(A3)= (5+10+12)- (-6+(-20)+5)=27-(-21)=48 ==

3.掃き出し法

余因子やクラメールは2次・3次くらいなら扱いやすい。 しかし、次数が多くなると扱いにくいし、解が不定のときは使えない。 それに対して、行列と対話しながら、行列を変形を繰り返すことで、 段階的に、解や逆行列を求める方法がある。 行数、列数が多くても実行できるという利点、 次数よりも情報が少ない場合でも、解を表現する手がかりが得られる利点がある。 Ax=bの 係数行列Aと値列ベクトルbを横に並べて合体した[A|b]を拡大係数行列と呼ぼう。 [A|b]が[E|u]に変形できたときに、x=uが解になる。 つまり、 [A|E]が[E|A-1]に変形できたときに, 逆行列A-1が出る。 ・Aの行基本変形は3種ある。  i行とj行入れ替え (Ai↔j)  i行の定数c倍 (Ai(c))  j行の定数c倍を, j行にたす ( Ai←j(c)) Aの部分の対角成分を1にそれ以外を0に掃き出すイメージで 掃き出し法[Sweeping method]。 (例) x -2y +z =-6 2x+y +3z =-5 x -y -2z =5 掃き出し法で解くと? [A|b]= {{1, -2, 1 , - 6}, {2,1, 3 , - 5}, {1, -1, -2, 5}} 1行目の-2倍を2行目にたす、1行目を3行目からひく。 {{1, -2, 1 , - 6}, {0,5, 1 , 7}, {0, 1, -3, 11}} 3行目の2倍を1行目にたし、2行目のー0.2倍を3行目をたす。 {{1, 0, -5 , 16}} {0,5, 1 , 7}, {0, 0, -3.2, 9.6}} 3行目の1/(-3.2)倍。 {{1,0, -5 , 16}, {0,5, 1 , 7}, {0,0,1,-3}} 3行目の5倍を1行目にたし、3行目の−1倍を2行目からひく。 {{1,0, 0, 1 }, {0,5,0 , 10 }, {0,0,1,-3 }} 2行目を0.2倍する。 {{1,0, 0, 1 }, {0,1,0 , 2 }, {0,0,1,-3 }} =[E|x] (x,y,z)=(1,2,3) (例) {{-3, 2, 2}, {-5,4, 3}, {1, -1, -1}}の逆行列は? [A|E]= {{-3, 2, 2, 1, 0, 0}, {-5,4, 3, 0, 1, 0}, {1, -1, -1, 0, 0, 1}} 1行目の-5/3倍を2行目にたす、1行目の1/3倍を3行目にたす。 1行目を-3で割る。 {{1, -2/3, -2/3, -1/3, 0, 0}, {0,2/3, -1/3, -5/3, 1, 0}, {0, -1/3,-1/3, 1/3, 0, 1}} 2行目を1行目にたし、2行目の1/2倍を3行目をたす。 2行目を3/2倍する。 {{1, 0, -1, -2, 1, 0}, {0,1, -1/2, -5/2,3/2,0}, {0, 0,-1/2, -1/2, 1/2, 1}} 3行目の-2倍を1行目にたし、3行目の−1倍を2行目にたす。 3行目を−2倍する。 {{1, 0, 0, -1,0,-2}, {0,1, 0, -2, 1,-1}, {0, 0,1,1, -1, -2}} =[E|A-1] Aの逆行列は、 {{ -1, 0, -2}, { -2, 1, -1}, { 1,-1, -2}}

原点通過と自由度

4.原点を通る3平面の交わり

連立方程式を解くためには、拡大係数行列のAの部分が単位行列になるまで 行の基本変形を続ける必要があったね。 解を求めるためではなく、解があるかどうか、あるとしたら1つか不定かを知りたいときがあるね。 その場合は、上の行から順に0でない係数が1列目、2列目、3列目と階段のようにならぶ 形になるように変形をしていけばよいね。 行の基本変形をして、0になる行を作っていくとき、0以外のある行数を階数[rank]という。 言い換えると、もとの行数から、0だけの行ベクトルの行数を引いたものが階数だね。 そのような変形で簡約化した行列のことを階段行列[step matrix]と呼ぶことがもあるね。 そのときの各行で0でない最初の列の数を主成分といい、主成分が1になるまで基本変形した場合、 その行列を簡約な行列と呼ぶこともある。 n次の正方行列Aで、rankA=nならAは正則。 rankがn未満では正則でない。 n - rankAを自由度[degree of freedom]という。   <同次連立方程式> 拡大係数行列の最後の列が0ベクトルになる連立方程式を同次とか斉次とか呼んだりする Ax=0 のこと。 3D空間では、3つの行は、3つの原点通過平面に対応しているね。 自由度=0だと解は原点x=(x,y,z)=(0,0,0)の自明な、つまらないものだけになる。 自由度が正なら自明でない解がある。自由度1は直線、自由度2は平面に対応するね。 (例)自由度0 A= {{1,−1,1,0}, {3,1,1,0}, {2,2,3,0}} {{1,−1,1,0}, {0,4,−2,0}, {0,0, 3,0}} n=3, rankA=3 自由度 n - rankA = 0 0パラメータ x=(0,0,0)のみ。 3D空間では原点Oのみ。 だから、3行の3平面を表し、3平面が原点で交わっている関係だね。 (例)自由度1 A= {{1,1,-1,0}, {4,3,-1,0}, {6,5,-3,0}} {{1,1,-1,0}, {0,-1,3,0}, {0,0,0,0}} n=3, rankA=2 自由度 n - rankA = 1 1パラメータp x=(-2p,3p,p)のみ。 3D空間では解は原点通過の直線。 だから、3行の3平面を表し、3平面が原点を通る直線で交わっている関係だね。 (例)自由度2 A= {{3,2,-1,0}, {6,4,-2,0}, {-12,-8,4,0}} {{3,2,-1,0}, {0,0,0,0}, {0,0,0,0}} n=3, rankA=1 自由度 n - rankA = 2 2パラメータp,q x=(p,q,3p+2q)のみ。 3D空間では解は原点通過の平面。 だから、3行が見かけ上は3平面を表し、実際は1つの原点を通る平面になる関係だね。 自由度が2だと、自由すぎてつまらない。3平面が1つに重なっているからね。

一般の平面の交わり

5.一般の平面の交わり

<非同次連立方程式> 拡大係数行列の最後の列が0ベクトルでない連立方程式を非同次とか非斉次とか呼んだりする。 Ax=b 3D空間では、各行は原点を通るとは限らない平面に対応している。 係数行列Aのランクr=rank(A)は平面の異なる法線ベクトルの数に対応し、 拡大係数行列A~=[A|b]のランクr~=rank(A~)は平面の法線と通過点でみた事実上の平面数に対応する。 だから、係数行列のランクrより、拡大係数行列のランクr~が大きいと 法線ベクトルが同じで通過点が異なる平面、つまり、平行面が混入する。 だから、共有空間はないので、解なし。 拡大したものとランクが同じなら平行面はないので、解がある。 さらに、 自由度=n - r=0なら、ただ1組の解をもつ。 自由度が正なら不定解。 自由度は同次連立方程式と同じで、解空間の次元(直線、平面、。。。)を表すね。 (例)自由度0 A= {{1,2,-2,2}, {2,5,-1,8}, {-2,-1,11,18}} {{1,2,-2,2}, {0,1,3,4}, {0,0, 1,-5}} 拡大前Aも後A~もランクは3。 n=3, rankA=3 自由度 n - rankA = 0 0パラメータ x=(-46,19,-5)のみ。 3D空間では(例)自由度1 A= {{1,3,-2,1}, {3,10,-3,4}} {{1,3,-2,1}, {0,1,3,1}} 拡大前Aも後A~もランクは2。 n=3, r=rankA=2 自由度 n - r= 1 1パラメータp x=(11p-2,-3p+1,p)のみ。 3D空間では原点を通らない直線。 (例)ランクの不一致 A= {{1,2,-3,2}, {3,6,-9,10}} {{1,2,-3,2}, {0,0,0,4}} 係数のランクr=1で、拡大ランクr~=2 解なし。 3D空間では、2つの平面の法線ベクトルが同じで交点なし。 平行な2平面は交わらない。

一般の直線の交わり

6.演習

・解が1つに決まる連立方程式をできるだけいろいろな方法で解こう。  3x +y +2z= 9 x -2y +z = 8 -2x - y +z= -3 A={{3, 1, 2 }, b={{9}, {1, -2, 1}, {8}, {-2, -1,1}} {-3}} (掃き出し法) 拡大係数行列は[A|b] A={{3, 1, 2, 9 }, {1, -2, 1, 8}, {-2,-1, 1, -3}} 行交換A2↔1 A={{1, -2, 1, 8 },  {3, 1, 2, 9 },   {-2,-1, 1, -3}} A2←1(-3), A3←1(2) A={{1, -2, 1, 8 },  {0, 7, -1, -15 },   {0,-5, 3, 13}} A2←3, A2(1/2) A={{1, -2, 1, 8 },  {0, 1, 1, -1 },   {0,-5, 3, 13}} A3←2(5), A3(1/8) A={{1, -2, 1, 8 },  {0, 1, 1, -1 },   {0, 0 1, 1}} A1←2(2), A1←3(-3) A={{1, 0, 0, 3 },  {0, 1, 1, -1 },   {0, 0 1, 1}} A2←3(-1) A={{1, 0, 0, 3 },  {0, 1, 0, -2 },   {0, 0 1, 1}} (x,y,z)=(3,-2,1) 掃き出し法のいいところは、公式を覚えなくてもよいこと。ただし、基本変形を大量にするため、 そのことによる計算ミスをしやすい。 (余因子) A={{3, 1, 2 }, {1, -2, 1}, {-2, -1,1}} det(A)=3・(-2)・1+ 1・(-1)・2+(-2)・1・1 -{(-2)・(-2)・2+1・1・1+3・(-1)・1}=-6-2-2-{8+1-3}=-10-6=-16 A11=det({-2,-1},{-1,1}}=(-2+1)=-1。A12=-det({1,1},{-2,1})=-(1+2)=-3, A13=det({1,-2},{-2,-1})=(-1-4)=-5, A21=-det({1,2},{-1,1})=-(1+2)=-3, A22=det({3,2},{-2,1})=(3+4)=7, A23=-det({3,1},{-2,-1})=-(-3+2)=1, A31=det({1,2},{-2,1})=(1+4)=5, A32=-det({3,2},{1,1})=-(3-2)=-1, A33=det({3,1},{1,-2})= -6-1=-7 A-1=1/-16tr{{-1, -3, -5}, {-3, 7, 1}, {5, -1, -7}} -1/16{{-1, -3, 5}, {-3, 7, -1}, {-5, 1, -7}} (x,y,z)= A-1{{9},{8},{-3}}=-1/16{ (-1)・9+(-3)・8+5・(-3), (-3)・9+7・8+(-1)・(-3), (-5)・9+1・8+(-7)・(-3)} =-1/16{ -9-24-15, -27+56+3, -45+8+21} =-1/16{-48, 32, -16}  =(3, -2, 1) 余因子法のいいところは、行列式の個数が増えても、次数が下がること。 ー符号を1つおきに交互につけるのを忘れたり、転置するのを忘れるとアウト。 (クラメール) det(A) =3・(-2)・1+ 1・(-1)・2+(-2)・1・1 -{(-2)・(-2)・2+1・1・1+3・(-1)・1}=-6-2-2-{8+1-3}=-10-6=-16 det(A1)=9・(-2)・1+ 8・(-1)・2+(-3)・1・1 -{(-3)・(-2)・2+8・1・1+9・(-1)・1}=-18-16-3-{12+8-9}=-37-11=-48 det(A) =3・(-2)・1+ 1・(-1)・2+(-2)・1・1 -{(-2)・(-2)・2+1・1・1+3・(-1)・1} det(A2) =3・8・1+ 1・(-3)・2+(-2)・9・1 -{(-2)・8・2+1・9・1+3・(-3)・1}=24-6-18-{-32+9-9}=0+32=32 det(A) =3・(-2)・1+ 1・(-1)・2+(-2)・1・1 -{(-2)・(-2)・2+1・1・1+3・(-1)・1}= det(A3) =3・(-2)・(-3)+ 1・(-1)・9+(-2)・1・8 -{(-2)・(-2)・9+1・1・(-3)+3・(-1)・8}=18-9-16-{36-3-24}=-7-9=-16 (x,y,z)=1/-16 { -48, 32, -16}= (3, -2, 1) クラメールのいいところは、行列式の個数が未知数の数だけしかないこと。ただし、bのAへの代入で 行列そのものを変えてしまったもので行列式を計算するためもとの行列と変わったところの確認が大切。

ジオジェブラで逆行列(invert)

ジオジェブラで掃き出し法(ReducedRowEchelonForm)