ニュートン法は、グラフの接線を利用して方程式の解の近似値を求める、効率のよい方法です。これについては前の記事があります。
www.omoshiro-suugaku.com
このときは具体的にプログラムを書いて解を求めて……とはやりませんでした。今回は実験してみましょう。
図はy=f(x)のグラフです。
点(p,q)で接線を引き、x軸との交点を求めます。接線の方程式は
ですから、y=0とおくと
これが接線とx軸の交点の座標です。この点での接線をまた引き、同じことを繰り返します。図を見ると分かりますが、何回かで接線とx軸の交点はかなりグラフとx軸の交点に近づきます。手で計算すると大変ですから、もちろんコンピュータでやります。ここではf’(x)を通常の導関数の計算で求めるのではなく、近似値で代用します。この近似値は前に使った方法で求めます。
では、例によってPythonで。√2を求めてみます。
import sys def f(x): return x *x - 2 def g(p): # x = p での微分係数(導関数の値)を求める return (f(p + d) - f(p))/d # x = 2 #xの初期値 d = 0.0001 #微分係数を求めるためのxの増分 # #xのところで接線を引き、x軸との交点を求める。 #その交点の座標を改めてxとおき、繰り返す。 for i in range(100): x = x - f(x) / g(x) # print('解の近似値 x = ', x) sys.exit()
実行結果は以下の通り。
解の近似値 x = 1.414213562373095
この方法(グラフの傾きを近似値で求める)なら、相手にする方程式によって導関数を入れ直す、という作業は不要です。
方程式は、解の公式があるものなど本当にわずかです。ほぼないと言ってもよいでしょう。しかし実用では困りません。コンピュータを使えば近似値を求めることができるからです。