代码之家  ›  专栏  ›  技术社区  ›  BuddhiLW

Julia中的Plot复不等式

  •  1
  • BuddhiLW  · 技术社区  · 3 年前

    我有数学表达式 |z - (-1)| < 1 具有 z 复形元素,相当于以 (x,y)=(-1,0) .

    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
    
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   BatWannaBe    3 年前

    没有太多 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) 已调用,但调度无法在两者之间进行选择 (::Type{T})(x::T) where T<:Number 在里面 boot.jl OInterval(a) 在里面 intervals.jl .只是重新定义 OInterval(a::Ointerval) = a 也不行,因为你遇到了另一个 MethodError 对于 decompose(::OInterval) ,这是一种用于处理浮点数的方法。看着 the comments in intervals.jl ,调度工作似乎正在进行中。