Z uporabo math, Pythonovega standardnega modula za matematične funkcije, lahko izračunate trigonometrične funkcije (sin, cos, tan) in inverzne trigonometrične funkcije (arcsin, arccos, arctan).
Naslednja vsebina je razložena z vzorčnimi kodami.
- Pi (3,1415926..):
math.pi
- Pretvorba kotov (radiani, stopinje):
math.degrees()
,math.radians()
- Sinus, inverzni sinus:
math.sin()
,math.asin()
- kosinus, obratni kosinus:
math.cos()
,math.acos()
- Tangens, Inverzni tangens:
math.tan()
,math.atan()
,math.atan2()
- Razlike v nadaljevanju:
math.atan()
,math.atan2()
Pi (3,1415926..): math.pi
Pi je v matematičnem modulu na voljo kot konstanta. Izražena je na naslednji način.math.pi
import math
print(math.pi)
# 3.141592653589793
Pretvorba kotov (radiani, stopinje): math.degrees(), math.radians()
Trigonometrične in inverzne trigonometrične funkcije v matematičnem modulu uporabljajo radian kot enoto za kot.
Uporabite math.degrees() in math.radians() za pretvorbo med radiani (metoda loka stopinj) in stopinjami (metoda stopinj).
Math.degrees() pretvarja iz stopinj v radiane, math.radians() pa iz stopinj v radiane.
print(math.degrees(math.pi))
# 180.0
print(math.radians(180))
# 3.141592653589793
Sinus, inverzni sinus: math.sin(), math.asin()
Funkcija za iskanje sinusa (sin) je math.sin(), funkcija za iskanje obratnega sinusa (arcsin) pa je math.asin().
Tukaj je primer iskanja sinusa 30 stopinj z uporabo funkcije math.radians() za pretvorbo stopinj v radiane.
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
Sinus 30 stopinj je 0,5, vendar gre za napako, saj pi, iracionalnega števila, ni mogoče natančno izračunati.
Če želite zaokrožiti na ustrezno število števk, uporabite funkcijo round() ali metodo format() ali funkcijo format().
Upoštevajte, da je povratna vrednost funkcije round() število (int ali float), povratna vrednost funkcije format() pa je niz. Če jo želite uporabiti za nadaljnje izračune, uporabite funkcijo 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'>
Funkcija round() kot drugi argument določi število decimalnih mest. Upoštevajte, da ne gre za zaokroževanje v pravem pomenu besede. Za podrobnosti glejte naslednji članek.
Metoda format() in funkcija format() določata število decimalnih mest v nizu specifikacije formatiranja. Za podrobnosti glejte naslednji članek.
- POVEZANO:Pretvorba formata v Pythonu, format (polnjenje 0, eksponentni zapis, šestnajstiški zapis itd.)
Če želite primerjati, lahko uporabite tudi math.isclose().
print(math.isclose(sin30, 0.5))
# True
Podobno je tu primer iskanja obratnega sinusa 0,5. Math.asin() vrne radiane, ki jih z math.degrees() pretvorimo v stopinje.
asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996
print(round(asin05, 3))
# 30.0
kosinus, obratni kosinus: math.cos(), math.acos()
Funkcija za iskanje kosinusa (cos) je math.cos(), funkcija za iskanje obratnega kosinusa (arccos) pa je math.acos().
Tukaj je primer iskanja kosinusa 60 stopinj in obratnega kosinusa 0,5.
print(math.cos(math.radians(60)))
# 0.5000000000000001
print(math.degrees(math.acos(0.5)))
# 59.99999999999999
Če želite zaokrožiti na ustrezno število, lahko uporabite round() ali format() kot pri sinusu.
Tangens, Inverzni tangens: math.tan(), math.atan(), math.atan2()
Funkcija za iskanje tangensa (tan) je math.tan(), funkcija za iskanje obratnega tangensa (arctan) pa je math.atan() ali math.atan2().
Math.atan2() je opisana pozneje.
Primer iskanja tangente 45 stopinj in obratne tangente 1 stopinje je prikazan spodaj.
print(math.tan(math.radians(45)))
# 0.9999999999999999
print(math.degrees(math.atan(1)))
# 45.0
Razlika med math.atan() in math.atan2()
Funkciji math.atan() in math.atan2() vračata inverzni tangens, vendar se razlikujeta po številu argumentov in obsegu vrnjenih vrednosti.
Math.atan(x) ima en argument in vrne arctan(x) v radianih. Vrnjena vrednost bo med -pi \ 2 in pi \ 2 (-90 do 90 stopinj).
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
V zgornjem primeru math.inf predstavlja neskončnost.
Math.atan2(y, x) ima dva argumenta in vrne arctan(y \ x) v radianih. Ta kot je kot (deklinacija), ki ga vektor od izvora do koordinat (x, y) tvori s pozitivno smerjo osi x v polarni koordinatni ravnini, vrnjena vrednost pa je med -pi in pi (-180 do 180 stopinj).
Ker lahko pravilno dobimo tudi kote v drugem in tretjem kvadrantu, je funkcija math.atan2() primernejša od math.atan() pri obravnavi polarne koordinatne ravnine.
Upoštevajte, da je vrstni red argumentov y, x in ne 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
Kot v zgornjem primeru je negativna smer osi x (y je nič in x je negativen) pi (180 stopinj), ko pa je y negativen, je -pi (-180 stopinj). Bodite previdni, če želite strogo ravnati z znakom.
print(math.degrees(math.atan2(-0.0, -1)))
# -180.0
Negativne ničle so rezultat naslednjih operacij
print(-1 / math.inf)
# -0.0
print(-1.0 * 0.0)
# -0.0
Celoštevilke se ne obravnavajo kot negativne ničle.
print(-0.0)
# -0.0
print(-0)
# 0
Tudi če sta x in y enaka nič, je rezultat odvisen od predznaka.
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
Obstajajo tudi drugi primeri, kjer se znak rezultata spremeni glede na negativne ničle, na primer math.atan2() ter math.sin(), math.asin(), math.tan() in 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
Upoštevajte, da so dosedanji primeri rezultati izvajanja programa v CPythonu. Upoštevajte, da lahko druge izvedbe ali okolja negativne ničle obravnavajo drugače.