【发布时间】:2021-07-22 22:01:33
【问题描述】:
我第一次尝试使用 Lambda 函数集成指数函数。 有两个版本的代码应该可以正常工作,但是带有 Lambda 函数的代码会给出错误提示:
给出错误的代码是
import numpy as np
import sympy as sym
# Predetermined parameter values
s, t, T= 0.2 ,0, 0.25
a1, a2= 1.2, 2.3
X1, X2, X3=0.5,-2.0,0.3
# Symbolic variable for integration
u = sym.symbols('u')
# Version 1 giving the above error
fx= lambda X1,X2,X3,a1,a2,T,u: (X1*sym.exp(-a1*(T-u)) + X2*sym.exp(-a2*(T-u))+X3)**2
Fx=sym.integrate(sym.expand(fx), (u,t,s))
Fx=float(Fx)
另一方面,我可以在没有 Lambda 函数的情况下使用以下版本获得输出 Fx。
# Version 2 works fine
def expFun3fsq(X1,X2,X3,a1,a2,T,u):
# Squared single line exponential function
# It returns a symbolic function where u is the only symbol in the function
fx= (X1*sym.exp(-a1*(T-u))+X2*sym.exp(-a2*(T-u))+X3) **2
return fx
Fx=sym.integrate(sym.expand(expFun3fsq(X1,X2,X3,a1,a2,T,u)), (u,t,s))
Fx=float(Fx)
错误的原因是什么,我该如何解决?
【问题讨论】:
标签: integration sympy lambda-calculus