大型稀疏矩阵计算 - MathNet数字

时间:2015-06-27 14:41:14

标签: c# .net math graph mathdotnet

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

当使用大量积分时,我的邻接矩阵变得非常大(即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;

1 个答案:

答案 0 :(得分:1)

Math.Net Numerics的实现纯粹基于C#。因此,性能可能与MATLAB等工具不相上下,因为它们主要依靠原生和高度优化的BLAS库来执行数值计算。

您可能希望使用Math.Net附带的本机包装器,它利用高度优化的线性代数库(例如Intel的MKL或AMD的ACML)。有一个this MSDN page指南解释了如何使用ACML支持构建Math.NET(在在Math.NET Numerics中编译和使用AMD ACML )。