如何计算条目太大或太小的矩阵的 Frobenius 范数?

计算科学 matlab 数值分析 算法 矩阵
2021-11-27 05:37:52

在 Matlab 中实现矩阵的 Frobenius 范数

AF:=i=1mj=1naij2,

当数字太大或太小时都会出现问题:

  • 如果矩阵中的数字太大(但在 Matlab 的范围内),取其平方将导致“无穷大”。向其中添加任何其他内容并扎根也将导致无穷大。但是,范数实际上可能要小得多,因为根是在最后取的。

  • 类似地,如果矩阵中的所有数字都足够,它们的平方和范数将返回0,而实际上它可能大到足以用 Matlab 表示,因为已取根。

在函数的实现中,我们将如何处理这样的情况?我知道norm(A,'fro')Matlab 中存在这个问题,但我们被要求自己处理这个问题,我很困惑。

1个回答

之前,您可以通过最大/最小(非零)项的倒数来缩放矩阵 .aM=|a|M

并查看 Higham 的书Accuracy and Stability of Numerical Algorithms以了解这些缩放如何影响准确性。