线性求解器的测试集

计算科学 线性求解器 迭代法 测试 数据集
2021-12-01 21:59:33

假设我有一个迭代线性系统求解器,例如这个

验证和测试这种求解器的典型方法是什么?是否有一个标准的线性系统测试集可以用来验证上述 BiCGStab-Implementation,如果没有,如何创建这样的测试数据?

3个回答

您可以为烟雾测试做的一件事是采用已知的解决方案x(您可以随机生成它或选择方便的东西)和一个已知矩阵A,然后设置b等于Ax, 并求解方程Ax=b看看您是否恢复了已知的解决方案。这种方法被称为制造溶液的方法。

为避免收敛问题的影响,您可能需要确保A条件很好。一种制造条件良好的方法A将是选择在有界区间内的特征值集合,并构造对角矩阵Λ使得主对角线由这些特征值组成。然后,如果你生成一个可逆矩阵V(也应该条件良好),A=VΛV1. 最好让V在某些测试用例中是正交的,在这种情况下V1=VT并且您以制造为代价避免了调节问题A对称的。

这样的程序绝不会替代使用矩阵市场和佛罗里达大学稀疏矩阵集合等集合中的矩阵,但是通过生成小矩阵并使用制造解决方案的方法,您应该能够检测和纠正简单的错误(例如,由于索引或逻辑错误)而无需运行大型测试用例。它也是一种可以推广到其他类型问题(测试 ODE 求解器、测试 PDE 求解器等)的方法。

你看过矩阵市场吗?

http://math.nist.gov/MatrixMarket/

我会尝试重现原始论文的结果,在这种情况下是paper矩阵市场链接和稀疏矩阵集合链接也是很好的存储库。您还可以尝试将代码的收敛结果与经过良好测试的实现(例如 MATLAB、PETSc 等)进行比较。