Python:将方阵提升到负半功率

时间:2018-02-02 12:39:49

标签: python arrays numpy matrix

我正在尝试计算矩阵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),但这失败了,因为它只将整数作为第二个参数,而我需要一个浮点数。谢谢!!!

1 个答案:

答案 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]])