Probleme mit Winkelfunktion

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Daniela
User
Beiträge: 73
Registriert: Donnerstag 19. Juni 2008, 07:32

Hallo alle miteinander,

ich bin grad dabei mir eine Methode zu schreiben, welche mir in einem rechtwinkligen Dreieck die Gegenkathete und Ankathete berechnet. Dabei habe ich als feste Werte die Länge der Hypotenuse und einen Winkel gegeben.
Nun soll es so sein, dass ich von diesem Winkel mir die entsprechende An-/Gegenkathete berechnen lassen will.

Der bisherige code sieht so aus:

Code: Alles auswählen

import math
def berechne_Ankathete():
    hypo = 500 # Hypothenuse mit länge 50 cm
    winkel = -58.08941029 # wird mir von einer anderen Methode übergeben
    #von dem Winkel wird der Kosinus gebildet und dann wird dieser RADl-Wert in Grad umgewandelt. 
    ankathete = math.degrees(math.cos(winkel)) #* hypo
    print ankathete, "ankathete"
Ausgabe: Taschenrechner

Code: Alles auswählen

0.528595237
Ausgabe: Python

Code: Alles auswählen

1.7216959016 ankathete
Das ist doch an sich unlogisch, dass bei einem Wert von ca. 60° ein Kosinus-Wert von über 1,7 rauskommt, wo man doch in der Schule gelernt hat, dass cos60=0,5 ist.
Zumal der Windows-Taschenrechner das gleiche Ergebnis liefert, wie mein Hand-Taschenrechner

Kennt jemand rein zufällig dieses Problem, bzw. wo es herkommt und wie ich es verhindern kann, dass falsche Werte rauskommen.

Vielen Dank schon mal für eure Hilfe

Daniela
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Wie du schon richtig erkannt hast, ergibt ein Kosinus von > 1 keinen Sinn. Dein Programm gibt dir aber auch keinen Kosinus aus, sondern

Code: Alles auswählen

from math import pi, cos
x = -58.08941029
print cos(x-x//(2*pi)*2*pi)*360/(2*pi) #1.72
Erklärung: cos erwartet einen Wert in radian und gibt *kein* Radian zurück.
Zuletzt geändert von Darii am Dienstag 15. Juli 2008, 12:28, insgesamt 5-mal geändert.
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Guck dir mal die Methoden des math Moduls an, was diese erwarten...

Code: Alles auswählen

Docstring:
    radians(x) -> converts angle x from degrees to radians

Docstring:
    cos(x)

Return the cosine of x (measured in radians).


In [27]: math.cos(math.radians(60))
Out[27]: 0.50000000000000011
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Code: Alles auswählen

In [7]: math.cos(math.radians(60))
Out[7]: 0.50000000000000011
Du mußt deinen Wert in Radians umwandeln, dann kommt das erwartete Ergebnis raus.
Daniela
User
Beiträge: 73
Registriert: Donnerstag 19. Juni 2008, 07:32

Vielen dank,

Mein Fehler war, dass ich den Winkel schon von Rad in Grad umgewandelt hatte, demzufolge muss ja jetzt wieder die "Rückumwandlung" geschehen, wenn ich jetzt was anderes damit weiterrechnen will.

Danke für die Hinweise.
Antworten