我编写了一个程序,它生成了一些N x N
我想计算它们的行列式的矩阵。与此相关,我有两个问题
哪个图书馆最适合这样做?我想要最快的库,因为我有数百万个这样的矩阵。
将结果转换为整数时,我应该注意哪些细节?我将生成的所有矩阵都具有整数行列式,并且我想确保没有舍入错误会扭曲行列式的正确值。
编辑。如果可能,请提供一个计算推荐库的行列式的示例。
我编写了一个程序,它生成了一些N x N
我想计算它们的行列式的矩阵。与此相关,我有两个问题
哪个图书馆最适合这样做?我想要最快的库,因为我有数百万个这样的矩阵。
将结果转换为整数时,我应该注意哪些细节?我将生成的所有矩阵都具有整数行列式,并且我想确保没有舍入错误会扭曲行列式的正确值。
编辑。如果可能,请提供一个计算推荐库的行列式的示例。
至于矩阵库,看起来这个问题在这里得到了回答:
至于转换为整数:如果行列式不是整数,那么您不应该将其转换为整数,您应该使用round
, floor
, 或ceil
以可接受的方式将其转换。这些可能会给你整数值,但你仍然需要转换它们;但是,您现在可以这样做,而不必担心丢失任何信息。
您可以使用 blas 和 lapack 的矩阵创造奇迹。它们实际上是用 fortran 编写的,从“c”中使用它们是一种调整。但总而言之,他们可以以惊人的速度处理数字。
您有GSL,但选择实际上取决于您的矩阵。矩阵是密集的还是稀疏的?N是大还是小?对于较小的 N,您可能会发现自己使用 Cramer 规则或高斯消元编码行列式更快,因为大多数高性能库都专注于大矩阵,并且它们的优化可能会在简单问题上引入开销。