有人可以解释以下代码吗? 变量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");
}
}
答案 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方法(只是谷歌),你将能够推导出这个等式。