2016年5月27日金曜日

開発環境

Think Python (Allen B. Downey (著)、 O'Reilly Media)のChapter 7.(Iteration)のExercises 7-3(No. 1686)を取り組んでみる。

Exercises 7-3(No. 1686)

コード(Emacs)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import math

EPSILON = 10**-15

def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

def estimate_pi():
    term = 1103
    k = 0
    x = 0
    while term >= EPSILON:
        x += term
        k += 1
        term = (
            (factorial(4 * k) * (1103 + 26390 * k)) /
            ((factorial(k) ** 4) * (396 ** (4 * k)))
            )
    return 1 / (2 * math.sqrt(2) / 9801 * x)

if __name__ == '__main__':
    print('estimate_pi:', estimate_pi())
    print('math.pi:    ', math.pi)
    print(abs(estimate_pi() - math.pi))

入出力結果(Terminal, IPython)

$ ./pi.py
estimate_pi: 3.141592653589793
math.pi:     3.141592653589793
0.0
$

0 コメント:

コメントを投稿