PADのテンプレート 処理、連接 x0 ← x x ← x0+ u(x0) err ← |x - x0| 判断(選択) x2 ← x3 { x0 = x; x = x0+u(x0); err= fabs(x-x0); } 判断(選択) f (x3) > 0 x2 ← x3 x1 ← x3 if (f(x3) > 0) x2 = x3; else x1 = x3;
(repeat ~ until) 前判定反復 a ≦ 0 エラーメッセージ出力 a の入力 後判定反復 err < e x0 ← x while (a <= 0) { printf("input error\n"); printf("a = "); scanf("%lf", &a); } a ≦ 0 エラーメッセージ出力 a の入力 後判定反復 (repeat ~ until) err < e x0 ← x x ← 0.5(x0+ a/x0) err ← |x - x0| do { x0 = x; x = 0.5*(x0+a/x0); err= fabs(x-x0); } while (err >= eps); repeat ~ until と do ~ while は 条件が逆 問題向き反復 for (i=1;i<=N;i++) { s += x[i]*y[i]; } i = 1,...,N s ← s + xi yi
二分法 = 二分法 定 義 … 0 を返す 引用(参照) 入力 結果の出力 int bisection() { ... ; ... ; return 0; } 引用(参照) 二分法 入力 結果の出力 { scanf("%lf%lf",&x1,&x2); x = bisection(x1,x2); printf("x = %g\n",x); }
※上記は例です。プログラムと異なる場合は、 それに合わせて必ず修正すること。 二分法 = x1←1, x2 ←2 err >= eps x3 ← (x1+x2)/2 f (x3) > 0 x2 ← x3 x1 ← x3 err ← x2 - x1 (x1+x2)/2 を出力 ニュートン法 = x を入力 err >= eps(|x0|+|x|) x0 ← x x ← x0- f(x0)/f ’(x0) err ← |x - x0| x を出力 ※上記は例です。プログラムと異なる場合は、 それに合わせて必ず修正すること。