数値解析 3. 連立一次方程式 Ax = b 石渡哲哉 (芝浦工大数理) この章の目標 連立一次方程式 Ax = b の近似解法を学び、その数値的背景を理解する。 考え方: 行基本操作による変数消去を利用した 直接法 や、あ る種の不動点形式を利用した 反復法 などがある。 問題設定 n 変数の連立一次方程式 a11 x1 + a12 x2 + · · · + a1n xn a21 x1 + a22 x2 + · · · + a2n xn .. . an1 x1 + an2 x2 + · · · + ann xn ⇔ Ax = b where a11 a12 a21 a22 A= .. . an1 an2 ··· ··· .. . ··· a1n a2n .. . ann = = b1 b2 (1 − 1) (1 − 2) = bn (1 − n) ,x = x1 x2 .. . xn ,b = b1 b2 .. . bn Fact: det A ̸= 0 ⇒ ∃A−1 ⇒ 解 x = A−1 b が定まる. 以下, det A ̸= 0 とする. Remark: • A−1 を求める必要がないなら求めずに解 x を計算す る. ⇐ 計算量を少なくする. • クラメールの公式で「原理的」には解が求まるが、計 算量が巨大 ((n + 1)(n − 1)n! + n) なので使い物 にならない. 代表的な方法: 直接法: 行基本変形などにより x1 , x2 , · · · と順に消去し解を 求める. (例:ガウスの消去法など) 反復法: 真の解に収束するベクトル列 {x( n)}∞ n=1 を構成す る. (例: ヤコビ法, ガウス・ザイデル法など) 本講義では扱わないが、他に共役勾配法 (CG 法) などの 有力な方法もある. 3.1 ガウスの消去法 特徴: • 三角行列の扱いやすさを利用. • 前進消去過程と後退代入過程の2つに分かれる. • 前進消去過程: 方程式を上三角タイプになるように 変形. • 後退代入過程: 上三角行列に対して代入操作で解を順 次求める. 前進消去プロセス: (1) aij = (1) aij , bi = bi (i, j = 1, 2, · · · , n) と置く. ここで変形中, 対角成分が 0 となった場合は行の入れ替え等 の操作で対応できるので, 以下対角成分は 0 でないとして話 を進める。(pivot 選択) (1) 【Step (1) 1】mi 式 (1 − i) − := (1) mi ai1 (1) a11 (i = 2, 3, · · · , n) とおき, × 式 (1 − 1) (i = 2, 3, · · · , n) により順次 (1 − 2), (1 − 3), · · · , (1 − n) から x1 を消去. (2) aij (2) bi := (1) aij := (1) bi − (1) (1) mi a1j − (1) (1) mi bi とおくと、消去後の行列, 右辺は以下の通り: A(2) = (1) a11 0 0 (1) a12 (2) a22 (2) a32 0 .. . (2) an2 ··· ··· ··· .. . (1) a1n (2) a2n (2) a3n ··· (2) ann .. . (2) ,b = (1) b1 (2) b2 (2) b3 .. . (2) bn . 【Step (2) 2】同じ操作を、a22 成分から右下の (n−1)×(n−1) 行列に対して行う. 【Step k = 2, 3, · · · , n − 1】以下同様. 全部で n − 1 回繰 り返すと, A は最終的に上三角行列 A(n) に変形される. A(n) = where (1) a11 0 0 .. . 0 (1) a12 (2) a22 0 0 (1) a13 (2) a23 (3) a33 0 ··· ··· ··· .. . (1) a1n (2) a2n (3) a3n ··· ann .. . (n) (n) ,b = (1) b1 (2) b2 (3) b3 .. . (n) bn . (k) aik (k) mi := (i = (k) akk (k+1) (k) (k) (k) aij :=aij − mi akj (k+1) bi Remark: := (k) akk (k) bi − (k) (k) mi bk k + 1, k + 2, · · · , n) (i, j = k + 1, · · · , n) (i = k + 1, · · · , n) をピボット (軸, pivot) といい、この値が 0 また は 0 に近い時問題となる. この場合は、ピボットの絶対値が大き くなるように行交換を行えばよい. (行交換による部分ピボット選 択)*1 *1 行だけでなく列も入れ替える方法を完全ピボット選択というが, 変数 の交換も含むことになり, 処理が煩雑になる. 後退代入プロセス: A(n) x = b(n) より, 順次 xn , xn−1,··· ,x2 ,x1 を求める: xn = xi = b(n) n (n) ann 1 (i) aii b(i) − i n ∑ aiik xk k=i+1 (i = n − 1, n − 2, · · · , 2, 1.) Remark: 改良型にガウス・ジョルダン法(掃出し法)がある。この 方法では、非対角成分をすべて消す。そのため計算量は増え ることになる。逆行列を求めるときなどにも使われる。 3.2 反復法: ヤコビ法, ガウス・ザイデル法, SOR 法 Ax = b を不動点形式: x = G(x), x ∈ Rn に書き換えて考える. ここで, G : Rn → Rn であり, 連立 一次方程式を扱うため、以下のものを考える: G(x) = M x + C where M : n × n matrix, C ∈ Rn . 不動点反復法: x(k+1) = G(x(k) ) として反復列 {x(k) } を 生成. 対角行列の取り扱いの易しさを利用して, A を A = D + A′ と分解. ここで, D は A の対角成分のみの行列 で A′ = A − D. (後のため A′ は更に上三角と下三角に分解: A′ = L+U ) D= L= a11 0 0 a22 .. . 0 0 0 a21 .. . an1 ··· ··· .. . ··· 0 0 an2 0 0 .. . ann ··· ··· .. . ··· 0 a12 a21 0 ′ , A = .. . an1 an2 0 a12 0 0 0 0 , U = .. .. . . 0 0 0 ··· ··· .. . ··· ··· ··· .. . ··· a1n a2n .. . 0 a1n a2n .. . 0 . 不動点形式へ変形: Ax = b ⇔ ′ (D + A )x = b ⇔ ⇔ ′ Dx = b − A x x = D −1 (b − A′ x) =: G(x) D −1 は対角成分を逆数にするだけ. Remark 1 元の A の対角成分に 0 のところがある場合, 行 の入れ替えを行い, 対角成分が 0 でないようにしておく. ヤコビ法 (Jacobi method) x(k+1) = D −1 (b − A′ x(k) ) として反復列 {x(k) } を生成. (k+1) x1 (k+1) x2 = . . . (k+1) xn b1 b2 . . . bn 1 0 a11 1 0 a22 . . . 0 − ··· 0 ··· 0 . 0 . . ··· 0 a12 a21 0 . . . an1 an2 . . . 1 ann ··· ··· . . . ··· a1n a2n . . . 0 (k) x1 (k) x 2 . . . (k) xn . 第 i 成分 (i = 1, 2, · · · , n) は以下のようになる: (k+1) xi i−1 n ∑ ∑ 1 (k) (k) = bi − aij xj + aij xj aii j=1 j=i+1 ガウス・ザイデル法 (Gauss-Seidel method) 上の赤の部分を見てみよう. k+1 k+1 k+1 x1 , x2 , · · · xi−1 k+1 xi の計算の時点では既に, は計算済みである. 収束している場 合は, 古い第 k step での情報よりより真の値に近いことを 期待して, この部分を新しい第 (k + 1) step の情報に置き 換えたものが, ガウス・ザイデル法である. 第 i 成分 (i = 1, 2, · · · , n) は以下のようになる: (k+1) xi i−1 n ∑ ∑ 1 (k+1) (k) aij xj aij xj = bi − + aii j=1 j=i+1 これを行列表現でみてみると, ヤコビ法が x(k+1) = D −1 (b − A′ x(k) ) = D −1 (b − (L + U )x(k) ) であったところを x(k+1) = D −1 (b − (Lx(k+1) + U x(k) )) と置きなおしたものとなっている. SOR 法 (逐次過大緩和法, successive over-relaxation method) x(k) からガウス・ザイデル法で仮の x(k+1) を求める. (x̃ (k+1) と書く.) 変化量 ∆x (k) (k+1) := x̃ − x(k) を調整して x(k) に足す ことにより、収束性を改善できることがある. x(k+1) = x(k) + ω∆x(k) , (ω : 緩和係数) SOR 法が収束するためには, 0 < ω < 2 が必要. ω = 1 のときはガウス・ザイデル法そのもの. 1 < ω < 2 のとき過大緩和 (over-relaxation), 0 < ω < 1 のとき過 小緩和 (under-relaxation) というが、総称として SOR 法 という. 定常反復法 以上の方法のように、計算の各ステップにおいて使用する 各行列、係数が変化しないものを定常反復法という. これに対し、計算の各ステップにおいて現れる行列等が変 化する非定常反復法というものもある。代表例が、共役勾配 法 (CG 法, Conjugate Gradient method) である. *2 *2 理論的には有限回の反復で解を求めることができるので、本来は直 接法であるが, 大規模行列に適用する場合に途中で反復を打ち切るこ とが多く, 反復法と捉えたほうがよいため、ここでは反復法のカテゴ リーで紹介する. 収束判定 ニュートン法などと同じように、有限回で反復を止める条 件を設定する必要がある。 反復停止条件としては, 例えば 小さい ε > 0 を設定して ||x(k+1) − x(k) || < ε ||x(k+1) − x(k) || < ε||x(k) || や ||Ax(k+1) − b|| < ε などを使うことが多い. 3.3 反復法の理論的背景 Ω ⊂ Rn , 閉集合. G(x) ∈ Ω (x ∈ Ω) Def. G(x) が Ω で縮小写像 (Contraction Mapping) ⇔ ∃L ∈ [0, 1]) s.t. ||G(x) − G(y)|| ≤ L||x − y|| for any x, y ∈ Ω. 不動点の存在と収束定理 G が Ω で縮小写像 ⇒ 1. G は Ω 内にただ1つの不動点 a = G(a) を持つ. 2. x(k+1) = G(x(k) ) による不動点反復列は初期値 x(0) ∈ Ω によらず n → ∞ で不動点 a に収束する. G(x) = M x + C の縮小性 ||M || < 1 であれば G は縮小写像である. Def. 行列 A のスペクトル半径: ρ(A) := max1≤j≤n |λj |. (λj : A の固有値) G(x) = M x + C に対して次の必要十分条件が知られて いる: 収束の必要十分条件 ρ(M ) < 1 ⇔ 初期値によらず x(k+1) = G(x(k) ) による不動点反 復列は Ax = b の一意解に収束する. 証明各自 Def. A が (狭義) 優対角/対角優位 ⇔ |aii | > ∑ |aij | (i = 1, 2, · · · , n) j̸=i 優対角行列の正則性 優対角行列 A は正則である. 優対角行列に対する収束性 A を優対角行列とする. このとき, ヤコビ法, ガウス・ザ イデル法による反復列は初期値によらず解に収束する. A = D + L + U と分解すると, それぞれの方法に対する G(x) = M x + C は次のようになる: ヤコビ法 M = −D −1 (L + U ), C = D −1 b ガウス・ザイデル法 M = −(D + L)−1 U, C = (D + L)−1 b 以上について, それぞれ ρ(M ) < 1 を示せばよい. Fact: ρ(A) ≤ max i n ∑ j=1 |aij |. 3.4 条件数 (Condition number) ここでは、問題の摂動に対する安定性について議論する. A が正則で, Ax = b が一意解をもっている場合に, A や b に摂動 (微小量変化) が加わり, A + ∆A, b + ∆b となっ た場合, 解がどの程度変化してしまうかを考える. すなわち (A + ∆A)(x + ∆x) = b + ∆b を考え, 相対誤差 ||∆x||/||x|| を見積もると以下を得る: 摂動に対する相対誤差の評価 ||∆A|| · ||A−1 || < 1, κ := ||A−1 || · ||A|| とすると, ||∆x|| ||x|| ≤ ( κ 1−κ· ||∆A|| ||A|| ||∆b|| ||b|| + ||∆A|| ||A|| ) . 上に現れる κ を行列 A の条件数といい, cond(A) と表す. 次のことが分かる: (a) κ: 小 ⇒ 相対誤差の上限が小さい. つまり, 解は摂動に 対して安定. (b) κ: 大 ⇒ 相対誤差の上限が大きい. つまり, 解は摂動に 対して不安定な可能性がある.(悪条件である, と言われる.)
© Copyright 2025 ExpyDoc