题解 | #求平方根#(牛顿迭代法,泰勒公式推导)
求平方根
http://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c
牛顿迭代法:
- 求f(x) = 0 中解 x
- 对f(x)泰勒展开,当x与接近时,可以用 近似 x。
- 当x与接近时,
移项即
对于任意, 令
不断对迭代,会逐渐靠近x 即为解。
求
代入公式即
class Solution { public: int sqrt(int x) { double x1 = 1,x2 = 0; while(abs(x2 - x1) > 1e-8 ){ // 当上一个迭代结果与当前迭代结果相差不大时,则迭代精度达到要求返回x1。 x2 = x1; x1 = x1 - (x1 - x/x1)/2; } return (int)x1; } };