假设我有一个迭代线性系统求解器,例如这个。
验证和测试这种求解器的典型方法是什么?是否有一个标准的线性系统测试集可以用来验证上述 BiCGStab-Implementation,如果没有,如何创建这样的测试数据?
假设我有一个迭代线性系统求解器,例如这个。
验证和测试这种求解器的典型方法是什么?是否有一个标准的线性系统测试集可以用来验证上述 BiCGStab-Implementation,如果没有,如何创建这样的测试数据?
您可以为烟雾测试做的一件事是采用已知的解决方案(您可以随机生成它或选择方便的东西)和一个已知矩阵,然后设置等于, 并求解方程看看您是否恢复了已知的解决方案。这种方法被称为制造溶液的方法。
为避免收敛问题的影响,您可能需要确保条件很好。一种制造条件良好的方法将是选择在有界区间内的特征值集合,并构造对角矩阵使得主对角线由这些特征值组成。然后,如果你生成一个可逆矩阵(也应该条件良好),. 最好让在某些测试用例中是正交的,在这种情况下并且您以制造为代价避免了调节问题对称的。
这样的程序绝不会替代使用矩阵市场和佛罗里达大学稀疏矩阵集合等集合中的矩阵,但是通过生成小矩阵并使用制造解决方案的方法,您应该能够检测和纠正简单的错误(例如,由于索引或逻辑错误)而无需运行大型测试用例。它也是一种可以推广到其他类型问题(测试 ODE 求解器、测试 PDE 求解器等)的方法。
你看过矩阵市场吗?