7-18 PTA二分法求多项式单根
习题:
代码案例:
#include<stdio.h>
double a3=0,a2=0,a1=0,a0=0;
double f(double);
int main()
{
double a=0,b=0,mid=0;
scanf("%lf%lf%lf%lf\n",&a3,&a2,&a1,&a0);
scanf("%lf%lf",&a,&b);
while(b-a>=0.001&&f(a)*f(b)<=0){
if(f(a)==0){
mid=a;
break;
}
else if(f(b)==0){
mid=b;
break;
}
mid=(a+b)/2;
if(f(mid)==0){
break;
}
else{
if(f(a)*f(mid)>=0){
a=mid;
}
else{
b=mid;
}
}
}
printf("%.2lf",mid);
return 0;
}
double f(double x){
double sum=0;
sum=a3*x*x*x+a2*x*x+a1*x+a0;
return sum;
}
预备知识点:
1.while(b-a>=0.001&&f(a)*f(b)<=0)
可以通过使用&&来同时控制,while(b-a>=0.001&&f(a)*f(b)<=0)
使循环满足两个条件
2.if & else 之间的逻辑结构
3.同时对于比较大的数,可以将其在main()函数外定义,以防止报错
参考:
(https://blog.csdn.net/zoroly/article/details/119764850)