【问题标题】:how to find out square root of a number ?. I am using babylonian method but it return wrong answer for number between 0 and 1如何找出一个数的平方根?我正在使用巴比伦方法,但它返回 0 到 1 之间数字的错误答案
【发布时间】:2012-03-23 07:04:18
【问题描述】:

我正在使用下面的代码,它基本上是巴比伦方法,我如何修改它,以便它返回正确的值,即 b/w 0 和 1。此外,谁能告诉我如何找到 a 的立方根编号

int main(){
    double n;
    cin>>n;
    double e= 0.0000001;
    double x = n;
    double r = 1;
    while(x-r >0.0000001){
        x = (x+r)/2;
        r = n/x;
    }
    printf("%f",x);
    return 0;
}

【问题讨论】:

    标签: math logic


    【解决方案1】:

    我。不要使用差异,而是使用其绝对值。例如,

      while((x-r >0.0000001)||(r-x>0.0000001)){ ...
    

    二。对 y=x^(1/n) 使用以下迭代:y'=((n-1)*y^n + x)/(n*y^(n-1))

    编辑

    二。描述了 x 的第 n 个根的迭代步骤。对于立方根,使用

    y' = (2y^3 +x)/(3y^2)

    该方法基于牛顿法,见http://en.wikipedia.org/wiki/Newton%27s_method

    【讨论】:

    • 只检查 x-r 的绝对值就可以了。我怎样才能得到立方根?
    • 再看一遍,我已经在 II 中写过了。 :-)
    • 你能解释一下你在第二步中要做什么
    猜你喜欢
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    相关资源
    最近更新 更多