c – 将巴比伦平方根算法推广到第n个根
发布时间:2020-12-16 07:13:41 所属栏目:百科 来源:网络整理
导读:我一直在寻找根算法,并遇到了巴比伦算法.我非常喜欢它,因为它简单易懂.但问题是它只需要平方根,当我正在创建一个能够以任何权力取得数字根的函数时.我只是尝试采取正整数. 这是功能: double functions::rot(double x,double y) { double z = x; double w =
我一直在寻找根算法,并遇到了巴比伦算法.我非常喜欢它,因为它简单易懂.但问题是它只需要平方根,当我正在创建一个能够以任何权力取得数字根的函数时.我只是尝试采取正整数.
这是功能: double functions::rot(double x,double y) { double z = x; double w = 1; double e = 0.000001; while (z - w > e){ z = (z + w) / 2; w = x / z; } return z; } y就是力量.有没有人有办法改变这个算法,所以y是根的力量?例如,如果y = 3,则采用立方根. 解决方法
将w = x / z更改为w = x / z * z的注释仅为1/3(双关语意)正确.您还需要另外两个更改,我认为这些更改在此Python代码中很明显:
def rot(x,y): # z = x w = 1 e = 0.000001 while (z - w > e): z = ((y - 1) * z + w) / y w = x / (z ** (y - 1)) # a ** b is a to the power of b in Python # you might want to use modular exponentiation in C++ # (or not if y is double...) return z print(rot(64,3)) # prints 4 print(rot(59,6)) # prints 1.9730678338673044 请参阅此处获取reference.我建议您阅读它,因为它提供了更深入的解释. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |