Reiknaðu hornafræðiföll í Python (sin, cos, tan, arcsin, arccos, arctan)

Viðskipti

Með því að nota stærðfræði, staðlaða einingu Python fyrir stærðfræðilegar aðgerðir, er hægt að reikna hornafræðiföll (sin, cos, tan) og andhverfa hornafræðiföll (arcsin, arccos, arctan).

Eftirfarandi innihald er útskýrt hér með sýnishornskóðum.

  • Pi (3.1415926..):math.pi
  • Hornabreyting (radíön, gráður):math.degrees(),math.radians()
  • Sínus, öfugt sinus:math.sin(),math.asin()
  • kósínus, andhverfur kósínus:math.cos(),math.acos()
  • Tangent, andhverfur tangens:math.tan(),math.atan(),math.atan2()
  • Mismunur hér að neðan:math.atan(),math.atan2()

Pi (3.1415926..):math.pi

Pi er gefið upp sem fasti í stærðfræðieiningunni. Það kemur fram sem hér segir.
math.pi

import math

print(math.pi)
# 3.141592653589793

Hornabreyting (radíön, gráður):math.degrees(),math.radians()

Trigonometric og andhverf trigonometric föll í stærðfræðieiningunni nota radian sem horneiningu.

Notaðu math.degrees() og math.radians() til að breyta á milli radíana (bogagráðuaðferð) og gráður (gráðuaðferð).

Math.degrees() breytir úr radíönum í gráður og math.radians() breytir úr gráðum í radíönum.

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

print(math.radians(180))
# 3.141592653589793

Sínus, öfugt sinus:math.sin(),math.asin()

Fallið til að finna sinus (sin) er math.sin() og fallið til að finna andhverfu sinus (arcsin) er math.asin().

Hér er dæmi um að finna sinus fyrir 30 gráður, með því að nota math.radians() til að breyta gráðum í radíana.

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

Sínus 30 gráður er 0,5, en það er villa vegna þess að pí, óræð tala, er ekki hægt að reikna nákvæmlega út.

Ef þú vilt námunda að viðeigandi fjölda tölustafa, notaðu round() aðgerðina eða format() aðferðina eða format() aðgerðina.

Athugaðu að skilgildi round() er tala (int eða flot), en skilgildi format() er strengur. Ef þú vilt nota það fyrir síðari útreikninga skaltu nota 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() fallið tilgreinir fjölda aukastafa sem önnur rök. Athugið að þetta er ekki nákvæmlega námundun. Sjá eftirfarandi grein fyrir frekari upplýsingar.

Format() aðferðin og format() fallið tilgreina fjölda aukastafa í forskriftarstrengnum. Sjá eftirfarandi grein fyrir frekari upplýsingar.

Ef þú vilt bera saman geturðu líka notað math.isclose().

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

Á sama hátt er hér dæmi um að finna andhverfu sinus 0,5. math.asin() skilar radíönum, sem er breytt í gráður með math.degrees().

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

print(round(asin05, 3))
# 30.0

kósínus, andhverfur kósínus:math.cos(),math.acos()

Fallið til að finna kósínus (cos) er math.cos(), og fallið til að finna andhverfu kósínus (bogakósínus, arccos) er math.acos().

Hér er dæmi um að finna kósínus 60 gráður og andhverfa kósínus 0,5.

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

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

Ef þú vilt námunda að viðeigandi tölustaf geturðu notað round() eða format() eins og með sinus.

Tangent, andhverfur tangens:math.tan(),math.atan(),math.atan2()

Fallið til að finna snertilinn (tan) er math.tan(), og fallið til að finna andhverfu snertilinn (arctan) er math.atan() eða math.atan2().
Math.atan2() er lýst síðar.

Dæmi um að finna snertilinn 45 gráður og andhverfu snertilinn 1 gráðu er sýnt hér að neðan.

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

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

Munurinn á math.atan() og math.atan2()

Bæði math.atan() og math.atan2() eru föll sem skila andhverfu snertil, en þau eru mismunandi hvað varðar fjölda frumbreyta og svið skilgilda.

math.atan(x) hefur ein rök og skilar arctan(x) í radíönum. Skilagildið verður á milli -pi \ 2 og pi \ 2 (-90 til 90 gráður).

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

Í dæminu hér að ofan táknar math.inf óendanleikann.

math.atan2(y, x) hefur tvö rök og skilar arctan(y \ x) í radíönum. Þetta horn er hornið (halli) sem vigur frá uppruna að hnitum (x, y) gerir með jákvæðri stefnu x-ássins í pólhnitaplaninu, og skilað gildi er á milli -pi og pí (-180 í 180 gráður).

Þar sem einnig er hægt að fá horn í öðrum og þriðja fjórðungi á réttan hátt, hentar math.atan2() betur en math.atan() þegar litið er á pólhnitaplanið.

Athugaðu að röð röksemda er y, x, ekki 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

Eins og í dæminu hér að ofan er neikvæð stefna x-ássins (y er núll og x er neikvæð) pí (180 gráður), en þegar y er neikvætt núll er það -pi (-180 gráður). Vertu varkár ef þú vilt meðhöndla skiltið stranglega.

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

Neikvæð núll eru afleiðing af eftirfarandi aðgerðum

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

print(-1.0 * 0.0)
# -0.0

Ekki er farið með heilar tölur sem neikvæðar núll.

print(-0.0)
# -0.0

print(-0)
# 0

Jafnvel þegar bæði x og y eru núll, fer niðurstaðan eftir formerkinu.

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

Það eru önnur dæmi þar sem merki niðurstöðunnar breytist eftir neikvæðum núllum, eins og math.atan2() sem og math.sin(), math.asin(), math.tan() og 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

Athugaðu að dæmin hingað til eru niðurstöður þess að keyra forritið í CPython. Athugaðu að aðrar útfærslur eða umhverfi gætu meðhöndlað neikvæð núll á annan hátt.

Copied title and URL