Das komplexe innere Produkt hat zwei verschiedene Definitionen, die durch Konventionen festgelegt werden: oder . In BLAS habe ich die Routinen cdotu, zdotu und cdotc, zdotc gefunden. Die beiden ersteren Routinen berechnen tatsächlich (ein falsches inneres Produkt!) Und die letzten beiden Routinen konjugieren den ersten Vektor im inneren Produkt. Nach jeder Definition (konjugieren Sie oder ) ist mit Konjugation! Darüber hinaus kann, wie in einem Kommentar ausgeführt, die Auswahl der Hauptwerte für mehrwertige komplexe Funktionen konventionsabhängig sein.ˉ u T v u T ˉ v u T v u v ⟨ u , v ⟩ = ¯ ⟨ v , u ⟩
Meine Frage ist: Verursacht diese Komplikation eine echte Gefahr für die Verwendung komplexer Arithmetik im wissenschaftlichen Rechnen? Dieses Problem wird von den Autoren von deal.ii hervorgehoben, die vorschlagen, komplexe Zahlen immer in Realteil und Imaginärteil aufzuteilen und nur die Realarithmetik zu verwenden. Aber ich fand den Aufteilungsansatz nie bequem. Denken Sie beispielsweise an die PML für zeitharmonische Maxwell-Gleichungen.
Es scheint, dass die Sorge um die Verwendung komplexer Zahlen in den meisten Open-Source-FEM-Softwareprogrammen außer FreeFem ++ und libmesh weit verbreitet ist. Aber selbst für die beiden Ausnahmen ist die komplexe Arithmetik weniger getestet als die reale.
Meine letzte Frage lautet: Sollen wir es einfach immer vermeiden, komplexe Zahlen zu verwenden?