#include "stdio.h"
#include <math.h>
/* f(x) */
double f(double x)
{
return pow(x,2) -2;
}
/* f(x)の導関数 */
double g(double x)
{
return 2 * x;
}
int main()
{
double x;
double new_x;
double delta;
int i;
int ch;
/* 初期値 */
x = 10;
/* 収束判定のための delta 値*/
delta = 0.000001;
printf("繰り返し回数\tnew_x\t\tf(x)\t\tg(x)\n");
/* for ... になっているのは 100 回繰り返しても収束しなかったら計算を終わりたいから */
for(i = 0 ; i < 100 ; i++) {
new_x = x - f(x) / g(x);
printf("%2d\t\t%lf\t%lf\t%lf\n",i,new_x,f(x),g(x));
/* fabs はdouble 型の変数について絶対値を求める関数 */
if( fabs(f(new_x)) < delta ) {
printf( "収束した\n" );
printf( "解は %lf\n", new_x);
break;
}
x = new_x;
}
printf( "Enter キーを1,2回押してください. プログラムを終了します\n");
ch = getchar();
ch = getchar();
return 0;
} •20
収束したかの判定を
行っている部分
反復公式