如何在 Fortran x 中将 NxN 矩阵 A 相乘以获得其功率而不放大舍入误差?
问问题
326 次
2 回答
3
如果 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
forx
时间产生
A^x = P D^x P^{-1}
.
注意这里D^x
仍然是一个对角矩阵。设be的i
第 -th 对角元素。那么,第-个对角元素是D
D_{ii}
i
D^x
[D^x]_{ii} = (D_{ii})^x
.
也就是说,我猜, 的元素D^x
只是x
和 的元素的 -th 次方,D
可以在没有太多舍入误差的情况下计算。现在,您分别从左和右乘以P
和得到。中的误差取决于 和 的误差,可以通过 LAPACK 等数值包中的一些子程序来计算。P^{-1}
D^x
A^x
A^x
P
P^{-1}
于 2015-11-16T15:30:59.970 回答
2
正如 norio 在回答中提到的那样,通常可以使用 Jordan(或 Schur)分解并以类似的方式进行 - 有关详细信息(包括简要错误分析),请参见例如 Golub 和 Loan 的矩阵计算的第 11 章.
于 2015-11-16T17:38:33.643 回答