2017-02-22 35 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? – kilojoules

+0

Это просто PEP8 yep, вы, наверное, в Пьярме или что-то в этом роде? – 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

Это не проблема. У вас не более одного цикла; просто посмотрите на мой псевдокод, он решает проблему. Но на самом деле, вы не должны беспокоиться об этом; как кто-то (и я) сказал в комментариях, что алгоритм не скоро закончится. Вы должны попытаться компенсировать уравнение. – DaOnlyOwner

+0

Заинтересованы узнать больше об этом - я не понимаю вашего ответа. Я закончил аппроксимировать интеграл, используя случайную выборку. – kilojoules