2016-04-28 11 views
2

ich versuchte, ein wenig Konsole aplication zu entwickeln, um Ergänzungen zwischen Vektoren Lösung des Kosinus-Gesetzes mit:Berechnung Vektoren mit dem Cosinusgesetz (Python)

sum = sqrt((s1 ** 2) + (s2 ** 2) + (2 * s1 * s2 * cos(angle))) 
print(sum) 

# Where s1 and s2 are the sizes of the vectors, respectively.

Aber die, die cos in der Gleichung ergab einen seltsamen Wert (der Winkel war 60, also sollte die cos(angle) 1/2 sein, oder?).

Auch versuchte ich, die cos mit acos nach dem Lesen anderer Lösungen zu ändern, aber es ValueError: math domain error zurückgegeben.

Weiß jemand, wie man das löst?

+4

Pythons trigonometrischen Funktionen Radiant, nicht Grad https://docs.python.org/3/library/math.html#trigonometric-functions – Hamms

+0

Wenn ich mich nicht irre, ist das Zeichen vor der letzten Amtszeit im Kosinusgesetz minus? –

+0

als Kommentar zu den Math-Domain-Fehler, 'acos' ist das Gegenteil von' cos' und kann nur Werte zwischen 0 und 1. –

Antwort

2

Die trigonometrischen Funktionen von Python verwenden Radianten statt Grad. Glücklicherweise enthält das math Modul eine Funktion die Konvertierung für Sie ausführen:

from math import cos, radians 

sum = sqrt((s1 ** 2) + (s2 ** 2) + (2 * s1 * s2 * cos(radians(angle)))) 
print(sum) 
0

Das Argument von cos() sollte in Radianten ausgedrückt werden.

+0

so kann ich nur die 'grade()' Funktion aus dem Mathematik-Modul? – user6180500

+0

@ user6180500 nein, 'angle_in_radians = math.radians (angle_in_degrees)' –

Verwandte Themen