Python scientific lecture notesの演習より。書いた直後に答えが載っていることに気づく。
式はwikipedia:ウォリスの公式の下の方に。
# -*- coding: utf-8 -*- import math print "真値" , math.pi my_pi = 2.0 * reduce(lambda a,b: a*b, [4.0*(i**2)/(4.0*(i**2)-1.0) for i in xrange(1, 10000)]) print "計算値", my_pi print "真値との差 %s" % abs(math.pi - my_pi) print "真値との差の割合 %s %" % abs((math.pi - my_pi)/math.pi * 100.0) #結果 """ 真値 3.14159265359 計算値 3.14151411083 真値との差 7.85427616217e-05 真値との差の割合 0.00250009375124 % """
級数の計算回数n(テキストではi)を大きくしても収束は遅い。
一応真値に近づいていく様子をグラフにして示す。というか打ち切り誤差を検討しなきゃだめかな。