Scipy Lapack -funksjoner

Scipy Lapack -funksjoner
De innebygde scipy og numpy bibliotekene er utrolige for å utføre alle slags lineære algebraoperasjoner i et Python-program. Imidlertid, hvis du ikke finner en spesifikk funksjon eller metode som oppfyller ditt behov for lineære algebrafunksjoner, kan du alltid henvise til Lapack -funksjonene. Lapack -funksjonene brukes til å løse komplekse lineære algebrafunksjoner med letthet og raskt. I denne guiden tar vi sikte på å utforske så mange Lapack -funksjoner som mulig for å hjelpe deg med å forstå hvordan du kan gjøre at du jobber med lineære algebrafunksjoner enkelt.

Hva er Lapack -funksjonen?

Lapack er en uavhengig, åpen kildekode og gratis bibliotek som brukes spesielt til å utføre lineær algebra -operasjoner. Den står for lineær algebra -pakke og gir robuste og raske matriseberegninger og numeriske lineære algebra. Lapack gir et grunnlag for alle slags numeriske lineære algebrafunksjoner og matriksberegning i scipy, numpy og matlab. Lapack er i utgangspunktet bygget på et multi forfatter stort Fortran -bibliotek spesielt for numerisk lineær algebra. Lapack -pakken er i stand til å administrere flere matrikskolonner samtidig, og den er veldig rask siden den med vilje ble brukt i superdatamaskiner.

Scipy -biblioteket tilbyr et bredt spekter av lapack -funksjoner i Lapack -funksjonene i Lining -modulen. Disse funksjonene utfører ikke feilkontroll, og hvis de gjør det, vil det være veldig lite som fører til systemkrasjet. Listen over scipy.Lining.Lapack -funksjoner er veldig lenge som den inneholder flere nyttige funksjoner, i.e., SGBSV, CGBSV, SGBTRS, ZGBTRS, SGECON, CGEEQU, SGEEV, SGEHRD, DGEJSV, DGELSD, ZGELSS, ZGELSY, ZGEQRF, DGESV, CGGEV, ETC. Hver metode har forskjellige funksjoner og har forskjellige funksjoner. Det er bare ett funnfunksjon i scipy.Lining.lapack -modulen og det er get_lapack_funcs -funksjonen. La oss gå videre til eksemplet for å forstå scipys arbeid.Lining.Lapack -funksjoner.

Eksempel 1:

Scipy.Lining.Lapack -funksjonen har bare en funnfunksjon, og det er get_lapack_funcs. Get_lapack_funcs brukes til å få den tilgjengelige Lapack -funksjonen som er spesifisert av NAME -attributtet. Syntaksen til get_lapack_funcs er som følger:

Parameterens navn 'inneholder navnet på funksjonen i form av en streng eller sekvens av strenger uten noen prefiksetype. 'Array' -parameteren inneholder sekvensen av flerdimensjonale matriser som brukes til å bestemme de optimale prefikser til Lapack -rutinen. Parameteren 'dtype' definerer datatypen, og til slutt bestemmer parameteren 'ILP' ILP64 -rutinemessige varianten. De tre parametrene Navn, DType og ILP er valgfrie, så hvis du ikke spesifikt gir en verdi for disse parametrene, vil funksjonen bruke standardverdiene automatisk. Get_lapack_funcs vil returnere listen over funksjoner som er funnet mot parameterverdiene som er gitt. Tenk på eksempelkoden nedenfor for å ha en bedre forståelse:

Importer numpy som NP
Importer scipy.Lining som la
r = np.tilfeldig.standard_rng ()
a = r.tilfeldig ((1, 2))
lab = la.get_lapack_funcs ('lange', (a+1j,))
trykk (lab.typecode)

Funksjonen startet med å importere Numpy -biblioteket som NP og Scipy.Linald -pakken som LA. Etter å ha importert alle nødvendige biblioteker, kalte vi den tilfeldige () -funksjonen for å utføre standard_rng () -funksjonen. Den beregnede verdien lagres i en variabel 'r' og 'r' brukes deretter til å kalle den tilfeldige funksjonen for å generere en rekke tilfeldige verdier som består av en rad og to kolonner. Nå som vi har alle essensielle data, kan vi ringe get_lapack_funcs -funksjonen for å få listen over funksjonene.

