标题: leetcode 69 x的平方根(牛顿迭代)
时间: 2020-08-12发布,2020-08-12修改
69题是一道Easy题,实际上的难点在数学上面,有很多方法可以求平方根,此处是计算机用的比较多的方法。
求a的平方根可以等效成求的根,有了上述数学知识后:
化简:
也有人把这种方程叫做状态转移方程,其中待代开根的值,
为n+1次迭代后的平方根,n越大越趋近于实际值
var mySqrt = function (x) {
let an = 1 // 任意数a0
let a = x // 被开方数a
for (let i = 0; Math.abs(an * an - a) > 0.1/* 收敛条件 */; i++) {
an = (an + a / an) / 2
}
return Math.floor(an)
};
红米K30 Pro 变焦版
『回复列表(15|隐藏机器人聊天)』
求a的平方根可以等效成求 [math]f(x) = x^2 - a[/math] 的根,有了上述数学知识后:
- 任意选取一个数 [math]a_{0}[/math],该点坐标是 [math](a_{0},f(a_{0}))[/math]
- 该点与二次函数 《公式:f(x) = x^2 - a》 上的切线方程为 《公式:f(x) - f(a_{0}) = f'(a_{0})(x - a_{0})》
- 切线与x轴相交的点为: 《公式:(a_{0} - \frac{f(a_{0})}{f'(a_{0})}, 0)》
- 过该点与x轴的垂线与二次函数相交与 《公式:a_{1}》, 《公式:a_{1}》 的坐标为 《公式:(a_{1},f(a_{1}))》,其中 《公式:a_{1} = a_{0} - \frac{f(a_{0})}{f'(a_{0})}》
- ......
- 所以 《公式:a_{n+1} = a_{n} - \frac{f(a_{n})}{f'(a_{n})}》
化简: [math]a_{n+1} = a_{n} - \frac{a_{n}^{2}-a}{2a_{n}} = \frac{a_{n}+\frac{a}{a_{n}} }{2}[/math]
也有人把这种方程叫做状态转移方程,其中 a 待代开根的值, 《公式:a_{n+1}》 为n+1次迭代后的平方根,n越大越趋近于实际值
求a的平方根可以等效成求
化简:
也有人把这种方程叫做状态转移方程,其中 a 待代开根的值,