永发信息网

c语言 使用二分法求方程额e^x+x=0在(-1,0)之间的根

答案:2  悬赏:10  手机版
解决时间 2021-02-19 20:41
  • 提问者网友:缘字诀
  • 2021-02-19 10:26
c语言 使用二分法求方程额e^x+x=0在(-1,0)之间的根
最佳答案
  • 五星知识达人网友:荒野風
  • 2021-02-19 10:58
#include<stdio.h>
#include<math.h>
#define eps 5e-6
#define delta 1e-6
#define e 2.718
float bisection(float a,float b,float (*f)(float)){
float c,fc,fa=(*f)(a),fb=(*f)(b);
int n=1;
printf("二分法次数\tc\t\tf(c)\n");
while(1){
if(fa*fb>0){printf("不能用二分法求解");break;}
c=(a+b)/2;fc=(*f)(c);
if(fabs(fc)<delta) break;
else if(fa*fc<0){b=c,fb=fc; }
else {a=c,fa=fc;}
if (fabs(b-a)<eps) break;
printf(" %d\t\t%f\t%f\n",n++,c,fc);
}
return c;
}
float f(float x){
//return x*x*x+x*x-3*x-3;
return exp(x)+x;}
void main(){
float a=-1,b=0;
float x;
x=bisection(a,b,f);
printf("\n 方程的根是: %f\n",x);
getchar();
}
全部回答
  • 1楼网友:酒醒三更
  • 2021-02-19 11:24
#include"stdio.h" //#include"conio.h" #include"math.h" float fun(float x) { return (e^x+x); } float xpoint(float x1,float x2) { return (x1+x2)/2; } float root(float x1,float x2) { float x,y,y1,y2; y1=fun(x1); printf(""); y2=fun(x2); do {x=xpoint(x1,x2); y=fun(x); if(y1*y<0) { x2=x; y2=y; } else { x1=x; y1=y; } }while(fabs(fun(x))<1e-6); return x; } void main() { float a,b,f1,f2,x; do { printf("输入a b\n"); scanf("%f%f",&a,&b);//输入a=-1,b=0 f1=fun(a); f2=fun(b); }while(f1*f2>=0); x=root(a,b); printf("%f",x); getch(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