下面是 Python 版本的代码实现,可以看到,虽然要证明牛顿迭代的收敛性不太容易,但是只需要不到 10 行代码就可以实现牛顿迭代算法。

class Solution:
  def mySqrt(self, x: int) -> int:
    e = 0.1         # 迭代精度
    last_x = -100   # 记录上一次迭代的解
    res = x         # 当前解
    while abs(res-last_x) > e:
      last_x = res
      res = (res*res + x)/(2*res)
    return int(res)

牛顿迭代动画演示

动画演示了的牛顿迭代计算过程,可以发现随着迭代的进行,当前解很快就收敛到了真实解(1.732)附近。

KMeans 聚类算法

KMeans 聚类算法的功能是将给定的一组数据划分成 k 组,这里 k 的数目由使用者指定,算法可以将相似性高的数据划分到同一个组内,这样有助于发现数据之间的内在联系,在机器学习中经常使用。

更多推荐