2017-03-16 18 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ずつ変更します。Pythonで0から無限大までの総和を作る方法は?

+0

どのようなエラーがありますか? [質問する](https://stackoverflow.com/help/how-to-ask)を読んで質問を改善してください。また、インデントはPythonで重要であり、あなたのものは途方もないことに注意してください。 –

+0

どのエディターを使用していますか? '(1e-15)'のマイナス記号は普通のハイフンではなくUnicodeの文字MINUS SIGNであるため、 'SyntaxError:invalid character in identifier'を取得します。 'unicodedata.name( ' - ')'これを伝えます。 –

+0

インデントを修正してください – jsbueno

答えて

1

範囲を作成することはできませんあなたが見ることができるように、コンピュータがビジー状態でカウントされるので、このコードは、それが終わることは決してありません欠点を持っている、しかし、

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

: - 無限 上と上のコンピュータのカウントを維持するためには、あなたは、whileループを使用することができますon/on: 通常の数値メソッドは「無限大」に数えられません。実験を続行する前に、無限大の数学概念を見てください。

数値計算が必要な場合は、「十分に大きい」数値を選択します。無限大を考慮できる代数的解決法については、sympyパッケージをチェックしてください。

関連する問題