Wie Vektoren vergleichen?



  • Ich weiß nicht so recht, ob dies in dieses Forum oder doch besser ins Grafikprogrammierungs-Forum passt, also stelle ich es mal hier rein.

    Wie oben geschrieben, frage ich mich, wie man am besten bzw. sinnvollsten 2 Vektoren vergleicht?

    Ist vektor1 < vektor 2 wenn
    a. Alle Werte des Vektors kleiner sind.
    b. Mindestens einer der Werte kleiner ist.
    c. Der größte Teil der Werte kleiner ist.

    Gleiche Frage stellt sich bei <= >= etc.



  • Mir sind keine gängigen Definitionen für Umgleichheitsrelationen von Vektoren bekannt. Hat auch nicht viel Sinn, weil die einzelnen Zahlenwerte der Komponenten von den Basisvektoren abhängen und je nach Basis dann mal der eine oder andere Vektor "größer" ist. Wenn's dir um geometrische Vektoren geht, dann ist oft die Norm des Vektors, also flapsig, die Länge des damit assoziierten Pfeils im Raum, interessant (um Abstände zu messen).

    Wenn Du kurz erklärst, worum es geht, dann kann man dir sicher besser helfen.



  • du kannst die vektoren elementweise von links nach rechts (oder sonst wie) vergleichen. beim ersten mal, wenn A_i != B_i hast du dann dein ergebnis.

    z.b.

    (4, 0, 1000) > (3, 9000, -50)

    (1, 0, 0) < (2, -1, -1)

    (1, 1, 5) < (1, 1, 6)

    (1, 7, 0, 8, 2) < (1, 7, 1, 8, 2)

    das klappt gut wenn du vektoren z.b. als Key in einer std::map nehmen willst.



  • darauf gibs keine allgemeingültige antwort. spricht aber nichts dagegen, dass du dir eine eigene ordnung zurechtschnitzt, die für die lösung des problems reicht.



  • Die Frage ist ja, wozu du die Vektoren vergleichen willst.
    Allgemein gibt es sowas wie VektorA < VektorB nicht.



  • es existiert keine "anordnung" für vektoren (<,>,=)

    Es ist nur Gleichheit bzw. Ungleichheit (=,≠) für Vektoren definiert.

    wenn v2-v1=0 dann gleichheit sonst ungleichheit

    was du machen kannst (aber ob das sinnvoll ist?) sind die Beträge zweier Vektoren zu vergleichen, bzw. diese kannst du anordnen:
    |v1| (>,<,=) |v2|

    allerdings: |v1|=|v2| ≠> v1=v2

    warum willst du sie anordnen?



  • gorgoyle schrieb:

    es existiert keine "anordnung" für vektoren (<,>,=)

    es existieren sogar jede Menge davon... nur halt keine kanonische

    die lexikographische ordnung wurde ja schon genannt.


Anmelden zum Antworten