Kukokotoa vipengele vya trigonometric katika Python (sin, cos, tan, arcsin, arccos, arctan)

Biashara

Kwa kutumia hesabu, moduli ya kawaida ya Python ya utendaji wa hisabati, unaweza kukokotoa kazi za trigonometric (sin, cos, tan) na vitendakazi kinyume cha trigonometric (arcsin, arccos, arctan).

Yaliyomo yafuatayo yamefafanuliwa hapa kwa sampuli za misimbo.

  • Pi (3.1415926..):math.pi
  • Ubadilishaji wa pembe (radiani, digrii):math.degrees(),math.radians()
  • Sine, Inverse sine:math.sin(),math.asin()
  • cosine, kosine inverse:math.cos(),math.acos()
  • Tanji, tanjiti Inverse:math.tan(),math.atan(),math.atan2()
  • Tofauti hapa chini:math.atan(),math.atan2()

Pi (3.1415926..):math.pi

Pi hutolewa kama kawaida katika moduli ya hesabu. Inaonyeshwa kama ifuatavyo.
math.pi

import math

print(math.pi)
# 3.141592653589793

Ubadilishaji wa pembe (radiani, digrii):math.degrees(),math.radians()

Vitendaji vya trigonometric na kinyume cha trigonometriki katika moduli ya hesabu hutumia radian kama kitengo cha pembe.

Tumia math.degrees() na math.radians() kubadilisha kati ya radiani (mbinu ya digrii ya arc) na digrii (mbinu ya digrii).

Math.digrii() hubadilisha kutoka radiani hadi digrii, na math.radians() hubadilika kutoka digrii hadi radiani.

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

print(math.radians(180))
# 3.141592653589793

Sine, Inverse sine:math.sin(),math.asin()

Chaguo la kukokotoa la kupata sine (dhambi) ni math.sin() na chaguo la kukokotoa la kupata sine (arcsin) kinyume ni math.asin().

Huu hapa ni mfano wa kupata sine ya digrii 30, kwa kutumia math.radians() kubadilisha digrii hadi radiani.

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

Sini ya nyuzi 30 ni 0.5, lakini kuna hitilafu kwa sababu pi, nambari isiyo na mantiki, haiwezi kuhesabiwa kwa usahihi.

Ikiwa ungependa kuzungusha nambari ifaayo ya tarakimu, tumia kitendakazi cha duru() au umbizo() mbinu au kitendakazi cha umbizo().

Kumbuka kuwa thamani ya kurudi ya round() ni nambari (int au float), lakini thamani ya kurudi ya umbizo() ni mfuatano. Ikiwa unataka kuitumia kwa hesabu zinazofuata, tumia 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'>

Duru () chaguo za kukokotoa hubainisha idadi ya nafasi za desimali kama hoja yake ya pili. Kumbuka kuwa hii sio duru madhubuti. Tazama makala ifuatayo kwa maelezo zaidi.

Chaguo za kukokotoa za umbizo () na umbizo() zinabainisha idadi ya sehemu za desimali katika mfuatano wa vipimo vya uumbizaji. Tazama makala ifuatayo kwa maelezo zaidi.

Ikiwa unataka kulinganisha, unaweza pia kutumia math.isclose().

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

Vile vile, hapa kuna mfano wa kupata sine inverse ya 0.5. math.asin() hurejesha radiani, ambazo hubadilishwa hadi digrii kwa hisabati.

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

print(round(asin05, 3))
# 30.0

cosine, kosine inverse:math.cos(),math.acos()

Chaguo za kukokotoa za kupata kosine (cos) ni math.cos(), na chaguo la kukokotoa la kupata kosine kinyume (arc cosine, arccos) ni math.acos().

Hapa kuna mfano wa kupata cosine ya digrii 60 na cosine inverse ya 0.5.

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

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

Ikiwa ungependa kuzungusha hadi tarakimu inayofaa, unaweza kutumia round() au format() kama na sine.

Tanji, tanjiti Inverse:math.tan(),math.atan(),math.atan2()

Chaguo la kukokotoa la kupata tanjiti (tan) ni math.tan(), na chaguo la kukokotoa la kupata tanjiti kinyume (arctan) ni math.atan() au math.atan2().
Math.atan2() inaelezwa baadaye.

Mfano wa kupata tanjiti ya digrii 45 na tanjenti kinyume cha digrii 1 imeonyeshwa hapa chini.

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

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

Tofauti kati ya math.atan() na math.atan2()

Math.atan() na math.atan2() ni chaguo za kukokotoa ambazo hurejesha tanjenti kinyume, lakini zinatofautiana katika idadi ya hoja na anuwai ya thamani za urejeshaji.

math.atan(x) ina hoja moja na inarejesha arctan(x) katika radiani. Thamani ya kurudi itakuwa kati ya -pi \ 2 na pi \ 2 (digrii -90 hadi 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

Katika mfano hapo juu, math.inf inawakilisha kutokuwa na mwisho.

math.atan2(y, x) ina hoja mbili na inarejesha arctan(y \ x) katika radiani. Pembe hii ni pembe (kupungua) ambayo vekta kutoka asili hadi kuratibu (x, y) hufanya na mwelekeo mzuri wa mhimili wa x kwenye ndege ya kuratibu ya polar, na thamani iliyorudishwa iko kati ya -pi na pi (-180). hadi digrii 180).

Kwa kuwa pembe katika roboduara ya pili na ya tatu pia inaweza kupatikana kwa usahihi, math.atan2() inafaa zaidi kuliko math.atan() wakati wa kuzingatia ndege ya kuratibu ya polar.

Kumbuka kwamba mpangilio wa hoja ni y, x, si 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

Kama katika mfano hapo juu, mwelekeo mbaya wa mhimili wa x (y ni sifuri na x ni hasi) ni pi (nyuzi 180), lakini wakati y ni sifuri hasi, ni -pi (digrii -180). Kuwa mwangalifu ikiwa unataka kushughulikia ishara madhubuti.

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

Sufuri hasi ni matokeo ya shughuli zifuatazo

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

print(-1.0 * 0.0)
# -0.0

Nambari kamili hazichukuliwi kama sufuri hasi.

print(-0.0)
# -0.0

print(-0)
# 0

Hata wakati x na y ni sifuri, matokeo inategemea ishara.

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

Kuna mifano mingine ambapo ishara ya matokeo hubadilika kulingana na sufuri hasi, kama vile math.atan2() pamoja na math.sin(), math.asin(), math.tan(), na 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

Kumbuka kuwa mifano hadi sasa ni matokeo ya kuendesha programu katika CPython. Kumbuka kuwa utekelezaji au mazingira mengine yanaweza kushughulikia sufuri hasi kwa njia tofauti.

Copied title and URL