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