4.2 連立非線形方程式 (1)繰返し法による方法 4.2 連立非線形方程式 (1)繰返し法による方法 n 個の変数からなる非線形方程式を考える。 これをベクトル表記して次のように表す。
単純な繰返し法では,収束するとは限らない!! 繰返し法による方法 1変数の場合と同様,以下のようにして解く ただし, 単純な繰返し法では,収束するとは限らない!! 使えない!!
(2)ニュートン・ラプソン法 ニュートン・ラプソン法の考え方(1) 真の解との誤差を としてベクトル表記すると これは,次のような式をベクトル表記したものである。
ニュートン・ラプソン法の考え方(2) テーラ展開し,1次の項まで近似すると
ニュートン・ラプソン法の考え方(3) ベクトル表記すると
ニュートン・ラプソン法の考え方(4) :ヤコビアンと呼ばれる。 (Jacobian)
ニュートン・ラプソン法の考え方(5) 適当な初期値 を決め(k=0) を解いて, を求め とする。これを繰り返せば,解に収束する。
発展 行列が大きくなると, 近似値の計算のたびに 連立方程式を解く必要があるので 計算量が多くなる。 実際には, 非線形連立偏微分方程式の数値解法に 応用されることが多いので, それに合わせた数値解法が提案されている。
簡単な例題を手計算で進めてみると 初期の近似値を とすると
簡単な例題 (以降,省略)
Excelでの定義 例題を Excel でやってみよう
収束の様子 グラフを描いて確かめよう
VBAでのプログラム ①Jacobianの設定,関数値の設定,ボタンのClickイベントハンドラ Sub setJACOBI(JACOBI, A) JACOBI(1, 1) = 2 * A(1) + A(2) JACOBI(1, 2) = A(1) + 2 * A(2) JACOBI(2, 1) = 1 JACOBI(2, 2) = -1 ' - f(X) JACOBI(1, 3) = -(A(1) * A(1) + A(1) * A(2) + A(2) * A(2) - 1) JACOBI(2, 3) = -(A(1) - A(2)) End Sub Sub setInitial(A) A(1) = 1: A(2) = 1 Sub ボタン2_Click() Dim A(2) EPS = 0.0000001 N = 連立非線形Newton(A, EPS, 2) MsgBox " 繰返し回数" & N & " 結果=(" & A(1) & " " & A(2) & ")" Jacobianの設定 関数値の設定 (連立方程式の解法で掃出し法を用いる)
VBAでのプログラム ②連立非線形方程式の解法 Function 連立非線形Newton(A, EPS, N) Dim JACOBI() As Double: ReDim JACOBI(N, N + 1) setInitial A iter = 0: itermax = 100: E = EPS * 100 Do While E > EPS And iter < itermax iter = iter + 1 setJACOBI JACOBI, A ‘ Yacobian,関数値の設定 If 掃出法(JACOBI, N, ESP) Then Exit Do E = 0 ‘ 補正値の加算,収束判定 For i = 1 To N D = A(i) - JACOBI(i, N + 1) E = E + D * D A(i) = A(i) + JACOBI(i, N + 1) Next Loop 連立非線形Newton = iter End Function
(3)その他の方法 ①ベアストウ・ヒッチコック法(Bairstow-Hitchcock method) 非線形代数方程式に特化した繰返し計算による方法 ②DKA法(Durand-Kerner-Aberth method) ニュートン法に対してデュランとカーナーが修正を行い, アバースの修正を用いる方法であり, 非線形代数方程式を対象とする方法。 (N個の解をまとめて計算する) なお,DKA法については,4.3節で 複素根を対象とした方法として示す。
(4)演習 ① 以下の連立方程式の収斂の様子をExcelを使って観察せよ。 ② 上記連立方程式をサンプルプログラムを用いて解け。