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