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