Imaginary numbers () are used to relate Cartesian coordinates to polar coordinates as shown in the figure below. The argument is the angle from the real axis along the unit circle, and can be expressed as two terms: a real and an imaginary, giving the Cartesian (x,y) position.
(If you want to expand beyond the unit circle just multiply by the desired radius: )
From the Euler relation we know that , so it’s really a matter of substitution:
So is a real number!
But wait a second, this isn’t the whole answer. We can add or subtract from any angle and wind up in the same place on the circle. So , where is any integer. So we end up with a set of values:
which are all real!
The curve above goes through the set of values for , where is an integer.
But 0.20788… will be looked at as the primary value for now since it is the result when , and having one value keeps things simple.
So what happens when we repeat this exponentiation?
First, this can be written in a simpler way:
This operation is called “tetration” or “power tower”.
You start from the top and work your way down. So
Now use the Euler relation again (ignoring terms in the exponential):
So the result is complex:
We can keep going using results from the last iteration:
Eventually you find that with as increases, the results start to converge on one number. This implies there’s a value for . After plugging and chugging we can eventually conclude that:
Convergence can be seen in both the real and imaginary components, around if we require the difference between iterations to be less than 0.1%. (See figures below).
Each result has a different radius associated with it, since the imaginary component of the previous result puts a real term in the exponential of the next. This real term can be expressed as a factor :
The radius can be found by multiplying the result by its complex conjugate and then find the square root (i.e. the Pythagorean theorem).
We can then plot radius of as a function of (see plot below).
The python code for making these plots is:
import os import sys import math import numpy import pylab REAL =  IMAG =  RADII =  ITERA =  pp = 1j for n in range(100): ppL = pp #save previous value for cut off pp = (1j)**pp #interate power tower RA = 0.001 #ratio for cut off if (abs(pp.real - ppL.real)/(ppL.real + 0.00001) < RA) and (abs(pp.imag - ppL.imag)/(ppL.imag + 0.00001) < RA): #establish a cut off print n print pp break else: print numpy.sqrt(pp*pp.conjugate()) #radius REAL.append(pp.real) #save real component IMAG.append(pp.imag) #save imaginary component RADII.append(numpy.sqrt(pp*pp.conjugate())) #save radius ITERA.append(n+2) #save iteration "m" RADII = +RADII #add in the initial value for the plot ITERA = +ITERA REAL = +REAL IMAG = +IMAG pylab.figure(1) pylab.xlabel("m") pylab.ylabel("radius") pylab.plot(ITERA,RADII,'k') pylab.savefig('Radfig.png') # pylab.show() pylab.figure(2) pylab.xlabel("m") pylab.ylabel("imaginary component") pylab.plot(ITERA,IMAG,'k') pylab.savefig('Imfig.png') pylab.figure(3) pylab.xlabel("m") pylab.ylabel("real component") pylab.plot(ITERA,REAL,'k') pylab.savefig('Refig.png')