Größter Winkel zwischen vielen Vektoren

Hallo,

wir haben eine Zahl an Vektoren gegeben. Es soll nun der größte
Winkel zwischen zwei dieser Vektoren gefunden werden.

Ist das mathematisch lösbar, oder muss man da mit Algorithmen rangehen?

Grüße
Huddi

hey,
also ich weiss ja nicht wie viele vektoren du mit „eine zahl“ meinst, aber an sich ist das problem nicht schwer zu lösen.
du könntest ja all diese vektoren im koordinatenursprung aufzeichnen.
und jeder vektor legt dir eine steigung k fest. die erhältst du so:

vektor = (a,b) folgt steigung k = b/a

mit dem tangens kannst du jetzt den winkel phi deiner vektoren zur x-achse berechnen:

tan(phi) = b/a bzw phi = tan^(-1)(b/a)

du erhältst hier lösungen zwischen -180 und +180 grad, kannst diese aber ja umrechnung auf das intervall [0,360]

nun hast du anstelle deiner vektoren also eine liste mit gradangaben, ich glaub den rest schaffst du selber, oder?

hast du wirklich viele vektoren gegeben, würde ich das problem zb mit matlab angehen :smile:

lg
lili

Hallo,

danke schonmal für den Tipp. Man muss natürlich aufpassen da atan()
nicht -pi;pi als Ergebnis hat sondern nur die Hälfte, aber das sollte
nicht das Problem sein.

Das eigentliche Problem ist: die Vektoren haben drei Dimensionen.

Ich kann diese natürlich in Kugelkoordinaten abbilden, aber dann habe
ich zwei Winkelgrößen pro Vektor, welche ich vergleichen müsste.
Und dann bin ich schon wieder beim Paarweisen Vergleich, richtig?

aso, drei dimensionen, na sag das doch gleich :smiley:
ja da is es am besten du bildest das ganze auf die einhaitskugel ab.
d.h. du normierst deine vektoren. dann hast du ja dort den größten winkel, wo die strecke zwischen den punkten auf der einheitskugel am größten ist, aber auf der kugel gemessen. das bedeutet: bogenlänge!

und da kannst du wirklich nur einzeln vergleichen, bzw eben einen algorithmus programmieren, der dir von jedem punkt auf der EHK zu jedem anderen die bogenlänge ausrechnet. größter wert = größter winkel

lg lili

Hallo!

Ich empfinde die angegebene Lösung als ein bisschen kompliziert. Wenn du sowieso paarweise vergleichen musst, dann kannst du ja gleich über das innere Produkt gehen, oder?

cos(phi) = a.b/|a|*|b|

Und so dann den Winkel vergleichen. Das lasst sich super leicht in allem programmieren, angefangen in Excel.

lg
Alex

Jup genau. Da ist der direkte Vergleich einfacher.

Allerdings sind es (n^2-n)/2 Berechnungen, richtig?

Ich habe um die 2000 Vektoren -> 2*10^6 Berechnungen.
Werd mal schauen, ob das halbwegs flott funktioniert.

Falls jemand eine geschlossenere Lösung dafür hat, wäre das natürlich
um so schöner :smile:.

Grüße,
Huddi