特征稀疏矩阵行列式为零

时间:2018-12-20 13:39:42

标签: c++ sparse-matrix linear-algebra eigen

我正在尝试计算我正在处理的稀疏矩阵是否为正定。为此,我尝试使用西尔维斯特(sylvester)标准,这意味着主要的未成年人是积极的。

要计算矩阵的行列式,我正在为矩阵的每个块构造一个sparseLU求解器,然后可以为我提供矩阵的行列式。但是从一个特定的维度(大约130 * 130)开始,我得到的结果是所有行列式均为0。这不是我的问题中的某个特殊维度(矩阵具有32 * 32的块),所以我认为这个问题与到Eigen应用的一些截断算法,而行列式仅低于某些阈值。

我对这种机制的搜索没有得到令人满意的结果。 我的矩阵的尺寸约为16k * 16k,所有非零元素都位于对角线附近的96个元素上。

在Eigen中是否实现了任何截断机制,我可以以某种方式控制其阈值吗?

1 个答案:

答案 0 :(得分:3)

这很可能是由于下溢引起的,即,行列式被计算为许多小于1.0的数字的乘积。如果您在0.5周围计算130个值的乘积,那么您将接近可以用单精度浮点数表示的边界。

您可以使用方法logAbsDeterminantsignDeterminant获得有意义的结果。

相关问题