如何测试数值分析程序?

kay*_*oll 7 testing numerical

是否有任何良好的在线资源可用于创建,维护和考虑编写数值分析代码的测试例程?

我可以看到的测试矩阵乘法之类的限制之一是明显的测试(比如将一个矩阵作为标识)可能无法完全测试代码的功能.

此外,事实上您通常也在处理大型数据结构.有没有人对如何处理这个问题有一些好的想法,或者有指向好看的地方?

Bob*_*oss 3

听起来好像您需要考虑至少以两种不同的方式进行测试:

  1. 一些数值方法允许进行一些元思考。例如,可逆运算允许您设置测试用例以查看结果是否在原始结果的可接受的误差范围内。例如,矩阵M 的逆乘以矩阵M * 随机向量V应该会再次得到V,并且在某个可接受的误差测量范围内。
    显然,这个例子练习了矩阵求逆、矩阵乘法和矩阵向量乘法。我喜欢这样的链,因为您可以生成相当多的随机测试用例并获得统计覆盖率,而这对于手动编写来说将是一个艰难的过程。不过,他们并不孤立地执行单一操作。

  2. 一些数值方法有其误差的封闭式表达式。如果您可以使用已知解决方案设置情况,则可以比较解决方案与计算结果之间的差异,寻找超出这些已知界限的差异。

从根本上来说,这个问题说明了一个问题:良好地测试复杂方法需要相当多的领域知识。具体参考需要有关您正在测试的内容的更具体的信息。我绝对建议您至少手头有史蒂夫·耶格推荐的书籍清单。