開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Think Python (Allen B. Downey (著)、 O'Reilly Media)のChapter 7.(Iteration)のExercises 7-1(No. 1670)を取り組んでみる。
Exercises 7-1(No. 1670)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import math
def my_sqrt(a):
x = 1
epsilon = 0.000001
while True:
y = (x + a / x) / 2
if abs(y - x) < epsilon:
break
x = y
return y
def test_square_root():
print('a my_sqrt(a) math.sqrt(a) diff\n'
'---- ---------- ------------ ----')
for a in range(1, 10):
y0 = my_sqrt(a)
y1 = math.sqrt(a)
print('{0:<5}{1:<15.12}{2:<13.10} {3}'.format(
float(a), y0, y1, abs(y0 - y1)))
if __name__ == '__main__':
test_square_root()
入出力結果(Terminal, IPython)
$ ./sqrt.py a my_sqrt(a) math.sqrt(a) diff ---- ---------- ------------ ---- 1.0 1.0 1.0 0.0 2.0 1.41421356237 1.414213562 2.220446049250313e-16 3.0 1.73205080757 1.732050808 0.0 4.0 2.0 2.0 2.220446049250313e-15 5.0 2.2360679775 2.236067977 1.8829382497642655e-13 6.0 2.44948974278 2.449489743 0.0 7.0 2.64575131106 2.645751311 0.0 8.0 2.82842712475 2.828427125 4.440892098500626e-16 9.0 3.0 3.0 0.0 $
0 コメント:
コメントを投稿