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

C# 大型稀疏矩阵计算-MathNet数值计算,c#,.net,math,graph,math.net,C#,.net,Math,Graph,Math.net,我开始使用,我需要它来计算对应于邻接矩阵的特征向量的最大特征值 当使用大量点时,我的邻接矩阵变得相当大(即5782x5782个条目) 大多数条目都是“0”,所以我想我可以使用“SparseMatrix”。但当我使用它时,它仍然需要很长时间的计算。事实上,我从来没有真正等那么久,直到它完成。 我在matlab中尝试了整个过程,没有任何问题。Matlab在几秒钟内解决了这个问题 你对我有什么建议吗 以下是我正在做的: // initialize matrix and fill it with zer

我开始使用,我需要它来计算对应于邻接矩阵的特征向量的最大特征值

当使用大量点时,我的邻接矩阵变得相当大(即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;
//初始化矩阵并用零填充
矩阵A=SparseMatrix.Create(计数,计数,0);
... 用值填充矩阵。。。
//获取特征值和特征向量/这部分需要几个世纪=)
Evd特征值=A.Evd(对称性.对称性);
向量特征向量=特征值。特征值;

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

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