こんにちは。
今回は、Pythonで非線形方程式を解くということで、
ニュートン法について書きたいと思います。
それでは書いていきます。
ニュートン(Neuton)法の考え方
考え方については、以前書いた以下の記事を参考にしてください。
ニュートン(Neuton)法のPythonコード
今回は、以下の式を解くコードを書きます。
def f(x): return 5*x*x*x + 10*x*x - 2*x -5 def f_dash(x): return 15*x*x + 20*x -2 if __name__=="__main__": x_start = 2.0 # 初期位置 err = 100.0 x_pre = x_start max_itr = 10000 # 最大ステップ数 for i in range(max_itr): if(err<0.00000001): break x_start = x_start - f(x_start)/f_dash(x_start) err = (x_start - x_pre) * (x_start - x_pre) x_pre = x_start print(x_start) print("result : %f" %(x_start))
結果としては、以下のようになります。
1.2755102040816326 0.8770043688220908 0.7178280530709943 0.6896230929582822 0.6887561075711665 0.6887552982476247 result : 0.688755
今回の式はグラフにすると、以下のようになるので、
ニュートン法による解があっていることがわかります。