Entwickler-Ecke
Basistechnologien - Komplexe Zahlen in C#
kili - So 25.10.09 20:35
Titel: Komplexe Zahlen in C#
moin moin,
also ich hätte da ja gleich nochmal eine frage: könnt ihr mir sagen wie ich den bereich der komplexen zahlen einfügen kann? also für den fall, das die wuzel aus einer negativen zahl gezogen werden muss?
grüße kilian
C#-Quelltext
1: 2: 3: 4: 5: 6:
| double p = Convert.ToDouble(Console.ReadLine()); double q = Convert.ToDouble(Console.ReadLine()); double zahl1 = p / -2; double zahl2 = Math.Sqrt((zahl1 * zahl1) - q); double ergebnis1 = zahl1 - zahl2 ; double ergebnis2 = zahl1 + zahl2; |
Moderiert von Christian S.: C#-Tags hinzugefügt
kili - So 25.10.09 22:03
hmm ja ich hab mir den beitrag über komplexe zahlen durchgelesen. hat mir für mein programm nur nicht wirklich weitergeholfen. naja ich werd noch ein bißchen was ausprobieren
Christian S. - So 25.10.09 22:05
Man könnte sich ja auch vorstellen, dass man wahrscheinlich nicht der Erste ist, der komplexe Zahlen nutzen will und schauen, was es da in den weiten des Internets an Klassen gibt ;-)
Kha - So 25.10.09 23:12
JüTho hat folgendes geschrieben : |
komplexe Zahlen gibt es in NET von Haus aus nicht |
Jupp,
noch [
http://msdn.microsoft.com/en-us/library/system.numerics.complex%28VS.100%29.aspx] nicht ;) . Bis dahin lässt sich mit einer Suchmaschine wie Koders.com wie gesagt sicher eine Alternative finden, aber am verlinkten Code gibt es als Grundlage nichts auszusetzen :nixweiss: .
Ich denke eher, es ist noch nicht klar geworden, zu welchem Grad überhaupt eine Einbindung in die Sprache möglich ist. Mit impliziten Konvertierungen und eigenen Operatoren ändert sich der Code zum Glück nur minimal:
C#-Quelltext
1: 2: 3:
| Complex zahl2 = Complex.Sqrt(zahl1 * zahl1 - q); Complex ergebnis1 = zahl1 - zahl2; Complex ergebnis2 = zahl1 + zahl2; |
gfoidl - Mo 26.10.09 00:27
Hallo,
Das schaut mal gut aus. Obwohl ich interessant finde dass die Wurzel-Funktion nur eine komplexe Zahl als Ergebnis liefert (anstatt 2 bei der Quadratwurzel). Aber vielleicht wird das noch ;)
mfG Günther
Kha - Mo 26.10.09 00:51
gfoidl hat folgendes geschrieben : |
Obwohl ich interessant finde dass die Wurzel-Funktion nur eine komplexe Zahl als Ergebnis liefert (anstatt 2 bei der Quadratwurzel). |
Darüber kann man sich natürlich streiten - aber aus welchem Grund sollte es anders sein als bei Math.Sqrt ;) ? Im Reellen wie Komplexen ist die Quadratwurzel von z mathematisch eben
nicht als Lösungsmenge der Gleichung
w² = z definiert, sondern als eine ganz bestimmte dieser Lösungen. Wäre sie irgendetwas Anderes als eine Funktion
C -> C, dürfte schriftliche Mathematik einfach verdammt umständlich werden :D .
gfoidl - Mo 26.10.09 01:30
Kha hat folgendes geschrieben : |
Im Reellen wie Komplexen ist die Quadratwurzel von z mathematisch eben nicht als Lösungsmenge der Gleichung w² = z definiert, sondern als eine ganz bestimmte dieser Lösungen. |
Die Wurzel ist schon so definiert nur wird im Reellen meist der Definitionsbereich von w auf die nichtnegative reellen Zahlen beschränkt, da die Funktion über die reellen Zahlen gesehen nicht bijektiv ist (also nicht umkehrbar) und somit das exaktere +- entfällt.
Für die komplexen Zahlen gilt ähnliches. Die 2. Wurzel ist -1 x der 1. Wurzel (und diese wird in .net 4.0 zurückgegeben).
Insofern hast du recht warum es anders sein sollte als bei bei der reellen Wurzel Math.Sqrt. In den technischen Berechnungen die ich kenne werden jedoch immer alle komplexen Wurzeln benötigt und daher hat es mich gewundert warum dann wieder selbst auf die anderen Wurzel geschlossen werden muss wenn es doch gleich implementiert werden hätte können (zB durch eine andere Methode). Glücklicherweise ist es ja nicht allzu aufwändig von einer Wurzel auf n-1 verbleibenden zu kommen ;)
Ich habe allerdings die Kernaussage deiner Antwort nicht ganz kapiert. Vielleicht wiederholt meine Antwort deine oder sie widerspricht dir ;)
mfG Günther
Kha - Mo 26.10.09 20:42
gfoidl hat folgendes geschrieben : |
Die Wurzel ist schon so definiert nur wird im Reellen meist der Definitionsbereich von w auf die nichtnegative reellen Zahlen beschränkt |
Ok, das war zu ungenau ausgedrückt: Erfüllt w die Gleichung, ist sie
eine Wurzel von z, die Wurzel
funktion gibt aber
nach Definition eine ganz bestimmte dieser Lösungen zurück, keine Menge. Wenn sich eine Methode "Sqrt" nennt, soll sie bitteschön ebenfalls eine Abbildung
C -> C sein, nicht mehr und nicht weniger wollte ich sagen. Für Extension Methods ist ja immer noch genug Platz ;) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!