球算术vs区间算术

时间:2018-11-02 17:17:38

标签: math floating-point intervals biginteger

ball arithmetic (Arb)interval arithmetic (MPFI)有什么优势?

换句话说,将间隔表示为[中心,半径]而不是[左,右]有什么优势?

这与特定库(Arb与MPFI)无关,而是与特定表示形式的优点有关。

我特别感兴趣的是一种表示形式是否允许更快的算术(更少的原始运算),更少的错误高估和更多的节俭内存使用。

1 个答案:

答案 0 :(得分:2)

在任意精度算术中,球形算术的速度大约是间隔算术的两倍,并且占用的空间只有一半。原因是只有球的中心需要高精度,而在区间算术中,两个端点都需要高精度。当然,细节取决于实现。 (实际上,Arb比MPFI快两倍多,但这在很大程度上是由于实施工作所致。)

在硬件算术中,至少对于标量算术,球在间隔上确实没有速度优势。如果您看一下球运算的更一般形式,并考虑将球矩阵视为一个浮点矩阵+一个浮点数,则该矩阵在某种范式中会代替整个矩阵的误差范围,这将带来明显的优势。处理单个间隔或球的矩阵的方法。

Joris van der Hoeven的有关球算术的文章很好地说明了球算术和区间算术之间的区别:http://www.texmacs.org/joris/ball/ball.html

重要的一句话是:“大致来说,应该使用球来可靠地近似数字,而间隔主要用于依赖于空间细分的经过验证的算法。”

忽略性能问题,球和间隔通常可以互换,尽管间隔更适合细分算法。从概念上讲,球很适合表示数字,因为中心半径形式自然对应于我们对数学近似的看法。这个概念也自然地扩展到更通用的赋范空间。

我个人经常将球算术视为浮点算术+误差分析,但是误差界限的传播是由计算机而不是人工自动完成的。从这个意义上讲,这是进行浮点算术的一种更好的方法(对于某些应用!),而不仅仅是一种进行区间算术的更好的方法。

对于具有单个数字的计算,错误高估更多地与算法有关,而不是与表示有关。 MPFI保证其所有原子函数都计算出最紧密的间隔,但是,一旦开始编写函数,该属性就不会保留。无论是球算术还是区间算术,只要您使用许多相关步骤来运行计算,爆炸就会以相同的方式发生。为了跟踪初始条件下不确定性较大的误差范围,泰勒模型之类的技术通常优于直接区间或球算术。

真正的复数球(复数中心+单半径)有时比矩形复数间隔更好地表示复数,因为乘法的包装效果较小。 (但是,Arb对复数使用矩形“球”,因此它没有此特殊优势。)