一次方程式を解く鍵 情報処理I: ガウス・ジョルダン 改訂版 松谷茂樹 a11 a12 a13 a14 a22 a23 a24 の形の行列を上三角行列と呼ぶ. 0 0 a23 a34 0 0 0 a24 特に対角成分が aii ̸= 0 を仮定する. b1 x1 b2 x2 A が上三角行列(aii ̸= 0)のとき b = とにより x = b3 x3 b4 x4 に関する方程式 Ax = b は a11 x1 +a12 x2 +a13 x3 +a14 x4 = b1 a12 x2 +a23 x3 +a24 x4 = b2 となる。これは解く a33 x3 +a34 x4 = b3 a44 x4 = b4 ことが可能である.4次元以上でも上三角行列にすれば一次方程 式は解く事が可能である. 2015.7.8 0 一次方程式とは 与えられた n × n 行列 A と n 次元ベクトル b, a11 a12 · · · a1n b1 x1 a21 a22 · · · a2n b2 x2 A= .. .. .. .. , b = .. に対し x = .. . . . . . . an1 an2 · · · ann bn xn に関する方程式 Ax = b を解くことである. つまり,n 次連立一次方程式 a11 x1 + a12 x2 + · · · + a1n xn = b1 a21 x1 + a22 x2 + · · · + a2n xn = b2 .. . an1 x1 + an2 x2 + · · · + ann xn = bn を満たす xi を決定することである。 A−1 A = E となる A−1 が存在した場合 Ax = b を解くとは A−1 を 両辺に掛け, x = A−1 b とすることである。つまり,一次方程式を解くとは,逆行列を決 定することである. 1 0 ··· 0 0 1 · · · 0 但し,E は単位行列である:E = . . . . . ... .. .. 0 0 ··· 1 一次方程式 n = 2 の場合 ( ) ) ( ( x1 b a11 a12 と b = 1 に対し,x = x2 b2 a21 a22 Ax = ( b を解くこと. ) a11 x1 + a12 x2 Ax = より Ax = b は a21 x1 + a22 x2 ( ) ( ) a11 x1 + a12 x2 b1 = に一致. a21 x1 + a22 x2 b2 −1 Ax = b を解くとは(x = A b により ) 1 a22 −a12 A−1 = を利用して −a a11 ) ( ) |A| ( 21 1 a22 b1 − a12 b2 x1 = x2 |A| −a21 b1 + a11 b2 ) に関する方程式 A= ) ( ) ( a22 a33 − a23 a32 −(a12 a33 − a13 a32 ) −(a21 a33 − a23 a31 ) a11 a33 − a13 a31 a21 a32 − a22 a31 −(a11 a32 − a12 a31 ) これにより x = A−1 b は解ける ) a13 a23 a33 a43 a14 b1 a24 b2 と b = , に対し,拡張行列 a34 b3 a44 b4 a11 a12 a13 a14 b1 a22 a23 a24 b2 a (A|b) = 21 a31 a32 a33 a34 b3 a41 a42 a43 a44 b4 を「一次方程式の解として等価な」を上三角行列 c11 c12 c13 c14 d1 0 c22 c23 c24 d2 に変形するアルゴリズム。 (C|d) = 0 0 c33 c34 d3 0 0 0 c44 d4 A は正則とし,n × (n + 1) 行列 (C|d) が上三角行列とは n × n 行 列部 C が上三角行列となることである。 a11 a12 · · · a1m a1,m+1 a1,m+2 ··· a1n b1 0 a22 · · · a2m a2,m+1 a2,m+2 ··· a2n b2 0 0 · · · a3m a3,m+1 a3,m+2 ··· a3n b3 .. .. .. .. .. .. .. .. . . . . . . . . 0 0 · · · a a a · · · a b mm m,m+1 m,m+2 mn m 0 0 · · · 0 a a · · · a b m+1,m+1 m+1,m+2 m+1,n m+1 0 0 · · · 0 a a · · · a b m+2,m+1 m+2,m+2 m+2,n m+2 .. .. .. .. .. .. .. .. . . . . . . . . 0 0 0 an,m+1 ··· bn ··· an,m+1 an,n を m 次部分上三角行列と呼ぶこととする。但し、成分は aij とも ai,j とも記している。aij = ai,j 。 ガウスの消去法は m 次部分上三角行列を「一次方程式の解として 等価な」m + 1 次部分上三角行列に変形することを繰り返す方法。 (ガウスの消去法の場合、その後、代入を行う過程があるがフロー ではそれは略した) x1 b1 a11 a12 a13 a14 x2 b2 a21 a22 a23 a24 と b = に対し、x = に A= x3 b3 a31 a32 a33 a34 x4 b4 a41 a42 a43 a44 関する方程式 Ax = b を解くことである. 4次元以上では,逆行列を解く事は困難である. a12 a22 a32 a42 a12 a23 − a13 a22 −(a11 a23 − a13 a21 ). a11 a22 − a12 a21 一次方程式 n = 4 の場合 a11 a21 A= a31 a41 n × (n + 1) 行列 C = a11 a12 a13 b1 x1 A = a21 a22 a23 と b = b2 に対し x = x2 に関する方 a31 a32 a33 b3 x3 程式 Ax = b を解くこと. |A| = a11 a22 a33 +a13 a21 a32 +a12 a23 a31 −a13 a22 a31 −a11 a23 a32 − a12 a21 a33 より A−1 は以下のように書ける: 1 A−1 = |A| × ガウスの消去法 n = 4 ガウスの消去法(直接法) 一次方程式 n = 3 の場合 ( 1 ガウス・ジョルダン法(直接法) しかし,もともと,3 × 4 行列 (A, b) として、左辺からの適当な 3 × n × (n + 1) 行列 C = 3 行列の計算を行っているだけなので、次のようにも考えられる。 一次方程式 n = 3 の場合の具体例の続き 1 0 ··· 0 a1,m+1 a1,m+2 ··· a1n b1 0 1 · · · 0 a2,m+1 a2,m+2 ··· a2n b2 0 0 · · · 0 a a · · · a b3 3,m+1 3,m+2 3n .. .. . . .. .. .. .. .. . . . . . . . . 0 0 · · · 1 am,m+1 am,m+2 ··· amn bm 0 0 · · · 0 am+1,m+1 am+1,m+2 · · · am+1,n bm+1 0 0 · · · 0 am+2,m+1 am+2,m+2 · · · am+2,n bm+2 .. .. . . . .. .. .. .. . . . . .. . . . 0 0 ··· 0 an,m+1 an,m+1 ··· an,n bm+1 を m 次部分単位行列と呼ぶこととする。(一般的な呼び方ではない) ガウス・ジョルダン法は m 次部分単位行列を「一次方程式の解とし て等価な」m + 1 次部分単位行列に変形することを繰り返す方法。 方程式 Ax = b ) を解くとは、 ( 2 1 3 13 1 3 2 13 を考え、 3 2 1 10 ステップ1: ( ) ( 1/2 0 0 1 1/2 3/2 0 1 0 を掛けると 1 3 2 左から 0 0 1 3 2 1 (これは 1 行めに 1/2 を掛けたことに相当) 13/2 13 10 ) となる。 ステップ2: ( ) ( ) 1 0 0 1 1/2 3/2 13/2 13/2 とな 左から −1 1 0 を掛けると 0 5/2 1/2 −3 0 1 0 1/2 −7/2 −19/2 る。 (これは”2 行目-1 行目”と”3 行目-3 × 1 行目”に相当) つまり、このように左辺からの 3 × 3 行列の適当な行列を掛ける ことにより行列を変形させてゆき、 1 0 0 b′1 0 1 0 b′2 なればよい。 0 0 1 b′3 一次方程式 n = 3 の場合の具体例の続き ( 一次方程式 n = 3 の場合の具体例 ( ) 2 1 3 A= 1 3 2 とb= 3 2 1 Ax = b を解く. ( 2 Ax = b つまり、 1 3 1 3 2 ( ) 13 13 10 3 2 1 ( に対し、x = )( x1 x2 x3 x1 x2 x3 ) に関する方程式 = 13 13 10 ステップ4. ) ) ( ( 1 0 7/2 26/5 1 −1/2 0 1/5 13/5 0 1 0 を掛けると 0 1 0 0 −18/5 −54/5 0 −1/2 1 (これは”1 行目-1/2 × 2 行目”と”3 行目-1/2 × 2 行目”に相当) に対して、 ステップ1: ( ) 1/2 0 0 0 1 0 を掛けると、つまり 両辺に左から 0 0 1 ( )( )( ) ( )( ) 1/2 0 0 2 1 3 x1 1/2 0 0 13 0 1 0 1 3 2 x2 = 0 1 0 13 は 0 0 1 3 2 1 x3 0 0 1 10 ( )( ) ( ) 1 1/2 3/2 x1 13/2 1 3 2 13 x2 = となる。 3 2 1 x3 10 ステップ2: ( ステップ5. ( ) ( ) 1 0 0 1 0 7/2 26/5 0 1 0 を掛けると 0 1 1/5 13/5 0 0 −5/18 0 0 1 3 (これは 3 行めに −5/18 を掛けたことに相当) ステップ6. ( ) ( ) 1 0 −7/2 1 0 0 1 0 1 −1/5 を掛けると 0 1 0 2 0 0 1 0 0 1 3 (これは”1 行目-7/2 × 3 行目”と”2 行目-1/5 × 3 行目”に相当) ) 1 0 0 この両辺に左から −1 1 0 を掛けると、つまり −3 0 1 ( )( )( ) ( )( ) 1 0 0 1 1/2 3/2 1 0 0 x1 13/2 −1 1 0 1 3 2 x2 = −1 1 0 13 は −3 0 1 x3 3 2 1 −3 0 1 10 ( )( ) ( ) 1 1/2 3/2 13/2 x1 0 5/2 1/2 x2 = 13/2 となる。 x3 0 1/2 −7/2 −19/2 つまり、このように左辺から適当な 3 × 3 行列を両辺に掛けるこ とにより Ax = b を変形させてゆき、 ( )( ) ′ b1 1 0 0 x1 0 1 0 x2 = b′2 なればよい。これにより x3 0 0 1 b′3 ′ ′ x1 = b1 , x2 = b2 , x3 = b′3 を得ることになる。 ) 1 1/2 3/2 13/2 13/2 に対して 0 5/2 1/2 0 1/2 −7/2 −19/2 ステップ3: ( ) ( ) 1 0 0 1 1/2 3/2 13/2 0 2/5 0 を掛けると 0 1 1/5 13/5 0 0 1 0 1/2 −7/2 −19/2 (これは 2 行めに 2/5 を掛けたことに相当) ( ) ) これらにより 方 こ と(で) ) ( 程 式 Ax (左)辺 に 適 当 な 行 列 を 掛 け ) (= b )は( (る ) 1 0 0 1 1 x1 x1 0 1 0 x2 = 2 となることを意味し、 x2 = 2 x3 x3 0 0 1 3 3 となる。 2 一次方程式 n = 3 の場合の具体例の続き(行列を使わない説明) 方程式 Ax = b を解くとは、 { 2x1 x1 3x1 +x2 +3x2 +2x2 +3x3 +2x3 +x3 = = = 13 13 10 (1) (2) を考えることである。 (3) ステップ1.1 式に 1/2 を掛けることで { x1 +(1/2)x2 +(3/2)x3 = 13/2 x1 +3x2 +2x3 = 13 3x1 +2x2 +x3 = 10 (1) (2) (3) ステップ2 ”2 式-1 式”と”3 式-3 × 1 式”により { x1 +(1/2)x2 +(3/2)x3 = 13/2 (1) (5/2)x2 +(1/2)x3 = 13/2 (2) +(1/2)x2 −(7/2)x3 = −19/2 (3) ステップ3:2 式に 5/2 を掛けることで { x1 +(1/2)x2 +(3/2)x3 = 13/2 x2 +(2/5)x3 = 13/5 +(1/2)x2 −(7/2)x3 = −19/2 (1) (2) (3) ステップ4.”1 式-(1/2) × 2 式”と”3 式-(1/2) × 1 式”により { x1 x2 (7/2)x3 +(2/5)x3 −(18/5)x3 = = = 26/5 13/5 −54/5 (1) (2) (3) ステップ5.3 式に −5/18 を掛けることで { x1 (7/2)x3 = 26/5 (1) x2 +(2/5)x3 = 13/5 (2) x3 = 3 (3) ステップ6.”1 式-(7/2) × 3 式”と”2 式-(1/2) × 3 式”により { x1 = 1 (1) = 2 (2) を得る。 x3 = 3 (3) これは、行列を用いた計算と等価である。 x2 エクセルの行列演算 「行列の和」や「行列の積」 「転置行列」 「逆行列」 「行列式」を計 算する関数がエクセルでは用意されている。 n が数∼数 10 であれば、これらの関数により計算可能である。 但し,現在必要とされる行列のサイズの計算は n = 106 ∼1012 の 計算である. 3
© Copyright 2024 ExpyDoc