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;
}
这是我写的程序,为什么出不来答案啊 展开
# 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;
}
这是我写的程序,为什么出不来答案啊 展开
展开全部
界限处理不对
对于区间[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;
}
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询