1

我开始使用MathNet 数值库,我需要它来计算与我的邻接矩阵的特征向量相对应的最大特征值。

当使用大量点时,我的邻接矩阵变得非常大(即 5782x5782 条目)

大多数条目都是'0',所以我想我可以使用'SparseMatrix'。但是当我使用它时,计算仍然需要很长时间。事实上,我从来没有真正等过那么长时间,直到它完成。我在matlab中尝试了整个事情,根本没有任何问题。Matlab 在几秒钟内解决了它。

你对我有什么建议吗?

这是我正在做的事情:

// initialize matrix and fill it with zeros
Matrix<double> A = SparseMatrix.Create(count, count, 0);

... fill matrix with values ...

// get eigenvalues and eigenvectors / this part takes centuries =)
Evd<double> eigen = A.Evd(Symmetricity.Symmetric);
Vector<Complex> eigenvector = eigen.EigenValues;
4

1 回答 1

1

Math.Net Numerics 的实现完全基于 C#。因此,性能可能无法与 MATLAB 等工具相提并论,因为它们主要依赖本地和高度优化的 BLAS 库来执行数值计算。

您可能希望使用 Math.Net 附带的本机包装器,这些包装器利用高度优化的线性代数库(例如 Intel 的 MKL 或 AMD 的 ACML)。此 MSDN 页面上有一个指南,解释了如何使用 ACML 支持构建 Math.NET(请参阅Compiling and Using AMD ACML in Math.NET Numerics下)。

于 2015-11-13T15:51:35.333 回答