Comments
Transcript
第11回数学演習 1 11 連立 1 次方程式 (その 1:一意解が存在する場合)
第 11 回数学演習 1 11 連立 1 次方程式 (その 1:一意解が存在する場合) 目的:これから,連立1次方程式を扱っていく。いままで漫然と解を求めていた方法を行列を使っ て見直し,一定の規則的な手順 1 による解法を見出す。このような数学的思考法をアルゴリズム といい,情報化社会の中ではきわめて重要な考え方である。今回は,そのなかでも解が存在して なおかつ一意的であるという特別な場合を取り扱う。次回以降,より一般的な連立 1 次方程式を 取り扱う。 11.1 行列の基本変形 行列を用いる解法を考える前に,まず,連立方程式の解法について簡単に復習し,システマティッ クに解けるよう方法を整理しよう。例として,次の方程式 2x + 3y + z = −2 (P1) x + 2y + z = 1 x + y + 2z = 3 をとりあげる。この方程式の解法として,消去法や代入法があるが,以下では消去法によって方 程式を解く。消去法でを解を求める際には,方程式の両辺を定数倍したり,方程式同士を足し引 きする。それらの操作は,次のような 3 つの基本操作としてまとめることができる。 (消去法における基本操作) I 2 つの方程式を入れ替える。 II ある方程式に 0 でない数をかけて他の方程式に加える。 III ある方程式に 0 でない数をかける。 今から,この3つの操作を実行して解を求める。このとき,どの操作を使ったかを明確にしたい ので,第 n 式を en と記述することにして,例えば, 「第 2 式に第 1 式の −2 倍を加える」ことを, 「e2 − 2e1 」などと記述することにする。漫然と解くのではなく,以下のような明確な方針を持っ て方程式に操作を行っていく。 変数の消去の方針:第 1 式は x を残し,他の式は x を消す。第 2 式は y を残し,他の式は y を消 す。第 3 式は z を残し,他の式は z を消す…。 (step 1:変数 x を消す準備) 2x + 3y + z = −2 x + 2y + z = 1 x + y + 2z = 3 e1 と e2 の交換 −−−−−−−−−→ (step 3:第 2 式の y に注目。係数を 1 にする。) x + 2y + z = 1 −y − z = −4 −y + z = 2 (−1)e2 −−−−→ (step 2:第 1 式以外の x を消す) x + 2y + z = 1 2x + 3y + z = −2 x + y + 2z = 3 e −2e 2 1 −− −−→ e3 −e1 (step 4:第 2 式以外の y を消す) x + 2y + z = 1 y+z =4 −y + z = 2 1 e −2e 1 2 −− −−→ e3 +e2 ここでいう “一定の” という意味は,考えている連立方程式の未知変数の個数や,方程式の本数などに関係なくど んな方程式に対しても応用可能なもの,という意味である。 1 (step 5:第 3 式の z に注目。係数を 1 にする) x − z = −7 (1/2)e 3 y + z = 4 −−−−→ 2z = 6 (step6:第 3 式以外の z を消す) x − z = −7 y+z = 4 z= 3 e +e 3 −−1−−→ e2 −e3 (結果) x = −4 y =1 z =3 よって,解が得られた。 上の連立方程式の解法を行列を使って書き直してみよう。方程式 (P1) の係数を表す行列 (係数行 列という) と,方程式の変数,および右辺の値を,それぞれ −2 2 3 1 x A = 1 2 1 , x = y , b = 1 3 1 1 2 z と表すと,方程式 (P1) は行列を用いて Ax = b と表される 2 。この方程式を解くために,係数行列 A と右辺を並べて出来る行列 2 3 1 −2 (A b)= 1 2 1 1 1 1 2 3 を考える。この行列を拡大係数行列という。先ほどの方程式 (P1) の解法(step1 ∼ step6)を思い 返すと,実は,解く作業においては,変数はあまり重要ではなく,方程式の係数と右辺にだけ注 目すればよいということが分かる。これらの情報を抜き出したものが,拡大係数行列である。先 ほどの方程式に対して行われた操作は,拡大係数行列の変形と考えることができる。 実際に,step1 ∼ step6 を拡大行列の変形で書き表そう。なお,変形が分かりやすいように,拡大 係数行列の係数行列と右辺の間に破線を入れた。また,ri は i 行を表す。 (step1:(1, 1) 成分を 1 にする為) 2 3 1 −2 r1 と r2 の交換 1 2 1 1 −− −−−−−−−−→ 1 1 2 3 (step2:(1, 2)(1, 3) 成分を 0 にする) 1 2 1 1 r2 −2r1 2 3 1 −2 − −−−→ r3 −r1 1 1 2 3 (step4:(1, 2)(1, 3) 成分を 0 にする) 1 2 1 1 r1 −2r2 0 1 1 4 −− −−→ r3 +r2 0 −1 1 2 (step5:(3, 3) 成分を 1 にする。 1 0 −1 −7 (1/2)r3 0 1 1 4 −−−−−→ 0 0 2 6 2 (step3:(2, 2) 成分を 1 にする) 1 2 1 1 (−1)r2 0 −1 −1 −4 − −−−−→ 0 −1 1 2 (step6:(3, 1)(3, 2) 成分を 0 にする) 1 0 −1 −7 r +r3 0 1 1 4 −−1−−→ r2 −r3 0 0 1 3 実際に左辺を計算してみれば,列ベクトルについての等式が得られる。両辺の成分を比べると,税所に与えられた 連立方程式が得られる。 2 (結果) 1 0 0 1 0 0 0 0 1 −4 1 3 答え x = −4, y = 1, z = 3 このようにすることで,方程式 (P1) を解くことを,拡大係数行列を変形することに帰すことがで きた! 上で行った行列の変形は,消去法の方程式に関する操作に対応している。方程式の基本操作と 同様に,ここで行った変形は次の基本変形としてまとめることができる。 (行列の基本変形) I 2 つの行を入れ替える。 II ある行に 0 でない数をかけて他の行に加える。 III ある行に 0 でない数をかける。 注意:step2 → 3,step4 → 5,step6 →(結果),の部分を見ると対角線状に 1 が並んでいくように 変形が進められていることが分かるだろう。このようなある一定の規則によって進められる手順 をアルゴリズムと言い,特に計算機を駆使する際に,不可欠なものである。 注意:行列の基本変形では,列に対する同様の操作はできない。行列式の計算の際の変形と混同 しがちであるので要注意。 11.2 解を持つ連立一次方程式と掃き出し法 前小節で,拡大係数行列を定義して,それを変形することによって方程式を解いた。これをま とめると,次のような方法で行列を変形すれば,方程式の解が導出されることが分かる。 拡大係数行列の変形の方針:破線より左側の部分が単位行列になるように変形する。つまり,最 終目標は 1 0 0 b̃1 0 1 0 b̃2 0 0 1 b̃3 という形にする。ここで,b̃i は変形した結果現れるある数で,これが方程式の解になる。 3 拡大係数行列の変形の手順: (step 1) 1 行での計算 (1) (1, 1) 成分の値を 1 にしたい. 初めからそうなっていない場合は,1 列の第 1 成分より 下の成分から相応しい成分を選び,その成分がある行と 1 行を入れ替える。もしどの 行にもなければ,どこかの行を定数倍して,係数が 1 になるようにする 3 。 (2) 1 列の第 1 成分を 1,それ以外の成分を 0 にする。 (step 2) 2 行での計算 (1) (2, 2) 成分の値を 1 にしたい,初めからそうなっていない場合は,2 列の第 2 成分より 下の成分から相応しい成分を選び 4 ,その成分がある行と 2 行を入れ替える。もしどの 行にもなければ,(2 行以下の) どこかの行を定数倍して,係数が 1 になるようにする。 (2) 2 列の第 2 成分を 1,それ以外の成分を 0 にする。 .. . (step i) i 行での計算 (1) (i, i) 成分の値が相応しくないなら,i 列の第 i 成分より下の成分から相応しい成分を選 び,その成分がある行と i 行を入れ替える。もしどの行にもなければ,(i 行以下の) ど こかの行を定数倍して,係数が 1 になるようにする。 (2) i 列の第 i 成分を 1,それ以外の成分を 0 にする。 .. . (以下) 最後の行まで上記の計算を続ける。 i 行において計算の軸となる成分は対角成分である (i, i) 成分である。対角成分は 1 とし,同列の それ以外の成分は 0 となる様に基本変形を実施する。この行為を掃き出しと言う 5 。 n 次連立方程式 (AP) a11 x1 + a12 x2 + · · · + a1n xn = b1 a x + a x + ··· + a x = b 21 1 22 2 2n n 2 ······ an1 x1 + an2 x2 + · · · + ann xn = bn 3 こうすると,後ろのほうの列の成分が分数になってしうまうことが多い。成分が分数になると計算が面倒になるの で,入れ替えで済むなら入れ替えをした方が良い。 4 必ず,2 行より下を見なければらない。1行目と入れ替えたら,step 1 でやったことが台無しになってしまう。 5 より正確には,軸となる成分 (値を 1 にして残したい成分) をピボットと言い,ピボット以外の成分を 0 にする行 為を掃きだしという。ここで書いていること何が違うかというと,ピボットは必ずしも (i, i) 成分でなくてもよい,と いう点が違う。別の場所を 1 にして掃き出すこともある。 4 が与えられたとき, a11 a12 · · · a21 a22 · · · an1 an2 · · · a1n a2n b1 b2 .. . 1 0 ··· 0 g1 0 1 ··· 0 g2 ··· 0 ··· 0 1 gn 行基本変形 =⇒ ann bn のように,拡大係数行列から対角成分のみが 1 となるよう順次掃き出して g1 , g2 , · · · , gn と解を 得る方法を掃き出し法と言う。 例 題 11.1 次の連立 1 次方程式を掃き出し法で解け。 3x + 2y − 5z + 2w = 4 x + 2y + 1z = 9 x + y − 3z − 2w = 0 (1) (2) 2x + 3y + z = 6 2x + y − 5z − 3w = 2 3x + y − 7z = 2 x − w=6 1 2 (解)(1) 拡大係数行列は 2 3 3 1 1 9 1 6 である。これを (1, 1),(2, 2),(3, 3) の順に,各列に −7 2 おいてこの成分だけが 1 になるよう掃き出す。 1 2 2 3 3 1 1 0 0 1 0 0 1 2 1 1 9 (−1)r2 1 1 −1 −12 −−−−→ 0 0 −5 −10 −10 −25 1 9 1 2 r − 2r1 1 6 −−2−−−−→ 0 −1 r3 − 3r1 −7 2 0 −5 −1 1 −5 −15 1 0 (−1/5)r3 12 −−−−−−→ 0 1 35 0 0 −15 1 r +r3 0 12 −−1−−→ r2 −r3 7 0 −1 1 1 0 1 0 9 r1 −2r2 12 −− −−→ r3 +5r2 −25 0 −8 0 5 1 7 答え x = −8, y = 5, z = 7 (2) 3 1 2 1 2 1 1 0 −5 2 4 −3 −2 0 r1 と r4 −− −−−−→ −5 −3 2 を入れ替え 0 1 6 1 0 r3 −r2 −−−−→ r4 −2r2 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 4 1 1 2 3 0 1 1 2 0 1 6 r2 −r1 ,r3 −2r1 −3 −2 0 − −−−−−−−−→ −5 −3 2 r4 −3r1 −5 2 4 0 1 6 (−1/2)r3 −3 −2 −6 − −−−−−→ −2 −2 −4 1 5 6 6 (1/4)r4 −3 − −−−−→ 2 4 1 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 5 1 6 −3 −6 −5 −10 −1 −14 0 1 1 2 0 −3 −5 −5 0 0 0 1 5 −4 1 1 0 1 6 −3 −2 −6 r2 +3r3 − −−−→ 1 1 2 r4 −r3 1 5 6 6 r1 −r4 ,r2 −r4 −3 − −−−−−−−→ 2 r3 −r4 1 答え x = 5, y = −4, z = 1, w = 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 11.3 逆行列への応用 A が正則(逆行列を持つ)のとき,逆行列を求める問題を考察する。A の逆行列は AX = E を満たす行列 X である。そこで,連立方程式で使用した掃き出し法を適用する。すなわち, (A, E) 行基本変形 ⇒ (E, B) と変形したとき,B が求める逆行列である。 1 2 1 例 題 11.2 A = 2 3 1 の逆行列を求めよ。 1 2 2 (解) 1 2 1 2 3 2 1 1 2 1 0 0 1 0 −−−−→ 0 1 0 0 r1 −2r2 0 1 0 0 1 2 1 r2 −2r1 0 −− −−→ 0 −1 −1 r3 −r1 1 0 0 1 −1 1 1 1 2 1 0 0 (−1)r2 −2 1 0 −−−−→ 0 1 0 0 −1 0 1 −3 2 0 1 0 r1 +r3 2 −1 0 −−−−→ 0 1 r2 −r3 −1 0 1 0 0 0 0 1 1 1 1 1 0 0 2 −1 0 −1 0 1 −4 2 1 3 −1 −1 −1 0 1 従って,求める逆行列は A−1 −4 2 1 = 3 −1 −1 −1 0 1 (考察) :なぜこの方法で逆行列が求まるのか? • AX = E において,X および E の列ベクトルを xj ,ej (j = 1, 2, · · · , n) とおくと, AX = E ⇔ A(x1 x2 · · · xn ) = (e1 e2 · · · en ) ⇔ Axj = ej (j = 1, 2, · · · , n) また A−1 AX = A−1 E ⇔ X = A−1 ⇔ xj = A−1 ej (j = 1, 2, · · · , n) したがって,方程式 Axj = ej の解が A−1 の j 番目の列ベクトルである。そこでこの方程式の 解法に掃き出し法を利用する。ところが上手いことに,掃き出し法による解法は,係数行列に よって決まる。つまり同じ係数行列を持つ方程式は同じ行基本変形で解ける。今の場合 n 個の Axj = ej (j = 1, 2, · · · , n) の係数行列は同一なので方程式を個々に解くのではなくまとめて (Ax1 Ae2 · · · Ax2 ) = (e1 e2 · · · en ) ⇔ A(x1 e2 · · · x2 ) = (e1 e2 · · · en ) ⇔ AX = E に対して掃き出し法を用いるのである。 6 数学演習 I (問題 11) [1] 連立方程式について x+y−z =2 3x + 5y − 7z = 0 2x − 3y + z = 5 について次の問に答えよ。 (1) 係数行列,拡大係数行列を求めよ。 (2) 拡大係数行列を使用して,(1, 1) 成分→ (2, 2) 成分→ (3, 3) 成分の順にピボットを定め 掃出し法によって解を求めよ。(答え:x = 3, y = 1, z = 2) [2] 問1と同様にして,掃出し法を利用して次の連立方程式を解け。 2x + 3y − z = −3 −x + 2y + 2z = 1 x + y − z = −2 (ヒント : 第 1 ピボットを選択する際に (3,1) 成分に注目し,1 行と 3 行を入れ替え,掃き出しを実行 する。次に 2 行に移ったとき,(2,2) 成分は 3,(3,2) 成分は 1 になっているはず。そこで,2 行と 3 行を入れ替えて掃き出しを実行する。) 2 −1 0 [3] 2 −1 −1 の逆行列を求めよ。 1 0 −1 7