MATHEMATISCHES INSTITUT DER UNIVERSITÄT MÜNCHEN Dr. W. Spann, G. Kleen WS 2022/2023

Programmieren II für Studierende der Mathematik

Aufgabe 1

Erstellen Sie eine Klasse Complex, die komplexe Zahlen z = re^{iφ} intern mit Hilfe der Datenkomponenten r ≥ 0 und φ ∈ [−π, π] speichert.

Der Konstruktor zu den reellen Argumenten x und y soll die komplexe Zahl z = x + iy erzeugen (d.h. r = \sqrt{x^{2} + y^{2}} und φ = atan2(y, x)). Wird y nicht angegeben, so soll es 0 gesetzt werden; fehlen beide Argumente, so soll die komplexe Zahl 0 generiert werden.

Überladen Sie die arithmetischen Operatoren geeignet und erstellen Sie für die Exponentialfunktion und die Hauptwerte der Quadratwurzel, des Logarithmus und der allgemeinen Potenzfunktion im Komplexen jeweils entsprechende Funktionen.

Hinweis: Für z_{1} = r_{1}e^{iφ_{1}} und z_{2} = r_{2}e^{iφ_{2}} gilt:

z_{1} ± z_{2} = re^{iφ} mit r = \sqrt{r_{1}^{2} + r_{2}^{2} ± 2r_{1}r_{2} cos(φ_{1} − φ_{2})}
φ = atan2(r_{1} sin φ_{1} ± r_{2} sin φ_{2}, r_{1} cos φ_{1} ± r_{2} cos φ_{2})
z_{1} · z_{2} = re^{iφ} mit r = r_{1} · r_{2} φ = φ_{1} + φ_{2} + k · 2π ∈ [−π, π] (k ∈ ℤ geeignet)
\frac{z_{1}}{z_{2}} = re^{iφ} mit r = \frac{r_{1}}{r_{2}}  φ = φ_{1} − φ_{2} + k · 2π ∈ [−π, π] (k ∈ ℤ geeignet), falls z_{2} ≠ 0
exp z_{1} = re^{iφ} mit r = e^{r_{1} cos φ_{1}} φ = r_{1} sin φ_{1} + k · 2π ∈ [−π, π] (k ∈ ℤ geeignet)
\sqrt{z_{1}} = re^{iφ} mit r = \sqrt{r_{1}}  φ = \frac{φ_{1}}{2}
log z_{1} = ln r_{1} + iφ_{1} falls z_{1} ≠ 0

Überladen Sie den Shiftoperator << so, dass die Ausgabe komplexer Zahlen wie in der Standardbibliothek erfolgt [z = x+iy: Ausgabe (x, y)]. Lesen Sie z_{1} und z_{2} zunächst als complex<double>- Zahlen ein und erzeugen Sie die entsprechenden Zahlen von Typ Complex. Berechnen und geben Sie die folgende Ausdrücke für den Datentyp Complex und zum Vergleich auch für den Standarddatentyp complex<double> aus:

(a) \frac{z_{1}−z_{2}}{z_{1}+z_{2}}
(b) \sqrt{z_{1} · z_{2}}
(c) exp z_{1}
(d) log z_{2}

(e) z_{1}^{z_{2}} := pow(z_{1}, z_{2})

Rechnen Sie das Beispiel z_{1} = 1 + i und z_{2} = 2 + i.

Bearbeitungszeitraum: bis Donnerstag, 10.11.2022, 16^{00}