回复 9楼 书生牛犊
谢谢,已经解决,不过fun是什么意思
回复 6楼 炎天
已解决,谢谢
#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编辑过]