4

我编写了一个程序,它生成了一些N x N我想计算它们的行列式的矩阵。与此相关,我有两个问题

  • 哪个图书馆最适合这样做?我想要最快的库,因为我有数百万个这样的矩阵。

  • 将结果转换为整数时,我应该注意哪些细节?我将生成的所有矩阵都具有整数行列式,并且我想确保没有舍入错误会扭曲行列式的正确值。

编辑。如果可能,请提供一个计算推荐库的行列式的示例。

4

3 回答 3

4

至于矩阵库,看起来这个问题在这里得到了回答:

对基于 c 的小型向量和矩阵库的建议

至于转换为整数:如果行列式不是整数,那么您不应该将其转换为整数,您应该使用round, floor, 或ceil以可接受的方式将其转换。这些可能会给你整数值,但你仍然需要转换它们;但是,您现在可以这样做,而不必担心丢失任何信息。

于 2012-07-05T13:36:39.383 回答
3

您可以使用 blas 和 lapack 的矩阵创造奇迹。它们实际上是用 fortran 编写的,从“c”中使用它们是一种调整。但总而言之,他们可以以惊人的速度处理数字。

http://www.netlib.org/lapack/lug/node11.html

于 2012-07-05T13:37:30.727 回答
2

您有GSL,但选择实际上取决于您的矩阵。矩阵是密集的还是稀疏的?N是大还是小?对于较小的 N,您可能会发现自己使用 Cramer 规则或高斯消元编码行列式更快,因为大多数高性能库都专注于大矩阵,并且它们的优化可能会在简单问题上引入开销。

于 2012-07-05T13:45:21.353 回答