Trigonomeetriliste funktsioonide arvutamine Pythonis (sin, cos, tan, arcsin, arccos, arctan)

Äri

Pythoni matemaatiliste funktsioonide standardmooduli math abil saab arvutada trigonomeetrilisi funktsioone (sin, cos, tan) ja pöördtrigonomeetrilisi funktsioone (arcsin, arccos, arctan).

Järgnevat sisu selgitatakse siin koos näidiskoodidega.

  • Pi (3.1415926..):math.pi
  • Nurkade teisendamine (radiaanid, kraadid):math.degrees(),math.radians()
  • Sinus, pöördsinus:math.sin(),math.asin()
  • kosinus, pöördkosinus:math.cos(),math.acos()
  • Tangent, pöördtangent:math.tan(),math.atan(),math.atan2()
  • Erinevused allpool:math.atan(),math.atan2()

Pi (3.1415926..): math.pi

Pii on matemaatikamoodulis esitatud konstandina. Seda väljendatakse järgmiselt.
math.pi

import math

print(math.pi)
# 3.141592653589793

Nurkade teisendamine (radiaanid, kraadid): math.degrees(), math.radians()

Matemaatikamooduli trigonomeetrilised ja pöördtrigonomeetrilised funktsioonid kasutavad nurgaühikuna radiaani.

Kasutage math.degrees() ja math.radians(), et teisendada radiaanide (kaarekraadimeetod) ja kraadide (kraadimeetod) vahel.

Math.degrees() teisendab radiaanid kraadideks ja math.radians() teisendab kraadid radiaanideks.

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

print(math.radians(180))
# 3.141592653589793

Sinus, pöördsinus: math.sin(), math.asin()

Funktsioon siinuse (sin) leidmiseks on math.sin() ja funktsioon pöördsinuse (arcsin) leidmiseks on math.asin().

Siin on näide 30 kraadi siinuse leidmiseks, kasutades math.radians() funktsiooni, et teisendada kraadid radiaanideks.

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

30 kraadi sinus on 0,5, kuid siin on viga, sest pi, mis on irratsionaalne arv, ei ole võimalik täpselt arvutada.

Kui soovite ümardada sobiva arvu numbriteni, kasutage funktsiooni round() või meetodit format() või funktsiooni format().

Pange tähele, et round() tagastusväärtus on arv (int või float), kuid format() tagastusväärtus on string. Kui soovite seda kasutada järgnevates arvutustes, kasutage 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'>

Funktsioon round() määrab teise argumendina kümnendkohtade arvu. Pange tähele, et see ei ole rangelt ümardamine. Vaata üksikasju järgmises artiklis.

Meetodiga format() ja funktsiooniga format() saab määrata kümnendkohtade arvu vormindusnimekirjas. Üksikasjalikumalt vt järgmist artiklit.

Kui soovite võrrelda, võite kasutada ka funktsiooni math.isclose().

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

Samamoodi on siin näide 0,5 pöördsinuse leidmise kohta. math.asin() tagastab radiaanid, mis teisendatakse kraadideks math.degrees() abil.

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

print(round(asin05, 3))
# 30.0

kosinus, pöördkosinus: math.cos(), math.acos()

Funktsioon kosinuse (cos) leidmiseks on math.cos() ja funktsioon pöördkosinuse (arc cosinus, arccos) leidmiseks on math.acos().

Siin on näide 60 kraadi kosinuse ja 0,5 pöördkosinuse leidmise kohta.

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

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

Kui soovite ümardada sobiva numbrini, võite kasutada funktsiooni round() või format(), nagu siinuse puhul.

Tangent, pöördtangent: math.tan(), math.atan(), math.atan2()

Tangendi (tan) leidmiseks on funktsioon math.tan() ja pöördtangendi (arctan) leidmiseks on funktsioon math.atan() või math.atan2().
Math.atan2() on kirjeldatud hiljem.

Allpool on esitatud näide 45-kraadise puutuja ja 1-kraadise pöördtangendi leidmise kohta.

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

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

Erinevus math.atan() ja math.atan2() vahel

Nii math.atan() kui ka math.atan2() on funktsioonid, mis annavad tagasi pöördtangendi, kuid nad erinevad argumentide arvu ja tagastatavate väärtuste vahemiku poolest.

math.atan(x) on ühe argumendiga ja tagastab arctan(x) radiaanides. Tagastatav väärtus jääb vahemikku -pi \ 2 ja pi \ 2 (-90 kuni 90 kraadi).

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

Ülaltoodud näites tähistab math.inf lõpmatust.

math.atan2(y, x) omab kahte argumenti ja annab tagasi arctan(y \ x) radiaanides. See nurk on nurk (deklinatsioon), mille vektor algpunktist koordinaatidesse (x, y) moodustab polaarkoordinaattasapinna x-telje positiivse suunaga, ja tagastatav väärtus jääb vahemikku -pi ja pi (-180 kuni 180 kraadi).

Kuna ka teise ja kolmanda kvadrandi nurgad saab korrektselt kätte, on polaarkoordinaattasapinna käsitlemisel math.atan2() sobivam kui math.atan().

Pange tähele, et argumentide järjekord on y, x, mitte 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

Nagu ülaltoodud näites, on x-telje negatiivne suund (y on null ja x on negatiivne) pi (180 kraadi), kuid kui y on negatiivne null, on see -pi (-180 kraadi). Olge ettevaatlik, kui tahate rangelt märke käsitleda.

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

Negatiivsed nullid on järgmiste operatsioonide tulemus

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

print(-1.0 * 0.0)
# -0.0

Tervikuid ei käsitleta negatiivsete nullidena.

print(-0.0)
# -0.0

print(-0)
# 0

Isegi kui nii x kui ka y on null, sõltub tulemus märgist.

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

On ka teisi näiteid, kus tulemuse märk muutub sõltuvalt negatiivsetest nullidest, näiteks math.atan2() ning math.sin(), math.asin(), math.tan() ja 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

Pange tähele, et senised näited on programmi käivitamise tulemused CPythonis. Pange tähele, et teised rakendused või keskkonnad võivad negatiivseid nulle erinevalt käsitleda.

Copied title and URL