math - 球算术与区间算术

标签 math floating-point intervals biginteger

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

换句话说,将区间表示为 [center, radius] 比 [left, right] 有什么优势?

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

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

最佳答案

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

在硬件算术中,球并没有真正比间隔具有速度优势,至少对于标量算术而言。如果您查看球算术的更一般形式并考虑,例如,球矩阵作为浮点矩阵 + 单个浮点数用于以某种范数表示整个矩阵的误差界限,则有一个明显的优势,而不是使用单个间隔或球的矩阵。

Joris van der Hoeven 关于球算术的文章很好地阐述了球算术和区间算术之间的差异:http://www.texmacs.org/joris/ball/ball.html

一个重要的引用是:“粗略地说,球应该用于数字的可靠近似,而间隔主要用于依赖空间分割的认证算法。”

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

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

对于单个数字的计算,错误高估更多地与算法有关,而不是与表示有关。 MPFI 保证它的所有原子函数计算尽可能紧密的间隔,但是一旦开始组合函数,这个属性就不会保留。无论是球算术还是区间算术,只要您运行具有许多相关步骤的计算,就会以相同的方式发生爆炸。为了跟踪由初始条件中的大不确定性导致的误差界限,泰勒模型等技术通常比直接间隔或球算术更好。

真正的复数球(复数中心 + 单半径)有时比表示复数的矩形复数区间更好,因为乘法的环绕效应更小。 (但是,Arb 对复数使用矩形“球”,因此它没有这种特殊优势。)

关于math - 球算术与区间算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53123151/

相关文章:

javascript - 计算两点之间的 SVG 弧

c - 如何检查输入是数字(浮点)还是某个字符?

objective-c - 将 Objective-C 中字符串中的整数相加

Python:优化区间之间的成对重叠

algorithm - 给定一组区间 S。你必须以最小时间复杂度找到 S 中包含在给定区间 (a, b) 中的所有区间

python - 如何以自适应间隔对 Pandas 中的偏斜数据进行分组

c# - N阶贝塞尔曲线

java - 在Java中将多项式乘以常数

c# - 将数据点转换为像素坐标以进行绘图

c - 在现代 x86 系统上,栈 float 组操作是否比堆浮点操作更快?