经典算法:牛顿迭代法求平方根
生活随笔
收集整理的這篇文章主要介紹了
经典算法:牛顿迭代法求平方根
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//牛頓迭代法求平方根
1 double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/(2*x); 7 y = x*x-num; 8 if(y<0) y = -y; 9 } while(y>0.0001); 10 return x; 11 } 12 int main(int argc, char* argv[]) 13 { 14 printf("%.3f",mysqrt(2));//1.414 15 return 0; 16 }
1 double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/(2*x); 7 y = x*x-num; 8 if(y<0) y = -y; 9 } while(y>0.0001); 10 return x; 11 } 12 int main(int argc, char* argv[]) 13 { 14 printf("%.3f",mysqrt(2));//1.414 15 return 0; 16 }
下面這段解釋是從別的地方摘過來的,為了方便查看轉了過來:
????這種算法的原理很簡單,我們僅僅是不斷用(x,f(x))的切線來逼近方程x^2-a=0的根。根號a實際上就是x^2-a=0的一個正實根,這個函數的導數是2x。也就是說,函數上任一點(x,f(x))處的切線斜率是2x。那么,x-f(x)/(2x)就是一個比x更接近的近似值。代入f(x)=x^2-a得到x-(x^2-a)/(2x),也就是(x+a/x)/2。
轉載于:https://www.cnblogs.com/jwk000/p/4285058.html
總結
以上是生活随笔為你收集整理的经典算法:牛顿迭代法求平方根的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redo log重做日志缓冲
- 下一篇: 2014年度工作总结