Komplexe Funktionen
Konstruktion der Bilder
Funktion
Gegeben ist eine Funktion p: C → C, die
mittels Farb-Kodierung der Funktionswerte dargestellt werden soll.
Die Bilder auf dieser Seite zeigen komplexe rationale Polynome mit
paarweise verschiedenen einfachen Nullstellen und Polen, die im Ursprung
und auf zwei dazu konzentrischen Kreisen liegen.
Darstellungsfenster
Ein komplexes Definitions-Intervall (Rechteck) wird mit einer
affin-linearen Transformation dem Darstellungsfenster zugeordnet.
Das komplexe Rechteck wird in kleine Zellen
aufgeteilt, jeder Zelle eine komplexe Zahl z zugeordnet
(z.B. die Position des Zellen-Mittelpunktes) und die
Funktion p an dieser Stelle ausgewertet.
Der Funktionswert p(z) wird in eine
Farbe umgerechnet, mit der die Zelle im Fenster eingefärbt wird.
Wer mag, kann sich eine solche 'Zelle' als 'Pixel' vorstellen;
das Zellen-Konzept erlaubt jedoch beliebige Skalierung und beliebige
Zell-Formen. Beide haben Einfluß auf das Aussehen des Bildes.
Farben
Farben werden auf dem Computer im RGB-System als Triplet (r,g,b) von
Helligkeitswerten im Intervall [0,1] dargestellt. Dabei bezeichnet 'r' die
Intensität des roten, 'g' die des grünen und 'b' die des blauen
Farbanteils. Durch die additive Farbmischung, die am Monitor gegeben ist,
entsteht aus rot und grün die Farbe gelb ('y'=yellow), aus grün und blau
wird türkis ('c'=cyan), und blau und rot wird gemischt zu lila
('m'=magenta). Diese (additiven) Mischfarben werden für den Drucker zu
Grundfarben, da dieser eine subtraktive Farbmischung verwendet: die Farbe
gelb sieht auf dem Papier gelb aus, da sie den Blau-Anteil des auftreffenden
Lichtes absorbiert und nur rot und grün reflektiert.
Der Monitor hingegen ist eine aktive Lichtquelle: wenn er an einem Punkt
(oder an zwei Punkten, die so dicht beieinander stehen, daß das Auge sie
für einen Punkt hält) rot und grün leuchtet, sieht unser Auge gelb.
Der Drucker bekommt zusätzlich eine vierte 'Farbe': schwarz ('k'=black)
ist aus den Grundfarben CMY nicht herzustellen, das wird eher braun.
Transformation Funktionswert→Farbe
Da Farben als Triplet (r,g,b) von Helligkeitswerten im Intervall
[0,1] dargestellt werden, muß der Funktionswert (eine komplexe Zahl)
in ein solches Triplet transformiert werden.
Eine lineare Transformation kommt dafür oft nicht in Frage.
Besonders wenn die Funktion Pole besitzt,
bekommt man damit keine gleichmäßige Verteilung der zur Verfügung
stehenden Farbwerte auf das Intervall der Funktionswerte hin.
Zur Verbesserung des Farbkontrastes kann eine periodische Transformation
sehr hilfreich sein. Um spezielle Punkte hervorzuheben, sollte an diesen
Stellen ein starker Farbwechsel erzeugt werden. Das kann sowohl durch
eine stark veränderte Helligkeit als auch durch eine massive Änderung
des Farbtons (z.B. Übergang zur Komplementärfarbe) realisiert werden.
Die Werte der Beispiel-Funktionen wurden wie folgt transformiert:
- f entspricht dem Real- oder Imaginärteil:
( cos ( ln( |f(p(z))|*0.0001 ) * 90.0 ) + 1.0 ) * 0.5
- Betrag:
( cos ( ln( ||p(z)||*0.0001 ) * 90.0 ) + 1.0 ) * 0.5
- f entspricht dem Polar-Winkel in [0°,360°):
( cos ( f(p(z))*4.0 ) + 1.0 ) * 0.5
Die beiden letzten Operationen (x+1.0)*0.5 dienen dazu,
den Wertebereich des Cosinus [-1,1] in das Farbintervall [0,1]
abzubilden. Der Cosinus sorgt für einen sanften Farbwechsel und
bildet unbeschränkte Zahlen x in ein bekanntes beschränktes Intervall
ab. Im Fall des Polarwinkels sorgt der Faktor '4.0' für ein bunteres
Bild; für mathematische Zwecke sollte er wohl besser fehlen.
Er bewirkt, daß jeder Werte-Quadrant in einem kompletten Farbzyklus
dargestellt wird.
Bei der Darstellung des Betrages sollte unbedingt darauf geachtet
werden, daß keine Nullstelle von p abgebildet werden soll:
ln(0.0) ist nicht definiert und führt zu einem Fehler-Abbruch.
Der Faktor 0.0001 ist hier gewählt, um gemeinsam mit dem ln und dem
Faktor 90.0 eine mäßige Anzahl von Farb-Perioden zu generieren.
Analog zur Darstellung des Betrages sollte man bei Real- und
Imaginärteil keine Nullstelle abzubilden versuchen. Wieder sind die
Faktoren aus rein ästhetischen Gründen gewählt. Die Betragsbildung
ist wegen des Logarithmus notwendig.
Der Logarithmus hat hier zweierlei positive Effekte:
zum einen reduziert er die sehr steilen Flanken der Pole der
dargestellten rationalen Polynome auf gemäßigte Spitzen, zum anderen
hebt er Nullstellen hervor.
Spektrum
Um aus einem Funktionswert p(z) eine Farbe zum Füllen der Zelle
zu gewinnen, kann z.B. eine Komponente des Funktionswertes in ein
Farb-Triplet gewandelt werden (die Bilder der Seite index.shtml wurden
so erzeugt), oder man wandelt verschiedene Komponenten in jeweils
einen Grundfarben-Wert (so entstanden die Bilder dieser Seite).
Im ersten Fall benötigt man die Definition eines Spektrums, das beim
Durchlaufen des Intervalls [0,1] angenommen wird (hier: von blau nach
gelb, was komplementär zu blau ist).
Im zweiten Fall werden drei (nicht unbedingt) verschiedene Funktionen
verwendet, von denen jede einen der Grundfarben-Werte liefert. Als
'Hilfskonstruktion' für den Fall, daß nur zwei Komponenten der
Funktionswerte verwendet werden sollen, ist die Null-Funktion eine
sinnvolle Ergänzung. Ebenso ist es möglich, eine Komponente für zwei
Farben einzusetzen. Von einer 'Eins-Funktion' ist eher abzuraten: die
resultierenden Farben dürften schauerlich aussehen.
Durch geeignete Definition des Spektrums (Intensitäts-Peaks) kann
man auch Niveaulinien erzeugen. Diese Peaks sollten aber nicht zu eng
sein: wegen des Zellen-Konzepts würden steile Werte-Flanken
möglicherweise nicht erkannt werden.
Transformation der Farbe
Zu guter letzt kann man auch die Verteilung des gewählten Spektrums
noch modifizieren. Da die Farben als Werte im Intervall [0,1]
geliefert werden, kann ihre Verteilung durch Transformationen
[0,1]→[0,1] verzerrt werden, z.B. mittels Quadrat- oder
Wurzel-Bildung (Quadrat hebt die hohen Werte hervor und schwächt
niedrige ab; Wurzel hellt auf und betont niedrige Werte)
Nach der vielen Theorie noch einige Resultate.
Wie auch schon auf der Index-Seite bewirkt ein Klicken auf ein
kleines Bild in der Tabelle die Anzeige des größeren Originals (~1MB).
Alle Bilder hier zeigen ein Polynom der Art
p(z)=Π{i}(z-zi)/Π{j}(z-zj) mit 5 bzw. 6
Nullstellen bzw. Polen konzentrisch um den Ursprung gelegen.
Die Bilder mit den außen liegenden Polen geraten heller bzw.
bunter, denn durch diese Pole werden Realteil, Imaginärteil und
Betrag der Punkte des Umfelds größer als im Fall der innen liegenden
Pole. Die Bilder mit nur einer Werte-Komponente (links und rechts)
sind mit dem Blau-Gelb-Spektrum erzeugt, die Bilder in der Mitte
verwenden für jede Komponente eine eigene Grundfarbe. Dabei sind
die Zwei-Komponenten-Bilder auch nur zweifarbig erzeugt.
Durch die additive Farbmischung des Monitors werden Regionen mit
hellem blau und grün als cyan (türkis) dargestellt; blau+rot ergibt
magenta (lila) und rot+grün ist gelb. Die letzten drei Buchstaben
des Bild-Dateinamens (nicht 'png': das ist die 'Erweiterung') sagen
aus, welche Bild-Komponente in welcher Farbe gezeichnet wurde, und
zwar in der Reihenfolge Rot, Grün, Blau: 'r' für den Realteil, 'i'
für den Imaginärteil, 'a' für den Betrag, 'p' für den Polarwinkel
und 'z' für Zero (='diese Farbe wurde nicht verwendet').
Bedenken Sie bei der Interpretation der Bilder bitte die oben
erläuterten Transformationen der Original-Komponenten. Ansonsten
könnte es verwundern, daß Nullstellen einen so hohen Betrag haben;
es wird aber nicht der Betrag abs(p(z)) der Nullstellen abgebildet,
sondern cos(90*ln(abs(p(z))+0.0001)).
Bilder von zwei Komponenten
5 Pole außen |
|
Realteil |
Real- & Imaginärteil |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
5 Pole innen |
|
Realteil |
Real- & Imaginärteil |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
5 Pole außen |
|
Betrag |
Betrag & Winkel |
Winkel |
|
|
|
|
|
|
|
|
|
|
5 Pole innen |
|
Betrag |
Betrag & Winkel |
Winkel |
|
|
|
|
|
|
|
|
|
Bilder von drei Komponenten
Zu Real- und Imaginärteil wird Betrag bzw. Winkel als dritte
Komponente hinzugenommen. Es mag dabei überraschen, daß dies
tatsächlich sinnvolle Ergänzungen sind.
5 Pole außen |
|
Realteil |
Real- & Imaginärteil & Betrag |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
5 Pole innen |
|
Realteil |
Real- & Imaginärteil & Betrag |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
5 Pole außen |
|
Realteil |
Real- & Imaginärteil & Winkel |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
5 Pole innen |
|
Realteil |
Real- & Imaginärteil & Winkel |
Imaginärteil |
|
|
|
|
|
|
|
|
|
|
Farbenkreis
Eine weitere Idee, die komplexen Funktionswerte in ihrer Polardarstellung
zu präsentieren, verwendet das HLS-Farbsystem: Hue (Farbe),
Lightness (Helligkeit) und Saturation (Sättigung). Dieses
System stellt die Farben
auf einem Kreis dar: bei 0° liegt rot, und im Abstand von 60° folgen gelb,
grün, cyan, blau, magenta und wieder rot. Andere Winkel sind den
entsprechenden Mischfarben aus den benachbarten Grundfarben zugeordnet.
Damit eignet sich der Farbenkreis hervorragend zur Darstellung eines
Polar-Winkels. Die zweite Komponente -der Betrag- kann mit der Helligkeit
visualisiert werden: man multipliziert die drei Farbwerte RGB, die auf dem
Farbenkreis zu dem Winkel gehören, mit einem
Helligkeitsfaktor in [0,1], der aus dem Betrag des Funktionswertes
berechnet wird, und erhält ein Bild, das beide Komponenten gemeinsam zeigt.
Die folgende Tabelle zeigt eine Reihe von solchen Betragsfiltern und wie sie
auf die originale Farbkreis-Darstellung der Polarwinkel wirken.
Die Filter unterscheiden sich nur dadurch, daß sie den aus der
Betragsfunktion gewonnenen Wert (in [0,1]) verschieden modifizieren:
Wurzel ziehen, quadrieren, von 1.0 abziehen usw.. Die erste Spalte der
Tabelle sagt, wie der Betragswert x verändert wird.
|
|
5 Pole außen |
|
5 Pole innen |
|
|
|
Filter |
Winkel & Filter |
|
Filter |
Winkel & Filter |
|
1.0 |
|
|
|
|
|
|
|
sqrt(x) |
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
x² |
|
|
|
|
|
|
|
1-sqrt(1-x) |
|
|
|
|
|
|
|
1-(1-x)² |
|
|
|
|
|
|
|
sqrt(1-x) |
|
|
|
|
|
|
|
1-x |
|
|
|
|
|
|
|
(1-x)² |
|
|
|
|
|
|
Farbenkreis mit Betrags-Niveaulinien
Die obigen Bilder stellen den Betrag einer Bild-Zahl mit der Helligkeit der
Urbild-Zelle dar. Da der Mensch nur circa 70 Helligkeitstufen einer Farbe
unterscheiden kann, sind die Kontrast-Möglichkeiten begrenzt. Durch die
Verwendung von Niveaulinien erhält man zusätzliche Präsentationsmöglichkeiten.
Diese Linien erreicht man durch eine geeignete Wahl des Helligkeitsfilters.
Es folgen einige Aufnahmen der Betragsfilter, eingerahmt von den Resultaten
der Anwendung des jeweils ersten Filters auf das Bild der Polarwinkel.
Winkel & Filter (5 Pole außen) |
|
Filter (5 Pole außen) |
|
Winkel & Filter (5 Pole innen) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Die obigen Bilder zeigen Niveaulinien des Betrages der Bild-Zahlen.
Da Linien gleichen Betrages automatisch im Winkel variieren müssen,
dieser aber mit der Farbe dargestellt ist, müssen diese Niveaulinien
bunt sein und das Spektrum durchlaufen. Wenn man einer dieser Linien
folgt, heißt das, daß die Bilder dieser Zellen auf einem Kreis um den
Ursprung liegen und daß man diesen -pro Durchlauf durch das Spektrum-
einmal umrundet. In der Nähe einer Nullstelle geschieht das (in den
vorliegenden Bildern) nur einmal, und der Umlauf im Bild ist genauso
orientiert wie der im Urbild; dies sollte kein Verständnis-Problem
hervorrufen. Bei einem engen Urbild-Umlauf um einen einfachen Pol
hingegen umrunden die Bild-Punkte den Ursprung in riesigem Abstand,
und das in entgegengesetztem Umlaufsinn; das ist schon schwieriger
nachzuvollziehen. Wirklich kompliziert wird es auf den
Betrags-Niveaus zwischen den Pol- und Nullstellen-Kreisen: die Punkte
dort werden auf einen vierfach den Ursprung umlaufenden Kreis
abgebildet, was man an dem viermal durchlaufenen Spektrum erkennt.
Farbenkreis mit Winkel- und Betrags-Niveaulinien
In den folgenden Bildern wird der Polar-Winkel des Bildes jedes Punktes
mit der Farbe der Urbild-Zelle dargestellt (Farbenkreis).
Die Helligkeit der Zellfarbe wird mit einem Filter bestimmt, dessen
Wert in [0,1] liegt und auf die drei Farbkomponenten
(ebenfalls in [0,1]) multipliziert wird.
Der Betrag ist nur einseitig beschränkt (nach unten durch die
Null), deshalb ist hier eine Überlegung notwendig. Für die vorliegenden
Funktionen p (rationale Polynome mit 11 Nullstellen und Polen)
hat sich eine logarithmische Transformation mit Abschneide-Beschränkung
bewährt: f(z)=(min(max(-10,ln(p(z).r+exp(-10))),12)+10)/22.
Andere Funktionen können andere Transformationen verlangen, um
eine brauchbare Helligkeitsverteilung zu erzeugen!
Der Winkel wird einfach linear transformiert mittels
g(z)=p(z).α/360° (α gemessen in Grad).
f und g sind somit zwei Funktionen, die eine
komplexe Zahl z auf das Rechteck [0,1]² abbilden.
Durch geeignete Kombination dieser beiden Werte lassen sich
Polar-Niveaus im Bild von p darstellen. Zur Erzeugung von
Niveaus werden f und g zunächst mit einer Schwingung
versehen. Dabei haben sich -für die vorliegenden Funktionen- die
Frequenzen 12 (für α) und 22 (für r) bewährt:
f'(z)=(cos(22*f(z)*360°)+1)/2
(f(z) ∈ [0,1))
bzw.
g'(z)=(cos(12*g(z)*360°)+1)/2
(g(z) ∈ [0,1)).
Der α-Faktor hat Maxima bei α=j*30°, also -auf den Farbenkreis
bezogen- insbesondere bei den Grund- und Standard-Mischfarben.
Die Transformation '(...)+1/2' sorgt dafür, daß das Resultat wieder
in [0,1] liegt. Dies wäre z.B. auch durch 'abs(...)' oder
'(...)²' erreichbar; beide verdoppeln die Frequenz, erzeugen
also doppelt so viele Linien wie die erste Transformation.
Um die Linien zu verschärfen, bieten sich weitere
Transformationen an: 'x²' oder 'sqrt(x)' können auch mehrfach
angewendet werden. 'x²' erzeugt dabei helle Linien mit steileren
Flanken in dunklen Flächen, während 'sqrt(x)' dunkle Linien auf
hellem Grund liefert. Die Transformation '1-x' kehrt die Begriffe
'hell' und 'dunkel' um. Durch die Kombination dieser Transformationen
lassen sich vielfältige Effekte erzielen.
Zum Schluß werden die beiden Filter-Werte für r und
α zu einem Wert kombiniert. Durch Multiplikation f(z)*g(z)
erreicht man, daß Minima jeder der beiden Komponenten als
Gesamt-Minimum dargestellt werden; dadurch entsteht ein relativ klares
Gitter. Addiert man stattdessen die beiden Filterwerte zu
(f(z)+g(z))/2, so werden nur gemeinsame Minima als Minimum
deutlich; diese Punkte sind Knoten des Gitters.
Als 'exotische Spielerei' könnte man die Subtraktion
(f(z)-g(z)+1)/2 bezeichnen, für die es am Ende ebenfalls
einige Beispiele gibt.
Multiplikation der Filter-Terme |
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Addition der Filter-Terme |
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Subtraktion der Filter-Terme |
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Winkel & Betrag (5 Pole außen) |
|
|
|
|
|
|
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
Inverse Funktion
In allen bisherigen Bildern sind die Funktionswerte farbig kodiert
und mit Niveaulinien versehen. Genauso interessant wie die Frage
nach gleichen Funktionswerten (bzw. gleichen Komponenten) im Bild
ist aber die Frage, wohin die Urbild-Niveaus abgebildet werden.
Um dies zu zeigen, müßte die inverse Funktion bekannt sein und
dargestellt werden.
Da die originale Beispiel-Funktion nicht injektiv ist -man erkennt
das zum Beispiel am mehrfachen Umlauf um den Bild-Ursprung, während
man nur einmal den Urbild-Ursprung umrundet-, gibt es zu dieser
Funktion keine globale Umkehrfunktion. Dennoch ist im folgenden
versucht worden, eine Darstellung der existierenden lokalen Umkehrung
zu gewinnen: die Position jeder Bild-Zelle entspricht jetzt nicht
mehr den Urbild-Koordinaten, sondern denen des Bildpunktes. Die
Urbild-Zellen werden zeilenweise von unten nach oben und von links
nach rechts bearbeitet und dargestellt. Wegen dieser Reihenfolge
überdecken später bearbeitete Zellen mit ihren Bildern die früher
bearbeiteten, und es gibt keinen Zusammenhang mehr zwischen den
Bildern von im Urbild benachbarten Zellen. Während des Bildaufbaus
kann man die Entstehung der 'Blätter' beobachten, die übereinander
liegen. Danach ist noch schwach das eigentlich gesuchte Ergebnis
zu erahnen: das Bild eines Teiles des Urbild-Koordinaten-Gitters.
Hier wurde auf die Variante 'Pole außen' verzichtet, da sich deren
Zell-Bilder in mehreren Schichten um den Ursprung versammeln.
Winkel & Betrag (5 Pole innen) |
|
|
|
|
|
|
|
Doppelte Nullstelle
In den folgenden Bildern wurde die zentrale Nullstelle verdoppelt.
Woran ist das zu erkennen?
Winkel & Betrag (5 Pole innen) |
Multiplikation der Filter-Terme |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Addition der Filter-Terme |
|
|
|
|
|
|
|
|
|
|
|
Subtraktion der Filter-Terme |
|
|
|
|
|
|
|
|
|
|
Copyright © Klaus.Bernt@math.uni-augsburg.de
Kopieren, Speichern oder sonstige Verwendung nur nach vorheriger
schriftlicher Genehmigung durch den Autor!