首先,这就是问题所在。
数学常数 π (pi) 是一个无理数,其值约为 3.1415928... π 的精确值等于以下无穷和:π = 4/1 - 4/3 + 4/5 - 4/7 + 4 /9 - 4/11 + ... 我们可以通过计算前几项的总和来得到 π 的一个很好的近似值。编写一个函数 approxPi(),将浮点值误差作为参数,并通过逐项计算上述总和,直到当前总和与前一个总和之间的差值的绝对值(用少一项)不大于误差。一旦函数发现差值小于误差,它应该返回新的和。请注意,此函数不应使用数学模块中的任何函数或常量。您应该使用所描述的算法来近似 π,
如果有人能帮助我理解问题所在,我将不胜感激,因为我已经阅读了很多次,但仍然无法完全理解它在说什么。我翻阅了我的教科书,发现使用 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
成功的程序应该返回
approxPi(0.5) = 3.3396825396825403 和 approxPi(0.05) = 3.1659792728432157
同样,任何帮助将不胜感激。我只想了解我在这方面做错了什么。