题目:
流程图:
代码:
#include <stdio.h>
#include <math.h>
//y=sinX-X^2/4
//区间(1.5,2) 误差10^(-2)
// (2-1.5)/2^(k+1)<=1/100
double functions(double x)
{
return (sin(x)-x*x/4);
}
int main()
{
int k,K;
double a;
double b;
double y1,y2;
double x,y,E;
printf("input:a,b,E\n");
scanf("%lf%lf%lf",&a,&b,&E);//a=1.5 b=2 E=0.01
K=log((b-a)/E)/log(2);
printf("%d\n",K);
y1=functions(a);
y2=functions(b);
if(y1*y2>0)
{
printf("此区间没有零点!\n");
return 0;
}
for(k=0;k<=K;k++)
{
x=(a+b)/2;
y=functions(x);
if(y==0)
{
printf("X=%lf Y=%lf\n",x,y);
return 0;
}
else
{
if(y1*y<0)
b=x;
else
{
a=x;
y1=y;
}
if(b-a<E)
{
printf("X=%lf Y=%lf\n",x,y);
return 0;
}
}
}
if(k==K)
printf("此区间没有零点!\n");
return 0;
}