2016-11-15 4 views
4

Я занимаюсь проектом с участием значительной символической интеграции.Что такое быстрый способ сделать символическую интеграцию в sympy?

Функции - это что-то вроде функции распределения вероятности erlang.

Вот простой пример задачи.

https://s18.postimg.org/gd7t4bv95/gif_latex.gif

Вот код выше задачи:

import sympy as sym 
t=sym.Symbol('t') 
t1=sym.Symbol('t1') 
t2=sym.Symbol('t2') 

###integration for t2 
expr=(1-sym.exp(-(t-t2)))*(1-sym.exp(-(t-t2)))*sym.exp(-t2) 
expr=sym.integrate(expr,(t2,0,t)) 

###substitution and integration for t1 
expr=expr.subs(t,t-t1) * (1-sym.exp(-(t-t1)))*sym.exp(-t1) 
expr=sym.integrate(expr,(t1,0,t)) 

Вот немного сложный результат:

https://s11.postimg.org/x9tw8kw8j/untitle.png

Таким образом, для реализации на SymPy, я использую() и subs() большую часть времени.

Однако скорость очень медленная. Когда у меня есть 5 переменных (например, от t_1 до t_5), мне нужно немного подождать. Но когда у меня есть 10 переменных, я не могу закончить вычисление.

Код довольно сложный, но я уверен, что узким местом является интеграция. В конце концов, из результата выборки можно представить себе, как требовать выполнения задачи.

У меня есть хороший способ повысить интеграцию в sympy? Специально для таких функций, как экспоненциального семейства

Благодаря

+0

Как выглядит ваш код на данный момент? [Пример кода] (http://stackoverflow.com/help/mcve) – mpaskov

ответ

1

Скорость интеграции является ошибка в SymPy. Вы можете обойти это, позвонив expand(expr) и интегрируя это.

Смежные вопросы