为了账号安全,请及时绑定邮箱和手机立即绑定

在C中如何用循环结构和二分法求零点

在C中如何用循环结构和二分法求零点

C C++
qq_慕丝0448176 2016-11-10 10:44:26
查看完整描述

1 回答

?
0puppy0

TA贡献24条经验 获得超7个赞

#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);
}

查看完整回答
反对 回复 2016-12-23
  • 1 回答
  • 1 关注
  • 1443 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信