Module matematice în Python Math and Cmath

Când scriem programe în viața de zi cu zi, întâlnim de obicei situații în care trebuie să folosim puțin matematică pentru a face sarcina. Ca și alte limbi de programare, Python oferă diferiților operatori pentru a efectua calcule de bază cum ar fi * pentru multiplicare, % pentru modulul și // pentru divizarea podelei.

Dacă scrieți un program pentru a efectua anumite sarcini, cum ar fi studierea mișcărilor periodice sau simularea circuitelor electrice, va trebui să lucrați cu funcții trigonometrice, precum și cu numere complexe. În timp ce nu puteți utiliza aceste funcții în mod direct, puteți să le accesați prin includerea mai întâi a două module matematice. Aceste module sunt matematice și cmath. 

Primul vă oferă acces la funcții hiperbolice, trigonometrice și logaritmice pentru numere reale, în timp ce acesta din urmă vă permite să lucrați cu numere complexe. În acest tutorial, voi trece peste toate funcțiile importante oferite de aceste module. Dacă nu este menționat explicit, toate valorile returnate sunt flotante.

Funcții aritmetice

Aceste funcții efectuează diverse operații aritmetice, cum ar fi calcularea podelei, plafonului sau valorii absolute a unui număr folosind podea (x), ceil (x), și fabs (x) funcții. Functia ceil (x) va returna cel mai mic număr întreg mai mare sau egal cu X. asemănător, podea (x) returnează cel mai mare număr întreg mai mic sau egal cu X. fabs (x) funcția returnează valoarea absolută a X.

De asemenea, puteți efectua operații non-banale, cum ar fi calcularea factorialului unui număr utilizând factorial (x). Un factorial este produsul unui întreg și toți numerele pozitive mai mici decât acesta. Este folosit extensiv când se ocupă de combinații și permutări. Acesta poate fi, de asemenea, utilizat pentru a calcula valoarea funcțiilor sinusoidale și cosinuse. 

importul math def devine (x): multiplicator = 1 rezultat = 0 pentru i în intervalul (1,20,2): rezultat + = multiplicator * pow (x, i) /math.factorial rezultatul devine (math.pi / 2) # returnează 1.0 getsin (math.pi / 4) # returnează 0.7071067811865475

O altă funcție utilă în matematica modul este GCD (x, y), care vă oferă cel mai mare divizor comun (GCD) de două numere X și y. Cand X și y ambele nu sunt zero, această funcție returnează cel mai mare număr întreg pozitiv care împarte ambele X și y. Puteți să o utilizați indirect pentru a calcula cel mai mic număr comun de două numere utilizând următoarea formulă:

gcd (a, b) xlcm (a, b) = a x b

Iată câteva dintre funcțiile aritmetice oferite de Python:

import math math.ceil (1.001) # întoarce 2 math.floor (1.001) # returnează 1 math.factorial (10) # returnează 3628800 math.gcd (10,125) # returnează 5 math.trunc (1.001) # returnează 1 math.trunc (1.999) # returnează 1

Funcțiile trigonometrice

Aceste funcții se referă la unghiurile unui triunghi la laturile sale. Ei au o mulțime de aplicații, inclusiv studiul triunghiurilor și modelarea unor fenomene periodice precum sunetul și undele luminoase. Rețineți că unghiul pe care îl oferiți este în radiani.

Puteți calcula sin (x), cos (x), și tan (x) direct folosind acest modul. Cu toate acestea, nu există o formulă directă pentru a calcula cosec (x), sec (x), și patut (x), dar valoarea lor este egală cu valoarea reciprocă a valorii returnate de sin (x), cos (x), și tan (x) respectiv.

În loc de a calcula valoarea funcțiilor trigonometrice la un anumit unghi, puteți face invers și puteți calcula unghiul la care au o valoare dată prin utilizarea asin (x), acos (x), și atan (x)

Sunteți familiarizați cu teorema lui Pitagora? Se afirmă că pătratul hipotenței (partea opusă unghiului drept) este egal cu suma pătratelor celorlalte două laturi. Hipotensiunea este, de asemenea, cea mai mare parte a unui triunghi dreptunghiular. Modulul de matematică furnizează hipot (a, b) pentru a calcula lungimea hipotenentei.

import math math.sin (math.pi / 4) # întoarce 0.7071067811865476 math.cos (math.pi) # returnează -1.0 math.tan (math.pi / 6) # returnează 0.5773502691896257 math.hypot (12,5) # returnează 13.0 math.atan (0.5773502691896257) # returnează 0.5235987755982988 math.asin (0.7071067811865476) # returns 0.7853981633974484

Funcțiile hiperbolice

Funcțiile hiperbolice sunt analogice ale funcțiilor trigonometrice care se bazează pe o hiperbolă în loc de un cerc. În trigonometrie, punctele (cos b, păcat b) reprezintă punctele unui cerc unic. În cazul funcțiilor hiperbolice, punctele (cosh b, Sinh b) Reprezintă punctele care formează jumătatea dreaptă a unei hiperbola echilaterale. 

La fel ca și funcțiile trigonometrice, puteți calcula valoarea lui sinh (x), cosh (x), și tanh (x) direct. Restul valorilor pot fi calculate folosind diferite relații între aceste trei valori. Există și alte funcții, cum ar fi ASINH (x), ACOSH (x), și atanh (x), care poate fi folosit pentru a calcula inversul valorilor hiperbolice corespunzătoare.

import math math.sinh (math.pi) # returnează 11.548739357257746 math.cosh (math.pi) # returnează 11.591953275521519 math.cosh (math.pi) # retur 0.99627207622075 math.asinh (11.548739357257746) # returns 3.141592653589793 math.acosh (11.591953275521519) # returnează 3.141592653589793 math.atanh (0.99627207622075) # returns 3.141592653589798

