-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Description
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
Metadata
Metadata
Assignees
Labels
No labels