【问题标题】:Python: Raise square matrix to negative half powerPython:将方阵提高到负半幂
【发布时间】:2018-07-12 23:13:59
【问题描述】:

我正在尝试计算具有以下等式的矩阵 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

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

array([[ 1.        ,  0.70710678],
       [ 0.57735027,  0.5       ]]).

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

【问题讨论】:

  • 注意numpy 矩阵上的标准操作是 MatLab 中的“元素明智”(.*.^ 等)运算符可能很重要。对于矩阵运算,您使用@ 进行矩阵乘法并需要scipy.linalg.fractional_matrix_power 进行矩阵求幂。

标签: python arrays numpy matrix scipy


【解决方案1】:

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

【讨论】:

  • 但是这不适用于一批矩阵 (_,N,N)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
相关资源
最近更新 更多