正数平方根

牛顿迭代法

求解正数平方根可以先看一下这个函数:

f(x) = x^2 + a

其实可以发现,欲求 a 的平方根时, 只需
令 f(x) = 0
即 a = \sqrt{x}

所以很明显, 我们心心念念的平方根, 就是抛物线与 x 轴的交点, 然后求解平方根就变成了如何寻找x轴交点, 这里就可以引出牛顿迭代法了.

牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。

其实牛顿迭代就是在x轴的正方向任意取一点(x=600那个位置)做 x 轴的垂直线 h1, h1 必与抛物线 f(x) 相交于 a, 再做抛物线过 a 点的切线 k , 切线 k 与 x 轴又会相交, 如图交于 B, 这个 B 点必然比任意的那个点更加接近结果. 如此往复下去, 就能得到 A, D 等, 最终能得到一个较为精确的平方根. (这条抛物线实际为 f(x) = 0.003x^2-100 )

这里, 我们尝试计算出第一个逼近点 A, 这里选择的第一个随机点通常为 a/2, 这里称其为

x_n

之后我们可以得到垂线

h1: x = x_n

垂线相交于曲线

(x_n, f(x_n))

然后我们定义过这个点的切线 k

g(x) = kx + b

k 必然于 A 点相交于 x 轴, 我们带入垂线与曲线的交点求出 b 解出 A 点坐标 (x, 0)

b = f(x_n) – kx_n
斜率 k = \mathrm{d}f(x_n) \quad\quad (求导)

最终令 g(x)=0, 代入各式可得 A

A: x = \frac {-b}{k} = \frac {kx_n – f(x_n)}{k} = x_n – \frac {f(x_n)}{\mathrm{d}f(x_n)}

f(x_n) = x_n^2 – a, \mathrm{d}f(x_n) = 2x_n

再次代入
A: x = \frac {x_n + a/x_n}{2}

如此往复几次, 就能得到精确值了

二分法

移位法

雷神之锤 倒数平方根

Hello world!
文章已创建 209

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部