0

如何在 Fortran x 中将 NxN 矩阵 A 相乘以获得其功率而不放大舍入误差?

4

2 回答 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 回答