如何使用scipy.integrate来集成$\int_0^T K_{\lambda}(t,s)\sigma(s)ds$

ilmyapht  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(111)

我需要整合表达式

使用scipy的integrate模块。
我试过了

def K(t,s):
    return np.exp(lbda*(T-s))*np.exp(lbda*t)/(1-np.exp(lbda*T))

def sigma(s):
    return np.sin(2*np.pi*s)

def integral(t):
    result = integrate.quad(K*sigma, 0, T)
    return  result

但显然这是错误的,因为K有两个变量,其中一个是未定义的。
作为参考,函数integral将以t的不同值调用。

y1aodyip

y1aodyip1#

quad的第一个参数必须是一个可调用函数,它的第一个参数是集成变量。(或使用lambda表达式)的被积函数来调用你现有的函数。把你要用到的所有参数都变成函数的实参也可能是个好主意,以避免使用全局变量。您可以通过quadargs参数传入这些变量。
比如说

def K(t, s, lbda, T):
    return np.exp(lbda*(T-s))*np.exp(lbda*t)/(1-np.exp(lbda*T))

def sigma(s):
    return np.sin(2*np.pi*s)

def integrand(s, t, lbda, T):
    return K(t, s, lbda, T) * sigma(s)

def integral(t, lbda, T):
    result = integrate.quad(integrand, 0, T, args=(t, lbda, T))[0]
    return result

那么使用这些函数的代码可能看起来像这样:

# Define the parameters
lbda = 1.25
T = 8.0

# Define the t value.
t = 0.5

# Evaluate the integral at t.
y = integral(t, lbda, T)

相关问题