Mandelbrot set: Difference between revisions
Content added Content deleted
(→Normalized Counting, Distance Estimation, Mercator Maps and Perturbation Theory: Section final revised.) |
(→Normalized Counting, Distance Estimation, Mercator Maps and Perturbation Theory: Finally, the rebasing can be calculated faster (about 7 times faster).) |
||
Line 6,692:
setrounding(BigFloat, RoundNearest) # set rounding mode (default)
d, h =
n, r = 60000, 100000 # number of iterations and escape radius (r > 2)
Line 6,717:
C = (.- 4.0) .* exp.((A' .+ B .* im) .* im)
Z, dZ, E = zero(C), zero(C), zero(C)
D, I, J = zeros(Float64, size(C)), ones(Int64, size(C)), ones(Int64, size(C))
iteration(
for
Z[M], dZ[M] = S[I[M]] .+ E[M], 2 .* Z[M] .* dZ[M] .+ 1
▲ if abs2(z) < abs2(r)
R
▲ epsilon = iteration(S[index], epsilon, delta)
end
Line 6,745 ⟶ 6,736:
savefig("Mercator_Mandelbrot_rebase_map.png")</lang>
The rebasing condition abs(z) < abs(epsilon) does not define a circular area but a half-plane. If you insert a factor, the condition abs(z) < gamma * abs(epsilon) for 0 < gamma < 1 defines a circular area containing the origin. For gamma = 1/2 and below, the circle lies entirely within a bailout circle around the origin with escape radius r > 2. For example, if the reference point is at S(6, 0), the equation abs(z) = abs(epsilon) defines the set of all points that are equidistant from O(0, 0) and S(6, 0). This is exactly the perpendicular bisector x = 3. Considering instead the equation abs(z) = 1/2 * abs(epsilon), one finds all points half as far from O(0, 0) as from S(6, 0). All these points lie on a circle, which has center M(-2, 0) and radius R = 4. This circle lies completely in a bailout circle around the origin O(0, 0) with escape radius r = 6. If you choose a factor gamma > 1, you get corresponding circles containing the reference point S. However, the condition abs(z) < abs(epsilon) is optimal because it keeps the differences epsilon to the reference sequence as small as possible. Rebasing occurs if and only if the distance abs(epsilon) to the reference sequence becomes smaller as a result. You can only rebase to the beginning of the reference sequence. If you want to rebase to the reference point S[m], the
<lang julia>using Plots
gr(aspect_ratio=:equal, axis=true, ticks=true, legend=false, dpi=200)
|