我正在做一个涉及大量符号集成的项目.
这些函数类似于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上实现,我大多数时候都使用integrate()和subs().
但是,速度真的很慢.当我有5个变量时(例如,从t_1到t_5),我需要稍微等一下.但是当我有10个变量时,我无法完成计算.
代码非常复杂,但我确信瓶颈是集成.毕竟,从样本结果中,可以想象任务的要求有多高.
我有什么好的方法来促进同情的整合?特别是对于指数族等函数
谢谢
解决方法:
集成速度是SymPy中的一个错误.您可以通过调用expand(expr)并集成它来解决它.