4.2 連立非線形方程式
(1)繰返し法による方法
n 個の変数からなる非線形方程式を考える。
f1 ( x1 , x2 , , xn ) 0
f 2 ( x1 , x2 , , xn ) 0
f n ( x1 , x2 , , xn ) 0
これをベクトル表記して次のように表す。
x ( x1 , x2 ,, xn )
f ( x) ( f1 ( x), f 2 ( x),, f n ( x))
繰返し法による方法
1変数の場合と同様,以下のようにして解く
g( x) f ( x) x, x g( x), x ( k 1) g( x ( k ) )
ただし,
単純な繰返し法では,収束するとは限らない!!
使えない!!
(2)ニュートン・ラプソン法
ニュートン・ラプソン法の考え方(1)
真の解との誤差を h (h1 , h2 ,, hn ) としてベクトル表記すると
f ( x (1) h) 0
これは,次のような式をベクトル表記したものである。
f1 ( x1 h1 , x2 h2 ,, xn hn ) 0
(1)
(1)
(1)
f 2 ( x1 h1 , x2 h2 ,, xn hn ) 0
(1)
(1)
(1)
f n ( x1 h1 , x2 h2 ,, xn hn ) 0
(1)
(1)
(1)
ニュートン・ラプソン法の考え方(2)
テーラ展開し,1次の項まで近似すると
(1)
1
(1)
(1)
1
(1)
f1 ( x , x2 , xn
(1)
f 2 ( x , x2 , xn
f1
)
x1
f1
h
x1 x1(1) 1
x2
f1
h
x2 x2(1) 2
xn
f 2
)
x1
f 2
h
x1 x1(1) 1
x2
f 2
h
x2 x2(1) 2
xn
f n
)
x1
f n
h
x1 x1(1) 1
x2
f n
h
x2 x2(1) 2
xn
(1)
xn xn(1)
hn
xn xn(1)
hn
xn xn(1)
hn
(1)
1
(1)
f n ( x , x2 , xn
(1)
ニュートン・ラプソン法の考え方(3)
ベクトル表記すると
f x (1) h f x (1) J x (1) h
ニュートン・ラプソン法の考え方(4)
J x
:ヤコビアンと呼ばれる。
(Jacobian)
f1
f1
f1
,
,
,
x
x
x
2
n
1
f
f
f
2
2
2,
, ,
J x x1 x2
xn
f
f n
f n
n
,
,
xn
x1 x2
ニュートン・ラプソン法の考え方(5)
適当な初期値
x ( 0) を決め(k=0)
J x(k ) h f x(k )
を解いて, h を求め
x ( k 1) x ( k ) h
とする。これを繰り返せば,解に収束する。
発展
行列が大きくなると,
近似値の計算のたびに
連立方程式を解く必要があるので
計算量が多くなる。
実際には,
非線形連立偏微分方程式の数値解法に
応用されることが多いので,
それに合わせた数値解法が提案されている。
簡単な例題を手計算で進めてみると
x 2 xy y 2 1 0
x y 0
2 x y x 2 y
J ( x, y )
1
1
初期の近似値を
x
( 0)
とすると
,y
( 0)
1, 1
3 3
J (1, 1)
1
1
J (1, 1) h f (1, 1)
3 3 h1 2
1 1 h 0
2
3h1 3h2 2, h1 h2 0
簡単な例題
h1 h2 , 6h1 2, h1 h2 1 3
x
(1)
, y (1) x ( 0) h1 , y ( 0) h2
2 3 , 2 3
5 / 3 5 / 3
J (2 / 3, 2 / 3)
1
1
J (2 / 3,2 / 3) h f (5 / 3,5 / 3)
5 / 3 5 / 3 h1 22 / 3
1
h
1
0
2
(以降,省略)
例題を Excel でやってみよう
Excelでの定義
グラフを描いて確かめよう
収束の様子
VBAでのプログラム
①Jacobianの設定,関数値の設定,ボタンのClickイベントハンドラ
Sub setJACOBI(JACOBI, A)
JACOBI(1, 1) = 2 * A(1) + A(2) Jacobianの設定
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
End Sub
Sub ボタン2_Click()
Dim A(2)
EPS = 0.0000001
N = 連立非線形Newton(A, EPS, 2)
MsgBox " 繰返し回数" & N & " 結果=(" & A(1) & " " & A(2) & ")"
End Sub
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を使って観察せよ。
x xy y 7 0
x y 1 0
2
2
② 上記連立方程式をサンプルプログラムを用いて解け。
© Copyright 2026 ExpyDoc