Python:将方阵提高到负半幂

DvM*_*DvM 5 python arrays numpy matrix scipy

我试图计算它具有以下式矩阵B: B = A^2

假设 A 是一个矩阵:

array([[1, 2], [3, 4]])
Run Code Online (Sandbox Code Playgroud)

当我在 Matlab 中取这个矩阵的负半幂时(A^-0.5)。我得到以下结果:

答案 =

   0.1031 - 1.2474i   0.1502 + 0.5706i

   0.2253 + 0.8559i   0.3284 - 0.3915i
Run Code Online (Sandbox Code Playgroud)

但是,在使用代码的 Python 中,(A**-0.5)我得到了不同的结果

array([[ 1.        ,  0.70710678],
       [ 0.57735027,  0.5       ]]).
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用 Python 来复制 Matlab 输出。我已经尝试过 numpy 函数 numpy.linalg.matrix_power(M, n),但这失败了,因为它只需要整数作为第二个参数,而我需要一个浮点数。谢谢!!!

jpp*_*jpp 8

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]])
Run Code Online (Sandbox Code Playgroud)