Complex Plot
A Visual Aid in Examining Analytic Functions
Edward C. Clarkson '00
Washington and Lee University
Figure 1: Image of unit disc under the Koenigs eigenfunction of f(z) = z/(2 – z4).
Introduction
Complex Plot is a cross-platform plotting application that produces images of complex-valued functions of a complex variable as well as several types of intertwining maps involving these functions. The program was written in C++ using the V GUI interface (see [2]), a cross-platform windowing interface library. V is designed so that the source code for a program using V can be compiled and run on any platform for which a C++ compiler and the V library exist. Currently such systems include SGI and HP Unix, NeXT, OS/2, Windows 3.1 and Windows 95; the only platform on which Cplot is currently compiled is Windows 95 (a Mac version, which does not use the V interface, has also been produced). Cplot, as a graphing tool, derives clear benefits from the graphical environment that V provides. Using a combination of hierarchical menus, dialog boxes and graphing windows, Cplot supplies an intuitive interface that lets even novice users produce polished, professional-looking output (see Fig 2).Motivation
The Complex Plot project arose from the labor-intensive nature of graphing functions—complex-valued functions of a complex variable in particular. In complex analysis, functions take complex numbers and inputs and produce complex numbers as outputs; thus, under the identification a + bi Û (a,b), they take ordered pairs to ordered pairs. Graphs of these functions, which are four-dimensional objects, are extremely difficult to represent clearly with a two- or three-dimensional plot. Instead, to visualize the action of complex-valued functions we take some predetermined domain (such as the right half of the complex plane or the unit circle) and plot the output of the function on a separate plane. In this way fundamental characteristics of these functions, such as whether a function maps its domain into itself or whether it is one-to-one, can easily be read from the plot. By noting where points on the boundary of the domain are mapped to, we can glean additional information about a function.
Although a stand-alone complex-valued function plotting program is a useful tool, the real force behind Complex Plot’s development came from the desire to easily sketch the images under what are known as intertwining maps of certain complex-valued functions. One of the intertwining maps is called the Koenigs eigenfunction; there are other varieties of such maps, but for simplicity we will discuss only the Koenigs case. As students of linear algebra well know, an eigenvector for a matrix A is a nonzero vector x satisfying the equation Ax = l x for some scalar l . Similarly, a Koenigs eigenfunction s satisfies an equation of the form As = l s where l is a complex scalar and A is a composition operator (instead of a matrix). One of the first distinctive features of the Complex Plot program was its ability to plot images of this type of eigenfunction. In the late 1880s, Gabriel Koenigs showed how to produce eigenfunctions through the process of iteration ([1]). Let j be a complex function taking the unit disc U (i.e., the set {a + bi: a2 + b2 < 1) into itself. The iterates of j are j , j ° j , j ° j ° j , etc. We will denote the n-th iterate of j as j [n] (e.g., j [2] = j ° j ). Koenigs proved that if j is a complex-differentiable function defined on U satisfying j (0) = 0 and |j ¢ (0)| < 1, then the sequence s n = j [n] / j ¢ (0)n converges on U to a function s satisfying s ° j = j ¢ (0) s . Letting l be j ¢ (0) and A be the operator of composition with j , we have As = l s so that s is indeed an eigenfunction.
To plot the image of U under a Koenigs function s , Cplot simply computes j [n](z) / j ¢ (0)n for given points z in the disc until n is large enough to make |s n(z) - s n-1(z)| is less than some predetermined error tolerance. Once the s n(z) value reaches this point, the computer takes s n(z) to be s (z). The process by which Cplot produces values of s produces extremely accurate results in test cases (in which precise values of s (z) are known in advance).
As previously stated, Koenigs eigenfunctions fall under the more general category of the intertwining maps. Given a function j defined as before, s is an intertwining map for j if it satisfies the equation s ° j = Y ° s , where Y is a function of the form (a + bz)/(c+dz) known as a linear fractional transformation. We see now directly that a Koenigs function is an example of an intertwining map with Y = l z. Intertwining maps have applications in several areas of mathematics. These functions are closely related to the work of Gaston Julia (who provided the name for the Julia sets) and to the area of complex dynamics in general. These functions also are of importance in the area of composition operators and specifically continuous linear operators in Hilbert spaces—the subject of the research of the author’s research director ([3], [4], [6], [7], [8], [9]).
It is clear now that the ability to plot the images of these functions is an important one, and computers are the best answer for the computation needed for these plots and their iterative processes. Still, Cplot would have never been needed had it not been for the deficiencies of mathematics software at the time when Complex Plot development began. Applications such as Waterloo’s Maple V and Wolfram’s Mathematica have extensive plot capabilities precisely because representing functions visually is an everyday task well suited to computers. This would seem to remove all need for an application like Cplot. However, as it turned out in their early versions neither Maple nor Mathematica’s complex mathematics support was particularly satisfying, particularly when worksheets in these programs were created to produce images of intertwining maps. Calculating just a single point with these programs took nearly a full minute; considering we plot ten thousand points or more at a time, this was obviously not acceptable.
History
The solution to Maple and Mathematica’s failings is what became Complex Plot. Development of what would become Cplot began during the summer of 1991 with a number of primitive Pascal programs written by David S. Bennett ’91 and Jennifer M. Carr ’93 ([5]). By the end of the summer, a collection of routines existed such that a user could plot the image of a function as well as any of the four of the intertwining maps already mentioned. Lamentably, these Pascal programs were not particularly independent; that is, to use the code effectively, the user could not modify plotting parameters after program launch. Instead, the program required that the user hard-code the desired function and plotting parameters into the existing source code. Not only that, but users were required to separate functions into their real and imaginary components before any computation, making the process even more laborious.
In 1993, Colin Wynne ’94 began work on a Unix program that expanded on the labor of Bennett and Carr. Wynne created an application that could handle nearly all normal functions, and the function could be entered in standard complex form. Wynne used a windowing library XFig to implement windows in his application. Unfortunately, to plot an image still required writing the function into the code and recompiling the program. In addition, the program supported plotting of only one of the four classes of intertwining maps (the Koenigs type).
In 1995, the first real version of Cplot came into existence. John Thrall ’98 almost totally redesigned the Complex Plot software from the ground up. Thrall chose a cross-platform windowing library known as V to implement what was to be a fully self-contained interface. Development of this version of Cplot began on an H-P Unix machine; however, Cplot’s code was portable because of V and a Windows 95 version was developed as well. Thrall’s major improvement over previous code was his integrated function parser. His routines allowed a user to enter and manipulate functions and their images without any modification to the source code. At this point, Cplot became a real software application rather than a simple collection of specialized C++ routines. Thrall incorporated these improvements over the course of versions 1.0 to 2.0. However, a number of deficiencies still existed in this vastly improved piece of software; Cplot still handled only the Koenigs class of intertwining maps, and there were a number of I/O issues (most notably problematic printing in the Windows version).
Cplot version 3.0 was completed during the summer of 1998 by the author, when he improved the program where development was lacking. Many of the changes made to Cplot were cosmetic in nature—a status bar bug was fixed, the menus reorganized into a compact, logical format, and in general the user interface was modified to provide an easier, more intuitive experience. In addition, functionality was added with the ability to plot images under all four types of intertwining maps, and a "Save Options" feature was implemented that made individual customization far easier than ever before. With these improvements, the Complex Plot software package has become a plotting tool truly useful to the mathematician interested in complex analysis.Relevance
With the exponential growth of computing speeds and power in the 1990s, it is entirely reasonable to wonder if Cplot’s long development cycle has also brought about its obsolescence. To test this potential problem, we revisit one of the mathematical applications that were originally lacking—Waterloo Maple V. Presently, there are no built-in Maple routines to plot images under any type of intertwining map, nor are there any worksheets or packages available for these maps known to the author. In addition, Maple’s built-in complex plot routine only forms images of rectangular regions, while Cplot provides images of annular regions as well. Using the release 4 version of Maple, Cplot’s function imaging ability was tested against Maple’s built-in conformal plot routine; the author also wrote a Maple worksheet to plot the image of the unit disc under a Koenigs eigenfunction. The function f(z) = 1 + z + 1/(z +1) was used for the image plot, g(z) = (¼)z2 + (¾)z was used to test the Koenigs image with the same sampling parameters and identical computers. After testing, the results were conclusive—Cplot is the best plotting solution readily available to the mathematician who deals with functions of a complex variable. In Cplot, plotting the image under f took one second (Fig. 4), while Maple’s conformal plot command took 5 seconds. When plotting the image the Koenigs eigenfunction of g (Fig. 5), Cplot displayed the plot after 4 seconds. Maple took 5 minutes, 41 seconds to complete its calculations and display a plot. Demonstrating a 500% speed increase plotting the image of f and an even larger superiority plotting under the Koenigs eigenfunction of g, clearly Cplot has a substantial edge over Maple, and is still viable even among commercial mathematical software.
Acknowledgements
The author would like to thank Professor Paul Bourdon for his direction and instruction throughout the author’s summer research term. The author is also indebted to the National Science Foundation for its support of Dr. Bourdon’s research, and therefore the author’s, through its REU program.
References
[1] G. Koenigs, Recherches sur les intégrales de certaines équationes functionelles, Annales Ecole Normale Superior, 1(3) (1884), Supplément, 3-41.
[2] V GUI interface library, www.objectcentral.com.
[3] P.S. Bourdon and J.H. Shapiro, Mean growth of Koenigs eigenfunctions, Journal Amer. Math. Soc., 10 (1997), 299-325.
[4] P.S. Bourdon, Convergence of the Koenigs Sequence, Contemporary Math. 213 (1997), 1-10.
[5] D. S. Bennett and J. M. Carr, Researching Linear Fractional Models, Washington and Lee Journal of Science 2, (1992), 20-22.
[6] P.S. Bourdon and J.H. Shapiro, Riesz composition operators, Pacific J. of Mathematics 181 (1997), 231-246.
[7] P.S. Bourdon and J.H. Shapiro, Cyclic Phenomena for Composition Operators, Memoirs of the Amer. Math. Soc., Number 596 (1997).
[8] P.S. Bourdon, Essential angular derivatives and maximum growth of Koenigs eigenfunctions, Journal of Functional Analysis, to appear.
[9] P.S. Bourdon, M. Appel and J. Thrall, Norms of composition operators on the Hardy space, Experimental Mathematics 5 (1996), 111-117.