Upload
lamthuy
View
215
Download
2
Embed Size (px)
Citation preview
Kapitel 4Komplexe Zahlen
Der Umgang mit komplexen Zahlen erfordert in MatLab keine speziellen Darstellungsfor-men, da MatLab routinemaßig alle Variablen als Matrizen mit komplexen Elementen be-trachtet. So liefert MatLb auf die Eingabe sqrt(-5) ohne weitere Kommentare die Antwortans = 0 + 1.4142i, d.h. eine komplexe Losung.1
4.1 Darstellungsformen
Die imaginare Einheit wird in MatLab durch i oder j dargestellt. Eine komplexe Zahl c, i, j
bestehend aus einem Realteil a und einem Imaginarteil b konnen wir in MATLAB schreibenals
>> a=2;b=3; c=a+b*i ←↩c =
2.0000 + 3.0000i
Die direkte Eingabe der komplexen Zahl als
>> c=2+3i ←↩c =
2.0000 + 3.0000i
ist ebenfalls moglich, ebenso wie die Bestimmung von Real- und Imaginarteil mit Hilfe derFunktionen real und imag: real
imag>> c=2+3i; real(c)= ←↩ans =
2>> imag(c) = ←↩ans =
3
Das konjugiert Komplexe einer Zahl ergibt sich durch ihre Spiegelung an der x-Achse bzw.durch Vorzeichenwechsel im Imaginarteil. MatLab kennt als Abkurzung fur die Bestimmungder konjugiert komplexen den Befehl conj. conj
Mit Hilfe des Befehls compass stellt MatLab komplexe Zahlen in einem Polarplot dar, compass
1Die Antwort ist naturlich unbefriedigend, da wir eine zweite Losung erwarten: auch der negative Wert vonans erfullt die Gleichung. MatLab gibt bei dem Befehl sqrt nur jeweils einen Wert zuruck: zum einen kanndie zweite Losung daraus leicht gefunden werden, zum anderen kann dadurch die Funktion sqrt auch aufVektoren oder Matrizen angewandt werden, ohne dass deren Struktur durch das Auftreten der zweiten Losungverandert wird. Eine Moglichkeit, in MtLab beide Losungen fur die Wurzel zu erhalten, ist die Verwendungvon roots, d.h. die Frage nach
√−5 wird uberfuhrt in die Suche nach den Nullstellen des Polyonoms x2 + 5.
Oder in MatLab-Codierung: roots([1 0 5]) mit den Antworten 0 + 2.2361i und 0 - 2.2361i.
47
48 KAPITEL 4. KOMPLEXE ZAHLEN
1
2
3
4
30
210
60
240
90
270
120
300
150
330
180 0
Abbildung 4.1: Darstellung komplexer Zahlen in der Gauß’schen Zahlenebene mit compass
ein Beispiel ist in Abb. 4.1 gegeben. Zur Darstellung mehrerer komplexer Zahlen muss nachdem ersten compass-Befehl ein hold on gegeben werden, da MatLab mit jedem Aufruf voncompass ein neues Bild offnet. Alternativ kann man die Realteile der verschiedenen komplexenZahlen in einen Vektor x und ihre Imaginarteile in einen anderen Vektor y schreiben und danndiese Vektoren an die Funktion ubergeben: compass(x,y).
Die Umwandlung in eine Polardarstellung R,ϑ kann mit Hilfe der Befehle angle und absangle
abs erfolgen:
c=2+3i; theta = angle(c) ←↩theta =
0.9821R = abs(c) ←↩R =
3.6056
MatLab bedient sich der gleichen Algorithmen, die wir auch von Hand verwenden wurden:angle(z) = atan((img(z)/real(z)) und abs(z) = sqrt(real(z).∧2 + img(z).∧2). Dader Winkel aus der Umkehrfunktion des Tangens bestimmt wird, ist er nicht eindeutig. Et-waige Abweichungen um π mussen daher von Hand korrigiert werden – oder mit Hilfe einesSkripts, vgl. Aufgabe 18.
Die Ruckwandlung aus der Polarform in die kartesische Darstellung erfolgt mit Hilfe derEuler’schen Formel
eiϕ = cos ϕ + i sinϕ
als
R=2.5; theta=pi/3; Z=R.*exp(i*theta) ←↩Z =
1.2500 + 2.1651 i
4.2 Rechnen mit komplexen Großen
Da MATLAB intern alle Variablen als komplex behandelt, konnen alle MATLAB-Operationenauch mit komplexen Variablen ausgefuhrt werden.
Allerdings sind die Besonderheiten komplexer Zahlen zu berucksichtigen. Als Beispiel seidas Skalarprodukt erwahnt. Im Reellen erhalten wir das Skalarprodukt als
~a ·~b =∑
i
(aibi)
12. Januar 2005 c© M.-B. Kallenrode
4.3. PLOTTEN KOMPLEXER GROSSEN 49
−1 −0.5 0 0.5 1−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
0.2
0.4
0.6
0.8
1
30
210
60
240
90
270
120
300
150
330
180 0
Abbildung 4.2: Links: Plotten komplexer Großen am Beispiel der sich aus der zehnten undzwanzigsten Wurzel von 1 ergebenden n-Ecke; Rechts: gleiche Werte statt mit plot mitcompass dargestellt
oder in einer MatLab-tauglichen Formulierung c = sum(a.*b). Eine direkte Anwendungdieses Ausdrucks auf komplexe Zahlen ist nicht sinnvoll: das Skalarprodukt wird zu Bestim-mung des Betrages eines Vektors oder einer komplexen Zahl verwendet. Ein Betrag ist abereine positive reelle Zahl. Der Vektor ~a = (i, 0, 0) dagegen liefert mit sich selbst multipliziert-1 und damit eine negative Große. Daher wird bei komplexen Großen der Vektor nicht mitsich selbst sondern mit seinem konjugiert komplexen multipliziert.
Diese Erweiterung gilt allgemein: um das Skalarprodukt aus zwei komplexen Vektoren ~aund ~b zu bilden, wird vom ersten Vektor das konjugiert Komplexe genommen: ~c = ~a∗ · ~b.MATLAB berucksichtigt die Rechenregel automatisch: verwenden wir die Funktion dot furdas Skalarprodukt, so wird diese von MATLAB interpretiert als c = sum(conj(a).*b), d.h.MATLAB erzeugt das Skalarprodukt auf folgende Weise: es wird das konjugiert Komplexedes ersten Vektors ~a erzeugt mit Hilfe der Funktion conj(a). Dieses wird als Array betrach-tet und elementweise multipliziert mit dem Vektor ~b: conj(a).*b. Damit haben wir einenVektor erhalten, dessen einzelne Komponenten jeweils die Produkte aus den entsprechendenKomponenten des konjugiert komplexen ersten Vektors und des normalen zweiten Vektorssind. Uber diese Komponenten ist zu summieren, so dass sich die oben gegebene Funktion c= sum(conj(a).*b) ergibt. Sind die Vektoren reell, so kann die gleiche Funktion verwendetwerden, da eine relle Zahl mit ihrer konjugiert komplexen identisch ist.
4.3 Plotten komplexer Großen
Eine komplexe Große besteht aus zwei Komponenten, ihrem Real- und ihrem Imaginarteil.Verwenden wir eine komplexe Große beim Aufruf der Funktion plot, so plottet MATLABden Imaginarteil gegen den Realteil.
Die Befehlssequenz
>> t = 0:pi/10:2*pi; plot(exp(i*t),’-o’); axis equal ←↩
z.B. erzeugt ein 20-Eck, durch Anderung der Schrittweite in t konnen auch andere n-Eckemit gleicher Sequenz erzeugt werden. Die hier verwendete Funktion ist nichts anderes als diekomplexe Wurzel aus 1. Ein Beispiel fur ein 10- und ein 20-Eck ist im linken Teil von Abb. 4.2gegeben.
Die Funktion compass interpretiert ebenfalls den Real- und Imaginarteil jeweils als die x-und y-Komponente eines Vektors, verbindet jedoch nicht auf einander folgende Wertepaaresondern jeweils Null mit dem Wertepaar:
c© M.-B. Kallenrode 12. Januar 2005
50 KAPITEL 4. KOMPLEXE ZAHLEN
>> t = 0:pi/10:2*pi; compass(exp(i*t)); axis equal ←↩
liefert das Bild im rechten Teil von Abb. 4.2.Andere sehr interessante Varianten von Plots komplexer Großen finden sich be den MatLab-
Demos im Unterpunkt Graphics unter dem Thema Functions of Complex Variables.
Aufgaben
Aufgabe 18 Schreiben Sie ein MatLab-Fragment, mit dessen Hilfe Sie uberprufen konnen, ob die
Funktion angle den korrekten oder einen um π verschobenen Winkel zuruck gegeben hat.
12. Januar 2005 c© M.-B. Kallenrode