2017-03-16 1 views
0
import math 
k = 0 
def factorial(k): 
    if k == 0: 
     return 1 
    else: 
     return k * factorial(k - 1) 


formula = (((factorial(4 * k)) * (1103 + 26390 * k))/((factorial(k) ** 4)) * (396 ** (4 * k))) 

    while k > (1e − 15): 
     for k in range(): 
     if k == 0: 
      return k 
     else: 
      return k + formula 
     print(summation(k, formula)) 

value_wanted = ((2* math.sqrt(2))/9801) * summation(k) 
print('1/pi equals' , value_wanted) 

이 코드는 pi의 값을 근사화하는 수식을 작성하려고 시도하는 코드입니다. 그것은 'k> 1e - 15'동안 나에게 줄 오류를줍니다. 왜 그런지 모르겠습니다. 코드에서 수식 변수에 쓴 수식의 합계를 반환하고 마지막 텀이 1e - 15 미만이 될 때까지 k 값을 1 씩 변경합니다.파이썬에서 0에서 무한대까지 합계를 만드는 방법은 무엇입니까?

+0

어떤 오류가 있습니까? [묻는 방법] (https://stackoverflow.com/help/how-to-ask)을 읽고 질문을 개선하십시오. 또한 파이썬에서 들여 쓰기가 중요하며, 여러분의 것은 들키지 않는다는 것에주의하십시오. –

+0

어떤 편집기를 사용하고 있습니까? '(1e-15)'의 빼기 부호는 일반 하이픈이 아니기 때문에'SyntaxError : identifier in invalid character '를 얻습니다. 그러나 유니 코드 char MINUS SIGN; 'unicodedata.name ('-')'이 사실을 알려줍니다. –

+0

들여 쓰기를 수정하십시오. – jsbueno

답변

1

범위를 만들 수 없습니다. 당신이 볼 수있는 컴퓨터가 바쁜 계산되기 때문에,이 코드는 끝이 없을 것 단점이있다, 그러나

k = 0 
while True: 
    k += 1 
    ... 

: - 무한 과의 컴퓨터 계산을 유지하려면, 당신은 while 루프를 사용할 수 있습니다 on and on : 일반적인 수치 방법은 "무한"에 포함될 수 없습니다. 실험을 계속하기 전에 무한대의 수학 개념을 살펴보아야합니다.

숫자 계산을 원하면 "충분히 큰"숫자를 선택하십시오. 무한대로 고려할 수있는 대수적 인 해결책은 sympy 패키지를 확인하십시오.

관련 문제