Det er fire prefiksetyper mot hver funksjon i scipy.Lining.Lapack -biblioteket og de er C, D, S og Z, og hver av dem har henholdsvis en datatypekompleks64, float64, float32 og complex128. Uansett hvilket funksjonsnavn du oppgir til get_lapack_funcs, vil du få enten C-, D-, S- eller Z -prefiks -type til gjengjeld. Her nevnte vi 'Lange' funksjonsnavnet og kalte typekodemetoden. Prefiksnavnet lagres i TypeCode -attributtet, så når du kaller det, vil du få prefiksnavnet til funksjonsnavnet som er oppgitt. La oss se hvilket resultat vi får fra get_lapcak_funcs -funksjonen:

Eksempel 2:

Anta at vi må bruke 'lange' rutinen for å beregne den valgte matrise -normen, men vi er ikke sikre på funksjonen til funksjonen. For den saks skyld kan vi bare sende vår matrise til get_lapack_funcs -funksjonen og få riktig prefiksmak for matrisen. Her finjusterer vi bare det forrige eksemplet litt for å vise deg de forskjellige resultatene av get_lapcak_funcs -funksjonen for en annen matrise. Vurder referansekoden gitt nedenfor:

Importer numpy som NP
Importer scipy.Lining som la
r = np.tilfeldig.standard_rng ()
a = r.tilfeldig ((5, 5))
lab = la.get_lapack_funcs ('lange', (a,))
trykk (lab.typecode)

Som du kan legge merke til, endret vi bare array -data og prefiksrutine for å sjekke hvordan resultatet av get_lapack_funcs -funksjonen endres. Resultatet er gitt nedenfor i utdraget:

Eksempel 3:

Som vi har diskutert ovenfor, gjør Lapack -funksjonen lite eller ingen feilsjekking, men de er veldig raske og med vilje designet for å administrere en stor mengde data. De fungerer derfor best for data som. La oss nå teste optimaliseringsfunksjonene til get_lapack_funcs ved å gi den en 1000 x 2000 størrelse matrise. Vurder referansekoden gitt i kodebiten nedenfor:

Importer numpy som NP
Importer scipy.Lining som la
r = np.tilfeldig.standard_rng ()
a = rng.Tilfeldig ((1000, 2000)))
xlwork = la.get_lapack_funcs ('sysv_lwork', (a,))
opt_lwork, _ = xlwork (a.form [0])
print (opt_lwork)
trykk (xlwork.typecode)

Som du ser, ga vi 1000 x 2000 størrelse på matrisen som ble generert. Funksjonsnavnet 'SYSV_LWORK' er gitt, og den beregnede matrisen har blitt sendt til get_lapack_funcs -funksjonen. Hvorvidt størrelsen på den genererte matrisen er optimal eller ikke bestemmes av et dedikert spørsmål som er kjent som ### _ Lwork. Som du ser, brukte vi XLWork sammen med SYSV_LWork -spørringen for å få den optimale størrelsen på den beregnede matrisen. Vi kalte også skrivekoden for å kjenne den optimale skrivekoden for den genererte matrisen mot SYSV_LWork -funksjonsnavnet.

Konklusjon

Denne guiden er pakket rundt Lapack -biblioteket for komplekse matriksfunksjoner og numeriske lineære algebra -systemer. Vi lærte om å jobbe med lapack -funksjoner med lavt nivå ved hjelp av flere eksempler. Lapack står for lineær algebra -pakke, som brukes av Numpy, Scipy og Matlab. Det er grunnlaget for de lineære algebrafunksjonene som tilbys av Scipy og Numpy Libraries. For å få en bedre forståelse av Lapack -funksjonene på lavt nivå, øv disse eksemplene og prøv å endre dem basert på forskjellige scenarier.