读书人

新手求急救错哪了

发布时间: 2012-02-10 21:27:42 作者: rapoo

新手求急救哪里错了 求救

//二分法求2x^3-4*a^2+3x-6=0的根
float a1,a2,a0,f;
a1=10.0;
a2=-10.0;
do
{
a0=(a1+a2)/2.0;
f=2*a0*a0*a0-4*a0*a0+3*a0-6;
if(f>0) //判断a0的值的正负
a1=a0;
else
a2=a0;
}
while (fabs(a0-a1)<=1e-5);
printf("%f",a0);
}


[解决办法]
编译错??算法错??
3次方程最多可有3个根吧,你这个怎么只求一个,即便多次使用这个函数求多个根也不行吧,对于3次方程是有3个单调区间的,你这个很可能会直接跳过两个根
[解决办法]

C/C++ code
//二分法求2x^3-4*x^2+3x-6=0的根  !!! 这里应该是 4*x^2 吧     float a1,a2,a0,f;    a1=10.0;    a2=-10.0;    do    {        a0=(a1+a2)/2.0;  // !!!这里a0都已经赋值为 0 了        f=2*a0*a0*a0-4*a0*a0+3*a0-6; // !!!f=-6         if(f>0) //判断a0的值的正负            a1=a0;           else            a2=a0;    }    while (fabs(a0-a1)<=1e-5);    printf("%f",a0); //!!! 肯定输出为 0 了
[解决办法]
//二分法求2x^3-4*a^2+3x-6=0的根
float a1,a2,a0,f;
a1=10.0;
a2=-10.0;
do
{
a0=(a1+a2)/2.0;
f=2*a0*a0*a0-4*a0*a0+3*a0-6;
if(f> 0) //判断a0的值的正负
a1=a0;
else
a2=a0;
}
while (fabs(a0-a1) <=1e-5); //[color=#FF0000]这里的判断反了,应该是大于等于[/color]
//[color=#FF0000]a0-a1也不合适,应该是a1-a2[/color]
printf( "%f ",a0);
}

读书人网 >C++

热点推荐