Warum ist der komplexe Typ von .NET defekt?

8

Ich war erstaunt, dass der Datentyp System.Numerics.Complex in .NET keine mathematisch genauen Ergebnisse liefert.

%Vor%

Anstelle von (0, 1) bekomme ich (6.12303176911189E-17, 1), was einem Rundungsfehler sehr ähnelt.

Nun erkenne ich, dass Fließkomma-Arithmetik manchmal zu solchen Ergebnissen führt, aber normalerweise mit Ganzzahlen werden Rundungsfehler vermieden.

Warum liefert diese anscheinend einfache Operation ein offensichtlich falsches Ergebnis?

    
Kendall Frey 09.10.2012, 19:16
quelle

1 Antwort

10

Sehen Sie sich die dekompilierte Methode Sqrt an.

%Vor%

Es gibt tatsächlich einen Rundungsfehler, der durch die Verwendung von Polarkoordinaten und Radianten verursacht wird. value.Phase / 2.0 gibt pi / 2 zurück, was keine exakt darstellbare Zahl ist. Bei der Umrechnung von Polarkoordinaten (1, pi / 2) wird der Rundungsfehler sichtbar, wenn die reelle Koordinate sich der Null nähert.

    
Kendall Frey 09.10.2012, 19:16
quelle

Tags und Links