De cand math.pi este egal cu aproximativ 3.141592653589793, când am folosit ASINH () pe valoarea returnată de sinh (math.pi), ne-am întors înapoi.

Putere și funcții logaritmice

Probabil veți avea de-a face cu puteri și logaritme mai des decât cu funcții hiperbolice sau trigonometrice. Din fericire, matematica modulul oferă o mulțime de funcții care ne ajută să calculam logaritmii.

Poți să folosești log (x, [baza]) pentru a calcula jurnalul unui număr dat X la baza dată. Dacă renunți la argumentul opțional de bază, jurnalul x se calculează la baza e. Aici, e este o constantă matematică a cărei valoare este 2.71828182 ... și poate fi accesată folosind math.e. Apropo, Python vă permite să accesați și o altă constanta π folosind math.pi.

Dacă doriți să calculați valorile logaritmului de bază-2 sau de bază-10, folosind log2 (x) și log10 (x) va întoarce rezultate mai precise decât log (x, 2) și log (x, 10). Rețineți că nu există log3 (x) funcția, deci va trebui să continuați să utilizați log (x, 3) pentru calcularea valorilor logaritmului de bază-3. Același lucru este valabil pentru toate celelalte baze.

Dacă valoarea a cărei logaritmă pe care o calculați este foarte apropiată de 1, puteți utiliza log1p (x). 1p în log1p semnifică 1 plus. Prin urmare, log1p (x) calculează log (1 + x) unde x este aproape de zero. Cu toate acestea, rezultatele sunt mai exacte cu log1p (x).

De asemenea, puteți calcula valoarea unui număr X ridicată la putere y prin utilizarea pow (x, y). Înainte de a calcula puterile, această funcție convertește ambele argumente la tip float. Dacă doriți ca rezultatul final să fie calculat în puteri întregi exacte, trebuie să utilizați built-in-ul pow () sau funcția ** operator.

De asemenea, puteți calcula rădăcina pătrată a oricărui număr dat X prin utilizarea sqrt (x), dar același lucru poate fi, de asemenea, realizat prin utilizarea pow (x, 0,5).

import math math.exp (5) # returnează 148.4131591025766 math.e ** 5 # returnează 148.4131591025765 math.log (148.41315910257657) # returnează 5.0 math.log (148.41315910257657, 2) # returns 7.213475204444817 math.log (148.41315910257657, 10) # întoarce 2.171472409516258 math.log (1.0000025) # întoarce 2.4999968749105643e-06 math.log1p (0.0000025) # întoarce 2.4999968750052084e-06 math.pow (12.5, 2.8) # întoarce 1178.5500657314767 math.pow (144, 0.5) # returns 12.0 math.sqrt (144) # returnează 12.0 

Numere complexe

Numerele complexe sunt stocate intern folosind coordonate dreptunghiulare sau carteziene. Un număr complex z vor fi reprezentate în coordonate carteziene ca z = x + iy, Unde X reprezintă partea reală și y reprezintă partea imaginară. O altă modalitate de a le reprezenta este prin utilizarea coordonatelor polare. 

În acest caz, numărul complex z va fi definit ca o combinație a modulului r și unghiul de fază phi. Modulul r este distanța dintre numărul complex z și originea. Unghiul phi este unghiul invers acelor de ceasornic măsurat în radiani de la axa pozitivă x la segmentul de linie care unește z și originea.

În timp ce se ocupă de numere complexe, cmath modulul poate fi de mare ajutor. Modulul unui număr complex poate fi calculat utilizând built-in-ul abs () funcție, iar faza sa poate fi calculată folosind fază (z) funcția disponibilă în modulul cmath. Puteți converti un număr complex în formă dreptunghiulară în formă polare utilizând polar (z), care va returna o pereche (r, phi), Unde r este abs (z) și phi este fază (z)

În mod similar, puteți să convertiți un număr complex în formă polară, folosind forma dreptunghiulară rect (r, phi). Numărul complex generat de această funcție este r * (math.cos (phi) + math.sin (phi) * 1j).

cmath.phase (complex (1.0, 1.0)) # returnează 0.7853981633974483 abs (complex (1.0, 1.0)) # returns 1.4142135623730951

cmath modul ne permite, de asemenea, să folosim funcții matematice regulate cu numere complexe. De exemplu, puteți calcula rădăcina pătrată a unui număr complex folosind sqrt (z) sau folosind cosinusul cos (z)

import cmath cmath.sqrt (complex (25.0, 25.0)) # retururi (5.49342056733905 + 2.2754493028111367j) cmath.cos (complex (25.0, 25.0)) # returns (35685729345.58163 + 4764987221.458499j)

Numerele complexe au o mulțime de aplicații cum ar fi modelarea circuitelor electrice, dinamica fluidelor și analiza semnalelor. Dacă trebuie să lucrați la oricare dintre aceste lucruri, cmath modulul nu vă va dezamăgi. 

Gândurile finale

Toate aceste funcții discutate mai sus au aplicațiile lor specifice. De exemplu, puteți utiliza funcția factorial (x) funcția de a rezolva probleme de permutare și combinare. Puteți utiliza funcțiile trigonometrice pentru a rezolva un vector în coordonate carteziene. De asemenea, puteți utiliza funcții trigonometrice pentru a simula funcții periodice precum undele de sunet și lumină. 

În mod similar, curba unei funii care atârnă între doi poli poate fi determinată utilizând o funcție hiperbolică. Deoarece toate aceste funcții sunt disponibile direct în matematica modul, aceasta face foarte ușor pentru a crea programe mici care îndeplinesc toate aceste sarcini.

Sper că ți-a plăcut acest tutorial. Dacă aveți întrebări, anunțați-ne în comentarii.

Cod