Matematiske moduler i Python Math og Cmath

Når vi skriver programmer i vårt daglige liv, kommer vi vanligvis over situasjoner der vi trenger å bruke litt matte for å få oppgaven gjort. Som andre programmeringsspråk gir Python forskjellige operatører til å utføre grunnleggende beregninger som * for multiplikasjon, % for modul, og // for gulvdeling.

Hvis du skriver et program for å utføre bestemte oppgaver som å studere periodisk bevegelse eller simulere elektriske kretser, må du arbeide med trigonometriske funksjoner og komplekse tall. Mens du ikke kan bruke disse funksjonene direkte, kan du få tilgang til dem ved å inkludere to matematiske moduler først. Disse modulene er matte og cmath. 

Den første gir deg tilgang til hyperbolske, trigonometriske og logaritmiske funksjoner for ekte tall, mens sistnevnte lar deg arbeide med komplekse tall. I denne opplæringen vil jeg gå over alle viktige funksjoner som tilbys av disse modulene. Med mindre eksplisitt nevnt, flytter alle verdiene tilbake.

Aritmetiske funksjoner

Disse funksjonene utfører ulike aritmetiske operasjoner som å beregne gulv, tak eller absolutt verdi av et tall ved hjelp av etasje (x), ceil (x), og Fab-fragmenter (x) funksjoner henholdsvis. Funksjonen ceil (x) vil returnere det minste heltallet som er større enn eller lik x. på samme måte, etasje (x) returnerer det største heltallet mindre enn eller lik x. De Fab-fragmenter (x) funksjon returnerer absolutt verdien av x.

Du kan også utføre ikke-trivielle operasjoner som å beregne faktoren av et tall ved hjelp av faktoriell (x). En faktorial er produktet av et heltall og alle positive heltalene er mindre enn det. Det brukes mye når det gjelder kombinasjoner og permutasjoner. Det kan også brukes til å beregne verdien av sine og cosinusfunksjoner. 

Importer matte def getin (x): multiplikator = 1 resultat = 0 for jeg i rekkevidde (1,20,2): resultat + = multiplikator * pow (x, i) /math.factorial (i) multiplikator * = -1 retur result getsin (math.pi / 2) # returnerer 1.0 fårin (math.pi / 4) # returnerer 0.7071067811865475

En annen nyttig funksjon i matte modulen er gcd (x, y), som gir deg den største felles divisor (GCD) av to tall x og y. Når x og y er begge ikke null, returnerer denne funksjonen det største positive heltallet som deler begge x og y. Du kan bruke det indirekte til å beregne det laveste vanlige flertallet av to tall ved å bruke følgende formel:

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

Her er noen av de aritmetiske funksjonene som Python tilbyr:

importere matematikk math.ceil (1.001) # returnerer 2 math.floor (1.001) # returnerer 1 math.factorial (10) # returnerer 3628800 math.gcd (10,125) # returnerer 5 math.trunc (1.001) # returnerer 1 math.trunc (1.999) # returnerer 1

Trigonometriske funksjoner

Disse funksjonene relaterer vinklene til en trekant til sidene. De har mange applikasjoner, inkludert studier av trekanter og modellering av periodiske fenomener som lyd og lysbølger. Husk at vinkelen du gir er i radianer.

Du kan beregne sin (x), cos (x), og tan (x) direkte ved hjelp av denne modulen. Det er imidlertid ingen direkte formel å beregne cosec (x), sek (x), og cot (x), men deres verdi er lik gjensidig av verdien returnert av sin (x), cos (x), og tan (x) henholdsvis.

I stedet for å beregne verdien av trigonometriske funksjoner i en viss vinkel, kan du også gjøre omvendt og beregne vinkelen der de har en gitt verdi ved å bruke Asin (x), Acos (x), og atan (x)

