• 検索結果がありません。

3. 連立一次方程式 Ax = b 数値解析

N/A
N/A
Protected

Academic year: 2021

シェア "3. 連立一次方程式 Ax = b 数値解析"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)

数値解析

3. 連立一次方程式 Ax = b

石渡哲哉

(

芝浦工大数理

)

(2)

この章の目標

連立一次方程式

Ax = b

の近似解法を学び、その数値的背景を理解する。

考え方: 行基本操作による変数消去を利用した 直接法 や、あ る種の不動点形式を利用した 反復法 などがある。

(3)

問題設定 n 変数の連立一次方程式









a11x1 + a12x2 + · · · + a1nxn = b1 (1 1) a21x1 + a22x2 + · · · + a2nxn = b2 (1 2)

...

an1x1 + an2x2 + · · · + annxn = bn (1 n)

Ax = b where

A =

a11 a12 · · · a1n

a21 a22 · · · a2n

... . .. ...

an1 an2 · · · ann

, x =

x1

x2 ... xn

, b =

b1

b2 ... bn

.

(4)

Fact: det A ̸= 0 ⇒ ∃A1 x = A1b が定まる.

以下, det A ̸= 0 とする. Remark:

A1 を求める必要がないなら求めずに解 x を計算す

. 計算量を少なくする.

クラメールの公式で「原理的」には解が求まるが、計 算量が巨大 ((n + 1)(n 1)n! + n) なので使い物

にならない.

(5)

代表的な方法:

直接法: 行基本変形などにより x1, x2, · · · と順に消去し解を

求める. (例:ガウスの消去法など)

反復法: 真の解に収束するベクトル列 {x(n)}n=1 を構成す

. (: ヤコビ法, ガウス・ザイデル法など)

本講義では扱わないが、他に共役勾配法 (CG ) などの

有力な方法もある.

(6)

3.1 ガウスの消去法

特徴:

三角行列の扱いやすさを利用.

前進消去過程と後退代入過程の2つに分かれる.

前進消去過程: 方程式を上三角タイプになるように 変形.

後退代入過程: 上三角行列に対して代入操作で解を順 次求める.

(7)

前進消去プロセス:

a(1)ij = aij, b(1)i = bi (i, j = 1, 2, · · · , n) と置く.

ここで変形中, 対角成分が 0 となった場合は行の入れ替え等 の操作で対応できるので, 以下対角成分は 0 でないとして話

を進める。(pivot 選択)

Step 1m(1)i := a(1)i1 a(1)11

(i = 2, 3, · · · , n) とおき,

(1 i) m(1)i × (1 1) (i = 2, 3, · · · , n)

により順次 (1 2), (1 3), · · · , (1 n) から x1 を消去.

(8)

a(2)ij := a(1)ij m(1)i a(1)1j b(2)i := b(1)i m(1)i b(1)i

とおくと、消去後の行列, 右辺は以下の通り:

A(2) =

a(1)11 a(1)12 · · · a(1)1n 0 a(2)22 · · · a(2)2n 0 a(2)32 · · · a(2)3n

... . .. . ..

0 a(2)n2 · · · a(2)nn

, b(2) =

b(1)1 b(2)2 b(2)3

...

b(2)n

.

(9)

Step 2】同じ操作を、a(2)22 成分から右下の (n1)×(n1)

行列に対して行う.

Step k = 2, 3, · · · , n 1】以下同様. 全部で n 1 回繰

り返すと, A は最終的に上三角行列 A(n) に変形される.

A(n) =

a(1)11 a(1)12 a(1)13 · · · a(1)1n 0 a(2)22 a(2)23 · · · a(2)2n

0 0 a(3)33 · · · a(3)3n

... . .. .

..

0 0 0 · · · a(n)nn

, b(n) =

b(1)1 b(2)2 b(3)3

...

b(n)n

.

where

(10)

m(k)i := a(k)ik a(k)kk

(i = k + 1, k + 2, · · · , n)

a(k+1)ij :=a(k)ij m(k)i a(k)kj (i, j = k + 1, · · · , n) b(k+1)i := b(k)i m(k)i b(k)k (i = k + 1, · · · , n)

