Computers and Mathematics

Enhanced Domain Coloring

When using the third dimension for the modulus in complex function plots,

while preserving the sign of the real part of the result, the plane for Im(z)=0 resembles

the traditional real 2D graph:

The complex identity function

This picture is generated with Mayavi2 with the following python code:

from numpy import *
from enthought.mayavi import mlab

def complex_plot(function,
                 maxval=9,
                 xbounds=(-3.0,3.0),
                 ybounds=(-3.0,3.0),
                 stepsize=0.01,
                 text="",
                 textwidth=0.1,
                 unitcylrange=(-4,4),
                 zmax=9,
                 zmin=-9,
                 legend=True,
                 signed=True):
    try:
        engine = mayavi.engine
    except NameError:
        from enthought.mayavi.api import Engine
        engine = Engine()
        engine.start()

    f=mlab.figure(fgcolor=(0, 0, 0), bgcolor=(1, 1, 1), size=(500,500))
    x,y = mgrid[xbounds[0]:xbounds[1]:stepsize, ybounds[0]:ybounds[1]:stepsize]
    if signed:
        z = maximum(minimum(abs(function(x+y*1j))*sign(real(function(x+y*1j))), zmax), zmin)
    else:
        z = maximum(minimum(abs(function(x+y*1j)), zmax), zmin)
    s = angle(function(x+y*1j))
    m=mlab.mesh(x,y,z, scalars=s)
    from enthought.mayavi.modules.axes import Axes
    axes = Axes()
    engine.add_filter(axes, m.module_manager)

    mlab.text(0, 0, text, width=textwidth)
    phi, v=mgrid[0.0:2.01*pi:0.1, unitcylrange[0]:unitcylrange[1]:0.1]
    mlab.mesh(cos(phi),sin(phi),v, color=(1,1,1), opacity=0.5)
    if legend:
        mlab.colorbar(title="phase", orientation='vertical')

complex_plot(lambda z: z, text="f(z)=z", zmin=-5, zmax=5, unitcylrange=(-1,1))

The complex tangent function turned out to be a surprise:

complex_plot(lambda z: tan(z), text="f(z) = tan(z)", xbounds=(-2*pi, 2*pi), ybounds=(-2*pi, 2*pi), textwidth=0.5)

No Comment

No comments yet

Leave a reply