Was ist der richtige Weg, um Vektoren im Fließkomma zu vergleichen?

  • Ich weiß, dass ich eine Toleranz für den Vergleich von Fließkommazahlen verwenden sollte. Um Vektoren zu vergleichen, kann ich mir drei mögliche Lösungen vorstellen, die unterschiedlichen Entfernungsmetriken entsprechen:

    1. Vergleichen Sie die Komponenten jedes Vektors einzeln: Die Vektoren sind gleich if Alle 3 sind innerhalb der Toleranz. Diese Option würde sich wie die einheitliche Norm verhalten und einen Toleranzwürfel ergeben.
    2. Compare die Summe aller absoluten Unterschiede zu einer gewissen Toleranz. Dies würde sich wie die Taxicab-Norm verhalten, was ein simplex von Toleranz ergibt.
    3. Berechnen Sie die Euklidische Länge von (vecA - vecB) und sehen, ob sie innerhalb der Toleranz liegt. Dies würde die euklidische Standardnorm mit einem Toleranzbereich ergeben.

    Aber meine Hauptsorge ist die numerische Stabilität. Die euklidische Norm "fühlt sich" als die beste Option an, aber ich mache mir Sorgen, dass alle Berechnungen mehr Rundungsfehler verursachen würden. In geringerem Umfang könnte Option 2 auch Fehler einführen. (Wenn z. B. die x -Komponente der Vektoren viel größer ist als y und z ), könnten durch das Addieren aller Unterschiede möglicherweise alle Beiträge überschwemmt werden y und z .) Daher neige ich derzeit zu Option 1.

    Kann sich jemand mit einem autoritativen Take abmildern zu diesem Problem?

    01 February 2012
1 answer
  • Die Antwort auf diese Frage hängt stark von Ihrer Bewerbung ab. Anstatt zu schwitzen, denken Sie bei der genauen numerischen Implementierung mehr darüber nach, was die von Ihnen vorgeschlagene mögliche Verkörperung bedeutet. Haben zum Beispiel 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 Skalierungen von Werten haben, sollten Sie mehr über die beste Methode nachdenken um Ihr System zu dimensionieren. Nichtdimensionalisierung hilft dabei, die bösen numerischen Präzisionsgnome zu vertreiben.

    Wie Sie Verwenden Sie x, y und z als Wertnamen. Ich vermute, Sie betrachten eine Position im Raum. Die beiden Normen haben den eindeutigen Vorteil einer kontinuierlichen Ableitung. Ohne wirkliche Probleminformationen würde ich wahrscheinlich dort beginnen.

    23 February 2012
    Dima