如何向量化 scipy.integrate.quad 来计算矩阵的元素积分

问题描述 投票:0回答:1

我想对一个矩阵进行积分,使得输出矩阵的每个元素都是被积函数矩阵的相应元素的积分。代码片段如下:

import numpy as np
from scipy.integrate import quad
N=3
A = np.random.rand(N,N)
evs = np.linalg.eigvals(A)
evs = -np.sort(-evs)
Anew = A/(evs[0]+1) - np.eye(N)
B = np.eye(N)

def integrand(t,A,B):
    prod = np.multiply(sp.linalg.expm(A*t),B)
    return np.multiply(prod,prod.T) 

这给出了一个方阵,其中每个元素都是 t 的函数。我使用以下内容进行集成:

np.vectorize(quad)(integrand,0,1,args=(Anew,B))  

但是,我收到以下错误消息:

integrand() missing 1 required positional argument: 'B' 

虽然这表明缺少“B”,但我不明白它,因为我提供 B 作为参数。我也不确定我是否正确实现了矢量化。

python scipy vectorization numerical-integration
1个回答
0
投票

尝试

scipy.integrate.quad_vec
。它尚未发布,因此您需要 scipy 的开发版本,可以从 github 获取该版本。或者,等到 scipy 1.4 发布。

© www.soinside.com 2019 - 2024. All rights reserved.