Open AshtonSBradley opened 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
PR #5 fixes the MethodError for the conformal grid. I think to produce an image, you need to use ImageViews, or automatically in IJulia.
ImageViews
IJulia
does not error, but neither does it produce a figure. Similarly for
The final example hits a MethodError: