web-dev-qa-db-fra.com

Python: convertir des radians en degrés

Dans la bibliothèque mathématique de python.org, je ne pouvais trouver que math.cos(x), avec cos/sin/tan/acos/asin/atan. Ceci retourne la réponse en radians. Comment puis-je obtenir la réponse en degrés?

Voici mon code:

import math

x = math.cos(1)
y = x * 180 / math.pi
print y
30.9570417874

Ma calculatrice, sur deg, me donne:

cos(1)
0.9998476...
51
tkbx

Python inclut deux fonctions dans le package math; radians convertit les degrés en radians et degrees convertit les radians en degrés.

Pour correspondre à la sortie de votre calculatrice, vous avez besoin de:

>>> math.cos(math.radians(1))
0.9998476951563913

Notez que toutes les fonctions trigonométriques convertissent entre un angle et le rapport des deux côtés d’un triangle. cos, sin et tan prennent un angle en radians en entrée et renvoient le rapport; acos, asin et atan prennent un rapport en entrée et renvoient un angle en radians. Vous ne convertissez que les angles, jamais les ratios.

121
Mark Ransom

Python convertit les radians en degrés ou les degrés en radians:

Que sont les radians et quel problème est-il résolu?:

Les radians et les degrés sont deux unités de mesure distinctes qui aident les gens à exprimer et à communiquer des changements de direction précis. Wikipédia a une grande intuition avec ses infographies sur la définition d'un radian par rapport aux degrés:

https://en.wikipedia.org/wiki/Radian

Conversion from radians to degrees

Exemples Python utilisant des bibliothèques calculant les degrés en radians:

>>> import math
>>> math.degrees(0)                       #0 radians == 0 degrees
0.0
>>> math.degrees(math.pi/2)               #pi/2 radians is 90 degrees
90.0
>>> math.degrees(math.pi)                 #pi radians is 180 degrees
180.0      
>>> math.degrees(math.pi+(math.pi/2))     #pi+pi/2 radians is 270 degrees
270.0 
>>> math.degrees(math.pi+math.pi)         #2*pi radians is 360 degrees
360.0      

Exemples Python utilisant des bibliothèques calculant des radians à partir de degrés:

>>> import math
>>> math.radians(0)           #0 degrees == 0 radians
0.0
>>> math.radians(90)          #90 degrees is pi/2 radians
1.5707963267948966
>>> math.radians(180)         #180 degrees is pi radians
3.141592653589793
>>> math.radians(270)         #270 degrees is pi+(pi/2) radians
4.71238898038469
>>> math.radians(360)         #360 degrees is 2*pi radians
6.283185307179586

Source: https://docs.python.org/3/library/math.html#angular-conversion

La notation mathématique:

Mathematical notation of degrees and radians

Vous pouvez faire une conversion degré/radian sans bibliothèques:

Si vous lancez votre propre convertisseur degré/radian, vous devez écrire votre propre code pour gérer les cas Edge.

Les erreurs commises ici sont faciles à commettre et font mal, tout comme les concepteurs de l'orbiteur de mars 1999 qui ont fait couler 125 millions de dollars en l'effondrant sur Mars à cause de cas Edge non intuitifs.

Permet de planter cet orbiteur et de convertir nos propres radians en degrés:

Des radians non valides en entrée retournent une sortie de mémoire.

>>> 0 * 180.0 / math.pi                         #0 radians is 0 degrees
0.0
>>> (math.pi/2) * 180.0 / math.pi               #pi/2 radians is 90 degrees
90.0
>>> (math.pi) * 180.0 / math.pi                 #pi radians is 180 degrees
180.0
>>> (math.pi+(math.pi/2)) * 180.0 / math.pi     #pi+(pi/2) radians is 270 degrees
270.0
>>> (2 * math.pi) * 180.0 / math.pi             #2*pi radians is 360 degrees
360.0

Degrés en radians:

