Tracks
/
MoonScript
MoonScript
/
Übungen
/
Komplexe Zahlen
Komplexe Zahlen

Komplexe Zahlen

Mittel

Anleitung

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.

Operationen mit komplexen Zahlen

Konjugierte

Die Konjugierte der komplexen Zahl z = a + b * i ist gegeben durch:

zc = a - b * i

Betrag

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

Addition

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

Subtraktion

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

Multiplikation

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

Kehrwert

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

Division

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

Potenzierung

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))

Anforderungen an die Implementierung

Da du keine eingebaute Unterstützung für komplexe Zahlen verwenden sollst, implementiere die folgenden Operationen:

  • Addition zweier komplexer Zahlen
  • Subtraktion zweier komplexer Zahlen
  • Multiplikation zweier komplexer Zahlen
  • Division zweier komplexer Zahlen
  • Konjugierte einer komplexen Zahl
  • Betrag einer komplexen Zahl
  • Potenzierung von e (der Basis des natürlichen Logarithmus) mit einer komplexen Zahl

MoonScript-spezifische Anweisungen

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.

Caution

Einige der Funktionen für komplexe Zahlen rechnen mit Gleitkommazahlen. Deine „Gleichheit“ muss damit umgehen, dass Zahlen ungefähr gleich sind.


Quelle

WikipediaDer Link öffnet sich in einem neuen Fenster oder Tab
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
MoonScript Exercism

Bereit, mit Komplexe Zahlen zu starten?

Melde dich bei Exercism an, um MoonScript mit 126 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.