寻找一个数的平方根的算法?

3

我知道的解决这个问题的唯一算法是牛顿迭代法(猜测一个解,然后不断改进直到足够好为止)。

还有其他想法吗(可以使用任何您喜欢的编程语言)?

PS:当然,我没有这个问题的任何用例,我只是出于学术目的进行研究。

3个回答

10

有一种高效的变体是约翰·卡马克方法,这是对牛顿迭代法的一种改进。

John Carmack method 是一种高效的变体,是对 Newton 方法的改进。


3
但是你需要将其倒过来。 - Tordek
或者将其乘以x。x / sqrt(x) = sqrt(x) - Crashworks

5

0

你可能想要查看计算平方根的方法中的算法。

这是牛顿迭代法的快速C对数基数2实现:

double sqrt(const double x)  
{
  union
  {
    int i;
    double x;
  } u;

  u.x = x;
  u.i = (1<<29) + (u.i >> 1) - (1<<22); 
  return u.x;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接