Er du kjent med pythagorasetningen? Den sier at det firkantet av hypotenusen (den motsatte rettvinkelen) er lik summen av de andre to sidens kvadrater. Hypotenuse er også den største siden av en rettvinklet trekant. Matematikkmodulen gir hypot (a, b) funksjon for å beregne lengden på hypotenusen.

importer matematikk math.sin (math.pi / 4) # returnerer 0.7071067811865476 math.cos (math.pi) # returnerer -1.0 math.tan (math.pi / 6) # returnerer 0.5773502691896257 math.hypot (12,5) # returnerer 13.0 math.atan (0.5773502691896257) # returnerer 0.5235987755982988 math.asin (0.7071067811865476) # returnerer 0.7853981633974484

Hyperbolske funksjoner

Hyperbolske funksjoner er analoger av trigonometriske funksjoner som er basert på en hyperbola i stedet for en sirkel. I trigonometri, poengene (cos b, synd b) representerer punktene i en enhetssirkel. I tilfelle hyperboliske funksjoner, blir punktene (cosh b, sinh b) Representerer punktene som danner den høyre halvdelen av en like-sidig hyperbola. 

Akkurat som de trigonometriske funksjonene, kan du beregne verdien av sinh (x), cosh (x), og tanh (x) direkte. Resten av verdiene kan beregnes ved hjelp av ulike forhold mellom disse tre verdiene. Det finnes også andre funksjoner som ASINH (x), ACOSH (x), og ATANH (x), som kan brukes til å beregne den inverse av de tilsvarende hyperbolske verdiene.

import matte math.sinh (math.pi) # returnerer 11.548739357257746 math.cosh (math.pi) # returnerer 11.591953275521519 math.cosh (math.pi) # returnerer 0.99627207622075 math.asinh (11.548739357257746) # returnerer 3.141592653589793 math.acosh (11.591953275521519) # returnerer 3.141592653589793 math.atanh (0.99627207622075) # returnerer 3.141592653589798

Siden math.pi er lik omtrent 3,141592653589793, da vi brukte ASINH () på verdien returnert av sinh (math.pi), vi fikk vår π tilbake.

Kraft- og logaritmiske funksjoner

Du vil nok ha å gjøre med krefter og logaritmer oftere enn hyperbolske eller trigonometriske funksjoner. Heldigvis matte modulen gir mange funksjoner for å hjelpe oss med å beregne logaritmer.

Du kan bruke log (x, [Base]) å beregne loggen til et gitt nummer x til den givne basen. Hvis du lar ut det valgfrie grunnargumentet, beregnes loggen til x til basen e. Her, e er en matematisk konstant hvis verdi er 2,71828182 ... og den kan nås med math.e. Forresten, Python lar deg også få tilgang til en annen konstant π bruke math.pi.

Hvis du vil beregne basis-2 eller base-10 logaritmeverdiene, bruker du log2 (x) og log10 (x) vil returnere mer nøyaktige resultater enn logg (x, 2) og logg (x, 10). Husk at det er nei log3 (x) funksjon, så du må fortsette å bruke logg (x, 3) for beregning av base-3 logaritmeverdier. Det samme gjelder for alle andre baser.

Hvis verdien som logaritmen du beregner er svært nær 1, kan du bruke log1p (x). De 1p i log1p betyr 1 pluss. Derfor, log1p (x) beregner log (1 + x) hvor x er nær null. Resultatene er imidlertid mer nøyaktige med log1p (x).

Du kan også beregne verdien av et tall x hevet til makten y ved bruk av pow (x, y). Før du beregner kreftene, konverterer denne funksjonen begge argumentene for å skrive flyt. Hvis du vil at sluttresultatet skal beregnes i eksakte heltallskrefter, bør du bruke det innebygde pulver () funksjon eller ** operatør.

Du kan også beregne kvadratroten av et gitt nummer x ved bruk av sqrt (x), men det samme kan også oppnås ved å bruke pow (x, 0,5).

