在matlab中计算给定矩阵的负幂

calculate minus power of given matrix in matlab

假设我们有以下公式

假设我们有一些矩阵

A=rand(3,3)

A =

    0.3922    0.7060    0.0462
    0.6555    0.0318    0.0971
    0.1712    0.2769    0.8235

我已经计算出特征值分解

[V,D]=eig(A)

V =

    0.6174   -0.4576   -0.3467
   -0.7822   -0.3723   -0.2087
    0.0841   -0.8075    0.9145


D =

   -0.4960         0         0
         0    1.0481         0
         0         0    0.6954

那么清楚

V*D*inv(V)

ans =

    0.3922    0.7060    0.0462
    0.6555    0.0318    0.0971
    0.1712    0.2769    0.8235

关于第二个公式我试过一个

V*sqrt(inv(D))*V'

ans =

   0.3487 + 0.5412i   0.2532 - 0.6857i  -0.0193 + 0.0737i
   0.2532 - 0.6857i   0.1876 + 0.8687i   0.0648 - 0.0934i
  -0.0193 + 0.0737i   0.0648 - 0.0934i   1.6397 + 0.0100i

它的实现是否正确?或者如何在 matlab 中计算 D 的给定幂?提前致谢

你的公式是正确的。

但是,预计不会从第二个公式得到 A 矩阵:

对角矩阵D的求逆,基本上就是对每个对角元素分别求逆。意思是 D^(-1) = diag(1/d_ii)

因此,操作的步骤也可以通过以下过程来定义:

  • 在一列中提取对角线非零元素
  • 分别反转每一个
  • 计算每个 sqrt
  • 重新创建对角矩阵。

上述操作将如下所示:V*diag(diag(D).^(-0.5))*V'

元素d_11=-0.496是问题所在。作为负值,它的 sqrt 将是一个复数。所以D.^(-0.5)将是一个复数矩阵,乘积将是一个复数矩阵。

您确定该公式适用于任何随机矩阵吗?根据我的想法,它可能适用于某些特殊形式的矩阵,例如对称 and/or 正定矩阵。