В этом разделе представлены тригонометрические функции модуля math
.
Содержание:
- Функция
math.sin()
; - Функция
math.cos()
; - Функция
math.tan()
; - Функция
math.asin()
; - Функция
math.acos()
; - Функция
math.atan()
; - Функция
math.atan2()
; - Функция
math.hypot()
.
math.sin(x)
:
Функция math.sin()
возвращает синус угла x
значение которого задано в радианах.
>>> from math import * >>> sin(pi/2) # 1.0 >>> sin(pi/4) # 0.7071067811865475)
math.cos(x)
:
Функция math.cos()
возвращает косинус угла x
значение которого задано в радианах.
>>> from math import * >>> cos(pi/3) # 0.5000000000000001 >>> cos(pi) # -1.0
math.tan(x)
:
Функция math.tan()
возвращает тангенс угла x
значение которого задано в радианах.
>>>from math import * >>> tan(pi/3) # 1.7320508075688767 >>> tan(pi/4) # 0.9999999999999999
При определенных значениях углов тангенс должен быть равен либо −∞
либо +∞
, скажем tan(3π/2)=+∞
, a tan(−π/2)=−∞
, но вместо этого мы получаем либо очень большие либо очень маленькие значения типа float
:
>>> tan(-pi/2) # -1.633123935319537e+16 >>> tan(3*pi/2) # должно быть Inf, но # 5443746451065123.0
math.asin(x)
:
Функция math.asin()
возвращает арксинус значения x
, т. е. такое значение угла y
, выраженного в радианах при котором sin(y) = x
.
>>> from math import * >>> asin(sin(pi/6)) # 0.5235987755982988 >>> pi/6 # 0.5235987755982988
math.acos(x)
:
Функция math.acos()
возвращает арккосинус значения x
, т. е. возвращает такое значение угла y
, выраженного в радианах, при котором cos(y) = x
.
>>> from math import * >>> acos(cos(pi/6)) 0.5235987755982987 >>> pi/6 0.5235987755982988
math.atan(x)
:
Функция math.atan()
возвращает арктангенс значения x
, т. е. возвращает такое значение угла y
, выраженного в радианах, при котором tan(y) = x
.
>>> from math import * >>> atan(tan(pi/6)) # 0.5235987755982988 >>> pi/6 # 0.5235987755982988
math.atan2(y, x)
:
Функция math.atan2()
возвращает арктангенс значения y/x
, т. е. возвращает такое значение угла z
, выраженного в радианах, при котором tan(z) = x
. Результат находится между -pi
и pi
.
>>> from math import * >>> y = 1 >>> x = 2 >>> atan2(y, x) # 0.4636476090008061 >>> atan(y/x) # 0.4636476090008061 >>> tan(0.4636476090008061) # 0.49999999999999994
Данная функция, в отличие от функции math.atan()
, способна вычислить правильный квадрант в котором должно находиться значение результата. Это возможно благодаря тому, что функция принимает два аргумента (x, y)
координаты точки, которая является концом отрезка начатого в начале координат. Сам по себе, угол между этим отрезком и положительным направлением оси X не несет информации о том где располагается конец этого отрезка, что приводит к одинаковому значению арктангенса, для разных отрезков, но функция math.atan2()
позволяет избежать этого, что бывает очень важно в целом ряде задач. Например, atan(1)
и atan2(1, 1)
оба имеют значение pi/4, но atan2(-1, -1)
равно -3 * pi / 4
.
math.hypot(*coordinates)
:
Функция math.hypot()
возвращает евклидову норму, sqrt(sum(x**2 for x in coordinates))
. Это длина вектора от начала координат до точки, заданной координатами.
Для двумерной точки (x, y)
это эквивалентно вычислению гипотенузы прямоугольного треугольника с использованием теоремы Пифагора sqrt(x*x + y*y)
.
Изменено в Python 3.8: Добавлена поддержка n-мерных точек. Раньше поддерживался только двумерный случай.
Эта статья посвящена математическим функциям в Python. Для выполнения математических операций необходим модуль math
.
Что такое модуль?
В C и C++ есть заголовочные файлы, в которых хранятся функции, переменные классов и так далее. При включении заголовочных файлов в код появляется возможность не писать лишние строки и не использовать одинаковые функции по несколько раз. Аналогично в Python для этого есть модули, которые включают функции, классы, переменные и скомпилированный код. Модуль содержит группу связанных функций, классов и переменных.
Есть три типа модулей в Python:
- Модули, написанные на Python (
.py
). - Модули, написанные на
C
и загружаемые динамически (.dll
,.pyd
,.so
,.sl
и так далее). - Модули, написанные на
C
, но связанные с интерпретатором.import sys print(sys.builtin_module_names)
('_ast', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_collections', '_csv', '_datetime', '_functools', '_heapq', '_imp', '_io', '_json', '_locale', '_lsprof', '_md5', '_multibytecodec', '_opcode', '_operator', '_pickle', '_random', '_sha1', '_sha256', '_sha512', '_sre', '_stat', '_string', '_struct', '_symtable', '_thread', '_tracemalloc', '_warnings', '_weakref', '_winapi', 'array', 'atexit', 'audioop', 'binascii', 'builtins', 'cmath', 'errno', 'faulthandler', 'gc', 'itertools', 'marshal', 'math', 'mmap', 'msvcrt', 'nt', 'parser', 'signal', 'sys', 'time', 'winreg', 'xxsubtype', 'zipimport', 'zlib').
Для получения списка модулей, написанных на C
, но связанных с Python, можно использовать следующий код.
Как видно из списка выше, модуль math
написан на C
, но связан с интерпретатором. Он содержит математические функции и переменные, о которых дальше и пойдет речь.
Функции представления чисел
ceil() и floor() — целая часть числа
Сeil()
и floor()
— функции общего назначения. Функция ceil округляет число до ближайшего целого в большую сторону. Функция floor убирает цифры десятичных знаков. Обе принимают десятичное число в качестве аргумента и возвращают целое число.
Пример:
# Импорт модуля math
import math
# Дробный номер
number=8.10
# выводим целую часть числа с округлением к большему
print("Верхний предел 8.10 это:",math.ceil(number))
# выводим целую часть числа с округлением к меньшему
print("Нижний предел 8.10 это:",math.floor(number))
Вывод:
Верхний предел 8.10 это: 9
Нижний предел 8.10 это: 8
Функция fabs() — абсолютное значение
Функция fabs
используется для вычисления абсолютного значения числа. Если число содержит любой отрицательный знак (-
), то функция убирает его и возвращает положительное дробное число.
Пример:
# Импорт модуля math
import math
number = -8.10
# вывод абсолютного значения числа
print(math.fabs(number))
Вывод:
8.1
factorial() — функция факториала
Эта функция принимает положительное целое число и выводит его факториал.
Пример:
# Импорт модуля math
import math
number = 5
# вывод факториала числа
print("факториала числа", math.factorial(number))
Вывод:
факториала числа 120
Примечание: при попытке использовать отрицательное число, возвращается ошибка значения (Value Error
).
Пример:
# Импорт модуля math
import math
number = -5
# вывод факториала числа
print("факториала числа", math.factorial(number))
Вывод:
ValueError: factorial() not defined for negative values
Функция fmod() — остаток от деления
Функция fmod(x,y)
возвращает x % y
. Разница в том, что выражение x % y
работает только с целыми числами, а эту функцию можно использовать и для чисел с плавающей точкой.
Пример:
# Импорт модуля math
import math
print(math.fmod(5,2))
print(math.fmod(-5,2))
print(math.fmod(-5.2,2))
print(math.fmod(5.2,2))
Вывод:
1.0
-1.0
-1.2000000000000002
1.2000000000000002
Функция frexp()
Эта функция возвращает мантиссу и показатель степени в виде пары (m,n
) любого числа x
, решая следующее уравнение.
Пример:
# Импорт модуля math
import math
print(math.frexp(24.8))
Вывод:
(0.775, 5)
Функция fsum() — точная сумма float
Вычисляет точную сумму значений с плавающей точкой в итерируемом объекте и сумму списка или диапазона данных.
Пример:
# Импорт модуля math
import math
# сумма списка
numbers=[.1,.2,.3,.4,.5,.6,.7,.8,8.9]
print("сумма ", numbers, ":", math.fsum(numbers))
# сумма диапазона
print("сумма чисел от 1 до 10:", math.fsum(range(1,11)))
Вывод:
сумма [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 8.9] : 12.5
сумма чисел от 1 до 10: 55.0
Функции возведения в степень и логарифма
Функция exp()
Эта функция принимает один параметр в виде дробного числа и возвращает e^x
.
Пример:
# Импорт модуля math
import math
print("e в степени 5 ", math.exp(5))
print("e в степени 2.5", math.exp(2.5))
Вывод:
e в степени 5 148.4131591025766
e в степени 2.5 12.182493960703473
Функция expm1()
Эта функция работает так же, как и exp
, но возвращает exp(x)-1
. Здесь, expm1
значит exm-m-1
, то есть, exp-minus-1
.
Пример:
# Импорт модуля math
import math
print(math.exp(5)-1)
print(math.expm1(5))
Вывод:
147.4131591025766
147.4131591025766
Функция log() — логарифм числа
Функция log(x[,base])
находит логарифм числа x
по основанию e
(по умолчанию). base
— параметр опциональный. Если нужно вычислить логарифм с определенным основанием, его нужно указать.
Пример:
# Импорт модуля math
import math
# логарифм с основанием e
print(math.log(2))
# логарифм с указанным основанием (2)
print(math.log(64,2))
Вывод:
0.6931471805599453
6.0
Функция log1p()
Эта функция похожа на функцию логарифма, но добавляет 1
к x
. log1p
значит log-1-p
, то есть, log-1-plus
.
Пример:
# Импорт модуля math
import math
print(math.log1p(2))
Вывод:
1.0986122886681098
Функция log10()
Вычисляет логарифм по основанию 10.
Пример:
# Импорт модуля math
import math
print(math.log10(1000))
Вывод:
3.0
Функция pow() — степень числа
Используется для нахождение степени числа. Синтаксис функции pow(Base, Power)
. Она принимает два аргумента: основание и степень.
Пример:
# Импорт модуля math
import math
print(math.pow(5,4))
Вывод:
625.0
Функция sqrt() — квадратный корень числа
Эта функция используется для нахождения квадратного корня числа. Она принимает число в качестве аргумента и находит его квадратный корень.
Пример:
# Импорт модуля math
import math
print(math.sqrt(256))
Вывод:
16.0
Тригонометрические функции
В Python есть следующие тригонометрические функции.
Функция | Значение |
---|---|
sin |
принимает радиан и возвращает его синус |
cos |
принимает радиан и возвращает его косинус |
tan |
принимает радиан и возвращает его тангенс |
asin |
принимает один параметр и возвращает арксинус (обратный синус) |
acos |
принимает один параметр и возвращает арккосинус (обратный косинус) |
atan |
принимает один параметр и возвращает арктангенс (обратный тангенс) |
sinh |
принимает один параметр и возвращает гиперболический синус |
cosh |
принимает один параметр и возвращает гиперболический косинус |
tanh |
принимает один параметр и возвращает гиперболический тангенс |
asinh |
принимает один параметр и возвращает обратный гиперболический синус |
acosh |
принимает один параметр и возвращает обратный гиперболический косинус |
atanh |
принимает один параметр и возвращает обратный гиперболический тангенс |
Пример:
# Импорт модуля math
import math
# функция синусы
print("синус PI/2 :", math.sin(math.pi/2))
# функция косинуса
print("косинус 0 :", math.cos(0))
# функция тангенса
print("тангенс PI/4 :", math.tan(math.pi/4))
print()
# функция арксинуса
print("арксинус 0 :", math.acos(0))
# функция арккосинуса
print("арккосинус 1 :", math.acos(1))
# функция арктангенса
print("арктангенс 0.5 :", math.atan(0.5))
print()
# функция гиперболического синуса
print("гиперболический синус 1 :", math.sinh(1))
# функция гиперболического косинуса
print("гиперболический косинус 0 :", math.cos(0))
# функция гиперболического тангенса
print("гиперболический тангенс 1 :", math.tan(1))
print()
# функция обратного гиперболического синуса
print("обратный гиперболический синус 1 :", math.acosh(1))
# функция обратного гиперболического косинуса
print("обратный гиперболический косинус 1 :", math.acosh(1))
# функция обратного гиперболического тангенса
print("обратный гиперболический тангенс 0.5 :", math.atanh(0.5))
Вывод:
синус PI/2 : 1.0
косинус 0 : 1.0
тангенс PI/4 : 0.9999999999999999
арксинус 0 : 1.5707963267948966
арккосинус 1 : 0.0
арктангенс 0.5 : 0.4636476090008061
гиперболический синус 1 : 1.1752011936438014
гиперболический косинус 0 : 1.0
гиперболический тангенс 1 : 1.5574077246549023
обратный гиперболический синус 1 : 0.0
обратный гиперболический косинус 1 : 0.0
обратный гиперболический тангенс 0.5 : 0.5493061443340549
Функция преобразования углов
Эти функции преобразуют угол. В математике углы можно записывать двумя способами: угол и радиан. Есть две функции в Python, которые конвертируют градусы в радиан и обратно.
degrees()
: конвертирует радиан в градусы;radians()
: конвертирует градус в радианы;
Пример:
# Импорт модуля math
import math
print(math.degrees(1.57))
print(math.radians(90))
Вывод:
89.95437383553924
1.5707963267948966
Математические константы
В Python есть две математические константы: pi
и e
.
pi
: это математическая константа со значением3.1416..
e
: это математическая константа со значением2.7183..
Пример:
# Импорт модуля math
import math
# вывод значения PI
print("значение PI", math.pi)
# вывод значения e
print("значение e", math.e)
Вывод:
значение PI 3.141592653589793
значение e 2.718281828459045
В математическом модуле Python есть много удобных методов, и сегодня мы сосредоточимся на одном из них – math.asin(). Этот метод возвращает арксинус числа в радианах. В этой статье будет рассказано о функции asin().
Метод
asin() – возвращает арксинус x в радианах.
Синтаксис
Ниже приведен синтаксис метода asin() в Python:
asin(x)
Примечание. Эта функция недоступна напрямую, поэтому нам нужно импортировать математический модуль, а затем нам нужно вызвать эту функцию, используя математический статический объект.
Параметры
x – это должно быть числовое значение в диапазоне от -1 до 1. Если x больше 1, это приведет к ошибке.
Возвращаемое значение
Функция возвращает арксинус x в радианах.
Пример
В следующем примере показано использование метода asin() в Python.
#!/usr/bin/python
import math
print "asin(0.64): ", math.asin(0.64)
print "asin(0): ", math.asin(0)
print "asin(-1): ", math.asin(-1)
print "asin(1): ", math.asin(1)
Когда приведённый выше код выполнится, он даст следующий результат:
asin(0.64): 0.694498265627
asin(0): 0.0
asin(-1): -1.57079632679
asin(1): 1.57079632679
Содержание
- 1. Особенности применения тригонометрических функций. Преобразование радиан в градусы и наоборот
- 2. Средства языка Python для конвертирования из градусов в радианы и наоборот. Функции math.degrees(x) и math.radians(x)
- 3. Ограничения на использование тригонометрических функций
- 4. Функция math.acos(x). Арккосинус угла
- 5. Функция math.asin(x). Арксинус
- 6. Функция math.atan(x). Арктангенс
- 7. Функция math.atan2(x, y). Арктангенс от x/y
- 8. Функция math.cos(x). Косинус угла
- 9. Функция math.sin(x)
- 10. Функция math.hypot(x, y). Евклидовая норма (Euclidean norm)
- 11. Функция math.tan(x). Тангенс угла x
- Связанные темы
Поиск на других ресурсах:
1. Особенности применения тригонометрических функций. Преобразование радиан в градусы и наоборот
Чтобы использовать тригонометрические функции в программе, нужно подключить модуль math
import math
Все тригонометрические функции оперируют радианами. Зависимость между радианами и градусами определяется по формуле:
1 радиан = 180°/π = 57.2958°
Если известен угол в градусах, то для корректной работы тригонометрических функций, этот угол нужно преобразовать в радианы.
Например. Задан угол, имеющий n градусов. Найти арккосинус этого угла. В этом случае формула вычисления результата будет следующей:
... n_rad = n*3.1415/180 # получить угол в радианах ac = math.acos(n_rad) # вычислить арккосинус ...
Чтобы получить более точное значение результата, в программе можно использовать константу math.pi, которая определяет число π. В этом случае текст программы будет иметь следующий вид
n_rad = n*math.pi/180 # получить угол в радианах ac = math.acos(n_rad) # вычислить арккосинус
⇑
2. Средства языка Python для конвертирования из градусов в радианы и наоборот. Функции math.degrees(x) и math.radians(x)
В языке Python существуют функции преобразования из градусов в радианы и, наоборот, из радиан в градусы.
Функция math.degrees(x) конвертирует значение параметра x из радиан в градусы.
Функция math.radians(x) конвертирует значение параметра x из градусов в радианы.
Пример.
# Функция math.degrees(x) import math x = 1 # x - угол в радианах y = math.degrees(x) # y = 57.29577951308232 - угол в градусах x = math.pi # x = 3.1415... y = math.degrees(x) # y = 180.0 # Функция math.radians(x) x = 180.0/math.pi y = math.radians(x) # y = 1.0 x = 45 # x - угол в градусах y = math.radians(x) # y = 0.7853981633974483
⇑
3. Ограничения на использование тригонометрических функций
При использовании тригонометрических функций следует учитывать соответствующие ограничения, которые следуют из самой сущности этих функций. Например, не существует арксинуса из числа, которое больше 1.
Если при вызове функции задать неправильный аргумент, то интерпретатор выдаст соответствующее сообщение об ошибке
ValueError: math domain error
⇑
4. Функция math.acos(x). Арккосинус угла
Функция acos(x) возвращает арккосинус угла x. Аргумент x задается в радианах и может быть как целым числом, так и вещественным числом.
Пример.
# Функция math.acos(x) import math n = float(input('n = ')) # ввести n n_rad = n*math.pi/180 # получить угол в радианах ac = math.acos(n_rad) # вычислить арккосинус print('n_rad = ', n_rad) print('ac = ', ac)
Результат работы программы
n = 35 n_rad = 0.6108652381980153 ac = 0.913643357298706
⇑
5. Функция math.asin(x). Арксинус
Функция math.asin(x) вычисляет арксинус угла от аргумента x. Значение аргумента x задается в радианах.
Пример.
# Функция math.asin(x) import math n = 10 # n - угол в градусах # конвертировать из градусов в радианы n_rad = n*math.pi/180 # n_rad = 0.17453292519943295 # вычислить арксинус asn = math.asin(n_rad) # asn = 0.17543139267904395
⇑
6. Функция math.atan(x). Арктангенс
Функция math.atan(x) возвращает арктангенс аргумента x, значение которого задается в радианах. При использовании функции важно помнить допустимые значения x, которые можно задавать при вычислении арктангенса.
Пример.
# Функция math.atan(x) import math n = 60 # n - угол в градусах # конвертировать из градусов в радианы n_rad = n*math.pi/180 # n_rad = 1.0471975511965976 # вычислить арктангенс atn = math.atan(n_rad) # atn = 0.808448792630022
⇑
7. Функция math.atan2(x, y). Арктангенс от x/y
Функция math.atan2(x, y) вычисляет арктангенс угла от деления x на y. Функция возвращает результат от —π до π. Аргументы x, y определяют координаты точки, через которую проходит отрезок от начала координат. В отличие от функции atan(x), данная функция правильно вычисляет квадрант, влияющий на знак результата.
Пример.
# Функция math.atan2(x,y) import math x = -2 y = -1 res = math.atan2(x, y) # res = -2.0344439357957027
⇑
8. Функция math.cos(x). Косинус угла
Функция math.cos(x) вычисляет косинус угла для аргумента x. Значение аргумента x задается в радианах.
Пример.
# Функция math.cos(x) import math x = 0 y = math.cos(x) # y = 1.0 x = math.pi y = math.cos(x) # y = -1.0 x = 2 # 2 радианы y = math.cos(x) # y = -0.4161468365471424
⇑
9. Функция math.sin(x)
Функция math.sin(x) возвращает синус угла от аргумента x, заданного в радианах.
Пример.
# Функция math.sin(x) import math x = math.pi y = math.sin(x) # y = 1.2246467991473532e-16 x = 0 y = math.sin(x) # y = 0.0 x = 2 # 2 радиана y = math.sin(x)
⇑
10. Функция math.hypot(x, y). Евклидовая норма (Euclidean norm)
Функция возвращает Евклидовую норму, которая равна длине вектора от начала координат до точки x, y и определяется по формуле
Пример.
# Функция math.hypot(x, y) import math x = 1.0 y = 1.0 z = math.hypot(x, y) # z = 1.4142135623730951 x = 3.0 y = 4.0 z = math.hypot(x, y) # z = 5.0
⇑
11. Функция math.tan(x). Тангенс угла x
Функция math.tan(x) возвращает тангенс от аргумента x. Аргумент x задается в радианах.
Пример.
# Функция math.tan(x, y) import math x = 1.0 y = math.tan(x) # y = 1.5574077246549023 x = 0.0 y = math.tan(x) # y = 0.0
⇑
Связанные темы
- Теоретико-числовые функции и функции представления
- Степенные и логарифмические функции
- Гиперболические функции
- Специальные функции и константы
⇑
Используя math, стандартный модуль Python для математических функций, вы можете вычислять тригонометрические функции (sin, cos, tan) и обратные тригонометрические функции (arcsin, arccos, arctan).
- Trigonometric functions — Mathematical functions — Python 3.10.4 Documentation
Следующее содержание объясняется здесь с примерами кодов.
- Pi (3.1415926…):
math.pi
- Преобразование углов (радианы, градусы):
math.degrees()
,math.radians()
- Синус, обратный синус:
math.sin()
,math.asin()
- косинус, обратный косинус:
math.cos()
,math.acos()
- Тангенс, обратный тангенс:
math.tan()
,math.atan()
,math.atan2()
- Различия ниже:
math.atan()
,math.atan2()
Table of Contents
- Pi (3.1415926…): math.pi
- Преобразование углов (радианы, градусы): math.degrees(), math.radians()
- Синус, обратный синус: math.sin(), math.asin()
- косинус, обратный косинус: math.cos(), math.acos()
- Тангенс, обратный тангенс: math.tan(), math.atan(), math.atan2()
- Разница между math.atan() и math.atan2()
Pi (3.1415926…): math.pi
Pi предоставляется в качестве константы в математическом модуле. Она выражается следующим образом.math.pi
import math
print(math.pi)
# 3.141592653589793
Преобразование углов (радианы, градусы): math.degrees(), math.radians()
Тригонометрические и обратные тригонометрические функции в математическом модуле используют радиан в качестве единицы измерения угла.
- Радиан — Википедия
Используйте math.degrees() и math.radians() для преобразования между радианами (метод градуса дуги) и градусами (метод градуса).
Math.degrees() преобразует радианы в градусы, а math.radians() преобразует градусы в радианы.
print(math.degrees(math.pi))
# 180.0
print(math.radians(180))
# 3.141592653589793
Синус, обратный синус: math.sin(), math.asin()
Функция для нахождения синуса (sin) — math.sin(), а функция для нахождения обратного синуса (arcsin) — math.asin().
Вот пример нахождения синуса 30 градусов с использованием функции math.radians() для преобразования градусов в радианы.
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
Синус 30 градусов равен 0,5, но здесь есть ошибка, потому что пи, иррациональное число, не может быть вычислено точно.
Если вы хотите округлить до соответствующего количества цифр, используйте функцию round() или метод format() или функцию format().
Обратите внимание, что возвращаемое значение round() — это число (int или float), а возвращаемое значение format() — это строка. Если вы хотите использовать его для последующих вычислений, используйте round().
print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>
print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>
print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>
Функция round() указывает количество десятичных знаков в качестве второго аргумента. Обратите внимание, что это не совсем округление. Подробнее см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Округление десятичных и целых чисел в Python:
round()
,Decimal.quantize()
Метод format() и функция format() задают количество десятичных знаков в строке спецификации форматирования. Подробнее см. в следующей статье.
- СООТВЕТСТВУЮЩИЕ:Преобразование формата в Python, формат (0-заполнение, экспоненциальная нотация, шестнадцатеричная и т.д.)
Если вы хотите сравнить, вы также можете использовать math.isclose().
print(math.isclose(sin30, 0.5))
# True
Аналогично, вот пример нахождения обратного синуса 0,5. math.asin() возвращает радианы, которые преобразуются в градусы с помощью math.degrees().
asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996
print(round(asin05, 3))
# 30.0
косинус, обратный косинус: math.cos(), math.acos()
Функция для нахождения косинуса (cos) — math.cos(), а функция для нахождения обратного косинуса (arc cosine, arccos) — math.acos().
Вот пример нахождения косинуса 60 градусов и обратного косинуса 0,5.
print(math.cos(math.radians(60)))
# 0.5000000000000001
print(math.degrees(math.acos(0.5)))
# 59.99999999999999
Если вы хотите округлить до соответствующего разряда, вы можете использовать round() или format(), как в случае с синусом.
Тангенс, обратный тангенс: math.tan(), math.atan(), math.atan2()
Функция для нахождения тангенса (tan) — math.tan(), а функция для нахождения обратного тангенса (arctan) — math.atan() или math.atan2().
Math.atan2() будет описана позже.
Пример нахождения тангенса 45 градусов и обратного тангенса 1 градуса показан ниже.
print(math.tan(math.radians(45)))
# 0.9999999999999999
print(math.degrees(math.atan(1)))
# 45.0
Разница между math.atan() и math.atan2()
И math.atan(), и math.atan2() — это функции, возвращающие обратный тангенс, но они отличаются количеством аргументов и диапазоном возвращаемых значений.
math.atan(x) имеет один аргумент и возвращает arctan(x) в радианах. Возвращаемое значение будет находиться между -pi 2 и pi 2 (от -90 до 90 градусов).
print(math.degrees(math.atan(0)))
# 0.0
print(math.degrees(math.atan(1)))
# 45.0
print(math.degrees(math.atan(-1)))
# -45.0
print(math.degrees(math.atan(math.inf)))
# 90.0
print(math.degrees(math.atan(-math.inf)))
# -90.0
В приведенном выше примере math.inf представляет бесконечность.
math.atan2(y, x) имеет два аргумента и возвращает arctan(y x) в радианах. Этот угол — угол (склонение), который вектор от начала координат (x, y) составляет с положительным направлением оси x в полярной координатной плоскости, а возвращаемое значение находится в диапазоне от -pi до pi (от -180 до 180 градусов).
Поскольку углы во втором и третьем квадрантах также могут быть получены правильно, math.atan2() более подходит, чем math.atan() при рассмотрении полярной координатной плоскости.
Обратите внимание, что порядок аргументов — y, x, а не x, y.
print(math.degrees(math.atan2(0, 1)))
# 0.0
print(math.degrees(math.atan2(1, 1)))
# 45.0
print(math.degrees(math.atan2(1, 0)))
# 90.0
print(math.degrees(math.atan2(1, -1)))
# 135.0
print(math.degrees(math.atan2(0, -1)))
# 180.0
print(math.degrees(math.atan2(-1, -1)))
# -135.0
print(math.degrees(math.atan2(-1, 0)))
# -90.0
print(math.degrees(math.atan2(-1, 1)))
# -45.0
Как и в приведенном выше примере, отрицательное направление оси x (y равен нулю и x отрицателен) равно pi (180 градусов), но когда y равен отрицательному нулю, это -pi (-180 градусов). Будьте осторожны, если вы хотите строго обращаться со знаком.
print(math.degrees(math.atan2(-0.0, -1)))
# -180.0
Отрицательные нули являются результатом следующих операций
print(-1 / math.inf)
# -0.0
print(-1.0 * 0.0)
# -0.0
Целые числа не рассматриваются как отрицательные нули.
print(-0.0)
# -0.0
print(-0)
# 0
Даже если x и y равны нулю, результат зависит от знака.
print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0
print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0
print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0
print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0
Есть и другие примеры, где знак результата меняется в зависимости от отрицательных нулей, например, math.atan2(), а также math.sin(), math.asin(), math.tan() и math.atan().
print(math.sin(0.0))
# 0.0
print(math.sin(-0.0))
# -0.0
print(math.asin(0.0))
# 0.0
print(math.asin(-0.0))
# -0.0
print(math.tan(0.0))
# 0.0
print(math.tan(-0.0))
# -0.0
print(math.atan(0.0))
# 0.0
print(math.atan(-0.0))
# -0.0
print(math.atan2(0.0, 1.0))
# 0.0
print(math.atan2(-0.0, 1.0))
# -0.0
Обратите внимание, что приведенные примеры — это результаты выполнения программы в CPython. Обратите внимание, что другие реализации или среды могут по-другому обрабатывать отрицательные нули.