繁体   English   中英

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

[英]Large Sparse Matrix Calculation - MathNet Numerics

我开始使用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;

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

您可能要使用Math.Net随附的本机包装,这些包装使用了高度优化的线性代数库(例如Intel的MKL或AMD的ACML)。 这个MSDN页面上有一个指南,说明了如何构建具有ACML支持的Math.NET(请参见Math.NET Numerics中的“编译和使用AMD ACML” )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM