如何测试给定的一维寻根过程是否稳健?我知道网上有各种优化的数据集和资源,但我还没有找到任何关于一维寻根的东西。您是否碰巧知道任何通常用于测试一维寻根程序稳健性的数据集或函数?
特别是,我希望看到一些函数会破坏没有仔细编写以解释有限精度算术的软件。
感谢您的输入!
如何测试给定的一维寻根过程是否稳健?我知道网上有各种优化的数据集和资源,但我还没有找到任何关于一维寻根的东西。您是否碰巧知道任何通常用于测试一维寻根程序稳健性的数据集或函数?
特别是,我希望看到一些函数会破坏没有仔细编写以解释有限精度算术的软件。
感谢您的输入!
已经有许多很好的寻根方法的开源实现。一个例子是 boost,你可以在这里找到它的 Newton-Raphson 实现和相关方法。如果您阅读其源代码,您将能够看到作者想要解决的问题,以及他们如何处理收敛、用户指定的容差参数和舍入误差等问题。
算法提升工具之一是 TOMS748。如果您查看由 Alefeld、Potra 和 Shi 撰写的介绍该算法的原始论文,您会看到他们使用了哪些函数来测试他们的算法(第 341 页上的表 I),您还可以将您的实现与所有他们跑的那些。这可能是最简单、最可靠的方法,也是我个人更喜欢的方法。
另一种方法是查看开源根查找库的测试代码,并查看库的作者使用哪些函数来测试它们。例如,GSL 的源代码在这里,roots/test_funcs.c 包含它的测试函数。