Remark: a(k)kk をピボット (, pivot) といい、この値が 0 また

0 に近い時問題となる. この場合は、ピボットの絶対値が大き くなるように行交換を行えばよい. (行交換による部分ピボット選 )*1

*1 行だけでなく列も入れ替える方法を完全ピボット選択というが, 変数 の交換も含むことになり, 処理が煩雑になる.

(11)

後退代入プロセス:

A(n)x = b(n)

より, 順次 xn, xn1,··· ,x2,x1 を求める:

xn = b(n)n a(n)nn xi = 1

a(i)ii

b(i)i

n k=i+1

aiikxk

(i = n 1, n 2, · · · , 2, 1.)

(12)

Remark:

改良型にガウス・ジョルダン法(掃出し法)がある。この 方法では、非対角成分をすべて消す。そのため計算量は増え ることになる。逆行列を求めるときなどにも使われる。

(13)

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)}

生成.

(14)

対角行列の取り扱いの易しさを利用して, A  を A = D + A と分解. ここで, D A の対角成分のみの行列

A = A D.

(後のため A は更に上三角と下三角に分解: A = L+U)

D =

a11 0 · · · 0

0 a22 · · · 0

..

. . .. .

..

0 0 · · · ann

, A =

0 a12 · · · a1n

a21 0 · · · a2n

..

. . .. .

..

an1 an2 · · · 0

L =

0 0 · · · 0

a21 0 · · · 0

..

. . .. .

..

an1 an2 · · · 0

, U =

0 a12 · · · a1n

0 0 · · · a2n

..

. . .. .

..

0 0 · · · 0

.

(15)

不動点形式へ変形:

Ax = b

(D + A)x = b

Dx = b Ax

x = D1(b Ax) =: G(x)

D1 は対角成分を逆数にするだけ.

Remark 1 元の A の対角成分に 0 のところがある場合,

の入れ替えを行い, 対角成分が 0 でないようにしておく.

(16)

ヤコビ法 (Jacobi method)

x(k+1) = D1(b Ax(k))

として反復列 {x(k)} を生成.

x(k+1) 1

x(k+1) 2

.. . x(k+1)

n

=

1

a11 0 · · · 0

0 1

a22 · · · 0

.. .

.. .

.. .

0 0 · · · 1

ann

b1 b2 .. . bn

0 a12 · · · a1n

a21 0 · · · a2n

.. .

.. .

.. .

an1 an2 · · · 0

x(k) 1 x(k)

2 .. . x(k)

n

.

(17)

i 成分 (i = 1, 2, · · · , n) は以下のようになる:

x(k+1)i = 1 aii



bi

i1

j=1

aijx(k)j +

n j=i+1

aijx(k)j



ガウス・ザイデル法 (Gauss-Seidel method)

上の赤の部分を見てみよう. xk+1i の計算の時点では既に, xk+11 , xk+12 , · · · xk+1i1 は計算済みである. 収束している場 合は, 古い第 k step での情報よりより真の値に近いことを 期待して, この部分を新しい第 (k + 1) step の情報に置き

換えたものが, ガウス・ザイデル法である.

(18)

i 成分 (i = 1, 2, · · · , n) は以下のようになる:

x(k+1)i = 1 aii



bi

i1

j=1

aijx(k+1)j +

n j=i+1

aijx(k)j



これを行列表現でみてみると, ヤコビ法が

x(k+1) = D1(b Ax(k)) = D1(b (L + U)x(k))

であったところを

x(k+1) = D1(b (Lx(k+1) + U x(k)))

と置きなおしたものとなっている.

(19)

SOR (逐次過大緩和法, successive over-relaxation method)

x(k) からガウス・ザイデル法で仮の x(k+1) を求める. x(k+1) と書く.)

変化量 ∆x(k) := ˜x(k+1) x(k) を調整して x(k) に足す

ことにより、収束性を改善できることがある.

x(k+1) = x(k) + ω∆x(k), : 緩和係数) SOR 法が収束するためには, 0 < ω < 2 が必要.

ω = 1 のときはガウス・ザイデル法そのもの. 1 < ω < 2

(20)

のとき過大緩和 (over-relaxation), 0 < ω < 1 のとき過

