我正在编写一个二分法算法来查找多项式的根。我的代码的第二部分说如果变量FP
等于零或它的绝对值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);
}