importer matematikk.exp (5) # returnerer 148.4131591025766 math.e ** 5 # returnerer 148.4131591025765 math.log (148.41315910257657) # returnerer 5.0 math.log (148.41315910257657, 2) # returnerer 7.213475204444817 math.log (148.41315910257657, 10) # returnerer 2.171472409516258 math.log (1.0000025) # returnerer 2.4009968749105643e-06 math.log1p (0.0000025) # returnerer 2.4999968750052084e-06 math.pow (12.5, 2.8) # returnerer 1178.5500657314767 math.pow (144, 0.5) # returnerer 12.0 math.sqrt (144) # returnerer 12,0 

Komplekse tall

Komplekse tall lagres internt ved hjelp av rektangulære eller kartesiske koordinater. Et komplekst tall z vil bli representert i kartesiske koordinater som z = x + iy, hvor x representerer den virkelige delen og y representerer den imaginære delen. En annen måte å representere dem på er å bruke polære koordinater. 

I dette tilfellet vil det komplekse tallet z bli definert en kombinasjon av modulen r og fasevinkel phi. Modulen r er avstanden mellom det komplekse tallet z og opprinnelsen. Vinkelen phi er vinkelen mot urviseren målt i radianer fra den positive x-aksen til linjesegmentet z og opprinnelsen.

Mens du arbeider med komplekse tall, vil cmath Modulen kan være til stor hjelp. Modulet til et komplekst tall kan beregnes ved hjelp av det innebygde abs () funksjon, og dens fase kan beregnes ved hjelp av fase (z) funksjon tilgjengelig i cmath modulen. Du kan konvertere et komplekst tall i rektangulær form til polarform ved hjelp av polar (z), som kommer tilbake et par (r, phi), hvor r er abs (z) og phi er fase (z)

På samme måte kan du konvertere et komplekst tall i polar form til rektangulær form ved hjelp av rekt (r, phi). Det komplekse nummeret som returneres av denne funksjonen er r * (math.cos (phi) + tak i Math.sin (phi) * 1j).

importere cmath cmath.polar (kompleks (1.0, 1.0)) # returnerer (1.4142135623730951, 0.7853981633974483) cmath.phase (komplekse (1.0, 1.0)) returnerer 0.7853981633974483 abs (kompleks (1.0, 1.0)) # returnerer 1.4142135623730951

De cmath modulen lar oss også bruke vanlige matematiske funksjoner med komplekse tall. For eksempel kan du beregne kvadratroten til et komplekst tall ved hjelp av sqrt (z) eller dets cosinus bruker cos (z)

importere cmath cmath.sqrt (kompleks (25.0, 25.0)) # returnerer (5.49342056733905 + 2.2754493028111367j) cmath.cos (kompleks (25.0, 25.0)) # returnerer (35685729345.58163 + 4764987221.458499j)

Komplekse tall har mange bruksområder som modellering elektriske kretser, fluid dynamikk og signal analyse. Hvis du trenger å jobbe med noen av disse tingene, cmath modulen vil ikke skuffe deg. 

Siste tanker

Alle disse funksjonene vi diskuterte ovenfor, har sine spesifikke applikasjoner. For eksempel kan du bruke faktoriell (x) Fungerer for å løse permutasjons- og kombinasjonsproblemer. Du kan bruke trigonometriske funksjoner for å løse en vektor inn i kartesiske koordinater. Du kan også bruke trigonometriske funksjoner for å simulere periodiske funksjoner som lyd og lysbølger. 

På samme måte kan kurven på et tau som henger mellom to poler, bestemmes ved bruk av en hyperbolisk funksjon. Siden alle disse funksjonene er direkte tilgjengelige i matte modul, gjør det veldig enkelt å lage små programmer som utfører alle disse oppgavene.

Jeg håper du likte denne opplæringen. Hvis du har noen spørsmål, gi meg beskjed i kommentarene.