Unterschied cos-1 und acos?
Hallo, ich will aus einem Cosinus-Wert einen Winkel zurückrechnen. Mit dem Taschenrechner mit der cos^-1-Taste funktioniert das wunderbar, jedoch mit der acos(x) Funktion diverser online Rechner um mit c# Funktioniert das nicht, demnach sollte doch acos(cos(a)) mir wieder den Winkel a ausgeben oder nicht?
5 Antworten
Der Cosinus ist periodisch und die Arcuscosinus-Funktionen liefern nur den Wert eines Astes zurück, in der Regel 0<=arccos(y)<=π
Für x<0 oder x>π liefert Math.Acos(Math.Cos(x)) also einen anderen Wert zurück - x mod (2 π) oder (2 π) - x mod(2 π).
Mit Werten zwischen 0 und π liefert Math.Acos(Math.Cos(x)) wieder x zurück (bis auf kleine Rundungsfehler).
Vermutlich hast du den Taschenrechner auf Gradmaß (Vollkreis = 360°) gestellt. In Programmiersprachen ist es extrem selten, dass Winkelfunktionen etwas anderes als Bogenmaß (Vollkreis = 2 π) verwenden.
http://www.rapidtables.com/calc/math/Arcsin_Calculator.htm
Das funktioniert, aber nur wenn du Gradmaß und Bogenmaß richtig auswählst.
Du kannst nicht erwarten, dass wenn du Sinus im Bogenmaß berechnest, dass du dann beim Arcsin wieder dasselbe herausbekommst, wenn du mit Arcsin im Gradmaß rechnest.
Jeder Taschenrechner der was taugt kann zwischen Gradmaß und Bogenmaß umschalten.
Außerdem ist die Periodizität zu beachten, dass wird bei Rechnern immer auf das erste 360 ° - Intervall bzw. 2 * pi - Intervall transformiert.
Nein, es muss nicht unbedingt wieder a sein!
Beachte, dass der Cosinus periodisch ist. Es gibt unendlich viele Werte a, die zu einem vorgegebenen Cosinuswert (z.B. 1 führen). Da die Inverse, der Arcuscosinus, nur auf einen ursprünglichen Wert zurückabbilden kann, beschränkt man sich dabei üblicherweise auf den Bereich [-π/2,π/2]. Jedoch muss das natürlich nicht dein ursprünglicher Wert gewesen sein.
Beispiel: a = 2π, dann ist cos(a) = cos(2π) = 1. acos(1) = 0, da der Arcuscosinus jetzt den Wert im Intervall [-π/2,π/2] sucht, wo der Cosinus 1 ist. Das ist 0.
Ha, dann ist der Fehler ja sonnenklar!
So funktioniert die Eingabe in den meisten Onlinerechnern nicht! Du gibst dort keinen Winkel ein, sondern eine Zahl! Siehe 360° = 2*Pi etc.
cos(90) bedeutet nicht cos(90°), sondern cos(90)!
Zieh von 90 wegen der Periodizität 28*Pi ab, dann bist du bei den 2,035, die in dem gesuchten Intervall liegen.
90° ist in dieser Eingabe Pi/2 bzw. 1.57079632... und das sollte dann auch wieder rauskommen.
Das ist dann einfach die Umrechnung von Bogenmaß in Grad, wie es alle anderen hier schon geschrieben haben. Du multipliziert diese Zahl mit 180°/Pi und erhältst den Winkel.
Beispiel: Pi * 180°/Pi = 180° (passt also)
Oder bei dir: 2,035 * 180°/Pi = 116,59...°
Hier sieht man, dass das in der Tat nichts mit den 90 ° zu tun hast, die du ursprünglich eingeben wolltest.
90° wären ja 90° * Pi/180° = Pi/2.
um oder und C# ?
Generell gibt es 2 Möglk. Winkel anzugeben
Grad / Deg / °
Radiant / rad
Hier liegt denke ich mal das Problem
alpha / 360° = rad / 2PI
Und ja i.d.R. ist acos = arccos = cos^-1
Hast Du an die Umrechung von Grad in Bogenmaß gedacht?
https://msdn.microsoft.com/de-de/library/system.math.acos(v=vs.110).aspx
Ok, aber obwohl der Cosinus periodisch ist, sollte ein annähernd gleicher Wert rauskommen. im Fall 90° erhalte ich aber mit oben genannter Formel (acos(cos(90)) die Zahl 2,03540569948579...