Wie, um komplexe Zahl "i" in C++
Ich bin Codierung einer einfachen DFT-Algorithmus jetzt, und ich möchten, verwenden Sie die komplexe Zahl i in der komplexen Exponentialfunktion. Ich sah jemanden verwenden #include<complex>
und #include<cmath>
, und dann benutzten Sie die überladene symbol I
wie exp(2*I)
. Aber es scheint, es funktioniert nicht in meiner visual studio-compiler. Also, kann jemand geben ein einfaches Beispiel für die Verwendung der komplexen Exponentialfunktion? Danke!
Sie können eine komplexe variable und weisen Sie ihm den Wert
Aber, wirklich, ich bin neugierig, ob es so bequem überlastung symbol. Ich meine wer erstellt c++ sollte darüber nachgedacht haben, richtig? 😛 aber deine Idee ist definitiv gut
Und dieses symbol wäre ein
tut mir Leid, zu Fragen, eine weitere Frage. Wissen Sie, welche Bibliothek ich sollte hinzufügen, um komplexe sqrt? es scheint, mein compiler sagt mir immer es mehrere Instanzen von überlastung Funktion sqrt.
siehe meine Antwort. Der Weg, den ich definiert
sqrt(-1)
Aber, wirklich, ich bin neugierig, ob es so bequem überlastung symbol. Ich meine wer erstellt c++ sollte darüber nachgedacht haben, richtig? 😛 aber deine Idee ist definitiv gut
Und dieses symbol wäre ein
complex<float>
, complex<double>
oder complex<long double>
? 😉 By the way, complex<double>{0, 1}
funktioniert auch.tut mir Leid, zu Fragen, eine weitere Frage. Wissen Sie, welche Bibliothek ich sollte hinzufügen, um komplexe sqrt? es scheint, mein compiler sagt mir immer es mehrere Instanzen von überlastung Funktion sqrt.
siehe meine Antwort. Der Weg, den ich definiert
i
als eine komplexe Zahl ist, setzen Sie den Wert auf -1
, dann rief sqrt
habe ich dafür gesorgt, dass die richtige version von sqrt
aufgerufen werden würde. Einfach anrufen sqrt(-1)
wird nicht automatisch bekommen Sie die richtige version von sqrt
ich sollte gewesen klarer in meinem ersten Kommentar.InformationsquelleAutor Cancan | 2013-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine kurze vollständiges Beispiel:
Getestet mit g++
InformationsquelleAutor Floris
Bekomme ich diese Frage vor kurzem, und finden Sie eine einfache Möglichkeit, für zukünftige Leser:
Verwenden Sie einfach
<complex>
Bibliothek, wie die folgendenInformationsquelleAutor Mike22LFC
Finden Sie details hier
Ein einfacher Ansatz wäre
InformationsquelleAutor ogni42
Den folgenden code in C++ zeigt ein makro für die Umsetzung der imaginären Zahl j ist. Es ist bekannt, dass bei der Programmierung die Bedingungen i und j werden Häufig als Zähler-Variablen. Ich stattdessen der Buchstabe J zur Darstellung der imaginären Zahl um Verwirrung zu vermeiden.
/* dcomplex.h
Verwendung dieses Makros, die imaginäre Zahl J [zusammen mit der komplexen Bibliothek] kann verwendet werden, in den Haupt-code. Ein Beispiel für seine Verwendung ist unten dargestellt:
....
denen tmp, t[n] sind Variablen eines komplexen Typs, und J ist die imaginäre Zahl. Die Variablen n, l, und tab_size sind von einem integer-Typ. Die Konstante PI ist die bekannte Konstante 3.14... Die Funktion exp() überladen, behandelt mit komplexen zahlen. [n.b. dieses Codebeispiel ist Teil eines einfachen DFT]
Verwenden Sie dieses makro, wird der code besser lesbar..
InformationsquelleAutor Paul Mackenzie
pi, eine irrationale Zahl, kann nicht genau dargestellt werden, indem eine Doppel -. cos eine ungenaue Näherung von pi dürfte, liefern Sie ein Ergebnis, das in der Nähe, aber vielleicht nicht genau 1. Ebenfalls Sünde eine ungenaue Annäherung an eine ungenaue approximation der pi ist wie in der Folge eine Zahl ist eine sehr kleine Größenordnung, die vielleicht nicht genau 0. Warum nicht einfach definieren, ich std::complex(0.0, 1.0) und vermeiden die unentgeltliche Ungenauigkeit.
InformationsquelleAutor user3405743