Izračunaj trigonometrijske funkcije u Pythonu (sin, cos, tan, arcsin, arccos, arctan)

Poslovanje

Koristeći matematiku, standardni Pythonov modul za matematičke funkcije, možete izračunati trigonometrijske funkcije (sin, cos, tan) i inverzne trigonometrijske funkcije (arcsin, arccos, arctan).

Sljedeći sadržaji su ovdje objašnjeni s uzorcima kodova.

  • Pi (3,1415926..):math.pi
  • Pretvorba kuta (radijani, stupnjevi):math.degrees(),math.radians()
  • Sinus, inverzni sinus:math.sin(),math.asin()
  • kosinus, inverzni kosinus:math.cos(),math.acos()
  • Tangenta, Inverzna tangenta:math.tan(),math.atan(),math.atan2()
  • Razlike u nastavku:math.atan(),math.atan2()

Pi (3,1415926..):math.pi

Pi se daje kao konstanta u matematičkom modulu. Izražava se na sljedeći način.
math.pi

import math

print(math.pi)
# 3.141592653589793

Pretvorba kuta (radijani, stupnjevi):math.degrees(),math.radians()

Trigonometrijske i inverzne trigonometrijske funkcije u modulu matematike koriste radijan kao jedinicu kuta.

Koristite math.degrees() i math.radians() za pretvaranje između radijana (metoda lučnih stupnjeva) i stupnjeva (metoda stupnjeva).

Math.degrees() pretvara iz radijana u stupnjeve, a math.radians() pretvara iz stupnjeva u radijane.

print(math.degrees(math.pi))
# 180.0

print(math.radians(180))
# 3.141592653589793

Sinus, inverzni sinus:math.sin(),math.asin()

Funkcija za pronalaženje sinusa (sin) je math.sin(), a funkcija za pronalaženje inverznog sinusa (arcsin) je math.asin().

Evo primjera pronalaženja sinusa od 30 stupnjeva, koristeći math.radians() za pretvaranje stupnjeva u radijane.

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

Sinus od 30 stupnjeva je 0,5, ali postoji pogreška jer se pi, iracionalan broj, ne može točno izračunati.

Ako želite zaokružiti na odgovarajući broj znamenki, koristite funkciju round() ili format() ili funkciju format().

Imajte na umu da je povratna vrijednost round() broj (int ili float), ali povratna vrijednost format() je niz. Ako ga želite koristiti za naknadne izračune, koristite 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() navodi broj decimalnih mjesta kao svoj drugi argument. Imajte na umu da ovo nije strogo zaokruživanje. Za detalje pogledajte sljedeći članak.

Metoda format() i funkcija format() određuju broj decimalnih mjesta u nizu specifikacije oblikovanja. Za detalje pogledajte sljedeći članak.

Ako želite usporediti, možete koristiti i math.isclose().

print(math.isclose(sin30, 0.5))
# True

Slično, ovdje je primjer pronalaženja inverznog sinusa od 0,5. math.asin() vraća radijane, koji se pretvaraju u stupnjeve pomoću math.degrees().

asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996

print(round(asin05, 3))
# 30.0

kosinus, inverzni kosinus:math.cos(),math.acos()

Funkcija za pronalaženje kosinusa (cos) je math.cos(), a funkcija za pronalaženje inverznog kosinusa (arc kosinus, arccos) je math.acos().

Evo primjera pronalaženja kosinusa od 60 stupnjeva i inverznog kosinusa od 0,5.

print(math.cos(math.radians(60)))
# 0.5000000000000001

print(math.degrees(math.acos(0.5)))
# 59.99999999999999

Ako želite zaokružiti na odgovarajuću znamenku, možete koristiti round() ili format() kao kod sinusa.

Tangenta, Inverzna tangenta:math.tan(),math.atan(),math.atan2()

Funkcija za pronalaženje tangente (tan) je math.tan(), a funkcija za pronalaženje inverzne tangente (arctan) je math.atan() ili math.atan2().
Math.atan2() opisan je kasnije.

Primjer pronalaženja tangente od 45 stupnjeva i inverzne tangente od 1 stupnja prikazan je u nastavku.

print(math.tan(math.radians(45)))
# 0.9999999999999999

print(math.degrees(math.atan(1)))
# 45.0

Razlika između math.atan() i math.atan2()

I math.atan() i math.atan2() su funkcije koje vraćaju inverznu tangentu, ali se razlikuju po broju argumenata i rasponu povratnih vrijednosti.

math.atan(x) ima jedan argument i vraća arctan(x) u radijanima. Povratna vrijednost bit će između -pi \ 2 i pi \ 2 (-90 do 90 stupnjeva).

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

U gornjem primjeru, math.inf predstavlja beskonačnost.

math.atan2(y, x) ima dva argumenta i vraća arctan(y \ x) u radijanima. Ovaj kut je kut (deklinacija) koji vektor od ishodišta do koordinata (x, y) čini s pozitivnim smjerom osi x u polarnoj koordinatnoj ravnini, a vraćena vrijednost je između -pi i pi (-180 do 180 stupnjeva).

Budući da se kutovi u drugom i trećem kvadrantu također mogu ispravno dobiti, math.atan2() je prikladniji od math.atan() kada se razmatra polarna koordinatna ravnina.

Imajte na umu da je redoslijed argumenata y, x, a 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

Kao u gornjem primjeru, negativni smjer osi x (y je nula, a x je negativan) je pi (180 stupnjeva), ali kada je y negativna nula, to je -pi (-180 stupnjeva). Budite oprezni ako želite strogo postupati sa znakom.

print(math.degrees(math.atan2(-0.0, -1)))
# -180.0

Negativne nule rezultat su sljedećih operacija

print(-1 / math.inf)
# -0.0

print(-1.0 * 0.0)
# -0.0

Cijeli brojevi se ne tretiraju kao negativne nule.

print(-0.0)
# -0.0

print(-0)
# 0

Čak i kada su i x i y nula, rezultat ovisi o predznaku.

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

Postoje i drugi primjeri u kojima se predznak rezultata mijenja ovisno o negativnim nulama, kao što su math.atan2() kao i math.sin(), math.asin(), math.tan() i 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

Imajte na umu da su dosadašnji primjeri rezultati pokretanja programa u CPythonu. Imajte na umu da druge implementacije ili okruženja mogu drugačije rukovati negativnim nulama.

Copied title and URL