我编写了一个程序,可以生成一些N x N
矩阵,我想用它来计算它们的行列式。与此相关我有两个问题
哪个图书馆最适合这样做?我想要最快的库,因为我有数百万个这样的矩阵。
在将结果转换为整数时,我应该注意哪些细节?我将生成的所有矩阵都有整数决定因素,我想确保没有舍入误差会使行列式的正确值出现偏差。
编辑。如果可能,请提供计算推荐库的行列式的示例。
答案 0 :(得分:4)
至于Matrix Libraries,看起来这个问题在这里得到解答:
Recommendations for a small c-based vector and matrix library
至于转换为整数:如果行列式是不整数,那么你不应该将转换为整数,你应该使用{{ 1}},round
或floor
以可接受的方式转换它。这些可能会给你积分值,但你仍然需要投射它们;但是,您现在可以这样做,而不必担心丢失任何信息。
答案 1 :(得分:3)
你可以通过blas和lapack来处理矩阵的奇迹。它们实际上是用fortran编写的,使用它们来自“c”是一种调整。但总而言之,他们可以以可怕的速度碾压数字。
答案 2 :(得分:2)
你有GSL,但选择权取决于你的矩阵。矩阵是密集的还是稀疏的? N大还是小?对于小N,您可能会发现使用Cramer规则或Gauss消除来自行编码行列式更快,因为大多数高性能库都专注于大矩阵,并且它们的优化可能会在简单问题上引入开销。