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