c++ - 寻找迭代线性求解器的测试矩阵/系统

标签 c++ matrix linear-algebra solver iteration

我目前正在开发一个基于 C++ 的库来解决大型、稀疏的线性代数问题(是的,我知道存在很多这样的库,但我自己动手主要是为了学习迭代求解器、稀疏存储容器等。 .).

我已经到了在我的其他编程项目中使用我的求解器的地步,并且想针对不属于我自己的问题测试求解器。首先,我希望针对正定的对称稀疏系统进行测试。我已经找到了此类系统矩阵的多个来源,例如:

Matrix Market UF Sparse Matrix Collection

话虽这么说,但我还没有找到包含整个系统-系统矩阵和 RHS 的良好测试矩阵的任何来源。为了检查结果,这将是很棒的。关于我在哪里可以找到这样完整的系统的任何提示,或者我可以做些什么来为我可以在线获取的系统矩阵生成一个“好的”RHS?我目前只是用随机值或所有值填充一个矩阵,但我怀疑这不一定是最好的方法。

最佳答案

我建议使用从预定义的“目标”解决方案 x 获得的右侧 vector :

b = A*x

然后您有一个目标解决方案 x,以及来自求解器的结果解决方案 x。 这意味着您可以比较误差(目标和结果解决方案的差异)以及残差 (A*x - b)。

请注意,为了仔细评估迭代求解器,您还需要考虑初始 x 使用什么。

矩阵的在线集合主要包含左侧矩阵,但有些确实包括右侧矩阵,还有一些也有解 vector 。:

http://www.cise.ufl.edu/research/sparse/matrices/rhs.txt

顺便说一句,对于 UF 稀疏矩阵集合,我建议改用此链接:

http://www.cise.ufl.edu/research/sparse/matrices/

关于c++ - 寻找迭代线性求解器的测试矩阵/系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328251/

相关文章:

C++11 typedef 别名编译错误

python - 在 Python 中进行大型矩阵计算的最佳模块?

c++ - 如何用等距水平线填充闭合折线?

c++ - 给定一个顶点和一个四元数,先计算前面的一个顶点3.0

python - 循环遍历 numpy 矩阵

python - Matplotlib : Paint cells of matrix based on indexes stored in array

arrays - 你如何找到异或为零的整数数组的最大子集

python - 用 numpy 减少循环

java - 自动为枚举添加类似 Java 枚举的功能