まず、これが問題です。
数学定数 π (pi) は、値が約 3.1415928 の無理数です... π の正確な値は、次の無限和に等しくなります: π = 4/1 - 4/3 + 4/5 - 4/7 + 4 /9 - 4/11 + ... 最初の数項の合計を計算することで、π の適切な近似値を得ることができます。浮動小数点値の誤差をパラメーターとして受け取り、現在の合計と前の合計の差の絶対値が得られるまで、項ごとに上記の合計を計算することにより、誤差内で定数 π を近似する関数 approxPi() を記述します (項が 1 つ少ない) は誤差以下です。関数は、差がエラー未満であることを検出すると、新しい合計を返す必要があります。この関数は、math モジュールの関数や定数を使用しないでください。説明されているアルゴリズムを使用して π を近似することになっています。
何度も読んだのですが、問題が何を言っているのかまだ完全には理解できないので、誰かが問題が何を求めているのかを理解するのを手伝ってくれたら本当にありがたいです. 教科書を調べたところ、e の無限和を使用して e を近似する同様の問題が見つかりました: 1/0! + 1/1! + 1/2! + 1/3!+...
def approxE(error):
import math
'returns approximation of e within error'
prev = 1 # approximation 0
current = 2 # approximation 1
i = 2 # index of next approximation
while current-prev > error:
#while difference between current and previous
#approximation is too large
#current approximation
prev = current #becomes previous
#compute new approximation
current = prev + 1/math.factorial(i) # based on index i
i += 1 #index of next approximation
return current
この後、プログラムをモデル化しようとしましたが、解決策に近づいているとは感じません。
def approxPi(error):
'float ==> float, returns approximation of pi within error'
#π = 4/1 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ...
prev = 4 # 4/1 = 4 : approx 0
current = 2.6666 # 4/1 - 4/3 = 2.6666 : approx 1
i = 5 # index of next approx is 5
while current-prev > error:
prev = current
current = prev +- 1/i
i = i +- 2
return current
成功したプログラムが返されるはずです
近似Pi(0.5) = 3.3396825396825403および近似Pi(0.05) = 3.1659792728432157
繰り返しますが、助けていただければ幸いです。これで何が間違っているのかを理解したいと思います。