牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

SICP 1.1.7 例:ニュートン法による平方根をPythonでやってみた

#1.1.7  Example: Square Roots by Newton's Method
#(1.1.7 例:ニュートン法による平方根)
def square(x):
   return x * x

def sqrt_iter (guess, x):
   if good_enough(guess, x):
       return guess
   else:
       return sqrt_iter(improve(guess,x), x)

def improve(guess, x):
   return average(guess, x / guess)

def average(x, y):
   return (x + y) / 2

def good_enough(guess, x):
   if abs(square(guess) - x) < 0.001:
       return True

def sqrt(x):
   return sqrt_iter(1.0, x)

print sqrt(9)
print sqrt(100 + 37)
print sqrt(sqrt(2) + sqrt(3))
print square(sqrt(1000))
結果
3.00009155413
11.7046999178
1.77392790232
1000.00036992