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();
}
#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();
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