计算C数组的行列式

时间:2012-07-05 13:32:17

标签: c math matrix linear-algebra

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

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

  • 在将结果转换为整数时,我应该注意哪些细节?我将生成的所有矩阵都有整数决定因素,我想确保没有舍入误差会使行列式的正确值出现偏差。

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

3 个答案:

答案 0 :(得分:4)

至于Matrix Libraries,看起来这个问题在这里得到解答:

Recommendations for a small c-based vector and matrix library

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

答案 1 :(得分:3)

你可以通过blas和lapack来处理矩阵的奇迹。它们实际上是用fortran编写的,使用它们来自“c”是一种调整。但总而言之,他们可以以可怕的速度碾压数字。

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

答案 2 :(得分:2)

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