我在网上搜索并找到了一些用于计算矩阵的行列式的 C 代码。然而,这段代码看起来很复杂,运行速度很慢,尤其是在处理更大的矩阵时,例如矩阵。我需要计算多元正态分布的协方差矩阵的行列式,我想知道是否有任何快速方法或用于此目的的代码,谢谢您的帮助。
有没有什么快速的方法来计算 NXN 协方差矩阵的行列式?
计算科学
线性代数
矩阵
2021-11-30 07:10:52
1个回答
您无法在浮点算术中准确计算大型矩阵的行列式。无论如何,我所知道的每个算法都会非常慢,但是人们不计算大型矩阵的行列式的原因不是因为运行时间:而是因为准确性问题。
之所以如此,是因为本质上,当您想要计算行列式时,您需要计算特征值。有很多方法,最简单的就是计算矩阵的 LU 分解。但是其中一些可能很小,而其中一些可能很大。如果将特征值相乘,如果只有几个特征值,这不会产生问题。但是如果你有大量相当不同的数字,所有这些数字都只是不准确地知道,你会因为抵消效应而陷入困境,除非你的特征值恰好分布得相当特别。
要了解为什么会这样,请考虑一个矩阵,其特征值恰好都在 10 左右。第一个问题是行列式将是,太大而无法用双精度表示,即使每个个体特征值大小适中。其次,如果您将许多数字相乘,每个数字都有自己的有限精度,您会将这些不准确性放大到最终结果中没有多少精度的地步。
其它你可能感兴趣的问题