Выкарыстоўваючы матэматыку, стандартны модуль Python для матэматычных функцый, вы можаце вылічыць трыганаметрычныя функцыі (sin, cos, tan) і адваротныя трыганаметрычныя функцыі (arcsin, arccos, arctan).
Наступнае змест тлумачыцца тут з узорамі кодаў.
- Пі (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()
Пі (3.1415926..):math.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() у якасці другога аргумента вызначае колькасць знакаў пасля коскі. Звярніце ўвагу, што гэта не строга акругленне. Больш падрабязную інфармацыю глядзіце ў наступным артыкуле.
Метад 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(), а функцыяй для знаходжання адваротнага косінуса (арккосінус, 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. Звярніце ўвагу, што іншыя рэалізацыі або асяроддзя могуць апрацоўваць адмоўныя нулі па-рознаму.