表3と表4の出力に用いたCプログラム(文字コードはUTF-8)
#include <stdio.h>
#include <math.h>
#define EPS 1.0e-15
#define NMAX 30
double f(double);
double df(double);
int main(void)
{
int n = 0;
double x,fx;
printf("初期値を入力してください。");
scanf("%lf",&x);
fx = f(x);
printf("-------------------------------------\n");
printf("%3s %10s %18s \n","nu","x_nu","f(x_nu)");
printf("-------------------------------------\n");
printf("%3d %20.15f %8.2g\n",n,x,fx);
while(fabs(fx) > EPS && n < NMAX){
x = x - fx/df(x);
fx = f(x);
n++;
printf("%3d %20.15f %8.2g\n",n,x,fx);
}
printf("-------------------------------------\n");
return 0;
}
double f(double x)
{
double y;
y = -2.0 + x * (5.0 + x * (-4.0 + x));
return y;
}
double df(double x)
{
double y;
y= 5.0 + x * (-8.0 + 3.0 * x);
return y;
}
gcc version 4.0.1 (Apple Computer, Inc. build 5250) によるコンパイルと実行
$ cc -Wall -lm newton.c $ ./a.out 初期値を入力してください。2.1 ------------------------------------- nu x_nu f(x_nu) ------------------------------------- 0 2.100000000000000 0.12 1 2.015384615384615 0.016 2 2.000452488687783 0.00045 3 2.000000408936907 4.1e-07 4 2.000000000000334 3.3e-13 5 2.000000000000000 0 -------------------------------------