平方根求法
Question Description:
已知: x2=N x 2 = N , 求 x x 。
问题转化为,解 x x 。
f(x)的泰勒展开式
- 在 x=x0 x = x 0 处展开:
f(x)=∑n=0∞f(n)(x0)n!×(x−x0)n f ( x ) = ∑ n = 0 ∞ f ( n ) ( x 0 ) n ! × ( x − x 0 ) n
f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)2+O(x2) f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 + O ( x 2 )
- 可得:
f(x)=N−x2=N−x20−2x0(x−x0)+O(x) f ( x ) = N − x 2 = N − x 0 2 − 2 x 0 ( x − x 0 ) + O ( x )- 令 f(x)=0 f ( x ) = 0 ,得:
x=12(x0+N/x0) x = 1 2 ( x 0 + N / x 0 )
code
// c++ code
double ans=1, pre=0;
while(abs(ans-pre)>1e-6){
pre=ans;
ans=(ans+x/ans)/2;
}