PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : berechnen von Winkeln: geometrisch und per Lineare Algebra



HaWe
21.05.2020, 14:45
hallo,
für eine Aufgabe zur Triangulierung möchte ich Winkel berechnen : geometrisch und per Lineare Algebra, komme aber auf verschiedene Ergebnisse.

Gegeben: x/y Koordinatensystem
Vektor p von (0,0) nach (1, 0.5)
Vektor q von (0,0) nach (2, 2)
Der Winkel dazwischen soll bestimmt werden.

geometrisch: // <<<< edit: stimmt das, anschaulich bzw. durch ablesen ??
p hat einen Winkel von 30° zur x-Achse // <<<<<<<<<<< edit: hier steckt der Fehler!! danke!!
q 45° zur x-Achse

also Winkel phi dazwischen:
phi = 45°-30° = 15° = 0.2618 = pi/12



per L.A.:

mit ||.|| = Länge
<.,.> Skalarprodukt
px: x-Koordinate von p
py: y-Koordinate von p

ist der Winkel zwischen 2 Vektoren definiert per

cos(phi) = <p,q> / ( ||p||*||q|| )

= ( px*qx + py*qy) / ( SQRT(px²+py²) * SQRT(qx²+qy²) )
= ( 1*2 + 0.5*2) / (SQRT(1²+0.5²) * SQRT(2²+2²) )
= ( 2 + 1 ) / (SQRT(1.25) * SQRT(8) )
= 3 / (1.12*2.828)
= 3 / 3.17
= 0.946

phi = arccos(0.946) = 18.9° = 0.33 = pi/9.52

ich bin sicher betriebsblind, aber wo?

oberallgeier
21.05.2020, 18:26
.. p hat einen Winkel von 30° zur x-Achse .. ich bin sicher betriebsblind, aber wo? ..
Hmmmm. Betriebsblind nicht, vielleicht in der Skizze . . . Ablesefehler?

Der Winkel zwischen X-Achse und Vektor-p ist mit Geodreieck: 10 cm, 5 cm ca. 26 ½ Grad.
Taschenrechner: 5 enter 10 => convert in Polarkoordinaten: 26,5651, 11,1803.
Oder: atan(0,5) = 26,5651

Vielleicht einfach ein Ablesefehler beim "kleinen" Vektor. Rest hatte ich nicht mehr gerechnet (zu faul nach dem Essen)

Klebwax
21.05.2020, 18:33
@oberallgeier

Du warst schneller und hast recht.

MfG Klebwax

HaWe
21.05.2020, 19:28
stimmt, vielen Dank, jetzt hab ichs auch!
kA wie ich auf 30° kam....

atan(0,5) = 26,5651

Dann wäre
phi = 45° - 26,565° = 18,435°

das ist dann immer noch ein Unterschied zu 18,9° nach LA-Skalarprodukt und Längen, aber schon deutlich weniger ... ;)

- - - Aktualisiert - - -

und wenn man jetzt noch mit mehr Stellen rechnet, wird es auch per L.A. noch genauer:

cos(phi) = <p,q> / ( ||p||*||q|| )

= ( px*qx + py*qy) / ( SQRT(px²+py²) * SQRT(qx²+qy²) )
= ( 1*2 + 0.5*2) / (SQRT(1²+0.5²) * SQRT(2²+2²) )
= ( 2 + 1 ) / (SQRT(1.25) * SQRT( 8 ) )
= 3 / SQRT(10)
= 3 / 3.16228
= 0.9487

arccos(0.9487) = 18.432°

jetzt passt's ! :-D

oberallgeier
23.05.2020, 06:00
.. p hat einen Winkel von 30° zur x-Achse // <<<<<<<<<<< edit: hier steckt der Fehler!! danke!! ..
.. phi = 45° - 26,565° = 18,435° .. arccos(0.9487) = 18.432° ..Ok, das sind 0,2 (NULL komma ZWEI) Minuten(Gradmaß) : 18°26,1´ gegen 18°25,9´ . . . oder von Oberstdorf nach Hamburg (811 km) ein Fehler von 88 m . . . zwei Digits an der fünften Stelle. Bei soviel Transzendenz in der L.A. ist das (meiner Meinung nach) noch recht beruhigend.

HaWe
23.05.2020, 08:41
ja, die letzte Rechnung ist ok, nachdem der Fehler beim Bestimmen des kleineren Vektorwinkels von 30° auf 26,56° verbessert wurde.
Damit war dann der Unterschied der Winkel zwischen den Vektoren nur noch 18,435° vs. 18.432° bei manuellem Rechnen auf 3 Nachkommastellen mit Taschenrechner. Und wenn man die L.A.-Formel jetzt noch in C mit double programmiert, wird es sicherlich noch genauer.

Aber vorher (TOP) waren es ja 15° vs. 18.9°, und das war schon erheblich.