二分法编程问题求解,代码如下,但不能达到理想效果
#include <math.h>
#include <stdio.h>
#define p 3.1415926
//#define f(x) exp(-x[0])-sin((p/2)*x[0]
main()
{
float c[20],a,b;
int i=0;
printf("请输入有根区间的起始和终止值a,b\n");
scanf("%f,%f",&a,&b);
c[0]=(a+b)/2;
if (exp(-a)-sin((p/2)*a)*(exp(-b)-cos((p/2)*b))<0)
{
for(i=0;i<5;i++)
{
if(exp(-c[i])-sin((p/2)*c[i])*(exp(-b)-sin((p/2)*b))<0)
{
a=c[i];
c[i]=(a+b)/2;
}
else
{
b=c[i];
c[i]=(a+b)/2;
}
while(b-a<0.00005)
printf("%f\n",c[i]);
}
}
}