急!!!求C语言源程序:用二分法求2x^3-4x^2+3x-6=0在-10~10之间的根。谢谢

提示:①已知x1,x2分别为求值区间的两个端点。先求当前中点x0:x0=(x1+x2)/2②用if```else结构把f1和f2中与f0同号者以及对应的求值点用中点的相关... 提示:
①已知x1,x2分别为求值区间的两个端点。先求当前中点x0:x0=(x1+x2)/2

②用if```else结构把f1和f2中与f0同号者以及对应的求值点用中点的相关值迭代。
③在循环终端,系统自动检测误差条件式,如果真,再次循环,直到为假才终止。
具体步骤:
①输入x1,x2
②根据2x^3-4x^2+3x-6=0计算f1,f2

f1=2*x1*x1*x1-4*x1*x1+3*x1-6
f2=2*x2*x2*x2-4*x2*x2+3*x2-6
③计算x0,f0

x0=(x1+x2)/2
f0=2*x0*x0*x0-4*x0*x0+3*x0-6
④判断,如果x0*f0<0,则x2=x0,f2=f0;否则 x1=x0,f1=f0
⑤如果fabs(f0)>=1e-5,转去执行③,否则执行⑥
⑥输出方程的根
展开
 我来答
匿名用户
2013-12-04
展开全部
你的具体步骤中的第4步不对的。。应该是判断,如果f1*f0<0,则……以下是代码,输入-10,10以后,输出结果为2.00,望采纳! #include <stdio.h>
#include <stdlib.h>
#include <math.h>double f(double x)
{
return 2*x*x*x-4*x*x+3*x-6;
}int main()
{
double x1,x2,x0,f1,f2,f0;
scanf("%lf %lf",&x1,&x2);
f1=f(x1);
f2=f(x2);
while(1)
{
x0=(x1+x2)/2;
f0=f(x0);
if(f1*f0<0)
{
x2=x0;
f2=f0;
}
else
{
x1=x0;
f1=f0;
}
if(fabs(f0)>=1e-5) {}
else break;
}
printf("%.2f\n",x0);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式