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:
Die Implementierung komplexer Zahlen in der Julia-Basis findest du hier: https://github.com/JuliaLang/julia/blob/master/base/complex.jl.
Du kannst die Bonusaufgaben zur Arithmetik zwischen reellen Zahlen und komplexen Zahlen bearbeiten, indem du Folgendes auskommentierst:
# enable_realcomplex_tests = true in der Stub-Datei complex-numbers.jl oder in runtests.jl
Du kannst die Bonusaufgaben zwischen reellen Zahlen und komplexen Zahlen bearbeiten, indem du Folgendes auskommentierst:
# enable_syntaxsugar_tests = true in der Stub-Datei complex-numbers.jl oder in runtests.jl
Implementiere dann jm analog zu im, sodass 1 + 1jm == ComplexNumber(1, 1) gilt.
Melde dich bei Exercism an, um Julia mit 35 Konzepte128 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.