如何在不放大舍入误差的情况下将 NxN 矩阵 A 乘以 Fortran x 次以获得其功率?
如果 A 可以对角化为
A P = P D
,
其中P
是某个 NxN 矩阵(每列称为"特征向量"(,D
是 NxN 对角矩阵(对角元素称为"特征值"(,则
A = P D P^{-1}
,
其中P^{-1}
是P
的逆矩阵。因此,A
的二次幂导致
A A= P D P^{-1} P D P^{-1} = P D D P^{-1}
.
重复A
乘法 x
倍得到
A^x = P D^x P^{-1}
.
请注意,D^x
仍然是对角矩阵。让D
的第i
对角线元素D_{ii}
。然后,D^x
的第i
对角线元素为
[D^x]_{ii} = (D_{ii})^x
.
也就是说,D^x
的元素只是D
元素的x
次方,并且可以计算而没有太大的舍入误差,我猜。现在,您将P
和P^{-1}
分别从左和右乘到此D^x
以获得A^x
。A^x
中的误差取决于P
和P^{-1}
的误差,这可以通过数字包中的一些子例程(如LAPACK(来计算。
正如Norio在回答中提到的,人们通常可以使用Jordan(或Schur(分解并以类似的方式进行 - 有关详细信息(包括简短的错误分析(,请参阅例如Golub和Loan的矩阵计算第11章。