// // ニュートン法を用いて近似解を求めるプログラム // // 関数 f(x),導関数 f'(x)におけるニュートン法の処理手順 // (1) 収束精度 e,初期値 x0を設定する。 // (2) x1 ← x0 - f(x0) / f'(x0) // (3) |x1 - x0| ≦ e のとき,x1を近似解とし終了する。さもなければ,x0 ← x1として(2)に戻る。 // #include #include double func_org(double x); // プロトタイプ宣言 double func_dif(double x); // プロトタイプ宣言 int main(void) { double e = 0.0001; // 収束精度 double x0, x1; int n = 10; // 最大更新回数 int i; printf("初期値="); scanf("%lf", &x0); for (i = 0; i < n; i ++) { printf("%4d: x = %12.6f, f(x) = %12.6f\n", i, x0, func_org(x0)); x1 = x0 - func_org(x0) / func_dif(x0); if (fabs(x1 - x0) <= e) { break; } x0 = x1; } printf("\n"); if (i == n) { printf("近似解を求めることができませんでした。\n"); } else { printf("近似解として,%12.6fを得ました。誤差は,%12.6fです。\n", x1, func_org(x1)); } return 0; } double func_org(double x) { double y; y = x * x - 2.0; return y; } double func_dif(double x) { double yd; yd = 2.0 * x; return yd; }