📜  平方根牛顿法 javascript (1)

📅  最后修改于: 2023-12-03 15:39:27.568000             🧑  作者: Mango

平方根牛顿法

介绍

平方根牛顿法(Newton's method)是一种求解方程 $f(x)=0$ 的迭代方法,其中 $f(x)$ 是可微的函数。

对于求解平方根,我们可以将其转化为求解 $f(x) = x^2 - a = 0$,其中 $a$ 是待开方的数。

平方根牛顿法的迭代式为:

$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$

其中 $x_n$ 表示第 $n$ 次迭代的结果,$f'(x_n)$ 表示 $f(x)$ 在 $x_n$ 处的导数。

实现

下面是用 JavaScript 实现平方根牛顿法的代码片段:

/**
 * 使用平方根牛顿法求解平方根
 * @param {number} a 待开方的数
 * @param {number} precision 精度,迭代终止的条件
 * @returns {number} 平方根
 */
function sqrtNewton(a, precision=0.000001) {
  let x = 1; // 初始值可以为任意正数,这里取 1
  while (Math.abs(x * x - a) >= precision) {
    x = (x + a / x) / 2; // 迭代式
  }
  return x;
}

使用方法:

console.log(sqrtNewton(2)); // 1.4142135623746899
性能

平方根牛顿法的收敛速度非常快,一般来说只需要几次迭代就能得到很高精度的结果。

不过,使用此方法求解平方根并不是最优解。使用 Bitwise Operators 可以实现更快的计算。

参考