注意這裡的浮點數
不然的話程式會報錯
# coding:utf-8
# 二分法計算20的平方根
import math
a = 0.0
#多次二分後會變成二分法,所以要設定成浮點數,python裡就是直接賦值成浮點數
b = c = float(raw_input('enter a number : '))
n = 100
while true and n > 0:
i = (a+b)/2
ifabs(i**2-c) < 0.001
orabs(i**2-c) == 0:
print 'sqrt(20) is', i
break
else:
if i ** 2 > c:
b = i
print 'big', a, b,i
else:
a = i
print 'small', a, b
n -= 1
enter a
number : 20
big 0.0
10.0
10.0
big 0.0
5.05.0
small 2.5
5.0small 3.75
5.0small 4.375
5.0big 4.375
4.6875
4.6875
big 4.375
4.53125
4.53125
small 4.453125
4.53125
big 4.453125
4.4921875
4.4921875
big 4.453125
4.47265625
4.47265625
small 4.462890625
4.47265625
small 4.4677734375
4.47265625
small 4.47021484375
4.47265625
small 4.47143554688
4.47265625
sqrt(20) is 4.47204589844
改進不能小數的缺點,而且定義成函式
# coding:utf-8
# 二分法計算20的平方根
defsqrt_func
():import math
a = 0.0
# 多次二分後會變成二分法,所以要設定成浮點數,python裡就是直接賦值成浮點數
c = float(raw_input('enter a number : '))
b = max(c, 1)
n = 100
while
true
and n > 0:
i = (a + b) / 2
if abs(i ** 2 - c) < 0.001
or abs(i ** 2 - c) == 0:
print
'sqrt(20) is', i
break
else:
if i ** 2 > c:
b = i
print
'big', a, b, i
else:
a = i
print
'small', a, b
n -= 1
if __name__=='__main__':
sqrt_func()
print
'pass'
enter a
number : 0.09
big 0.0
0.50.5
small 0.25
0.5big 0.25
0.375
0.375
big 0.25
0.3125
0.3125
small 0.28125
0.3125
small 0.296875
0.3125
big 0.296875
0.3046875
0.3046875
sqrt(20) is 0.30078125
pass
二分法求平方根(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 然後是重...
演算法程式設計11 二分法求平方根
計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。示例 1 輸入 4 輸出 2 示例 2 輸入 8 輸出 2 說明 8 的平方根是 2.82842 由於返回型別是整數,小數部分將被捨去。本題可用二分法求解,但與常規的二分法有細微不同,因為mi...