Dear user,
we have changed our website appearance and have created barrier-free access with techniques such as CSS. Unfortunately, your browser does not completely support these web standards, or the use of stylesheets has been switched off.

Go to Navigation - Skip Metanavigation |
Go to Content - Skip Navigation

Additional Navigation

zur deutschen Version Leibniz Universität Hannover - Startpage
Institute of Analysis
Leibniz Universität HannoverName

Mathematics & Physics > Analysis > Gruber > Et cetera > Visualizing Conformal Maps

Visualizing Conformal Maps

I learned the concept of domain colouring from Hans Lundmark's pages where you can find many relevant references. HL uses the Gimp together with his Scheme script driving Mark Probst's MathMap plugin. Unfortunately, MathMap doesn't seem to be available for Gimp 2.

So I cooked up my own plugin using Python. The advantage of this approach: There is no need to compile, and the plugin can do everything Python can do... e.g., use special function modules. The drawback: It is not compiled, meaning not quite as fast as a C plugin. But stay tuned for the Pyrex version!

The adventureous are welcome to download version 0.3 of the plugin. Just put it in ~user/.gimp-2.x/plug-ins/ and make it executable. Note that you need Gimp-Python for this plugin to work. You can find development versions as well as a README file at the git repo for conformal.


z w=z, showing the setup: argument gives the color, log2 of modulus gives the shade. Real and imaginary parts range from -2 to 2, the grid spacing is 0.5. Red is positive real and so on. The notation below follows the Python syntax suitable for the plugin.
zsqr w=z**2: Note the transformed grid and the double covering. zsqr+1 w=z**2+1: You can tell the two simple zeroes from the "colour whirl" spots.
sqrtz w=sqrt(z): The standard branch cut for the square root is the negative real axis. Identify the range of the argument from the colours. sqrtzcutpos w=sqrt(z): The square root with a different branch cut. Note the different range.
delta1 w=(1/(z-1j*eps) - 1/(z+1j*eps)) / (2j*pi): an approximation to the "complex delta distribution", eps=1.0 delta0.1 Complex delta, eps=0.1: check out the larger image to separate the poles.
delta0.01 Complex delta, eps=0.01: the poles almost on top of each other zsqrinv w=1/z**2: Compare to the complex delta. The argument is the same, but check out the different grids.
greens1D Greens function for the 1D Schrödinger operator/Laplacian (known explicitely): short range behaviour (r=1) greens1DlargeR long range behaviour (r=10). In both cases, note the branch cut indicating the spectrum.
greens2D 2D, short range: generated using scipy.special.kv() since the 2D Greens function cannot be expressed in elementary functions. greens2DlargeR 2D, long range
greens3D 3D, short range (known explicitely): Note the "softening" of the cut - the leading asymptotics in 1/r is independent of z in 3D. greens3DlargeR 3D, long range
greens1Ddelta-0.5 1D Schrödinger with a negative "delta-potential" (point perturbation): note the cut and the negative eigenvalue. Greens function evaluated for x=0, y=1 greens1Ddelta-0.5largeR long range (x=0, y=10)
greens1Ddelta-1 Decreasing the strength of the potential moves the eigenvalue closer to 0. greens1Ddelta-1largeR long range
greens1Ddelta-2 Very small potential: compare to the free Schrödinger greens1Ddelta-2largeR long range

Regarding the Greens functions (Schwartz kernel of the resolvent): One should look at a suitable operator norm of the resolvent, of course, in order to draw conclusions about the spectrum. This is true especially in nonhomogeneous situations, such as for the point perturbations.