我正在尝试计算P^100
,其中P
是我的转换矩阵。我想通过对角化P
来做到这一点,这样我们就有了P = Q*D*Q^-1
。
当然,如果我可以将P
设为这种形式,那么我可以轻松地计算P^100 = Q*D^100*Q^-1
(其中*
表示矩阵乘法)。
[我发现,如果您只执行P^5
,您将获得的回报是一个矩阵,其中P的每个项都被提高到矩阵的5次幂,而不是矩阵的5次幂(P*P*P*P*P
) 。
我在这里发现了一个问题,询问如何检查矩阵是否可对角线化,而不是如何显式构造矩阵的对角线。在MATLAB中,这非常容易,但是我使用的是R,而不是MATLAB。
eigen()
函数将为您计算特征值和特征向量(特征值的矩阵为表达式中的Q
,特征向量的diag()
为D
)。
您还可以在%^%
中使用expm package运算符,或在this question的答案中描述的其他包中的功能。
使用其他人的代码的优势在于它已经过测试和调试,并且可以使用更快或更健壮的算法(例如,通过composing powers of two of the matrix来计算矩阵幂通常比进行特征向量计算更有效)。编写自己的方法的优点是您会更好地理解它。