Sinus-Problem

T

TM_

Neues Mitglied
1
Hallo,ich hänge momentan an einem sehr ärgerlichen Problem fest. Es gibt um die Math Klasse und dessen Art sin() und cos() zu berechnen.
sin(90), was bekanntermaßen = 1 ist, wird in java so zurückgegeben:
Code:
Math.sin(90) = 0.893996663601
Das liegt daran, dass es nicht in Grad, sonder radial gerechnet wird, ein Kreis also nich = 360° ist, sondern = 2Pi.
(Kann man mit diesem Taschenrechner schnell berehcnen und umschalten)
Es gibt ja aber noch die Math.toDegrees(); Methode. Bei ^-1 Funktionen, also asin(), acos() und atan() funktioniert diese auch. Doch
Math.toDegrees(Math.sin(90)) ist != 1.

Was mache ich also falsch und was für eine Umrechnung kann ich vornehmen? Alles was ich gefunden habe ist mit 189/Pi multiplizieren, was den selben Effekt wie toDeg hat. Es geht zwar mit alten Kentnissen wie Gegenkathete und Ankathete, doch dazu müssen diese jedesmal mit den Parametern übergeben werden und überhaupt erst berechnet werden, was den ganzen Code unnötig verlängert und unübersichtlich macht.

Gibt es also eine einfache Formel, mit der ich sin(Alpha) korrekt berechnen kann? Habe schon alles mögliche gegooglet, komem aber auf nichts neues :/
Schonmal großen Dank für alle Antworten!
 
Math.toDegrees() rechnet Radian in Degree um,
du willst aber Degree in Radian umrechnen (bevor du davon den Sinus berechnest btw),
also Math.toRadians() nehmen.

Achja und radial ist nicht radiant. :D
 
Dann halt radiant :D Trotz Mathe-LK haben wir in der Schule leider nie was dazu gemacht. Ich weiß auch erst seitdem ich dieses Problem habe, dass es überhaupt Degrees und Radians gibt :D

Und ich hab nun den Fehler entdeckt, denn toRadians() habe ich auch schon versucht, nur sah mein Code so aus:
Code:
Math.toRadians(Math.sin(90))
und nich so, wie es halt richtig wäre:
Code:
(Math.sin(Math.toRadians(90)))

Denn bei toDegrees funktioniert es genau umgekehrt:
Code:
dir = Math.toDegrees(Math.atan(a/b));
Und daher dachte ich die Radians-Funktion würde genauso funktionieren :D

Vielen Dank!
 
Bei den Arcusfunktionen (die aus Verhältnissen
[*] Winkel machen) ist das Ergebnis der Winkel, bei den "normalen" Funktionen wie sin (die aus Winkeln Verhältnisse machen) ist das Argument der Winkel. Deshalb muss man bei atan toDegrees nach dem atan aufrufen und bei sin den toRadiant davor.

Grafisch:

Code:
Altgrad 0-360 <-> Radiant 0-2pi <-> Verhältnis
      ->   toRadians    ->       sin
      <-    toDegree    <-       atan

o O (MatheLK ist auch nicht mehr das, was es mal war)

[*] So haben wir die Zahlen bei mir damals in der Mittelstufe(!) genannt.
 
Zuletzt bearbeitet:
Ja, das Wissen dazu kommt bei mir auch noch aus der Mittelstufe, nur haben wir das nicht soweit vertieft und es auch immer ohne Taschenrechner als Formel aufgeschrieben. Aber nochmal danke für die Erklärung, jetzt ergibt das Ganze auch Sinn :D

Und ja, Mathe-Lk war einfach nur die Pflichtthemen die im Abi waren durchzuarbeiten, und das waren hauptsächlich Analysis, Geometrie im Raum mit Matrizen und Stochastik. Das alles zwar stark vertieft, aber isgesamt sind es ja doch nur sehr wenige Gebiete die man so abdeckt. Stoße in der Informatik immer wieder auf so Kleinigkeiten,die man durchaus in Mathe lernen könnte ... aber naja.
Und nochmals vielen Dank!
 

Ähnliche Themen

W
  • WuDiDong
Antworten
3
Aufrufe
767
jogimuc
J
S
Antworten
4
Aufrufe
995
Sempervivum
S
R
Antworten
3
Aufrufe
1.618
Ritartet
R
Zurück
Oben Unten