计算科学中舍入模式之间的区别?

计算科学 数值分析 浮点
2021-12-24 14:44:33

是否存在选择舍入模式很重要的科学数值问题实例?

通常有许多不同的舍入模式可用:0, 远离0, 到±, 最接近的关系,最接近的关系。除了问题细节要求舍入的各种货币操纵问题之外,有没有人知道舍入模式的选择在哪里可能真正重要的例子?

数值稳定的算法对舍入误差不敏感,因此对舍入模式的选择不敏感,但还有其他可能相关的问题吗?

2个回答

使用舍入模式,可以实现区间算术

假设两个正量xy由区间表示[xl,xu][yl,yu]. 乘积在区间算术中表示为[xlyl,xuyu], 在哪里xlyl应该四舍五入xuyu应该四舍五入。对舍入模式的控制可以很容易地做到这一点。

改变舍入模式并重新运行代码也是对算法的快速测试——如果答案变化很大,那么您就知道该算法对舍入错误非常敏感(并且您可能需要重写它!)

舍入模式的选择受 IEEE 标准的约束——参考文献 [1] 提到了IEEE 754和 IEEE 854。如果没有这些标准,将代码从一台机器移植到另一台机器时可能会发现不同的结果(参见 Goldberg [1])。如果您想检查您在另一台机器上得到的不同答案是由于错误还是由于实施差异造成的,那么可移植性将很重要。文章还举了一些例子,比如x2y2比更准确(x+y)(xy)什么时候x>>y要么y<<x. 在这种情况下,舍入误差可能变得更加重要。至于编译器支持,一个例子是支持 IEEE 浮点运算的 C99 标准

注意:某些情况需要比舍入模式更严格的东西——这些是涉及使用“任意精度算术”的问题。在有关该主题的 Wikipedia 文章中,给出了许多应用程序以及适当的库。

参考:

[1] David Goldberg,“每个计算机科学家都应该知道的关于浮点运算的知识”,ACM Computing Surveys (CSUR),23(1),5-48,1991。参见http://dl.acm.org/ft_gateway .cfm?id=103163&type=pdf