小緩和 (under-relaxation) というが、総称として SOR

という.

(21)

定常反復法

以上の方法のように、計算の各ステップにおいて使用する 各行列、係数が変化しないものを定常反復法という.

これに対し、計算の各ステップにおいて現れる行列等が変 化する非定常反復法というものもある。代表例が、共役勾配 (CG , Conjugate Gradient method) である. *2

*2 理論的には有限回の反復で解を求めることができるので、本来は直 接法であるが, 大規模行列に適用する場合に途中で反復を打ち切るこ とが多く, 反復法と捉えたほうがよいため、ここでは反復法のカテゴ リーで紹介する.

(22)

収束判定

ニュートン法などと同じように、有限回で反復を止める条 件を設定する必要がある。

反復停止条件としては, 例えば 小さい ε > 0 を設定して

||x(k+1) x(k)|| < ε

||x(k+1) x(k)|| < ε||x(k)||

||Ax(k+1) b|| < ε

などを使うことが多い.

(23)

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 Ω.

(24)

不動点の存在と収束定理

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 は縮小写像である.

(25)

Def. 行列 A のスペクトル半径: ρ(A) := max1jn |λj|. j: A の固有値) G(x) = M x + C に対して次の必要十分条件が知られて いる:

収束の必要十分条件

ρ(M) < 1

初期値によらず x(k+1) = G(x(k)) による不動点反

復列は Ax = b の一意解に収束する.

証明各自

(26)

Def. A (狭義) 優対角/対角優位

|aii| >

j̸=i

|aij| (i = 1, 2, · · · , n)

優対角行列の正則性

優対角行列 A は正則である.

優対角行列に対する収束性

A を優対角行列とする. このとき, ヤコビ法, ガウス・ザ

イデル法による反復列は初期値によらず解に収束する.

(27)

A = D + L + U と分解すると, それぞれの方法に対する

G(x) = M x + C は次のようになる:

ヤコビ法

M = D1(L + U), C = D1b

ガウス・ザイデル法

M = (D + L)1U, C = (D + L)1b

以上について, それぞれ ρ(M) < 1 を示せばよい.

Fact: ρ(A) max

i

n j=1

|aij|.

(28)

3.4 条件数 (Condition number)

ここでは、問題の摂動に対する安定性について議論する. A が正則で, Ax = b が一意解をもっている場合に, A b に摂動 (微小量変化) が加わり, A + ∆A, b + ∆b となっ

た場合, 解がどの程度変化してしまうかを考える. すなわち (A + ∆A)(x + ∆x) = b + ∆b

を考え, 相対誤差 ||∆x||/||x|| を見積もると以下を得る:

(29)

摂動に対する相対誤差の評価

||∆A|| · ||A1|| < 1, κ := ||A1|| · ||A|| とすると,

||∆x||

||x|| κ

1 κ · ||||∆AA||||

(||∆b||

||b|| + ||∆A||

||A||

) .

上に現れる κ を行列 A の条件数といい, cond(A) と表す.

次のことが分かる:

(a) κ: 相対誤差の上限が小さい. つまり, 解は摂動に

対して安定.

(b) κ: 相対誤差の上限が大きい. つまり, 解は摂動に

(30)

対して不安定な可能性がある.(悪条件である, と言われる.)

参照

関連したドキュメント

列に分割する。 $n$ が大きいとき、拡張ストラッセン法は実行列乗算に 1 回適用すると、通常の計算 方法に比較して演算量が 3/4 まて減少する。

概要 初期値の近傍に存在する連立代数方程式の解を数値的に求めたいという現実的な要謝鴇る.

• 差分法の弱点は複雑な形状の領域における数 値解を求めにくいことであるが, 非線形座標 変換によって矩形領域を曲面に投影すること

この問題を避けるためにど うするかというと,ピボット選択という方法を使う.方法は簡単で,先に示 した 3 つの基本操作のうち,1

ピボット探索 対角成分より下の 列で最大の成分を ピボットとする.

ヤコビ法の部分のプログラムはコマンドボタンの部分に記述するのではなく

74 という欠点がある。 一方、 近似的 GCD

おわりに $t1$ [1] で提案した近似解法の理論的な骨子は一般の 2