В этом уроке мы собираемся обсудить тригонометрическую функцию косинуса(cos) в Python. Мы поговорим о модулях, которые мы можем использовать для реализации функции cos в нашей программе Python. Мы также узнаем о построении графиков с помощью функции cos в программе. Итак, давайте начнем с рассмотрения модулей, которые мы можем импортировать в программу для использования функции cos.
В Python у нас есть математический модуль, который мы можем использовать для импорта и реализации функции cos, а также других важных математических операций в программе.
Помимо математического модуля, мы также можем использовать модуль numpy Python для реализации функции cos в программе. Мы изучим использование обоих модулей, т. е. модуля math и модуля numpy.
Метод 1: функция cos() в модуле math
Математический модуль Python содержит ряд важных математических значений и операций, и функция cos() является одной из них. Мы можем использовать функцию cos() модуля math для реализации тригонометрического значения cos в программе.
Функция math.cos() возвращает значение тригонометрического косинуса для аргумента, который мы указываем внутри функции, т. е. значение степени в косинусе. Значение, которое мы даем в качестве аргумента функции, должно быть в радианах.
Ниже приведен синтаксис использования функции math.cos() в программе Python:
math.cos(a)
Параметры: Здесь параметр a = значение в радианах.
Возвращаемое значение: функция math.cos() возвращает значение косинуса для аргумента ‘a’ в радианах, которое мы указали внутри функции.
Давайте разберемся с использованием функции cos() модуля math в Python с помощью следующего примера программы:
# Import math module import math # Define an input radian value x = math.pi / 12 # Printing cosine value for respective input value print("The cosine value of pi / 12 value as given is : ", end ="") print(math.cos(x))
Выход:
The cosine value of pi / 12 value as given is: 0.9659258262890683
Метод 2: функция cos() в модуле Numpy
Помимо математического модуля, мы также можем использовать модуль numpy для реализации значения тригонометрического косинуса в программе. Для этого нам предоставляется функция cos() внутри модуля numpy, которая дает нам математическое значение косинуса на выходе.
Как и функция math.cos(), при использовании функции cos() модуля numpy мы должны указать значение аргумента в радианах внутри функции.
Ниже приведен синтаксис использования функции numpy.cos() в программе Python:
numpy.cos(a)
Параметры: мы можем указать ‘a’ в качестве следующих типов параметров внутри функции numpy.cos():
- В функции можно указать аргумент с одним значением в радианах.
- Мы также можем предоставить массив, содержащий несколько значений в радианах, в качестве аргумента функции.
Тип возвращаемого значения: функция numpy.cos() возвращает значения косинуса заданного числа.
Давайте разберемся с использованием функции cos() модуля numpy в Python с помощью следующего примера программы:
# importing numpy module as jtp in program import numpy as jtp # defining multiple input values in a single array ValArray = [0, jtp.pi / 4, jtp.pi / 7, jtp.pi/9, jtp.pi/12, jtp.pi/5] # printing input array in output print("Values given in the input array: n", ValArray) # using cos() function to get cosine values CosArray = jtp.cos(ValArray) # printing cos values in output print("nRespective Cosine values for input array values: n", CosArray)
Выход:
Values given in the input array: [0, 0.7853981633974483, 0.4487989505128276, 0.3490658503988659, 0.2617993877991494, 0.6283185307179586] Respective Cosine values for input array values: [1. 0.70710678 0.90096887 0.93969262 0.96592583 0.80901699]
Построение графика значений косинуса
До сих пор мы изучали использование функции cos() для модулей numpy и math внутри программы Python. Теперь мы будем использовать модули numpy и math, а также функцию cos() для построения графика значений косинуса. Мы можем сделать это графическое представление двумя способами:
- Прямой импорт и реализация функции cos() и модуля numpy & math.
- Итерация по функции cos() с модулем numpy и math.
Давайте разберемся в реализации обоих методов, используя их в программе Python и построив графики с ними на выходе.
Пример 1: Прямой импорт и реализация функции cos() и модуля numpy & math.
# importing numpy module as jtp import numpy as jtp # importing matplotlib module as mlt import matplotlib.pyplot as mlt # Defining an array containing radian values RadValArray = jtp.linspace(-(2*jtp.pi), 2*jtp.pi, 20) # cosine values for respective array value CosValArray = jtp.cos(RadValArray) # printing values in output print("Radian values in the array: ", RadValArray) print("nRespective cos values of array: ", CosValArray) # using plot() function with variables mlt.plot(RadValArray, CosValArray, color = 'blue', marker = "*") mlt.title("Graphical representation of cos function") mlt.xlabel("X-axis") mlt.ylabel("Y-axis") # plotting graph in output mlt.show()
Выход:
Radian values in the array: [-6.28318531 -5.62179738 -4.96040945 -4.29902153 -3.6376336 -2.97624567 -2.31485774 -1.65346982 -0.99208189 -0.33069396 0.33069396 0.99208189 1.65346982 2.31485774 2.97624567 3.6376336 4.29902153 4.96040945 5.62179738 6.28318531] Respective cos values of array: [ 1. 0.78914051 0.24548549 -0.40169542 -0.87947375 -0.9863613 -0.67728157 -0.08257935 0.54694816 0.94581724 0.94581724 0.54694816 -0.08257935 -0.67728157 -0.9863613 -0.87947375 -0.40169542 0.24548549 0.78914051 1. ]
Пример 2: Итерация по функции cos() с модулем numpy и math.
# importing math module import math # importing numpy module as jtp import numpy as jtp # importing matplotlib module as mlt import matplotlib.pyplot as mlt # Defining an array containing radian values RadValArray = jtp.linspace(-(2*jtp.pi), 2*jtp.pi, 20) # Empty array for cosine values CosValArray = [] #Iterating over the cos values array for j in range(len(RadValArray)): CosValArray.append(math.cos(RadValArray[j])) j += 1 # printing respective values in output print("Radian values in the array: ", RadValArray) print("nRespective cos values of array: ", CosValArray) # using plot() function with variables mlt.plot(RadValArray, CosValArray, color = 'orange', marker = "+") mlt.title("Graphical representation of cos function") mlt.xlabel("X-axis") mlt.ylabel("Y-axis") # plotting graph in output mlt.show()
Выход:
Radian values in the array: [-6.28318531 -5.62179738 -4.96040945 -4.29902153 -3.6376336 -2.97624567 -2.31485774 -1.65346982 -0.99208189 -0.33069396 0.33069396 0.99208189 1.65346982 2.31485774 2.97624567 3.6376336 4.29902153 4.96040945 5.62179738 6.28318531] Respective cos values of array: [1.0, 0.7891405093963934, 0.2454854871407988, -0.40169542465296987, -0.8794737512064891, -0.9863613034027223, -0.6772815716257412, -0.08257934547233249, 0.5469481581224268, 0.9458172417006346, 0.9458172417006346, 0.5469481581224268, -0.0825793454723316, -0.6772815716257405, -0.9863613034027223, -0.8794737512064893, -0.40169542465296987, 0.2454854871407988, 0.7891405093963934, 1.0]
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
В этом разделе представлены тригонометрические функции модуля 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-мерных точек. Раньше поддерживался только двумерный случай.
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
In Python, math module contains a number of mathematical operations, which can be performed with ease using the module. math.cos()
function returns the cosine of value passed as argument. The value passed in this function should be in radians.
Syntax: math.cos(x)
Parameter:
x : value to be passed to cos()Returns: Returns the cosine of value passed as argument
Code #1:
import
math
a
=
math.pi
/
6
print
(
"The value of cosine of pi / 6 is : "
, end
=
"")
print
(math.cos(a))
Output:
The value of cosine of pi/6 is : 0.8660254037844387
Code #2:
import
math
import
numpy as np
import
matplotlib.pyplot as plt
in_array
=
np.linspace(
-
(
2
*
np.pi),
2
*
np.pi,
20
)
out_array
=
[]
for
i
in
range
(
len
(in_array)):
out_array.append(math.cos(in_array[i]))
i
+
=
1
print
(
"in_array : "
, in_array)
print
(
"nout_array : "
, out_array)
plt.plot(in_array, out_array, color
=
'red'
, marker
=
"o"
)
plt.title(
"math.cos()"
)
plt.xlabel(
"X"
)
plt.ylabel(
"Y"
)
plt.show()
Output:
in_array : [-6.28318531 -5.62179738 -4.96040945 -4.29902153 -3.6376336 -2.97624567
-2.31485774 -1.65346982 -0.99208189 -0.33069396 0.33069396 0.99208189
1.65346982 2.31485774 2.97624567 3.6376336 4.29902153 4.96040945
5.62179738 6.28318531]out_array : [1.0, 0.7891405093963934, 0.2454854871407988, -0.40169542465296987, -0.8794737512064891, -0.9863613034027223, -0.6772815716257412, -0.08257934547233249, 0.5469481581224268, 0.9458172417006346, 0.9458172417006346, 0.5469481581224268, -0.0825793454723316, -0.6772815716257405, -0.9863613034027223, -0.8794737512064893, -0.40169542465296987, 0.2454854871407988, 0.7891405093963934, 1.0]
Last Updated :
20 Mar, 2019
Like Article
Save Article
Модуль math – один из наиважнейших в Python. Этот модуль предоставляет обширный функционал для работы с числами.
math.ceil(X) – округление до ближайшего большего числа.
math.copysign(X, Y) — возвращает число, имеющее модуль такой же, как и у числа X, а знак — как у числа Y.
math.fabs(X) — модуль X.
math.factorial(X) — факториал числа X.
math.floor(X) — округление вниз.
math.fmod(X, Y) — остаток от деления X на Y.
math.frexp(X) — возвращает мантиссу и экспоненту числа.
math.ldexp(X, I) — X * 2i. Функция, обратная функции math.frexp().
math.fsum(последовательность) — сумма всех членов последовательности. Эквивалент встроенной функции sum(), но math.fsum() более точна для чисел с плавающей точкой.
math.isfinite(X) — является ли X числом.
math.isinf(X) — является ли X бесконечностью.
math.isnan(X) — является ли X NaN (Not a Number — не число).
math.modf(X) — возвращает дробную и целую часть числа X. Оба числа имеют тот же знак, что и X.
math.trunc(X) — усекает значение X до целого.
math.exp(X) — eX.
math.expm1(X) — eX — 1. При X → 0 точнее, чем math.exp(X)-1.
math.log(X, [base]) — логарифм X по основанию base. Если base не указан, вычисляется натуральный логарифм.
math.log1p(X) — натуральный логарифм (1 + X). При X → 0 точнее, чем math.log(1+X).
math.log10(X) — логарифм X по основанию 10.
math.log2(X) — логарифм X по основанию 2.
math.pow(X, Y) — XY.
math.sqrt(X) — квадратный корень из X.
math.acos(X) — арккосинус X. В радианах.
math.asin(X) — арксинус X. В радианах.
math.atan(X) — арктангенс X. В радианах.
math.atan2(Y, X) — арктангенс Y/X. В радианах. С учетом четверти, в которой находится точка (X, Y).
math.cos(X) — косинус X (X указывается в радианах).
math.sin(X) — синус X (X указывается в радианах).
math.tan(X) — тангенс X (X указывается в радианах).
math.hypot(X, Y) — вычисляет гипотенузу треугольника с катетами X и Y (math.sqrt(x * x + y * y)).
math.degrees(X) — конвертирует радианы в градусы.
math.radians(X) — конвертирует градусы в радианы.
math.cosh(X) — вычисляет гиперболический косинус.
math.sinh(X) — вычисляет гиперболический синус.
math.tanh(X) — вычисляет гиперболический тангенс.
math.acosh(X) — вычисляет обратный гиперболический косинус.
math.asinh(X) — вычисляет обратный гиперболический синус.
math.atanh(X) — вычисляет обратный гиперболический тангенс.
math.erf(X) — функция ошибок.
math.erfc(X) — дополнительная функция ошибок (1 — math.erf(X)).
math.gamma(X) — гамма-функция X.
math.lgamma(X) — натуральный логарифм гамма-функции X.
math.pi — pi = 3,1415926…
math.e — e = 2,718281…
Используя 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. Обратите внимание, что другие реализации или среды могут по-другому обрабатывать отрицательные нули.