scipy.sparse.linalg.expm_multiply¶
- scipy.sparse.linalg.expm_multiply(A, B, start=None, stop=None, num=None, endpoint=None)[源代码]¶
计算A的矩阵指数对B的作用。
- 参数
- A可转置线性算子
指数感兴趣的运算符。
- Bndarray
要乘以A的矩阵指数的矩阵或向量。
- start标量,可选
序列的开始时间点。
- stop标量,可选
序列的结束时间点,除非 endpoint 设置为false。在这种情况下,序列由除最后一个之外的所有序列组成
num + 1
均匀分布的时间点,因此 stop 被排除在外。请注意,步长在以下情况下会更改 endpoint 是假的。- num整型,可选
要使用的时间点数。
- endpoint布尔值,可选
如果为True, stop 是最后一个时间点。否则,它将不包括在内。
- 退货
- expm_A_Bndarray
行动的结果 \(e^{{t_k A}} B\) 。
注意事项
定义均匀分布的时间点序列的可选参数与
numpy.linspace
。输出ndarray形状有点复杂,所以我在这里解释一下。输出的ndim可以是1、2或3。如果要在单个时间点计算对单个向量的exPM操作,则输出的ndim将为1。如果您在多个时间点计算向量上的exPM操作,或者如果您在单个时间点上计算矩阵上的exPM操作,则该值为2。如果希望在多个时间点对具有多列的矩阵执行操作,则为3。如果请求多个时间点,exPM_A_B [0] 将始终是exPM在第一个时间点的操作,无论该操作是在向量上还是在矩阵上。
参考文献
- 1
Awad H.Al-Mohy和Nicholas J.Higham(2011),<计算矩阵指数的作用,及其在指数积分器中的应用>。暹罗科学计算学报,33(2)。第488-511页。ISSN1064-8275 http://eprints.ma.man.ac.uk/1591/
- 2
Nicholas J.Higham和Awad H.Al-Mohy(2010),“计算矩阵函数”。“数字学报”,19.159-208。ISSN0962-4929 http://eprints.ma.man.ac.uk/1451/
示例
>>> 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. ])