当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy linalg.expm_multiply用法及代码示例


本文简要介绍 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.        ])

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.sparse.linalg.expm_multiply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。