我正在尝试计算矩阵B,其具有以下等式:
B = A^2
。
假设A是矩阵:
array([[1, 2], [3, 4]])
当我在Matlab (A^-0.5)
中取这个矩阵的负半幂时。我得到以下结果:
ans =
0.1031 - 1.2474i 0.1502 + 0.5706i
0.2253 + 0.8559i 0.3284 - 0.3915i
然而,在使用代码(A**-0.5)
的Python中,我得到了不同的结果
array([[ 1. , 0.70710678],
[ 0.57735027, 0.5 ]]).
我的问题是如何使用Python来复制Matlab输出。我已经尝试了numpy函数numpy.linalg.matrix_power(M,n),但这失败了,因为它只将整数作为第二个参数,而我需要一个浮点数。谢谢!!!
答案 0 :(得分:3)
scipy.linalg
支持分数矩阵幂:
import numpy as np
from scipy.linalg import fractional_matrix_power
A = np.array([[1, 2], [3, 4]])
fractional_matrix_power(A, -0.5)
# array([[ 0.10306396-1.24742804j, 0.15020820+0.5706074j ],
# [ 0.22531231+0.8559111j , 0.32837626-0.39151694j]])