當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。