【发布时间】:2012-04-14 19:34:51
【问题描述】:
这是一个非常简单的问题——在 C++ 中使用三角矩阵和稀疏矩阵的最佳实践是什么?
对于三角矩阵,我建议使用一种简单的数据格式
double* myMatrix;
int dimension;
作为自定义类中的数据结构。 (我建议它是一个完整形式的方阵。)还有设置和访问元素的方法。
对于稀疏矩阵 - 我知道一些方法,比如只保存行/列中元素的位置及其值。这是您的经验的问题 - 稀疏矩阵的哪个实现将是最好的?
附:更少的内存,更少的 CPU 使用——这是我的目标,我正在寻找最好的解决方案,而不是最简单的解决方案。所有矩阵都将用于求解线性方程组。而且矩阵的大小会很大。
非常感谢您的每一个建议!
【问题讨论】:
-
像 Eigen 这样的第三方库怎么样?
-
除非您是专家,否则请使用预先存在的库。我推荐 Tim Davis 的代码,例如CSparse,UMFPACK。
-
现有的研究似乎相当多。先看看那里:en.wikipedia.org/wiki/Sparse_matrix#Storing_a_sparse_matrix
-
如何使用 std::map<:pair>,double>?
标签: c++ performance memory-management sparse-matrix