当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Julia isapprox用法及代码示例


用法一

isapprox(x, y; atol::Real=0, rtol::Real=atol>0 ? 0 : √eps, nans::Bool=false[, norm::Function])

不精确的相等比较。如果它们的相对距离 or 它们的绝对距离在公差范围内,则两个数字比较相等:如果 norm(x-y) <= max(atol, rtol*max(norm(x), norm(y))) ,则 isapprox 返回 true。默认 atol 为零,默认 rtol 取决于 xy 的类型。关键字参数 nans 确定 NaN 值是否被视为相等(默认为 false)。

对于实数或复数浮点值,如果未指定 atol > 0,则 rtol 默认为 xy 类型的 eps 的平方根,以较大者(最不精确)为准。这对应于要求大约一半的有效数字相等。否则,例如对于整数参数,或者如果提供了 atol > 0,则 rtol 默认为零。

norm 关键字默认为 abs 用于数字 (x,y)LinearAlgebra.norm 用于数组(替代 norm 选项有时很有用)。当 xy 是数组时,如果 norm(x-y) 不是有限的(即 ±InfNaN ),则比较回退到检查 xy 的所有元素是否近似相等 component-wise。

二元运算符 等效于带有默认参数的 isapprox ,而 x ≉ y 等效于 !isapprox(x,y)

请注意,x ≈ 0(即,将默认公差与零进行比较)等效于 x == 0,因为默认 atol0 。在这种情况下,您应该提供适当的 atol (或使用 norm(x) ≤ atol )或重新排列代码(例如,使用 x ≈ y 而不是 x - y ≈ 0 )。不可能自动选择非零 atol,因为它取决于问题的整体缩放("units"):例如,在 x - y ≈ 0 中,atol=1e-9 是一个非常小的公差,如果 x是以米为单位的radius of the Earth,但如果x 是以米为单位的radius of a Hydrogen atom,则公差非常大。

Julia 1.6

在比较数字(非数组)参数时传递 norm 关键字参数需要 Julia 1.6 或更高版本。

例子

julia> isapprox(0.1, 0.15; atol=0.05)
true

julia> isapprox(0.1, 0.15; rtol=0.34)
true

julia> isapprox(0.1, 0.15; rtol=0.33)
false

julia> 0.1 + 1e-10 ≈ 0.1
true

julia> 1e-10 ≈ 0
false

julia> isapprox(1e-10, 0, atol=1e-8)
true

julia> isapprox([10.0^9, 1.0], [10.0^9, 2.0]) # using `norm`
true

用法二

isapprox(x; kwargs...) / ≈(x; kwargs...)

创建一个使用 将其参数与 x 进行比较的函数,即等效于 y -> y ≈ x 的函数。

此处支持的关键字参数与 2 参数 isapprox 中的关键字参数相同。

Julia 1.5

此方法需要 Julia 1.5 或更高版本。

相关用法


注:本文由纯净天空筛选整理自julialang.org 大神的英文原创作品 Base.isapprox — Function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。