Python: преобразование радианов в градусы - PullRequest
50 голосов
/ 26 марта 2012

В математической библиотеке python.org я мог найти только math.cos(x) с cos / sin / tan / acos / asin / atan. Это возвращает ответ в радианах. Как я могу получить ответ в градусах?

Вот мой код:

import math

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

Мой калькулятор, на градус, дает мне:

cos(1)
0.9998476...

Ответы [ 6 ]

116 голосов
/ 26 марта 2012

Python включает две функции в пакете math; radians преобразует градусы в радианы, а degrees преобразует радианы в градусы.

Чтобы соответствовать выводу вашего калькулятора вам нужно:

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

Обратите внимание, что все функции триггера конвертируются между углом и отношением двух сторон треугольника. cos, sin и tan принимают угол в радианах в качестве входных данных и возвращают соотношение; acos, asin и atan принимают соотношение в качестве входных данных и возвращают угол в радианах. Вы только конвертируете углы, а не отношения.

24 голосов
/ 16 сентября 2017

Python конвертирует радианы в градусы или градусы в радианы:

Что такое радианы и какую проблему они решают?:

Радианы и градусы - это две отдельные единицы измерения, которые помогают людям выражать и сообщать точные изменения направления. В Википедии есть отличная интуиция с их инфографикой о том, как один радиан определяется относительно градусов:

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

Conversion from radians to degrees

Примеры Python с использованием библиотек для вычисления градусов по радианам:

>>> 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      

Примеры Python с использованием библиотек, вычисляющих радианы из градусов:

>>> 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

Источник: https://docs.python.org/3/library/math.html#angular-conversion

Математическая запись:

Mathematical notation of degrees and radians

Вы можете выполнять преобразование градусов / радиан без библиотек:

Если вы катите свой собственный конвертер градусов / радиан, вы должны написать свой собственный код для обработки крайних случаев.

Ошибки здесь легко совершить, и они причинят боль так же, как и разработчикам орбитального корабля Марса 1999 года, который потратил 125 миллионов долларов, врезая его в Марс из-за неинтуитивных крайних случаев здесь.

Позволяет сбить орбиту и перевести наши радианы в градусы:

Неправильные радианы в качестве входных данных возвращают вывод мусора.

>>> 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

градусы в радианах:

>>> 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

Выражение нескольких поворотов в градусах и радианах

Допустимые значения радиана для одного вращения: от 0 до 2 * пи. Отдельные значения степени поворота находятся в диапазоне от 0 до 360. Однако, если вы хотите выразить несколько поворотов, допустимые значения радиан и градусов находятся в диапазоне от 0 до бесконечности.

>>> 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

Свертывание нескольких поворотов:

Вы можете свернуть несколько поворотов в градусах / радианах в одно вращение, изменяя значение одного поворота. Для градусов вы мод на 360, для радианов вы модуль на 2 * пи.

>>> 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

В ханской академии есть отличное содержание для укрепления интуиции в области тригонометрии и угловой математики: https://www.khanacademy.org/math/algebra2/trig-functions/intro-to-radians-alg2/v/introduction-to-radians

17 голосов
/ 26 марта 2012

Вы можете просто преобразовать результат в радианах в градусы, используя

математические градусы и округление до требуемых десятичных знаков

например

>>> round(math.degrees(math.asin(0.5)),2)
30.0
>>> 
3 голосов
/ 14 августа 2018

радиан также можно конвертировать в градусы, используя numpy

print(np.rad2deg(1))
57.29577951308232

, если необходимо округлить (я сделал с 6 цифрами после десятичной дроби ниже), затем

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

57.29578
2 голосов
/ 06 октября 2016

Мне также нравится определять свои собственные функции, которые принимают и возвращают аргументы в градусах, а не в радианах. Я уверен, что есть некоторые чистейшие с заглавной буквы, которым не нравятся мои имена, но я просто использую заглавную первую букву для своих пользовательских функций. Определения и код тестирования приведены ниже.

#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))

Обратите внимание, что я импортировал математику (или numpy) в пространство имен с помощью

from math import *

Также обратите внимание, что мои функции находятся в пространстве имен, в котором они были определены. Например,

math.Cos(45)

не существует.

1 голос
/ 26 марта 2015

-fix- потому что вы хотите изменить от радианов до градусов, это на самом деле rad = deg * math.pi / 180 а не град * 180 / мат.пи

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

print y

в 1 строке это может быть так

y=math.cos(1*math.pi/180)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...