Как я могу преобразовать радианы в градусы с помощью Python?

#python #math #trigonometry

#python #математика

Вопрос:

В math модуле я смог найти 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...
  

Комментарии:

1. У вас все наоборот, cos в качестве входных данных используется угол, а не выходные данные.

2. @Mark Ransom Какой в этом смысл?

3. @lucase.62, Отметка верна. Функция cos работает с углом в качестве входных данных, 1 в вашем примере. В вашем калькуляторе этот угол находится в градусах, в Python этот угол должен быть задан в радианах. Возвращаемое значение x в вашем примере является безразмерным числом. На вашем калькуляторе вы вычислили значение cos в 1 градусе. В вашем примере с Python вы вычислили cos из 1 радиана, что эквивалентно 57,296 градусам.

4. cos принимает угол в качестве входных данных и выдает соотношение в качестве выходных данных. Попытка преобразовать выходные данные в градусы, как вы сделали в своем примере, вообще не имеет смысла. Вместо этого вам нужно преобразовать входные данные 1 из градусов в радианы. Если бы вы использовали acos , все было бы наоборот, входным значением является отношение, а выходным — радианы.

Ответ №1:

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

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

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

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

Комментарии:

1. Это фантастический ответ. Ваш пример понятен, но ваше объяснение «бонуса» действительно полезно. Мне было любопытно узнать именно об этой вещи.

2. Спасибо. Как единственному специалисту compsci без каких-либо хороших математических навыков, это было невероятно полезно!

3. Если кому-нибудь интересно, у numpy также есть эти функции для преобразования целых массивов за один раз. Они также представлены под более явными именами rad2deg и deg2rad .

Ответ №2:

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

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

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

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

Преобразование из радианов в градусы

Примеры 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

Математическая нотация:

Математическое обозначение градусов и радианов

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

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

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

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

Фундаментальное обучение радианам и степеням

5-минутное обновление с использованием тригонометрии и выражения вращения для преобразования радианов в градусы и обратно: https://youtu.be/ovLbCvq7FNA?t=31

В академии Хана проходят переподготовку по тригонометрии, единичной окружности, угловой математике, чтобы использовать sin, cos, tan для описания вращения и изменений во вращении. https://www.khanacademy.org/math/algebra2/x2ec2f6f830c9fb89:trig/x2ec2f6f830c9fb89:unit-circle/v/unit-circle-definition-of-trig-functions-1

Ответ №3:

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

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

например

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

Комментарии:

1. Чтобы соответствовать примеру из вопроса, используйте math.cos(math.radians(1))

2. Почему вы передаете радианы в asin, прежде чем передавать их в math.degrees? Какие у вас есть причины ValueError: math domain error для допустимых значений в радианах.

Ответ №4:

радиан также можно преобразовать в степень с помощью numpy

 print(np.rad2deg(1))
57.29577951308232
  

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

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

57.29578
  

Ответ №5:

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

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

Обратите внимание, что я импортировал math (или numpy) в пространство имен с

 from math import *
  

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

 math.Cos(45)
  

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

Ответ №6:

-исправление — поскольку вы хотите перейти с радианов на градусы, на самом деле это rad = deg * math.pi / 180, а не 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
  

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

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

Комментарии:

1. Никогда не делите на целое число (в настройках, подобных этой), это будут редкие случаи, когда это полезно, и даже тогда есть способы записать это более явно.

Ответ №7:

Мне нравится этот метод, используйте sind(x) или cosd(x)

 import math

def sind(x):
    return math.sin(math.radians(x))

def cosd(x):
    return math.cos(math.radians(x))