猿问

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

qq_慕丝0448176
浏览 1444回答 1
1回答

0puppy0

#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);}
随时随地看视频慕课网APP
我要回答