2017-02-22 6 views
0

整数の計算は、large integralとしたい。Python:100個の関数と統合変数に渡って統合する

私はこれをPythonで実装するのに苦労しています。これを達成するためのプログラム的な方法はありますか?私は、ループのためのいくつかでこれをやってみましたが、私はエラーSystemError: too many statically nested blocksにこだわっています。もちろん

fs = {} 
for i in range(100): 
    fs[i] = lamda x: x*i 

for x1 in np.arange(0,1,.01): 
    for x2 in np.arange(0,1,.01): 
     .... 
      for x100 in np.arange(0,1,.01): 
      for i in range(100): 
       exec("summ+= fs[i](x%i"%i) 
+0

行の長さの制限? – miradulo

+0

制限はありませんか?それはちょうどpep8ですか?うん、あなたはPycharmか何かで、おそらくしているだけでPEP8です – kilojoules

+0

? – miradulo

答えて

0

はそれが遅い: "私は範囲内(100)は、"(1)の部分が100に達している* 100 * 100 * ... * 100(100「* 100さん)= 100^100;人々はn^2が悪いと言う... とにかく私はこれのようにするでしょう:

- Put 100 values initialized with 0 into a list. 
- for i = 0 to 100^100: 
    - go through the list and use the k-th value as the parameter for the k-th function. do the summing thing 
    - Add 0.1 to the n-th value in the list; 
    if this value is now == 1; set it to 0 and go to the (n+1)-th value and repeat this procedure until you reach the end of the list or one value is < 1. 
    Start with the first value in the list. 
now you have your sum. 
+1

これは問題ではありません。 forループは複数ありません。私の擬似コードを見るだけで、問題は解決します。しかし、実際には、これを実行することを迷うべきではありません。誰か(と私)がコメントで言ったようにアルゴリズムはすぐに終了するつもりはありません。方程式を補正しようとする必要があります。この-私はあなたの答えを理解していないについての詳細を学ぶことに興味がある – DaOnlyOwner

+0

。私は無作為サンプリングを用いて積分を近似した。 – kilojoules

関連する問題