Ich weiß, dass ich eine Toleranz für den Vergleich von Gleitkommazahlen verwenden sollte. Aber zum Vergleichen von Vektoren kann ich mir 3 mögliche Lösungen vorstellen, die unterschiedlichen Abstandsmetriken entsprechen:
- Vergleichen Sie die Komponenten jedes Vektors einzeln: Die Vektoren sind gleich, wenn alle 3 innerhalb der Toleranz liegen. Diese Option würde sich wie die einheitliche Norm verhalten und einen Toleranzwürfel ergeben.
- Vergleichen Sie die Summe aller absoluten Unterschiede mit einer gewissen Toleranz. Dies würde sich wie die Taxinorm verhalten und einen Simplex der Toleranz ergeben.
- Berechnen Sie die euklidische Länge von (vecA - vecB) und prüfen Sie, ob sie innerhalb der Toleranz liegt. Dies würde der euklidischen Standardnorm einen Toleranzbereich geben.
Mein Hauptanliegen ist jedoch die numerische Stabilität. Die euklidische Norm "fühlt sich wie" die beste Option an, aber ich mache mir Sorgen, dass alle Berechnungen mehr Rundungsfehler hervorrufen würden. In geringerem Umfang könnte Option 2 auch Fehler verursachen. (Wenn zum Beispiel die x- Komponente der Vektoren viel größer als y und z ist , kann das Addieren aller Unterschiede alle Beiträge von y und z überschwemmen .) Daher neige ich derzeit zu Option 1.
Kann jemand mit einer maßgeblichen Einstellung zu diesem Problem abwägen?