开方 C语言 迭代法加二分法
生活随笔
收集整理的這篇文章主要介紹了
开方 C语言 迭代法加二分法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
迭代法對大于1的數計算更準確,小于1的話就比較麻煩,所以大于1用迭代,小于1用二分
#define n_ACCURACY (0.002)//最大為誤差 #define n_MAX_COUNT_TIME 10 //最大計算次數double mySqrt( double x ) {double a = x;double min,max,mid,res;unsigned char t;unsigned char count=0;if(x<=0)return 0;if(x>=1)//牛頓迭代法{while ((a * a - x) > n_ACCURACY)){a = (a + x / a) / 2;count++;if(count>=n_MAX_COUNT_TIME )break;}return a;}else//二分法{min = 0;max = 1;mid = 0.5;t=1;while(t){t=0;res = mid*mid;if(res > x){if((res-x)>n_ACCURACY){t=1;max = mid;mid = (max+min)/2;}}else{if((x-res)>n_ACCURACY){t=1;min = mid;mid = (max+min)/2;}}count++;if(count>=n_MAX_COUNT_TIME )break;}return mid;} }總結
以上是生活随笔為你收集整理的开方 C语言 迭代法加二分法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置Windows 8.1屏幕自己主动旋
- 下一篇: C++中const、volatile、m