C语言作业:二分法求方程2x^3-4x^2+3x-6=0在(-10,10)之间的根 中遇到的问题

#include<stdio.h>#include<math.h>intmain(){doublea,b,c,d;a=10;b=-10;c=(a+b)/2;d=2*c*c... # include <stdio.h>
# include <math.h>
int main ()
{
double a,b,c,d;
a=10;
b=-10;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
while(fabs(d)>1e-8)
{
if(d<0)
{
a=b;
b=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
else
{
b=a;
a=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
}
printf("The answer is %lf",c);
return 0;
}
这是我写的程序,为什么出不来答案啊
展开
 我来答
风若远去何人留
推荐于2017-09-15 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部

界限处理不对

对于区间[b, a]

初始

f(a) > 0

f(b) < 0

对于c=(a+b)/2

如果f(c)>0 则继续操作[b,c]

否则操作[c,a]

这个是二分法的核心

所以代码应该是

# include <stdio.h>
# include <math.h>
int main ()
{
double a,b,c,d;
a=10;
b=-10;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
while(fabs(d)>1e-8)
{
if(d<0)
{
b=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
        else
{
a=c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
}
}
    printf("The answer is %lf",c);
return 0;
}
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式