我正在做一个涉及大量符号整合的项目。
这些函数类似于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个变量时,我无法完成计算。
代码非常复杂,但我确信瓶颈是集成。毕竟,从样本结果中,可以想象任务的要求有多高。
我有什么好的方法来促进同情的融合?特别是对于指数族等函数
由于
答案 0 :(得分:3)
集成速度是SymPy中的一个错误。您可以通过调用expand(expr)
并对其进行整合来解决此问题。