Autor Beitrag
kili
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 25.10.09 19:35 
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


ausblenden C#-Quelltext markieren
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 user profile iconChristian S.: C#-Tags hinzugefügt
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 25.10.09 20:09 
Hallo,

komplexe Zahlen gibt es in NET von Haus aus nicht; die musst du selbst entwickeln. Dazu bietet sich eine Struktur an; für die Operator-Überladung siehe MSDN How to: Use Operator Overloading to Create a Complex Number Class (C# Programmers Reference); irgendwo gibt es dort sicher auch eine deutsche Version.

Gruß Jürgen
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
kili Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 25.10.09 21: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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 19302
Erhaltene Danke: 1313

Win 8
C# (VS 2012)
BeitragVerfasst: So 25.10.09 21: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 ;-)

_________________
Mutter, der Mann mit dem Code ist da!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 25.10.09 22:12 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
komplexe Zahlen gibt es in NET von Haus aus nicht
Jupp, noch 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:

ausblenden C#-Quelltext markieren
1:
2:
3:
Complex zahl2 = Complex.Sqrt(zahl1 * zahl1 - q); // oder Complex.Pow oder ...
Complex ergebnis1 = zahl1 - zahl2;
Complex ergebnis2 = zahl1 + zahl2;

_________________
>λ=
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: So 25.10.09 23:27 
Hallo,

Zitat:
Jupp, noch nicht

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

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 25.10.09 23:51 
user profile icongfoidl hat folgendes geschrieben Zum zitierten Posting springen:
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 .

_________________
>λ=
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: Mo 26.10.09 00:30 
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:

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

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 26.10.09 19:42 
user profile icongfoidl hat folgendes geschrieben Zum zitierten Posting springen:
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 Wurzelfunktion 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 ;) .

_________________
>λ=
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren