如何在不放大舍入误差的情况下,将fortran x中的nxn矩阵A乘以以获得其幂?
如何在不放大舍入误差的情况下,将Fortran x中的NxN矩阵A乘以幂?如果A可以对角化为如何在不放大舍入误差的情况下,将fortran x中的nxn矩阵A乘以以获得其幂?,fortran,fortran90,numerical-methods,numerical-stability,Fortran,Fortran90,Numerical Methods,Numerical Stability,如何在不放大舍入误差的情况下,将Fortran x中的NxN矩阵A乘以幂?如果A可以对角化为 A p=pd 其中,p是某个NxN矩阵(每列称为“特征向量”),而D是一个NxN对角矩阵(对角元素称为“特征值”),则 A=pdp^{-1} 其中p^{-1}是p的逆矩阵。因此,A的二次幂导致 aa=pdp^{-1}pdp^{-1}=pdp^{-1} 将A重复乘以x得到 A^x=pd^xp^{-1} 请注意,D^x仍然是一个对角矩阵。让D的i第个对角线元素为D{ii}。然后,D^x的第i个对角线元素是
A p=pd
其中,p
是某个NxN矩阵(每列称为“特征向量”),而D
是一个NxN对角矩阵(对角元素称为“特征值”),则
A=pdp^{-1}
其中p^{-1}
是p
的逆矩阵。因此,A的二次幂导致
aa=pdp^{-1}pdp^{-1}=pdp^{-1}
将A
重复乘以x
得到
A^x=pd^xp^{-1}
请注意,D^x
仍然是一个对角矩阵。让D
的i
第个对角线元素为D{ii}
。然后,D^x
的第i个对角线元素是
[D^x]{ii}=(D{ii}^x
也就是说,D^x
的元素只是x
元素D
的第四次方,我想可以在没有很大舍入误差的情况下进行计算。现在,将P
和P^{-1}
分别从左侧和右侧乘以D^x
,得到A^x
。A^x
中的误差取决于P
和P^{-1}
的误差,如果A可以对角化为
A p=pd
其中,p
是某个NxN矩阵(每列称为“特征向量”),而D
是一个NxN对角矩阵(对角元素称为“特征值”),则
A=pdp^{-1}
其中p^{-1}
是p
的逆矩阵。因此,A的二次幂导致
aa=pdp^{-1}pdp^{-1}=pdp^{-1}
将A
重复乘以x
得到
A^x=pd^xp^{-1}
请注意,D^x
仍然是一个对角矩阵。让D
的i
第个对角线元素为D{ii}
。然后,D^x
的第i个对角线元素是
[D^x]{ii}=(D{ii}^x
也就是说,D^x
的元素只是x
元素D
的第四次方,我想可以在没有很大舍入误差的情况下进行计算。现在,将P
和P^{-1}
分别从左侧和右侧乘以D^x
,得到A^x
。A^x
中的误差取决于P
和P^{-1}
的误差,这些误差可以通过数值包中的一些子程序(如LAPACK)进行计算。正如norio在回答中提到的那样,一般可以采用Jordan(或Schur)分解,并以类似的方式进行详细说明(包括简要误差分析)参见Golub和Loan的矩阵计算第11章。
正如norio在回答中提到的,一般可以采用Jordan(或Schur)分解,并以类似的方式进行详细分析(包括简要误差分析)例如,请参阅Golub和Loan的《矩阵计算》第11章。您的计算需要多精确?您是否尝试过使用64、128位浮点数?如果您可以展示一个带有结果和预期的测试用例,那将是非常棒的显示您的计算需要多精确?您是否尝试过使用64、128位浮点数rs?如果你能展示一个带有结果和期望的测试用例,那就太好了