Напишите функцию estimatePi()
для оценки и возврата значения числа Пи на основе формулы, найденной индийским математиком Шринивасой Рамануджаном. Он должен использовать цикл while для вычисления условий суммирования до тех пор, пока последний член не станет меньше 1e-15. Формула для оценки Пи приведена ниже: Согласно оценке Рамануджама
(Извините, я не могу загрузить изображение)
def estimatePi():
import math
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
k=0
final=0
pi=0
while pi<1e-15:
a=factorial(4*k)
b=(1103+26390*k)
c=factorial(k)
d=c**4
e=396**(4*k)
f=2*math.sqrt(2)/9801
final+=(a*b*f)/(d*e)
k+=1
pi=1/final
return pi
и моя проблема заключается в следующем: ожидаемый ответ был = 3,14159265359 мой ответ = 3,14159273001
Я не смог найти свою ошибку :(. Может ли кто-нибудь помочь мне с этим?
math.factorial()
. Кроме того, я предлагаю вам вычислять с использованием целых чисел и откладывать преобразование в числа с плавающей запятой как можно дольше — у Python нет проблем с большими целыми числами для таких задач. С другой стороны, с плавающей запятой... с плавающей запятой - дерьмо для точности и математических вычислений. - person hochl   schedule 09.08.2012