2014 年度・後期・数理解析・計算機数学3・第12回 1 ● 講義資料 ▼ 講義予定 • 連立一次方程式の数値解法 ▼ 消去法 ★ はき出し法 • 以下, A ∈ Mn (R), b, x ∈ Rn として, 連立一次方程式 Ax = b を数値的に解くことを考える. (A が正則でない場合には, 「正則でない」ことが判定できればよいことにする.) • 連立一次方程式を数値的に解く方法としては, 大きく分けて, 消去法と反復法がある. はじめ に, 消去法の中でももっとも基本的な「掃出し法」(「Gauss-Jordan の消去法」)を考える. • 掃出し法とは, 「行基本変形」を繰り返して, 行列 A を単位行列に変形する方法である. こ こで, 「行基本変形」は, 以下の3種類の変形である. 1. i 行目を λ 倍する. これは, 方程式の両辺に左から Di (λ) をかけることに他ならない. 2. i 行目と j 行目を入れ替える. これは, 方程式の両辺に左から Tij をかけることに他ならない. 3. i 行目に j 行目の λ 倍を加える. (ただし, j < i を仮定する) これは, 方程式の両辺に左から Eij (λ) をかけることに他ならない. ただし, 行列 Di (λ), Tij , Eij (λ) は, < i 1 0 0 . . . Di (λ) = 0 . .. . . . 0 .. Dec. 17, 2014, Version: 1.0 ........ . .. ... . λ ... .. . .. ........ 0 . 0 .. . .. . 0 < i .. . 0 1 [email protected] 2014 年度・後期・数理解析・計算機数学3・第12回 i j < < 2 0 .. . · · · 0 < i .. . · · · 0 < j . .. . .. 1 ......... . . .. .. ....... 0 · · · 0 · · · 1 Tij = .. .. . . 0 · · · 1 · · · 0 . . . ....... 0 ......... 1 . .. 0 Eij (λ) = .. . 0 . . . 0 j i < < 1 0 .. ....... . 1 · · · 0 · · · 0 < j .. .. . . λ · · · 1 · · · 0 < i . .. . .. ....... ......... .. . ··· ··· ......... 1 である. • 掃出し法のアルゴリズムは以下の通りである. ただし, 「枢軸選択」を行っていないので, 正 則であっても, アルゴリズムが最後まで到達できないときがある. – i = 1, . . . , n に対して, 以下を繰り返す. 1. 対角成分 aii が 1 となるように, i 行目を定数倍する. すなわち, 「Di (a−1 ii ) を左からかける」または, 「aij := aij /aii (j = 1, . . . , n) と する」 2. j = 1, . . . , i − 1, i + 1, . . . , n に対して, 非対角成分 aji を 0 となるように, j 列目か ら i 列目の定数倍を引く. すなわち, 「Eji (−aji ) を左からかける」または, 「ajk := ajk −aji aik (k = 1, . . . , n) とする」 – もし, 1 のステップで aii = 0 であるときには, プログラムを停止する. ★ Gauss の消去法 • 連立一次方程式を与える行列 A が上三角行列 U である場合には, U y = b は以下のようにし て O(n2 ) の計算量で解くことができる. いま, U y = b を explicit に書くと, a11 y1 + · · · + a1n yn = b1 , .. . an−1n−1 yn−1 + an−1n yn = bn−1 , ann yn = bn Dec. 17, 2014, Version: 1.0 [email protected] 2014 年度・後期・数理解析・計算機数学3・第12回 3 であるので, すべての i に対して, 対角成分 aii が non-zero と仮定すると(この仮定は U が 正則であることと同値である) yn = yn−1 = 1 ann bn , 1 (bn−1 − an−1n yn ), an−1n−1 .. . y1 = 1 (b1 − a1n yn − · · · − a12 y2 ) a11 として, yn , yn−1 , . . . , y1 の順序で陽的に解くことができる. これを後退代入と呼ぶ. • したがって, 連立一次方程式 Ax = b を解くためには, A に行基本変形を施して U x = b′ の 形にすればよい. 実際, これは以下のように実行できる. これを Gauss の消去法と呼ぶ. i = 1, . . . , n に対して, 以下を繰り返す. 1. aji (j ≥ i) の中で絶対値最大の要素を探し, それを含む行と i 行目を交換し, その後 aii が 1 となるように i 行目を定数倍する. 2. j = i + 1, . . . , n に対して, 非対角成分 aji を 0 となるように, j 列目から i 列目の定数 倍を引く. このアルゴリズムは, A が正則ならば必ず終了する. 実際, これが終了しない可能性があるの は, ステップ1において, {aji }n j=i がすべて 0 となっている場合である. この場合には, i 列 目は i − 1 列以前の列の一次結合で書けることとなり, A が正則であるという仮定と矛盾す る. よって, Gauss の消去法は A が正則であれば, 必ず終了する. • Gauss の消去法の計算量は O(n3 ) であるが, ステップ2のループ回数が掃出し法と比較して 半分となっているので, 掃出し法のほぼ半分の計算量となる. ● 実習内容 1. (★★★)4 × 4 行列の積を計算するプログラムを書きなさい. 2. (★★★)4 × 4 行列の転置行列を計算するプログラムを書きなさい. 3. (★★★)連立一次方程式 3 x + 12y + 9z = 3 2 x + 5 y + 4z = 4 −x + 3 y + 2z = 5 を Gauss-Jordan の消去法(掃出し法)で解くプログラムを書きなさい. また, この方程式を Gauss の消去法で解くプログラムを書きなさい. 4. (★★)整数係数の 4 × 4 行列に対して, それが正則か否かを判定し, もし正則であるときに は, 逆行列を有理数係数で求め, 正則でないときには, ランク, 核の基底, 像の基底を求めるプ ログラムを書きなさい, Dec. 17, 2014, Version: 1.0 [email protected]
© Copyright 2024 ExpyDoc