ニュートン-ラフソン法
ニュートン-ラフソン法
目次へ
Newton-Raphson法
二分法は,二つの仮定値の間に一つの解が存在する場合,確実に解を得ることができる.
近似解を得るための収束判定誤差を小さくすることで,高精度の結果を得ることができ
るが,結果を得るまでの繰返し回数が多くなる難点がある.
そこで,もっと効率よく同等の精度の近似解を得るために考え出されたものの一つが
Newton-Raphson 法である.この方法が現在最も一般的に利用されている.ただし,
以下に述べるように,扱う方程式が微分可能であることが必要である.
1番目の近似値は次式で得られる.
・・・・・・・・・・・・・・・・ (3.1)
2番目の近似値は次式で得られる.
・・・・・・・・・・・・・・・・ (3.2)
同様にして,n 番目の近似値は次式で与えられる.
・・・・・・・・・・・・・・ (3.3)
このように方程式が微分可能であるとき,前回で得られた近似解を用いて次の近似解
が得られる.図3.1でも分るように収束速度が二分法に比べて大きい.このことからプログ
ラミングにおいて Newton-Raphson 法が多用される.

図3.1 Newton-Raphson 法の原理
図3.2は Newton-Raphson 法による式(2.1)の解を求めるためのフローチャー
トである。

図3.2
このフローチャートに従ってプログラムを記述すると、以下のようになる。
コード
Private Sub CommandButton1_Click()
'
' Newton - Raphson
'
Range("A11:G111").Select
Selection.ClearContents
Range("A5").Select
With Worksheets("Sheet1")
X1 = .Cells(5, 1)
E = .Cells(5, 2)
End With
i = 10: ' 表示行の初期値
N = 0
Retry:
1000 A = 2# * X1 - 4#
B = X1 * X1 - 4# * X1 + 3#
X2 = X1 - B / A
Y2 = X2 * X2 - 4# * X2 + 3#
i = i + 1
N = N + 1
With Worksheets("Sheet1")
.Cells(i, 1) = N
.Cells(i, 2) = X1
.Cells(i, 3) = X2
.Cells(i, 4) = Y2
If N > 100 Then .Cells(7, 2) = "収束解が得られないので、処理を中断しました。": GoTo EndJob
End With
WRK = Abs(B - Y2)
If WRK < E Then GoTo Result
X1 = X2
GoTo Retry
' Print Out
Result:
With Worksheets("Sheet1")
.Cells(7, 2) = "近似解 x = " & X1
End With
EndJob:
End Sub
サンプル