我目前正在开发一个基于 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 稀疏矩阵集合,我建议改用此链接:
关于c++ - 寻找迭代线性求解器的测试矩阵/系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328251/