资讯详情

用二分法求方程f(x)=ax4+bx3+cx2+dx+e=0 在 (x1,x2) 之内的根 本题保证f(x1)*f(x2)且(x1,x2)内只有一个根。

输入说明

1:5个空间分隔的整数a,b,c,d,e,a,b,c,d,e∈[-9,9]

行2:2空格分隔的整数x1,x2,x1,x2∈[-10,10],x1<x2

输出说明

行1:浮点数代表根,精确到小数点后10位

复制输入样例

0 2 -4 3 -6

-10 10

复制输出样例

2.0000000000

#include<iostream> using namespace std; int a,b,c,d,e;//定义全局变量,便于math函数调用     double math(double x)//计算f(x)的值  {    return a*x*x*x*x b*x*x*x c*x*x d*x e;  } int main(){   do scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);   while(a<-9||a>9||b<-9||b>9||c<-9||c>9||d<-9||d>9||e<-9||e>9);   int x1,x2;   do scanf("%d%d",&x1,&x2);   while(x1<-10||x1>10||x2<-10||x2>10);   double l=x1,r=x2;//将x1赋给l(left),将x2赋给r(right)用区间[l,r]表示   while(r-l>1e-12)//精度限制,防止误差   {     double mid=(l r)/2;//求中值     if(math(mid)>=0)///判断中对应的函数值是否大于0     {       if(math(l)<=0) r=mid;//当mid函数值大于0,l函数值小于或等于0时间间隔的右边界mid       else l=mid;     }     else      {       if(math(l)<=0) l=mid;       else r=mid;  }   }   if(math(l)==0)         printf("%.10lf\n",l);     else         printf("%.10lf\n",l);     return 0;  }

标签: 92芯圆形连接器插座cx2

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台