使矩阵对角化以计算矩阵幂?

Diagonalize a matrix to compute matrix power?

我正在尝试计算 P^100,其中 P 是我的转换矩阵。我想通过对角化 P 来做到这一点,这样我们就有了 P = Q*D*Q^-1

当然,如果我能得到P这种形式,那么我可以很容易地计算出P^100 = Q*D^100*Q^-1(其中*表示矩阵乘法)。

我发现,如果您只是 P^5,您将在 return 中得到的是一个矩阵,其中 P 的每个条目都被提高到 5 次方,而不是 5 次方矩阵的幂 (P*P*P*P*P).

我在这里发现了一个问题,它询问如何检查矩阵是否可对角化,而不是如何显式构造矩阵的对角化。在 MATLAB 中非常简单,但是我使用的是 R 而不是 MATLAB。

eigen()函数将为您计算特征值和特征向量(特征向量矩阵在您的表达式中为Q,特征值的diag()D)。

您还可以在 expm package, or functions from other packages described in the answers to this question 中使用 %^% 运算符。

使用别人的代码的优点是它已经过测试和调试,并且可以使用更快或更健壮的算法(例如,通过 composing powers of two of the matrix 计算矩阵幂通常比通过特征向量计算)。编写自己的方法的好处是您会更好地理解它。