回复 9楼 书生牛犊
谢谢,已经解决,不过fun是什么意思
2016-10-23 00:00
2016-10-23 00:00
程序代码:#include<stdio.h>
#include<math.h>
double fun(double x){return 2*x*x*x-4*x*x+3*x-6;}//就是C语言的一般函数。用于计算f(x)的值的
int main(){
double x1=-10,x2=10,y;
double y1=fun(x1);
double y2=fun(x2);
while(fabs(y1)>0.0001 && fabs(y2>0.0001)){//二分求根的关键是y的值趋近0.啥时候满足条件啥时候跳出循环,如果顺利,可能一次循环都不必做
y=fun((x1+x2)/2);
if(fabs(y1)>fabs(y2)){x1=(x1+x2)/2;y1=y;}else{x2=(x1+x2)/2;y2=y;}
};
if(fabs(y1)<=0.0001)printf("%f",x1);else printf("%f",x2);
return 0;
}1.我写的那个int fun(int x){...}是C语言的函数,如果你还没学到函数这一章,OK,我们可以麻烦一点,修改所有调用fun()的地方。
程序代码:#include<stdio.h>
#include<math.h>
int main(){
double x1=-10,x2=10,y;
double y1=2*x1*x1*x1-4*x1*x1+3*x1-6;
double y2=2*x2*x2*x2-4*x2*x2+3*x2-6;
while(fabs(y1)>0.0001 && fabs(y2>0.0001)){//二分求根的关键是y的值趋近0.啥时候满足条件啥时候跳出循环,如果顺利,可能一次循环都不必做
y=2*((x1+x2)/2)*((x1+x2)/2)*((x1+x2)/2)-4*((x1+x2)/2)*((x1+x2)/2)+3*((x1+x2)/2)-6;
if(fabs(y1)>fabs(y2)){x1=(x1+x2)/2;y1=y;}else{x2=(x1+x2)/2;y2=y;}
};
if(fabs(y1)<=0.0001)printf("%f",x1);else printf("%f",x2);
return 0;
}[此贴子已经被作者于2016-10-23 10:43编辑过]

2016-10-23 00:08
[此贴子已经被作者于2016-10-23 02:21编辑过]

2016-10-23 02:09

2016-10-23 02:30
2016-10-23 08:21
2016-10-23 08:22
2016-10-23 10:15
2016-10-23 11:22

2016-10-23 11:51