Python тілінде тригонометриялық функцияларды есептеу (sin, cos, tan, arcsin, arccos, arctan)

Іскерлік

Python-ның математикалық функцияларға арналған стандартты модулі математиканы пайдалана отырып, тригонометриялық функцияларды (sin, cos, tan) және кері тригонометриялық функцияларды (arcsin, arccos, arctan) есептеуге болады.

Төмендегі мазмұн осы жерде үлгі кодтарымен түсіндіріледі.

  • 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().

Мұнда градустарды радианға түрлендіру үшін math.radians() көмегімен 30 градустың синусын табудың мысалы берілген.

sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994

30 градустың синусы 0,5-ке тең, бірақ қате бар, себебі иррационалдық саны pi, дәл есептеу мүмкін емес.

Тиісті сандар санына дейін дөңгелектеуді қаласаңыз, round() функциясын немесе 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() функциясы екінші аргументі ретінде ондық таңбалардың санын көрсетеді. Бұл қатаң дөңгелектеу емес екенін ескеріңіз. Мәліметтер алу үшін келесі мақаланы қараңыз.

Format() әдісі мен format() функциясы пішімдеу спецификациясының жолындағы ондық таңбалардың санын көрсетеді. Мәліметтер алу үшін келесі мақаланы қараңыз.

Салыстыру керек болса, 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(), ал кері косинусты табу функциясы (cos доғасы, 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) полярлық координаталық жазықтықтағы х осінің оң бағытымен жасайтын бұрышы (кемуі), ал қайтарылған мән -pi мен pi (-180) аралығында болады. 180 градусқа дейін).

Екінші және үшінші ширектердегі бұрыштарды да дұрыс алуға болатындықтан, полярлық координаталық жазықтықты қарастырғанда math.atan2() math.atan() қарағанда орындырақ.

Аргументтердің реті х, у емес, у, х екенін ескеріңіз.

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

Жоғарыдағы мысалдағыдай, х осінің теріс бағыты (y – нөл және х теріс) pi (180 градус), бірақ у теріс нөл болғанда, ол -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 пен у нөлге тең болса да, нәтиже таңбаға байланысты.

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-да іске қосудың нәтижелері екенін ескеріңіз. Басқа іске асырулар немесе орталар теріс нөлдерді басқаша өңдеуі мүмкін екенін ескеріңіз.

Copied title and URL