如何解决通过 Sympy 集成加速集成
我尝试将两个函数 expFun1
和 expFun2
从 t 集成到 s。
import sympy as sym
# It returns a symbolic function where u is the only symbol in the function
def expFun1(X1,X2,a1,a2,T,u):
fx= X1*sym.exp(-a1*(T-u))+X2*sym.exp(-a2*(T-u))
return fx
# Squared version of expFun1
def expFun2(X1,u):
fx= (X1*sym.exp(-a1*(T-u))+X2*sym.exp(-a2*(T-u))) **2
return fx
我将以下参数传递给函数,其中 u
是唯一的符号化变量。
u = sym.symbols('u')
t=0
s=1
T=1.2
X1,a2= [0.5,0.3,2,0.1]
Fx1=sym.integrate(expFun1(X1,u),(u,t,s))
Fx2=sym.integrate(expFun2(X1,s))
Fx1
的计算时间约为 0.09 秒。但是,Fx2
大约需要 30 秒。
在实际应用程序中,我需要遍历非符号参数的不同值,并且 expFun2
的集成需要永远。
鉴于 expFun2
的函数形式,加快计算时间的最佳方法是什么?
解决方法
根据@Oscar Benjamin 的评论,我更新了解决方案如下。
import sympy as sym
X1,X2,a1,a2= sym.symbols('X1,a2')
t,s,T,u=sym.symbols('t,u')
fx= (X1*sym.exp(-a1*(T-u))+X2*sym.exp(-a2*(T-u))) **2
fx=sym.expand(fx)
Fx=sym.integrate(fx,(u,t,s))
ans=float(Fx.subs({X1:0.5,X2: 0.3,a1:2,a2:0.1,T:1.2,t:0,s:1}))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。