匿名用户
1级
2013-12-05 回答
你fabs取绝对值 >(1e-8 = (2.718 - 8)) 肯定恒成立。。。 while(d != 0)
追问:
不行啊还是没东西
追答:
double a,b,c,d;
a=10;
b=-10;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6;
fun(c, d)
{
if(d >0)
{
if (d != 0)
{
c = (b + c)/2;
d = 2*c*c*c - 4*c*c +3*c -6;
fun (c, d);
}
}
}
如果d 大于0, 要求的值 才会在b 和 c 之间
给你个提示:d>0 方程式的值在C左边 然后取中间点求值后还得继续判断方程式的值在这个中点的左还是右。 我上面的程序有问题, 大致意思还行。。。你参考着做吧 主要是你没把这个取值范围弄正确
追问:
你这个程序我看不懂啊啊啊啊。。。才刚学C语言。。。不是啊我加了d的赋值然后前面也有d符号的判断了为什么还是没东西呢
追答:
你把新写的程序整个发一下
追问:
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;
}
追答:
a=10;
b=-10;
你的算法不对 如果d<0 它的结果就会在c和a之间
if(d<0)
{
b = c;
c=(a+b)/2;
d=2*c*c*c-4*c*c+3*c-6
}
参考:
void fun(double x1, double x2)
{
x = (x1 + x2)/2;
result_num = 2*x*x*x - 4*x*x + 3*x - 6;
if (result_num > 0)
{
if (result_num != 0)
{
x2 = x;
fun(x1, x2);
}
}
if (result_num < 0)
{
if (result_num != 0)
{
x1 = x;
fun(x1, x2);
}
}
double a = x;
};
int main()
{
fun(-10, 10);
}
还有疑问加我QQ 1319556671
追问:
可是。。可是你的程序我看不懂啊啊啊啊啊。。。。
追答:
?????????????????????????