例如求10的平方根,則在1 ~ 10間利用二分法判斷(1 + 10) / 2 = 5.5的平方是否大於或小於10,如果5.5的平方大於10,則在1 ~ 5.5之間繼續二分查詢;如果5.5的平方小於10,則在5.5 ~ 10之間繼續二分查詢;如果5.5的平方等於10,則找到10的平方根。
#include
#include
using
namespace std;
// 指定精度與迭代次數
double
sqrt
(int num,
double accuracy,
int iteration)
;// 指定精確到小數點後多少位
// 該過載函式也能實現求平方根,但是似乎由於計算機浮點計算的近似性
// 沒有上述過載函式好用,只做個人娛樂用
double
sqrt
(int num,
int accuracy)
;// 利用二分法求整數的平方根
double
sqrt
(int num)
static
bool
isreachedaccuracy
(double actual,
double refer,
double accuracy)
// 指定精度與迭代次數
double
sqrt
(int num,
double accuracy,
int iteration)
return
-1.0;}
// 浮點數相等的精度
static
const
double delta =
0.0000000000001
;// 判斷兩個浮點數是否近似相等
inline
bool
equal
(double lhs,
double rhs)
// 假設actaul=6.01,則place應為3,該函式找出6.01x,使得(6.01x)*(6.01x)<=refer
// 可採用二分法實現,為了簡單姑且採用簡單的迭代
static
double
sqrtforfractionalpart
(double actual,
double refer,
int place)
actual -
= base;
return actual;
}// 指定精確到小數點後多少位
double
sqrt
(int num,
int accuracy)
result +
= minvalue -1;
// 小數部分
二分法做平方根
注意這裡的浮點數 不然的話程式會報錯 coding utf 8 二分法計算20的平方根 import math a 0.0 多次二分後會變成二分法,所以要設定成浮點數,python裡就是直接賦值成浮點數 b c float raw input enter a number n 100 while t...
二分法求平方根(Python實現)
使用二分法 bisection method 求平方根。1 defsqrtbi x,epsilon 2assert x 0,x must be non nagtive,not str x 3assert epsilon 0,epsilon must be postive,not str epsilo...
Python用二分法求平方根
好了,正如標題所示,我們今天要用二分法來求平方根。首先要有數字,但是老是有人寫字串該怎麼辦呢?老是有人在寫數學題的時候打字串 try x int input please enter a whole number to measure to square root except print 然後是重...