C++高手进——用迭代法求x=根号a.求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)的程序纠错。

//用迭代法求x=根号a。求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)//要求前后两次求出的x的差的绝对值小于10的-5次方。//Myprogram:... //用迭代法求x=根号a。求平方根的迭代公式为X(n+1)=(1/2)*(Xn+a/Xn)
//要求前后两次求出的x的差的绝对值小于10的-5次方。
//My program:
(1)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a,t;
cin>>a;
x=a/2;
do
{
t=x;
x=(1/2)*(x+a/x);
}while(fabs(x-t)>=1e-5);
cout<<"the square root of "<<a<<" is "<<x<<endl;
return 0;
}
(2)
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
double x,a;
cin>>a;
x=a/2;
while(fabs(sqrt(x*x-a))>=1e-5)//这里的条件是用现在的x表示以前的x,再让两数相减得到的
x=(1/2)*(x+a/x);
cout<<"the square of "<<a<<" is "<<x<<endl;
return 0;
}
这两个为什么答案总是不对?请高手指教。
展开
 我来答
Qinee
2012-11-29
知道答主
回答量:10
采纳率:0%
帮助的人:9.4万
展开全部
求平方根不是用(1/2)相乘就可以的了,可以用到“cmath”头文件里面的sqrt()函数求出来的。x = sqrt(a), 才表示x 等于 a的开根号。如果不用求开根号的函数的话,可以用pow()实现,a的(1/2)次方就表示x。
后面的 等式 同理
X(n+1)=(1/2)*(Xn+a/Xn) 貌似前面的不是乘号,而是表示几次方。(就是1/2次方)
xiaobomo
2012-11-29 · TA获得超过523个赞
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:364万
展开全部
x=(1.0/2)*(x+a/x); 这一句改一下就可以了,因为1/2=0
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
le284
2012-11-29 · 还没有填写任何签名呢
le284
采纳数:315 获赞数:996

向TA提问 私信TA
展开全部
1/2 = 0 ; 改为(1.0/2.0)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式