>>> 0 * math.pi / 180.0              #0 degrees in radians
0.0
>>> 90 * math.pi / 180.0             #90 degrees in radians
1.5707963267948966
>>> 180 * math.pi / 180.0            #180 degrees in radians
3.141592653589793
>>> 270 * math.pi / 180.0            #270 degrees in radians
4.71238898038469
>>> 360 * math.pi / 180.0            #360 degrees in radians
6.283185307179586

Exprimer plusieurs rotations avec des degrés et des radians

Les valeurs radian valables pour une rotation sont comprises entre 0 et 2 * pi. Les degrés de rotation simples sont compris entre 0 et 360. Toutefois, si vous souhaitez exprimer plusieurs rotations, les valeurs en radians et degrés valides sont comprises entre 0 et l'infini.

>>> import math
>>> math.radians(360)                 #one complete rotation
6.283185307179586
>>> math.radians(360+360)             #two rotations
12.566370614359172
>>> math.degrees(12.566370614359172)  #math.degrees and math.radians preserve the
720.0                                 #number of rotations

Réduction de plusieurs rotations:

Vous pouvez réduire plusieurs rotations de degrés/radians en une seule rotation en modifiant la valeur d'une rotation. Pour les degrés, vous modifiez par 360, pour les radians, vous modulez par 2 * pi.

>>> import math
>>> math.radians(720+90)        #2 whole rotations plus 90 is 14.14 radians
14.137166941154069
>>> math.radians((720+90)%360)  #14.1 radians brings you to 
1.5707963267948966              #the end point as 1.57 radians.

>>> math.degrees((2*math.pi)+(math.pi/2))            #one rotation plus a quarter 
450.0                                                #rotation is 450 degrees.
>>> math.degrees(((2*math.pi)+(math.pi/2))%(2*math.pi)) #one rotation plus a quarter
90.0                                                    #rotation brings you to 90.

Protip

L'académie Khan a un excellent contenu pour consolider l'intuition autour de la trigonométrie et angular mathematics: https://www.khanacademy.org/math/algebra2/trig-functions/intro-to- radians-alg2/v/introduction-à-radians

25
Eric Leschinski

Vous pouvez simplement convertir votre résultat en radians en degré en utilisant

math.degrees et arrondi correctement à la décimale requise

par exemple

>>> round(math.degrees(math.asin(0.5)),2)
30.0
>>> 
17
Abhijit

radian peut également être converti en degré en utilisant numpy

print(np.rad2deg(1))
57.29577951308232

si nécessaire pour arrondir (j'ai fait avec 6 chiffres après décimale ci-dessous), puis

print(np.round(np.rad2deg(1), 6)

57.29578
3
user3280146

J'aime aussi définir mes propres fonctions qui prennent et retournent des arguments en degrés plutôt qu'en radians. Je suis sûr qu’il existe des majuscules qui n’aiment pas mes noms, mais j’utilise une première lettre majuscule pour mes fonctions personnalisées. Les définitions et le code de test sont ci-dessous.

#Definitions for trig functions using degrees.
def Cos(a):
    return cos(radians(a))
def Sin(a):
    return sin(radians(a))
def Tan(a):
    return tan(radians(a))
def ArcTan(a):
    return degrees(arctan(a))
def ArcSin(a):
    return degrees(arcsin(a))
def ArcCos(a):
    return degrees(arccos(a))

#Testing Code
print(Cos(90))
print(Sin(90))
print(Tan(45))
print(ArcTan(1))
print(ArcSin(1))
print(ArcCos(0))

Notez que j’ai importé math (ou numpy) dans l’espace de noms avec

from math import *

Notez également que mes fonctions sont dans l’espace de noms dans lequel elles ont été définies. Par exemple,

math.Cos(45)

n'existe pas.

2
Will Holmes

-fix- parce que vous voulez changer de radians en degrés, il s’agit en fait de rad = deg * math.pi/180 et non de deg * 180/math.pi

import math
x=1                # in deg
x = x*math.pi/180  # convert to rad
y = math.cos(x)    # calculate in rad

print y

en 1 ligne ça peut être comme ça

y=math.cos(1*math.pi/180)
1
Davo