2014年6月11日(水) 数値解析 講義 前期水曜3時限 情報理学コース 青柳 睦 aoyagi@cc.九州大学のドメイン 研究室 箱崎キャンパス 情報基盤研究開発センター5階502,500 伊都キャンパス ウエスト2号館 1006室右ドア側 1 2.連立一次方程式の解法 講義内容 : 2.5 2.6 2.7 2.8 2.9 {特異値分解法} 共役勾配法 →演習 反復法 2.7.1 ヤコビ法 →演習 ガウス・ザイデル法 {SOR法(概要のみ解説)} 3.固有値と固有ベクトルの数値計算 今日の講義 3.1 固有値問題の序論 3.2 ヤコビの方法(対角行列への帰着) →演習 3.3 ギブンスの方法( 3重対角行列への帰着)→演習? 3.4 DKA法( 3重対角行列の固有値の計算 ) 3.5 ハウスホルダー法(3重対角行列への帰着) 4. その他の数値計算法 4.1 ・・・資料作成中・・ 4.2 2 3.固有値と固有ベクトルの数値計算 3.1 固有値問題の序 固有値 λ Ax = λ x A : n × n 行列 x : 0でない n 次元ベクトル det ( A − λ I ) ≠ 0 なら A − λ I の逆行列が有 0 ( A − λI ) x = x は0のみとなる(前提に矛盾) det ( A − λ I ) = 0 : 固有方程式 ( n 次方程式 ) 3 det ( A − λ I ) = 0 : 固有方程式( n 次方程式) 固有値は n 次の代数方程式の解 一般に ( n ≥ 5 ) 有限回の代数処理では(厳密には)求まらない(*) 反復法による多数の繰り返し演算が必要 (実際には、要求される精度に達した時点で打ち切る) 固有値問題は、連立一次方程式同様、工学・理学・社 会学の分野で非常に重要(固有振動解析、量子力学、他・・) * ガロア、アベル理論 4 相似変換 −1 B = P AP ( 本 題 へ の 準 備 P : n×n ) 正則(逆行列のある)行列P による相似変換で、 固有多項式は変わらない 固有値も変わらない 【 証 明 】 ( ) det ( P AP − λ P P ) det ( P ( A − λ I ) P ) det ( ( A − λ I ) PP ) det ( B − λ I ) det P −1 AP − λ I = = = = −1 −1 −1 = det ( A − λ I ) −1 (公式)行列積の行列式 det ( XY ) = det (YX ) det ( XYZ ) = det ( X (YZ ) ) = det ( (YZ ) X ) = det (YZX ) 5 A1 ≡ A 対角形に収束す るまで繰り返す A2 = P −1 A1 P 相似変換の繰り返し −1 A3 = P A2 P 一旦、3重対角 形に変換する 3.2 ヤコビ法 * * 0 * * 0 * 対角行列 * * 0 * * * * * 0 * * * * 3.5 ハウスホルダー法 3重対角行列 3.4 DKA法 対角要素→固有値 3.3 ギブンス法 バイセクション法 固有値は3重対角行列に適した 別の反復法により求める 6 3.2 ヤコビの方法 1 0 p cos φ sin φ P= q − sin φ cos φ 0 1 p PP = I P −1 = t P 直交行列 t 相似変換の行列 P q Pij = δ ij ただし、 Ppp = cos φ Pqq = cos φ Ppq = sin φ Pqp = − sin φ (毎回の)変換後の行列 B = P −1 AP の特定の成分を0にする 7 相似変換 B = P −1 AP において 1) A が対称 A = A ならば t −1 t = B t ( P= AP) t −1 t PA = ( P −1 ) P= AP B よって B も対称 2) A の p, q 行目 と p, q 列目のみが変更される 以上のように回転行列による相似変換を(三重対角or 対角形になるまで)繰り返す。 GIVENS法:三重対角形に変換する(次節 3.3)。 JACOBI法:対角形に変換する(本節 3.2)。 8 まず左からP-1 をかけると、 P A= −1 1 a11 0 a p1 cos φ − sin φ aq1 sin φ cos φ 0 1 an1 a1 p a1q a1n a pp a pq a pn aqp aqq aqn anp anq ann a11 a′p1 aq′1 an1 = a′pk a pk cos φ − aqk sin φ ′ = aqk a pk sin φ + aqk cos φ p = a1 p a′pp ′ aqp anp p q a1q a1n a′pq a′pn ′ aqn ′ aqq anq ann q p q p p q q k = 1,2,..., n 列 index 9 さらに、右からP をかけると、 B = P −1 AP = = a11 a′p1 aq′1 an1 a1 p a′pp ′ aqp a11 a′p1 aq′1 an1 a1′′p a1′′q a1n a′′pp a′′pq a′pn ′′ aqq ′′ aq′n aqp ′′ anq ′′ ann anp anp p p a1q a1n 1 0 a′pq a′pn cos φ sin φ ′ aqn ′ aqq − sin φ cos φ 0 anq ann 1 p q q q p q ′′ akp cos φ − akq sin φ = akp ′′ = akq akp sin φ + akq cos φ 行 index k = 1,2,..., n k ≠ p, q = a′′pp a pp cos 2 φ + aqq sin 2 φ − (a pq + aqp ) cos φ sin φ ′′ a pp sin 2 φ + aqq cos 2 φ + (a pq + aqp ) cos φ sin φ aqq = 2 2 ′′ =− + − a ( a a ) cos φ sin φ a cos φ a sin φ pp qq pq qp pq 2 2 aqp ′′ = − + − ( a a ) cos φ sin φ a cos φ a sin φ pp qq pq qp 10 aij = a ji を用いると結局, i, j, k = 1,2, n i, j ≠ p, q bij aij 後で使う・・・・(*) b = ただし、 k ≠ p, q = − φ φ b a a cos sin pk kp pk qk bqk = bkq = a pk sin φ + aqk cos φ k ≠ p, q a pp + aqq a pp − aqq b = + cos 2φ − a pq sin 2φ pp 2 2 a pp + aqq a pp − aqq b = − cos 2φ + a pq sin 2φ qq 2 2 a pp − aqq = b sin 2φ + a pq cos 2φ pq 2 bpq = 0 とするためには cot 2φ = aqq − a pp とすればよい. 2a pq 11 実際の計算プログラムでは、 aqq − a pp = α とおくと cot 2φ = 2a pq ∴ tan φ = sgn(α ) α + α 2 +1 tan 2 φ + 2α tan φ − 1 = 0 より、 tan φ = −α ± α 2 + 1 小さい方の根は、 α > 0 ⇒ t = −α + α 2 + 1 = ≡t −1 −α − α 2 +1 α < 0 ⇒ t = −α − α 2 + 1 = = 1 α + α 2 +1 −1 −α + α 2 +1 このtよりBの各要素を計算する. bij b pk bqk b pp b qq bpq aij bkp = a pk cos φ − aqk sin φ = bkq = a pk sin φ + aqk cos φ = a pp + aqq a pp − aqq cos 2φ − a pq sin 2φ = + 2 2 a pp + aqq a pp − aqq cos 2φ + a pq sin 2φ = − 2 2 a pp − aqq sin 2φ + a pq cos 2φ 2 (次ページ参照) i, j ≠ p, q k ≠ p, q k ≠ p, q p, q の選び方 絶対値が最大の非対角 要素が0となるように選ぶ 一度0になった要素が後の変 換で非ゼロに復活してくること もありうる。 (次に「収束」の 保証について考察する) 12 計算式(参考) b pp = = a pp + aqq 2 a pp + aqq + + a pp − aqq 2 a pp − aqq bqq = a pp + aqq − b pp = aqq + a pq tan φ = aqq + ta pq cos 2φ − a pq sin 2φ また、 tan φ = (1 − 2 sin 2 φ ) − a pq sin 2φ 2 2 = a pp − (a pp − aqq ) sin 2 φ − a pq sin 2φ cot 2φ = = a pp + 2a pq cot 2φ sin 2 φ − a pq sin 2φ aqq − a pp 2a pq cos 2φ sin 2 φ = a pp + 2a pq − a pq sin 2φ sin 2φ cos 2φ sin φ = a pp + a pq − 2a pq sin φ cos φ cos φ (cos 2 φ − sin 2 φ ) sin φ − 2 sin φ cos 2 φ = a pp + a pq cos φ − sin φ (− cos 2 φ + sin 2 φ + 2 cos 2 φ ) = a pp + a pq cos φ = a pp − a pq tan φ = a pp − ta pq より、 sgn(α ) α + α +1 2 ≡t 1 より、 cos 2 φ 1 1 + tan 2 φ = cos φ = 1+ t 2 sin φ = tan φ cos φ = t 1+ t 2 を用いて、 b pk = bkp = a pk cos φ − aqk sin φ bqk = bkq = a pk sin φ + aqk cos φ k = 1,2, n ( k ≠ p, q ) ∴ b pp = a pp − ta pq 計算する。 13 ヤコビの対角化法に関する 「収束について」 まず準備、 相似変換 B = P −1 AP において次が成り立つ (a) 2 2 a = b ∑ ij ∑ ij i, j i, j (全要素の2乗の和は変わらない) −1 t は直交行列 ( P = P) だから P t BB t −1 (P = AP)( P −1 AP) t t PA = (P −1 ) P −1 AP P −1 t AAP 対角和は相似変換によって不変だから(次ページ参照) tr At A = tr B t B 成分ごとに書くと 2 2 a = b ∑ ij ∑ ij i, j i, j 14 補足 対角和(トレース) n tr X = ∑ xii i =1 XY の対角和 = YX の対角和 n n n n n = = = tr XY= ( XY )ii ∑ ∑ xij y ji ∑ ∑ ∑ y ji xij tr YX =i 1 =i 1 = i1 j1 =j 1 = 相似変換によって変わらない ( ) −1 −1 = tr Y −1 XY tr= Y −1 ( XY ) tr= XY Y tr = X YY tr X ( ) 15 (b) 2 2 bpp + bqq2 = a 2pp + 2a 2pq + aqq の証明. 2 2 2 まず bpp を示す + 2bpq + bqq2 = a 2pp + 2a 2pq + aqq a pp + aqq a pp − aqq cos 2φ − a pq sin 2φ bpp = + 2 2 a pp + aqq a pp − aqq cos 2φ + a pq sin 2φ bqq = − 2 2 a pp − aqq sin 2φ + a pq cos 2φ bpq 2 a pp + aqq a pp − aqq において F = = , G = , H a pq とおくと 2 2 bpp = F + G cos 2φ − H sin 2φ F − G cos 2φ + H sin 2φ bqq = b = pq G sin 2φ + H cos 2φ 16 b + 2b + b = { F + ( G cos 2φ − H sin 2φ )} + ( F − ( G cos 2φ − H sin 2φ ) ) 2 pp 2 pq 2 2 qq +2 ( G sin 2φ + H cos 2φ ) 2 2 F 2 + 2 ( G cos 2φ − H sin 2φ ) + 2 ( G sin 2φ + H cos 2φ ) = 2 { 2 F 2 + 2 G 2 cos 2 2φ + H 2 sin 2 2φ − 2GH cos 2φ sin 2φ = { 2(F +2 G 2 sin 2 2φ + H 2 cos 2 2φ + 2GH cos 2φ sin 2φ = 2 + G2 + H 2 2 2 } } ) a pp + aqq 2 a pp − aqq 2 2 = 2 + a pq + 2 2 2 a 2pp + aqq 2 = 2 + a pq 2 2 =a 2pp + 2a 2pq + aqq 17 2 2 2 bpp + 2bpq + bqq2 = a 2pp + 2a 2pq + aqq において P は bpq = 0 となるように選んだから 2 2 bpp + bqq2 = a 2pp + 2a 2pq + aqq (実は、次の様な式変形だけでも、 1回の相似変換で“非対角要素の二乗和” が毎回減少することが言える・・。) 以上(a)、(b)からBの非対角要素の2乗の和は (b よ)り 2 2 2 b = ∑ b − ∑ bii + bpp + bqq ∑ i≠ j i, j i ≠ p ,q 2 2 2 2 2 = ∑ aij − ∑ aii + a pp + 2a pq + aqq i, j i ≠ p ,q = ∑ aij2 − 2a 2pq 2 ij 2 ij ( *) (よ a)り となる ( *) i≠ j bij = aij i, j ≠ p, q 18 2 = b ∑ ij i≠ j 2 2 a − 2 a ∑ ij pq i≠ j において p, q は a 2pq = max aij2 となるように選んだから i≠ j 全ての i ≠ j について aij2 ≤ a 2pq 和をとると ∑a i≠ j 2 ij ∑ 2 の項数は n − n だから i≠ j ≤ n(n − 1)a 2 2 2 2 a ≤ a ∑ ij pq n(n − 1) i ≠ j 2 pq よって 2 2 = − ≤ − 2 1 b a a a ∑ ij ∑ ∑ i≠ j i≠ j n(n − 1) i ≠ j 2 ij 2 ij 2 pq 19 2 2 ≤ − 1 b a ∑ ij ∑ i≠ j n(n − 1) i ≠ j 2 ij k − 1 回相似変換を行った後の行列 Ak の要素を aij( k ) と書くと ∑( i≠ j (k ) ij a ) 2 2 ≤ 1 − n(n − 1) k 2 a ∑ ij i≠ j n ≥ 3 に対しては 0 < 1 − 2 n(n − 1) < 1 だから k → ∞ のとき ∑(a ) i≠ j (k ) ij 2 →0 よって・・(上のPによる) 相似変換の繰り返しで 非対角成分は全体として0に収束する ただし理論的に「繰り返し数の厳密な上限」を 導出することは出来ない。 (あるepsまでの近似回転数は導出できる ) ⇔ もし示せたら、n次方程式が 有限回演算で解けたことに なってしまう!(矛盾) 20 「固有値と固有ベクトル」 k 回目の相似変換の行列を Pk と書く −1 = Ak +1 P= k 1, 2, k Ak Pk , T = lim P1 P2 Pk k →∞ (実際の数値計算では、必要な精度が 得られたらkを有限回で打ち切る。) を作ると、以上の結果から Λ =T −1 AT ここで Λ は対角行列 λ1 λ2 0 Λ = 0 λ n λi : A の固有値 21 Λ =T −1 AT から AT = T Λ T の第 i列からなる列ベクトルを ti とすると T = (t1 , t2 , , tn ) Atk = λk tk ti が A の固有値 λi に属する固有ベクトルとなる 【以下は補足】 相似変換によって行列Aに関する次の値は不変。 ① 行列式det(A) ④ 固有値 λ ② トレースtr(A) ③階数 rank(A) (一次独立な固有ベクトルの本数) ②④から、固有値の和は tr(A) ①④から、固有値の積は det(A) ④から、 A-1 , A2, A3 ・・など Aの関数が簡単に求まる。 22 【実験1】 10~100次元のFrank 行列* Aについて、Jacobiの対角化法 を用い、Iterationの回数を調べた。 次元数 10 20 30 40 50 60 70 80 90 100 EPS=10-6 Iteration 122 465 991 1561 2275 2944 3662 4315 5062 5718 Frank行列の固有値 λk λ−k1 = 2{1 − cos( 2k − 1 π )}, 1≤ k ≤ n 2n + 1 Frank行列の固有ベクトル vk 2k − 1 π (2k − 1)(2 j − 1) π t vk = {cos( 2n + 1 2 , cos( ), 2n + 1 2 ), , cos( (2k − 1)(2n − 1) π )} 2n + 1 2 vkのj番目の要素 (参考)Frank行列の逆行列 1 −1 0 − 1 2 − 1 −1 A = 0 −1 2 0 0 −1 0 0 − 1 2 23 【脚注*】 Frank行列は厳密な固有値、固有ベクトルの解析解が求められる 【実験2】 Frank行列Aについて、Jacobiの対角化法を用い、 収束の様子を調べた。 n − 1 n − 2 1 n n − 1 n − 1 n − 2 1 A = n − 2 n − 2 n − 2 1 1 1 1 1 Frank行列 Color 40次元の場合の実行例。 CまたはJavaに似た言語でグラフィッ ク処理が簡単な「Processing2.0.x」という処理系を用いて可視化し た(例として、計算の途中の様子を図示した。)。 [ 参考 ] http://processing.org/ |aij|の値 100< |aij| 10 < |aij| < 100 1.0 < |aij| < 10.0 0.1 < |aij| < 1.0 10-2 < |aij| < 0.1 10-3 < |aij| < 10-2 10-4 < |aij| < 10-3 |aij| < 10-4 24
© Copyright 2024 ExpyDoc