用C语言,运用二分法,求函数零点。

来源:百度知道 编辑:UC知道 时间:2024/05/28 02:37:01
如题,最好可以自己定义函数,能定义对数函数和二次函数就可以了。酌情追加分数。

#include<stdio.h>
#include<math.h>
typedef double(*fun)(double xx);//函数指针
#define e 0.000001 //误差
void eff(double a,double b,fun hs)//二分法
{int i=0;
while(fabs(hs(a)-hs(b))>e&&fabs(a-b)>e){i++;
if(hs(a)*hs((b+a)/2)>0){
a=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,a);
}
else {
b=(a+b)/2;
printf("迭代第%d次:\t%f\n",i,b);
}
}
}

double hs1(double xx)//函数f(x)=x^3+x^2-3x-3
{return xx*xx*xx+xx*xx-3*xx-3;}
double hs2(double xx)//函数f(x)=lnx+x
{return log(xx)+xx;}
void main()
{

printf("用二分法求方程x^3+x^2-3x-3=0在1.5附近的根\n");
eff(1.0,2.0,hs1);
printf("用二分法求方程lnx+x在0.5附近的根\n");
eff(0.0,1.0,hs2);
}