JuliaHolomorphic / ComplexPhasePortrait.jl

Complex phase portraits for Julia.
Other
25 stars 9 forks source link

readme examples "broken" on julia 1.0 #6

Open AshtonSBradley opened 5 years ago

AshtonSBradley commented 5 years ago
julia> using ComplexPhasePortrait

julia> nx = 1000
1000

julia> x = range(-1, stop=1, length=nx)
-1.0:0.002002002002002002:1.0

julia> Z = x' .+ reverse(x)*im
1000×1000 Array{Complex{Float64},2}:
 -1.0+1.0im       …  0.997998+1.0im       1.0+1.0im     
 -1.0+0.997998im     0.997998+0.997998im  1.0+0.997998im
 -1.0+0.995996im     0.997998+0.995996im  1.0+0.995996im
 -1.0+0.993994im     0.997998+0.993994im  1.0+0.993994im
 -1.0+0.991992im     0.997998+0.991992im  1.0+0.991992im
 -1.0+0.98999im   …  0.997998+0.98999im   1.0+0.98999im 
 -1.0+0.987988im     0.997998+0.987988im  1.0+0.987988im
 -1.0+0.985986im     0.997998+0.985986im  1.0+0.985986im
     ⋮            ⋱                                     
 -1.0-0.987988im     0.997998-0.987988im  1.0-0.987988im
 -1.0-0.98999im      0.997998-0.98999im   1.0-0.98999im 
 -1.0-0.991992im  …  0.997998-0.991992im  1.0-0.991992im
 -1.0-0.993994im     0.997998-0.993994im  1.0-0.993994im
 -1.0-0.995996im     0.997998-0.995996im  1.0-0.995996im
 -1.0-0.997998im     0.997998-0.997998im  1.0-0.997998im
 -1.0-1.0im          0.997998-1.0im       1.0-1.0im     

julia> f = z -> (z - 0.5im)^2 * (z + 0.5+0.5im)/z
#3 (generic function with 1 method)

julia> fz = f.(Z)
1000×1000 Array{Complex{Float64},2}:
      0.25-1.375im     0.246876-1.37187im  …     1.125+1.5im    
  0.253124-1.37187im       0.25-1.36875im      1.12787+1.49487im
  0.256241-1.36874im   0.253117-1.36563im      1.13074+1.48974im
  0.259351-1.36562im   0.256226-1.36251im       1.1336+1.48461im
  0.262452-1.36249im   0.259328-1.35939im      1.13645+1.47948im
  0.265547-1.35936im   0.262422-1.35627im  …   1.13929+1.47434im
  0.268634-1.35623im   0.265509-1.35315im      1.14212+1.46921im
  0.271713-1.3531im    0.268589-1.35003im      1.14495+1.46408im
          ⋮                                ⋱                    
 -0.594364+1.48274im  -0.597234+1.47766im     0.279126-3.59572im
  -0.59945+1.48562im  -0.602321+1.48053im     0.274293-3.6006im 
 -0.604544+1.48849im  -0.607415+1.48339im  …  0.269451-3.60548im
 -0.609646+1.49137im  -0.612518+1.48626im     0.264601-3.61036im
 -0.614756+1.49425im  -0.617629+1.48913im     0.259743-3.61524im
 -0.619874+1.49712im  -0.622747+1.492im       0.254876-3.62012im
    -0.625+1.5im      -0.627874+1.49487im         0.25-3.625im  

julia> img = portrait(fz)
1000×1000 Array{RGB{Float64},2} with eltype ColorTypes.RGB{Float64}:
 RGB{Float64}(0.126878,1.0,0.0)  …  RGB{Float64}(0.567613,0.0,1.0)
 RGB{Float64}(0.126878,1.0,0.0)     RGB{Float64}(0.567613,0.0,1.0)
 RGB{Float64}(0.126878,1.0,0.0)     RGB{Float64}(0.567613,0.0,1.0)
 RGB{Float64}(0.126878,1.0,0.0)     RGB{Float64}(0.567613,0.0,1.0)
 RGB{Float64}(0.136895,1.0,0.0)     RGB{Float64}(0.577629,0.0,1.0)
 RGB{Float64}(0.136895,1.0,0.0)  …  RGB{Float64}(0.577629,0.0,1.0)
 RGB{Float64}(0.136895,1.0,0.0)     RGB{Float64}(0.577629,0.0,1.0)
 RGB{Float64}(0.136895,1.0,0.0)     RGB{Float64}(0.577629,0.0,1.0)
 ⋮                               ⋱                                
 RGB{Float64}(0.687813,0.0,1.0)     RGB{Float64}(1.0,0.861436,0.0)
 RGB{Float64}(0.687813,0.0,1.0)     RGB{Float64}(1.0,0.871452,0.0)
 RGB{Float64}(0.687813,0.0,1.0)  …  RGB{Float64}(1.0,0.871452,0.0)
 RGB{Float64}(0.677796,0.0,1.0)     RGB{Float64}(1.0,0.871452,0.0)
 RGB{Float64}(0.677796,0.0,1.0)     RGB{Float64}(1.0,0.881469,0.0)
 RGB{Float64}(0.677796,0.0,1.0)     RGB{Float64}(1.0,0.881469,0.0)
 RGB{Float64}(0.677796,0.0,1.0)     RGB{Float64}(1.0,0.881469,0.0)

does not error, but neither does it produce a figure. Similarly for

julia> img = portrait(fz, ctype="nist")

julia> img = portrait(fz, PTstepphase)

julia> img = portrait(fz, PTstepmod)

The final example hits a MethodError:

julia> img = portrait(fz, PTcgrid)
ERROR: MethodError: no method matching abs(::Array{Complex{Float64},2})
Closest candidates are:
  abs(::Bool) at bool.jl:91
  abs(::Float16) at float.jl:517
  abs(::Float32) at float.jl:518
  ...
Stacktrace:
 [1] #portrait#3(::Int64, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Array{Complex{Float64},2}, ::Type{PTcgrid}) at /Users/abradley/.julia/packages/ComplexPhasePortrait/QeyCS/src/ComplexPhasePortrait.jl:55
 [2] portrait(::Array{Complex{Float64},2}, ::Type{PTcgrid}) at /Users/abradley/.julia/packages/ComplexPhasePortrait/QeyCS/src/ComplexPhasePortrait.jl:53
 [3] top-level scope at none:0
MikaelSlevinsky commented 5 years ago

PR #5 fixes the MethodError for the conformal grid. I think to produce an image, you need to use ImageViews, or automatically in IJulia.