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?
Antworten:
Die Antwort auf diese Frage hängt weitgehend von Ihrer Bewerbung ab. Anstatt die genaue numerische Implementierung zu schwitzen, überlegen Sie sich mehr, was jede von Ihnen vorgeschlagene mögliche Ausführungsform bedeutet. Haben beispielsweise eine oder mehrere der berechneten Entfernungen eine physikalische Interpretation? Sind die Einheiten und Skalen der Vektorkomponenten gleich?
In dem Szenario, in dem alle Parameter die gleichen Einheiten und unterschiedliche Werteskalen haben, sollten Sie sich mehr Gedanken darüber machen, wie Sie Ihr System am besten dimensionieren können. Nichtdimensionalisierung hilft, die bösen Gnome mit numerischer Präzision zu vertreiben.
Wenn Sie x, y und z als Wertnamen verwenden, vermuten Sie, dass Sie sich eine Position im Raum ansehen. Die beiden Normen haben den entscheidenden Vorteil, dass sie eine kontinuierliche Ableitung haben. Da ich also keine wirklichen Probleminformationen habe, würde ich wahrscheinlich dort anfangen.
quelle