应用牛顿迭代法求解方程近似解,收敛速度很快
牛顿迭代法求解平方根
给你一个非负整数 x ,计算并返回 x 的算术平方根 n ,结果只保留整数部分。
算法流程图
由题意得,
n
2
=
x
n^2=x
n2=x,即为对
f
(
n
)
=
n
2
−
x
f(n)=n^2-x
f(n)=n2−x 求解。
第一步:易得:
x
2
−
x
1
=
0
−
f
(
x
1
)
f
′
(
x
1
)
x_2-x_1=\frac{0-f(x_1)}{f'(x_1)}
x2−x1=f′(x1)0−f(x1)
进而,
x
n
−
x
n
−
1
=
−
f
(
x
n
−
1
)
f
′
(
x
n
−
1
)
x_n-x_{n-1}=-\frac{f(x_{n-1})}{f'(x_{n-1})}
xn−xn−1=−f′(xn−1)f(xn−1)
代码
int mySqrt(int x) {
int n = x; //设定初始值
while( n * n > x ){
n = ( n + x / n ) / 2;
}
return n;
}
参考连接
https://zhuanlan.zhihu.com/p/522517814