本文简要介绍 python 语言中 scipy.sparse.linalg.expm_multiply
的用法。
用法:
scipy.sparse.linalg.expm_multiply(A, B, start=None, stop=None, num=None, endpoint=None, traceA=None)#
计算 A 的矩阵 index 对 B 的作用。
- A: 转座线性算子
对其 index 感兴趣的运算符。
- B: ndarray
要乘以 A 的矩阵 index 的矩阵或向量。
- start: 标量,可选
序列的开始时间点。
- stop: 标量,可选
序列的结束时间点,除非端点设置为假。在这种情况下,序列由除了最后一个之外的所有
num + 1
均匀分布的时间点,因此停止被排除在外。请注意,步长变化时端点为假。- num: 整数,可选
要使用的时间点数。
- endpoint: 布尔型,可选
如果为 True,则停止是最后一个时间点。否则,不包括在内。
- traceA: 标量,可选
A 的迹。如果未给出,则估计线性算子的迹,或精确计算稀疏矩阵的迹。它用于预处理 A,因此近似迹是可以接受的。对于线性算子,应提供traceA以确保性能,因为不能保证估计在所有情况下都是可靠的。
- expm_A_B: ndarray
操作 的结果。
- UserWarning
如果A是一个线性算子并且
traceA=None
(默认)。
参数 ::
返回 ::
警告 ::
注意:
定义均匀间隔时间点序列的可选参数与
numpy.linspace
的参数兼容。输出的 ndarray 形状有点复杂,所以我在这里解释一下。输出的 ndim 可以是 1、2 或 3。如果您在单个时间点计算单个向量上的 expm 动作,它将为 1。如果您在多个时间点计算向量上的 expm 动作,或者如果您在单个时间点计算矩阵上的 expm 动作,它将为 2。如果您希望在多个时间点对具有多列的矩阵执行操作,则为 3。如果请求多个时间点,则 expm_A_B[0] 将始终是 expm 在第一个时间点的动作,无论该动作是在向量还是矩阵上。
参考:
[1]Awad H. Al-Mohy 和 Nicholas J. Higham (2011) “计算矩阵 index 的作用,并应用于 index 积分器。” SIAM 科学计算杂志,33 (2)。第 488-511 页。 ISSN 1064-8275 http://eprints.ma.man.ac.uk/1591/
[2]Nicholas J. Higham 和 Awad H. Al-Mohy (2010) “计算矩阵函数”。数字学报,19. 159-208。 ISSN 0962-4929 http://eprints.ma.man.ac.uk/1451/
例子:
>>> import numpy as np >>> from scipy.sparse import csc_matrix >>> from scipy.sparse.linalg import expm, expm_multiply >>> A = csc_matrix([[1, 0], [0, 1]]) >>> A.toarray() array([[1, 0], [0, 1]], dtype=int64) >>> B = np.array([np.exp(-1.), np.exp(-2.)]) >>> B array([ 0.36787944, 0.13533528]) >>> expm_multiply(A, B, start=1, stop=2, num=3, endpoint=True) array([[ 1. , 0.36787944], [ 1.64872127, 0.60653066], [ 2.71828183, 1. ]]) >>> expm(A).dot(B) # Verify 1st timestep array([ 1. , 0.36787944]) >>> expm(1.5*A).dot(B) # Verify 2nd timestep array([ 1.64872127, 0.60653066]) >>> expm(2*A).dot(B) # Verify 3rd timestep array([ 2.71828183, 1. ])
相关用法
- Python SciPy linalg.expm_frechet用法及代码示例
- Python SciPy linalg.expm_cond用法及代码示例
- Python SciPy linalg.expm用法及代码示例
- Python SciPy linalg.eigvalsh_tridiagonal用法及代码示例
- Python SciPy linalg.eig_banded用法及代码示例
- Python SciPy linalg.eigvalsh用法及代码示例
- Python SciPy linalg.eigh_tridiagonal用法及代码示例
- Python SciPy linalg.eig用法及代码示例
- Python SciPy linalg.eigh用法及代码示例
- Python SciPy linalg.eigs用法及代码示例
- Python SciPy linalg.eigvals用法及代码示例
- Python SciPy linalg.eigvals_banded用法及代码示例
- Python SciPy linalg.eigsh用法及代码示例
- Python SciPy linalg.cdf2rdf用法及代码示例
- Python SciPy linalg.LaplacianNd用法及代码示例
- Python SciPy linalg.solve_circulant用法及代码示例
- Python SciPy linalg.polar用法及代码示例
- Python SciPy linalg.clarkson_woodruff_transform用法及代码示例
- Python SciPy linalg.rsf2csf用法及代码示例
- Python SciPy linalg.hessenberg用法及代码示例
- Python SciPy linalg.tril用法及代码示例
- Python SciPy linalg.triu用法及代码示例
- Python SciPy linalg.svd用法及代码示例
- Python SciPy linalg.ishermitian用法及代码示例
- Python SciPy linalg.invhilbert用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.sparse.linalg.expm_multiply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。