多項式の根を見つけるための二分法アルゴリズムを書いています。FP
変数がゼロまたはその絶対値に等しいかどうかを示す私のコードの2番目の部分は、私がb-a
推測するifステートメントを壊すだけです。
プログラムが for ループ (反復) を完全に停止し、p を返すようにします。そして最後に、解決策を得るためにかかった反復回数を出力したいのですが、明らかに私のprintfステートメントを使用すると、ルート(ゼロ)が取得されてもプログラムが実行され続けることがわかります。
メカニズム全体を停止し、ゼロである p の値と正確な反復回数の両方を返す方法についてのアイデアはありますか? ありがとう
double computeroots(double a, double b, double epsilon, int MaxIter)
{
double FA = pow(a,4) -4*a + 1;
double FB = pow(b,4) - 4*b + 1;
double FP;
double p;
int i;
for(i=0;i<MaxIter;i++) {
if(FA * FB < 0) {
p = a + (b-a)/2;
FP = pow(p,4) - 4*p +1;
if(FP == 0 || abs(b-a) < epsilon) {
return p;
break;
} else if (FA * FP >0) {
a =p;
FA = FP;
} else {
b = p;
FB = FP;
}
i++;
}
}
printf("The number of iterations is: %d\n", i);
}