Mandelbrot set: Difference between revisions

Content added Content deleted
Line 5,280: Line 5,280:


d, h = 800, 600 # pixel density (= image width) and image height
d, h = 800, 600 # pixel density (= image width) and image height
n, r = 200, 500 # number of iterations and escape radius (r > 2)
n, r = 100, 500 # number of iterations and escape radius (r > 2)


x = range(0, 2, length=d+1)
x = range(0, 2, length=d+1)
Line 5,289: Line 5,289:


Z, dZ = zero(C), zero(C)
Z, dZ = zero(C), zero(C)
T, D = zeros(size(C)), zeros(size(C))
T, S, D = zeros(size(C)), zeros(size(C)), zeros(size(C))


for k = 1:n
for k = 1:n
M = abs.(Z) .< r
M = abs.(Z) .< r
T[M], S[M] = T[M] .+ 1, S[M] + exp.(-abs.(Z[M]))
Z[M], dZ[M] = Z[M] .^ 2 + C[M], 2 * Z[M] .* dZ[M] .+ 1
Z[M], dZ[M] = Z[M] .^ 2 + C[M], 2 * Z[M] .* dZ[M] .+ 1
T[M] = T[M] .+ 1
end
end


heatmap(T .^ 0.1, c=:jet)
heatmap(T .^ 0.1, c=:jet)
savefig("Mandelbrot_set_1.png")
savefig("Mandelbrot_set_1.png")

heatmap(S .^ 0.1, c=:jet)
savefig("Mandelbrot_set_2.png")


N = abs.(Z) .> r # normalized iteration count
N = abs.(Z) .> r # normalized iteration count
Line 5,304: Line 5,307:


heatmap(T .^ 0.1, c=:jet)
heatmap(T .^ 0.1, c=:jet)
savefig("Mandelbrot_set_2.png")
savefig("Mandelbrot_set_3.png")


N = abs.(Z) .> 2 # exterior distance estimation
N = abs.(Z) .> 2 # exterior distance estimation
Line 5,310: Line 5,313:


heatmap(D .^ 0.1, c=:jet)
heatmap(D .^ 0.1, c=:jet)
savefig("Mandelbrot_set_3.png")</lang>
savefig("Mandelbrot_set_4.png")</lang>


A small change in the above code allows Mercator maps of the Mandelbrot set.
A small change in the code above creates Mercator maps of the Mandelbrot set.
<lang julia>using Plots
<lang julia>using Plots
gr(aspect_ratio=:equal, legend=false, dpi=250)
gr(aspect_ratio=:equal, legend=false, dpi=250)
Line 5,326: Line 5,329:


Z, dZ = zero(C), zero(C)
Z, dZ = zero(C), zero(C)
T, D = zeros(size(C)), zeros(size(C))
T, S, D = zeros(size(C)), zeros(size(C)), zeros(size(C))


for k = 1:n
for k = 1:n
M = abs.(Z) .< r
M = abs.(Z) .< r
T[M], S[M] = T[M] .+ 1, S[M] + exp.(-abs.(Z[M]))
Z[M], dZ[M] = Z[M] .^ 2 + C[M], 2 * Z[M] .* dZ[M] .+ 1
Z[M], dZ[M] = Z[M] .^ 2 + C[M], 2 * Z[M] .* dZ[M] .+ 1
T[M] = T[M] .+ 1
end
end


heatmap(-T' .^ 0.1, c=:nipy_spectral)
heatmap(-T' .^ 0.1, c=:nipy_spectral)
savefig("Mercator_map_1.png")
savefig("Mercator_map_1.png")

heatmap(-S' .^ 0.1, c=:nipy_spectral)
savefig("Mercator_map_2.png")


N = abs.(Z) .> r # normalized iteration count
N = abs.(Z) .> r # normalized iteration count
Line 5,341: Line 5,347:


heatmap(-T' .^ 0.1, c=:nipy_spectral)
heatmap(-T' .^ 0.1, c=:nipy_spectral)
savefig("Mercator_map_2.png")
savefig("Mercator_map_3.png")


N = abs.(Z) .> 2 # exterior distance estimation
N = abs.(Z) .> 2 # exterior distance estimation
Line 5,347: Line 5,353:


heatmap(D' .^ 0.1, c=:nipy_spectral)
heatmap(D' .^ 0.1, c=:nipy_spectral)
savefig("Mercator_map_3.png")</lang>
savefig("Mercator_map_4.png")</lang>


=={{header|Kotlin}}==
=={{header|Kotlin}}==