Eine komplexe Zahl wird in der Form z = a + b * i ausgedrückt, wobei:
a der Realteil ist (eine reelle Zahl),
b der Imaginärteil ist (ebenfalls eine reelle Zahl), und
i die imaginäre Einheit ist, für die i^2 = -1 gilt.
Die Konjugierte der komplexen Zahl z = a + b * i ist gegeben durch:
zc = a - b * i
Der Betrag (oder Modul) von z ist definiert als:
|z| = sqrt(a^2 + b^2)
Das Quadrat des Betrags wird als Produkt von z und seiner Konjugierten zc berechnet:
|z|^2 = z * zc = a^2 + b^2
Die Summe zweier komplexer Zahlen z1 = a + b * i und z2 = c + d * i berechnest du, indem du ihre Real- und Imaginärteile getrennt addierst:
z1 + z2 = (a + b * i) + (c + d * i)
= (a + c) + (b + d) * i
Die Differenz zweier komplexer Zahlen erhältst du, indem du die jeweiligen Teile subtrahierst:
z1 - z2 = (a + b * i) - (c + d * i)
= (a - c) + (b - d) * i
Das Produkt zweier komplexer Zahlen ist definiert als:
z1 * z2 = (a + b * i) * (c + d * i)
= (a * c - b * d) + (b * c + a * d) * i
Für den Kehrwert einer komplexen Zahl ungleich null gilt:
1 / z = 1 / (a + b * i)
= a / (a^2 + b^2) - b / (a^2 + b^2) * i
Für die Division einer komplexen Zahl durch eine andere gilt:
z1 / z2 = z1 * (1 / z2)
= (a + b * i) / (c + d * i)
= (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i
Potenziert man e (die Basis des natürlichen Logarithmus) mit einem komplexen Exponenten, lässt sich das mit der eulerschen Formel ausdrücken:
e^(a + b * i) = e^a * e^(b * i)
= e^a * (cos(b) + i * sin(b))
Da du keine eingebaute Unterstützung für komplexe Zahlen verwenden sollst, implementiere die folgenden Operationen:
Dies ist eine objektorientierte Übung: Du implementierst ComplexNumbers als Klasse.
Die Tests vergleichen zwei Instanzen komplexer Zahlen auf Gleichheit.
Das bedeutet, dass deine Klasse die __eq-Metamethode implementieren muss.
Die Tests führen außerdem arithmetische Operationen mit komplexen Zahlen durch, du musst also auch arithmetische Metamethoden implementieren.
Einige der Funktionen für komplexe Zahlen rechnen mit Gleitkommazahlen. Deine „Gleichheit“ muss damit umgehen, dass Zahlen ungefähr gleich sind.
Melde dich bei Exercism an, um MoonScript mit 126 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.