|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 解释一下计算数字N的平方根的巴比伦算法
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
5687
人关注过本帖
标题:
解释一下计算数字N的平方根的巴比伦算法
只看楼主
加入收藏
忘了
等 级:
论坛游民
帖 子:16
专家分:55
注 册:2010-5-17
结帖率:
100%
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
解释一下计算数字N的平方根的巴比伦算法
在书上看到一道题,看不懂啥意思,解释一下,
(1)先猜一个答案guess(可以将n/2作为第一个答案)
(2)计算r=n/guess
(3)令guess=(guess+r)/2
(4)如有必要返回第2步重复多次。步骤2和步骤3的重复次数越多, guess就越接近n的平方根。
写一个程序,输入整数作为n的值,重复执行巴比伦算法,直到guess与前一个guess的误差在1%范围内,将答案作为一个double输出
搜索更多相关主题的帖子:
巴比伦
平方根
算法
数字
解释
2010-07-30 20:54
举报帖子
使用道具
赠送鲜花
aizuoai123
等 级:
论坛游民
帖 子:44
专家分:36
注 册:2010-5-14
第
2
楼
收藏
得分:0
楼主
什么书
2010-07-30 20:58
举报帖子
使用道具
赠送鲜花
zisefengye
等 级:
职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
第
3
楼
收藏
得分:0
大概就是这样吧。
int main(int argc, char **argv)
{
int n = 0;
scanf("%d", &n);
double guess = n / 2;
double tmp = guess;
while(true)
{
double r = n / guess;
guess = (guess + r) / 2;
if(abs(tmp - guess) / tmp < 0.001)
{
break;
}
tmp = guess;
}
printf("%lf", guess);
system("pause");
}
[
本帖最后由 zisefengye 于 2010-7-30 21:40 编辑
]
2010-07-30 21:38
举报帖子
使用道具
赠送鲜花
pangding
来 自:北京
等 级:
贵宾
威 望:
94
帖 子:6784
专家分:16751
注 册:2008-12-20
第
4
楼
收藏
得分:20
楼主是想知道这个算法为什么对吧?那是个数学问题。
这题可以这么看,已知 a^2 ,求 a 的运算就是开方对吧?
现在把 (3) guess=(guess+r)/2 看成一系列迭代的过程,那么就是
xn+1 = (xn + r) / 2 = (xn + a^2 / xn) / 2
这里把 N 记成 a^2 是为了方便。你自己一推就会了,高中甚至初中的知识就足矣。
你把 2 乘过去,两边再同乘 xn (当然假设它不为0,否则 0 的平方根不用求)整理一下就会变成
xn^2 - 2xn+1 - a^2 = 0
如果 xn 在这个变化下趋一于一个定值 x 那么,x 代到上面也一定满足,即
x^2 - 2x - a^2 = 0
==>
(x-a)^2 = 0
==> x = a
就能做到反求 a 的目的。
但 xn 的变化趋一于一个定值吗?
因为 x + n / x 在 a 的两侧是单调的。所以每次算完了都会更接近 a 这个值。(我范点懒,不过确实相信应该)可以证明这个数列在给定任意非零初值之后,会收敛到 a 上。
2010-07-31 03:25
举报帖子
使用道具
赠送鲜花
忘了
等 级:
论坛游民
帖 子:16
专家分:55
注 册:2010-5-17
第
5
楼
收藏
得分:0
回复 2楼 aizuoai123
c++面向对象程序设计
2010-07-31 23:54
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
解释一下计算数字N的平方根的巴比伦算法
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.025076 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved