我尝试为数值方法的实现编写测试。最好的方法是研究观察到的准确度顺序,并检查它是否与理论的准确度顺序相匹配。
但是,我注意到观察到的准确度顺序位于一个范围内
在哪里是准确度的理论阶数,并且是必须为任何特定方法选择的一些绝对误差。对于我实施的一些方法,我可以采取, 对于他人等等。
所以,我的问题是:应该如何选择确保执行中没有错误?
我尝试为数值方法的实现编写测试。最好的方法是研究观察到的准确度顺序,并检查它是否与理论的准确度顺序相匹配。
但是,我注意到观察到的准确度顺序位于一个范围内
所以,我的问题是:应该如何选择确保执行中没有错误?
从实践经验来看,我发现绘制离散化细化研究的结果最能确定观察到的精度顺序是否“足够接近”。然而,编写一个方法的准确度顺序的自动化测试需要某种回归来计算从数据中观察到的准确度顺序,然后定义一个适当的- 比较容差 - 如果观察到的准确度顺序在理论上的准确性顺序,测试“通过”。
我不知道有什么理论可以提出适当的或一种适当的方法来先验地包围收敛区域的渐近顺序。我总是通过从图中对它们进行逆向工程来编写这些类型的测试,所以我通常选择要么,因为我看到准确度的顺序最多偏离那个量。
在某些情况下(例如,不连续的初始条件或刚性问题),理论可以预测方法的准确性顺序将如何降低;如果不考虑这个额外的理论,那么你可能需要选择一个更大的补偿。例如,在“双曲问题的有限体积方法”的第 8.7 节中,Randy LeVeque 讨论了一阶迎风方法的收敛理论如何假设平滑解。相反,如果弱解是不连续的,则空间中的精度顺序(在norm) 是二分之一而不是一。所以在这种情况下,如果你假设真正的订单应该是一个,你可能需要做高达 0.6,但在某些情况下,误差的退化是已知的,您可以相应地调整理论精度的顺序。