## Fourier transform of the Mandelbrot set

I wonder what the Fourier transform of the Mandelbrot set looks like? More specifically, the 2D Fourier transform of the function f(x,y) = {0 if x+iy is in M, 1 otherwise}. This has infinitely fine features, so the Fourier transform will extend out infinitely far from the origin. It's aperiodic, so the Fourier transform will be non-discrete.

The result will be a complex-valued function of complex numbers (since each point in the frequency domain has a phase and amplitude). That raises the question of its analytical properties - is it analytic everywhere, in some places or nowhere? (Probably nowhere).

Other interesting Mandelbrot-set related functions that could also be Fourier transformed:
$M_n(x,y)$ = the nth iterate of the Mandelbrot equation ($\displaystyle f = |e^{-\lim_{n \to \infty}\frac{1}{n}M_n}|$).
$D(x,y)$ = distance between x+iy and the closest point in the Mandelbrot set. Phase could also encode direction.
$P(x,y)$ = the potential field around an electrically charged Mandelbrot set.

### 4 Responses to “Fourier transform of the Mandelbrot set”

1. Andrew says:

I, too, have wondered what happens when a Fourier transform is taken of the Mandelbrot set. Rather than 2-dimensional image I have used a 1-dimensional line and generated audio. You can find the result at http://soundcloud.com/anythingkeyboard/inverse-fourier-transform-of

Hopefully you get this

2. Andrew says:

Interesting! How did you generate this? The part of the Mandelbrot set that intersects the real axis is just the interval [-2,0.25] i.e. just a rectangle function so it's Fourier transform is just a sinc function. So you must be doing something more complicated than that...

3. Andrew says:

This is in the region [-1.5:0.5]. X axis resolution is 1/1000 and Y axis resolution is 1/100000. The number of iterations performed was 500.

I generated a line that meets the boundary between infinity and not-infinity. this line gave me the upper half of the Mandelbrot. Using the Inverse Fast Fourier Transform, ifft(), Hanning window, resulted in what you can hear. It is interesting to note the almost voice like quality coming through, although I am sure this is more from artefacts in aliasing.

This was generated using MATLAB code attached below. The only step missing from this is the ifft().

clear

res = 100000; %Smallest time resolution Larger = greater resolution

startt = -1.5; %Time start

endt = 0.5; %Time end

quant = 0.001;% Smallest y axis quantisation smaller = greater resolution

xindex = 1;% Index for x array

z = 0; % Make sure z is defined before loop

xsize = round((endt-startt)*res); %preset the size of x for speed

x = zeros(xsize,1)'; %Fill with zero

pl = 1; %Variable used for plotting graph at defined times

for t = res*startt:res*endt %for every "sample"

m = 0; %imaginary coefficient= 0

z = 0; %Reset complex number z

while isfinite(z) %Loop until z is infinite

z = 0; %Make sure complex number z is 0+0i

c = t/res + m*1i; %Co-ordinates. Real are x axis imag are y axis

n = 1; %This will be counter

while n < 500 %Loop n times

z = z^2+c; %New complex number based on co-ordinates and old number

n = n+1; %Increment counter

if isinf(z) %Break this loop if it reaches infinity

break

end

end

m = m+quant; %Increase the imaginary co-efficient by quant

end

x(xindex) = m; %Preparing location to store

xindex = xindex+1; %Store value of m, the complex part

pl = pl+1; %Counter for plotting graph

if pl == 100 %Every 20 cycles

plot(x(1:xindex-1))

pause(0.01) %Let graph plot before moving on

pl = 1; %Reset the variable

end

end %Lather, rinse, repeat

4. Andrew says:

My bad, the range is actually [-1.5 0.248] when I had cropped it