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

时间:2019-06-10 19:15:56

标签: scipy vectorization integrate

我想对一个矩阵进行积分,以使输出矩阵的每个元素与被积分矩阵的相应元素积分。代码段如下:

SELECT * 
FROM t
ORDER BY ORG, IIF(Earliest_Date IS NULL, 1, 0), Status ASC;

这给出一个方阵,每个元素的函数为t。我使用以下内容进行整合:

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) 

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

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

尽管这说明缺少“ B”,但由于我提供B作为参数,因此我不理解。我也不确定我是否正确实现了向量化。

1 个答案:

答案 0 :(得分:0)

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