我开始使用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;
答案 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 )。