首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

新手求急救错哪了

2012-02-10 
新手求急救哪里错了 求救//二分法求2x^3-4*a^2+3x-60的根float a1,a2,a0,fa110.0a2-10.0do{a0(a1+a

新手求急救哪里错了 求救

//二分法求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);
}

热点排行