在 Julia 中绘制复杂的不等式

Plot complex inequality in Julia

我有数学表达式 |z - (-1)| < 1,其中包含 Complexes 的 z 个元素,它相当于以 (x,y)=(-1,0).

为中心的半径为 1 的圆
  1. 如何绘制这个表达式,
  2. 尽可能多地保留其派生的数学表达式的结构 可能吗?
  3. 应该是一个区域

到目前为止我尝试了什么:

using ImplicitEquations, Plots

f(a,b) = abs.(a+im*b - (-1))
plot(f<1)

我得到的错误:

ERROR: MethodError: no method matching isless(::typeof(f), ::Int64)
Closest candidates are:
  isless(::Union{StatsBase.PValue, StatsBase.TestStat}, ::Real) at /home/buddhilw/.julia/packages/StatsBase/PGTj8/src/statmodels.jl:514
  isless(::AbstractGray{T} where T, ::Real) at /home/buddhilw/.julia/packages/ColorTypes/6m8P7/src/operations.jl:31
  isless(::ForwardDiff.Dual{Tx, V, N} where {V, N}, ::Integer) where
Tx at /home/buddhilw/.julia/packages/ForwardDiff/UDrkY/src/dual.jl:144
  ...
Stacktrace:
 [1] <(x::Function, y::Int64)
   @ Base ./operators.jl:279
 [2] top-level scope
   @ REPL[62]:1

ImplicitEquations 的 documentation 不多,但有一点很突出:您没有使用正确的运算符。该包依赖于不寻常的运算符来表示具有 Julia 函数的数学表达式:≪ (\ll[tab]), ≦ (\leqq[tab]), ⩵ (\Equal[tab]), ≶ (\lessgtr[tab]) 或≷ (\gtrless[tab]), ≧ (\geqq[tab]), ≫ (\leqq[tab]).

所以修复看起来像:

using ImplicitEquations, Plots

f(a,b) = sqrt((a+1)^2 + b^2)
plot(f ≪ 1)

更新:

f(a,b) = abs(a + im*b - (-1)) 导致方法歧义错误。 f(a, b) = hypot(a+1, b),这是 abs 调用的内容,也会导致错误。看起来问题是在 hypot 中的某个时刻,调用了 OInterval(x::Ointerval),但调度无法在 boot.jl 中的 (::Type{T})(x::T) where T<:NumberOInterval(a) 之间进行选择=19=]。只是重新定义 OInterval(a::Ointerval) = a 也不会起作用,因为你 运行 变成了另一个 MethodError for decompose(::OInterval),这是一种用于处理浮点数的方法。查看 the comments in intervals.jl,调度似乎正在进行中。