Julia 中的isapprox()
函数用于测试两个数字或数组是否近似相等。我希望能够测试任何所需数量的有效数字的近似相等性。正如下面的代码示例所示,近似容差以绝对值或相对(百分比)偏差的形式给出。
# Syntax
isapprox(a, b; atol = <absolute tolerance>, rtol = <relative tolerance>)
# Examples
# Absolute tolerance
julia> isapprox(10.0,9.9; atol = 0.1) # Tolerance of 0.1
true
# Relative tolerance
julia> isapprox(11.5,10.5; rtol = 0.1) # Rel. tolerance of 10%
true
julia> isapprox(11.4,10.5; rtol = 0.01) # Rel. tolerance of 1%
false
julia> isapprox(98.5, 99.4; rtol = 0.01) # Rel. tolerance of 1%
true
我在某处的论坛中读到该设置rtol = 1e-n
,其中n
有效数字的数量将比较有效数字。(不幸的是,我无法再次找到它。)无论如何,正如示例所示,这显然不是真的。
鉴于我们在这种情况下希望用两位有效数字近似相等,因此 11.4 和 10.5 都大约等于 11。但是,两者之间的相对差异大于 1%,返回近似值false
。但是,对于任何大于 90 的数字,近似值为true
。如代码所示,将相对容差增加十倍至 10% 将导致灵敏度过低。
是否有一个参数/值/公式我可以设置rtol
为正确isapprox()
返回true
任何所需数量的有效数字?