需要C代码说明

时间:2013-11-08 03:09:50

标签: c square-root

有人可以解释以下代码吗? 变量ort的用途是什么?

void squart_root(double a)
{
if (a>0.0){
    double root = 1, ort = 0;
    while(ort!=root)
    {
        ort = root;
        root = ((a/root) + root) / 2;
    }
    printf("Root is : %lf",root);
}else if(a==0.00000){
    printf("Root is : %lf",a);
}else{
    printf("Cannot find the square root of a negative number");
    }
}

1 个答案:

答案 0 :(得分:0)

这类似于牛顿计算平方根的方法(源自Newton-Raphson的方法)。

您可以阅读有关此here的更多信息。

看起来像:

  X(n+1) = (A/X(n) + X(n))/2
  It converges when X(n) = X(n+1) (that is in your case) or under some precision.

在每次迭代时,X(n)应该更接近真实的根。

ort的目的是保持X(n)并检查这种收敛。当根收敛时,循环终止。这就是ort在这里的原因。

你可以阅读有关Newton-Raphsone方法(只是谷歌),你将能够推导出这个等式。