用二分法求方程在(-10,10)之间的根:a*x*x*x+b*x*x+c*x+d=0.
从键盘上输入a,b,c,d,计算x,精度为10的-5次方,输出时保留2位小数。
例:
(1)输入:2,-4,3,-6 输出:x=2.00
(2)输入:4,-1,3,-6 输出:x=1.00
(3)输入:2.2,3.3,4.4,2.5 输出:x=-0.79
精度控制方式: f(c)的绝对值小于10的-5次方(c为中点)
给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1、确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2、求区间(a,b)的中点c.
3、计算f(c).
(1) 若f(c)=0(即|f(c)|<1e-5),则c就是函数的零点,程序结束;
(2) 若f(c)!=0 并且 f(a)·f(c)<0,则令b=c;
(3) 若f(c)!=0 并且 f(c)·f(b)<0,则令a=c.
(4) 重复2-3.
#include<stdio.h>
#include<math.h>
#define MIN pow(10,-5)
int main(void)
{
double a,b,c,d,fa,fb,fc,A=10,B=-10,C=0;
scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d);
do{
C=(A+B)/2;
fa=a*pow(A,3)+b*pow(A,2)+c*A+d;
fb=a*pow(B,3)+b*pow(B,2)+c*B+d;
fc=a*pow(C,3)+b*pow(C,2)+c*C+d;
if(fabs(fc)<MIN)
{
break;
}
else if((fb*fc)<0)
{
A=C;
}
else if((fa*fc)<0)
{
B=C;
}
}
while((fa*fb)<0);
printf("x=%.2lf",C);
return 0;
}