【问题标题】:Computing the determinant of a C array计算 C 数组的行列式
【发布时间】:2012-07-05 13:32:17
【问题描述】:

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

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

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

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

【问题讨论】:

  • 所以“少数”是指“数百万”?酷。

标签: c math matrix linear-algebra


【解决方案1】:

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

Recommendations for a small c-based vector and matrix library

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多