Tracks
/
Lua
Lua
/
Ü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

Implementierung

Für diese Übung musst du Closure-basierte Objekte verwenden. Mehr über diesen Ansatz der Objektorientierung in Lua erfährst du in diesem Artikel in diesem Artikel.

Außerdem musst du in dieser Übung Operatorüberladung über Metamethoden von Metatabellen verwenden. Mehr dazu erfährst du in Programming in Lua.


Quelle

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

Bereit, mit Komplexe Zahlen zu starten?

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