見出し画像

ニュートン・ラプソン法

どうも~理系の助手です~

今回はExcelのプログラミングでニュートン・ラプソン法を解説したいと思います。これは解を求めるという意味では二分法と分野は同じですがアプローチが違います。

ニュートン・ラプソン法なんて奇抜な名前がありますが、式1つ考え方1つを理解出来ればなんてこと無いので頑張りましょう。

式は

画像1

式を簡単に説明するとx1の値を使ってx2を求めるこれを繰り返して解に出来るだけ近い値つまり近似値を求めて完了です。

補足して言うとx1のある3カ所x3の時はx2が入って求める様に使います。
f( )は関数なのでsin( )とかcos( )などを使います。分数の下のfに付いてる点はミスでは無くfを1回微分した関数を使います。

考え方はイメージで言うとこんな感じです。

画像2

式を使って赤丸を求めています。

ここまでニュートン・ラプソン法そのものを説明しました。

ここからはプログラムも説明しますが、読みたい人だけ進めてください。


vbaのプログラムを載せます。

1     Sub main()
2     
3     Dim i As Variant, a(10, 10) As Variant
4        a(1, 1) = 3
5        a(1, 2) = f(a(1, 1))
6        a(1, 3) = df(a(1, 1))
7        
8       i = 2
9        Do
10           a(i, 1) = a(i - 1, 1) - (a(i - 1, 2) / a(i - 1, 3))
11           a(i, 2) = f(a(i, 1))
12           a(i, 3) = df(a(i, 1))
13       i = i + 1
14           If i > 10 Then
15               Exit Do
16           End If
17       Loop
18       
19    End Sub

見て欲しい場所はDoの下の式です。この式が上で説明したニュートン・ラプソン法で使う式です。

3行目から6行目1回目の処理をして8行目から17行目繰り返し処理を行い、14行目Ifを使って処理を止めています。

画像3

プログラムをイメージ化するとこんな感じで、プログラムの4行目a( 1 , 1 )3が最初に入ってa( 1 , 2 )、a ( 1 , 3 )を出して3つの数字を使ってa( 2 , 1 )の値を出す。事の繰り返しをするイメージです。


最後に個人的な感想ですが、この処理をいつ使うのか全く以て思いつきません。なので二分法・ニュートン・ラプソン法を使って、こんな便利なことがありますよってことを、ここで紹介とかはしません。気になった方は自分で調べてください。あくまで課題をこなす、授業の補助的な役割でしかないと思っています。あしからず。

2021/2/8

いいなと思ったら応援しよう!