/* Newton法 */ /* newton.c */ #include #include #define EPS 1.0e-14 #define NMAX 10 double f(double x); double df(double x); int main(void) { int n; double x,fx,dfx; x = 2.0; /* 初期値 */ n = 0; fx = f(x); dfx = df(x); printf("%3d %20.15f %10.2e\n",n,x,fx); while(fabs(fx) > EPS && n < NMAX){ x = x - fx / dfx; n++; fx = f(x); dfx = df(x); printf("%3d %20.15f %10.2e\n",n,x,fx); } return 0; } double f(double x) /* f(x) */ { double y; y = -5.0 + x * (- 2.0 + x * x); return y; } double df(double x) /* f'(x) */ { double y; y = -2.0 + 3.0 * x * x; return y; }