c – 将巴比伦平方根算法推广到第n个根

c – 将巴比伦平方根算法推广到第n个根,第1张

概述我一直在寻找根算法,并遇到了巴比伦算法.我非常喜欢它,因为它简单易懂.但问题是它只需要平方根,当我正在创建一个能够以任何权力取得数字根的函数时.我只是尝试采取正整数. 这是功能: double functions::rot(double x, double y) { double z = x; double w = 1; double e = 0.000001; 我一直在寻找根算法,并遇到了巴比伦算法.我非常喜欢它,因为它简单易懂.但问题是它只需要平方根,当我正在创建一个能够以任何权力取得数字根的函数时.我只是尝试采取正整数.

这是功能:

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 zprint(rot(64,3)) # prints 4print(rot(59,6)) # prints 1.9730678338673044

请参阅此处获取reference.我建议您阅读它,因为它提供了更深入的解释.

总结

以上是内存溢出为你收集整理的c – 将巴比伦平方根算法推广到第n个根全部内容,希望文章能够帮你解决c – 将巴比伦平方根算法推广到第n个根所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1227839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存