新手求急救哪里错了 求救

wanglonghanzhen 2010-04-28 08:06:15

//二分法求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);
}
...全文
157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanglonghanzhen 2010-04-28
  • 打赏
  • 举报
回复
还是谢谢你了
wanglonghanzhen 2010-04-28
  • 打赏
  • 举报
回复
我知道了 应该是while 指的是下面的语句 而不是上面的
wanglonghanzhen 2010-04-28
  • 打赏
  • 举报
回复
只是第一次循环为零,可是多次循环之后就应该不为0了?
GrayMole2010 2010-04-28
  • 打赏
  • 举报
回复
//二分法求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); //这里的判断反了,应该是大于等于
//a0-a1也不合适,应该是a1-a2
printf("%f",a0);
}
「已注销」 2010-04-28
  • 打赏
  • 举报
回复
//二分法求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 了


看下这个:
http://topic.csdn.net/t/20060727/13/4908869.html
wanglonghanzhen 2010-04-28
  • 打赏
  • 举报
回复
编译没错 输出结果是0.0000000 错了的
wanglonghanzhen 2010-04-28
  • 打赏
  • 举报
回复
我现在只要求一个
cx1014 2010-04-28
  • 打赏
  • 举报
回复
编译错??算法错??
3次方程最多可有3个根吧,你这个怎么只求一个,即便多次使用这个函数求多个根也不行吧,对于3次方程是有3个单调区间的,你这个很可能会直接跳过两个根

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