ニュートン法
ニュートン法
ニュートン法(ニュートン・ラフソン法)は、方程式を数値計算によって解くための反復的な方法による求根アルゴリズムの1つです。
①根の近くの値 を初期値にします。
② の における接戦を引き、 軸と交わったところを とし、 以下同様の手順で と求めます。
③ を求めるには、
という性質があることを用いて、
と、前の値 を用いて求めることができます。
になったときの の値を求める根とし、そうでないなら②を繰り返します。 は適当な精度を選びます。
プログラム
#include <iostream> #include <math.h> using namespace std; #define f(x) ((x)*(x)-2) #define g(x) (2*(x)) #define EPS 1e-09 #define LIMIT 50 int main(void) { double x=2.0,dx; int k; for(k=1;k<=LIMIT;k++){ dx = x; x=x-f(x)/g(x); if (fabs(x-dx)<fabs(dx)*EPS){ cout << "x=" << x << endl; break; } } if (k>LIMIT) cout << "収束しない" << endl; }
実行結果
x=1.41421