Singular verdi dekomponering er et av de viktigste konseptene i lineær algebra. Å forstå enestående verdiskaposisjon (SVD) innebærer kjennskap til relaterte konsepter, for eksempel matriser, matrikstyper og matrikstransformasjoner. På grunn av koblingene mellom den entydige verdien av en matrise og andre lineære algebraiske emner, har det blitt mer utfordrende å lære ideen. I denne artikkelen vil du oppdage definisjonen av singulær verdiskaposisjon og detaljerte eksempler på 2*2 og 3*3 Matrix nedbrytning. SVD -tilnærmingen vil bli grundig forklart i dette innlegget. Du kan finne alt nødvendig materiale her, og starter med introduksjonen og går videre til mange eksempler.
Hva er en entall verdiskaposisjon?
Når en matrise tas med i tre forskjellige matriser, sies det å dekomponere til entallverdier. Dette konseptet er kjent som SVD, som står for dekomponering av entall verdi. Som et resultat, når matrise “en” blir tatt med i produktet av tre matriser, kan den entallverdien nedbrytning av matrise “one” skrives som en = udvt. I dette tilfellet er kolonnene U og V ortonormale, mens matrisen D er diagonal, med reelle positive oppføringer.
Syntaks av SVD -metoden
Syntaksen til SVD -metoden har noen parametere.
Nå har du en grunnleggende forståelse av SVD -metoden og syntaks. La oss diskutere noen eksempler på hvordan du bruker funksjonen.
Eksempel 1
I det første eksemplet på denne artikkelen vil vi gi deg prøvekoden som bruker SVD -metoden. La oss se kodelinjen for linje.
I det følgende skjermbildet kan du se at vi har importert Numpy -biblioteket som er tilgjengelig i Python. Det gjøres med en enkel "import numpy" -kode, og vi skriver vanligvis dette i den første linjen i koden. Etter det opprettet vi matrisen som heter “Arr_data” ved hjelp av Numpy.Array Method. Arrayen inneholder [1, 2, 3, 4, 5], [11, 22, 33, 11, 23], [6, 8, 10, 2, 4] og [5, 7, 3, 5, 3 ] verdier.
Etter det brukte vi to utskriftsuttalelser for å vise den originale matrisen. I den neste linjen i koden har vi brukt Numpy.Linla.SVD -metode på den opprettede matrisen ovenfor. Her har vi satt parameteren full_matrices til “False”. I den siste delen brukes ytterligere to trykte () uttalelser. Én utskriftsuttalelse for å vise "Faktoren til den opprettede matrisen av SVD:" og den andre utskriftserklæringen for å vise resultatet på utgangsskjermen.
Importer numpy
arr_data = numpy.Array ([[1, 2, 3, 4, 5], [11, 22, 33, 11, 23],
[6, 8, 10, 2, 4], [5, 7, 3, 5, 3]],
dType = numpy.float32)
trykk ("Her er den originale matrisen:")
trykk (arr_data)
U, s, v = numpy.Lining.svd (arr_data, full_matrices = falsk)
Print ("\ nFactor of the Created Array av SVD:")
print ("\ nu =", u, "\ n \ ns =", s, "\ n \ nv =", v)
Resultatskjermen er vedlagt, der du kan se den opprinnelige matrisen og faktoren til den matrisen ved å bruke SVD -metoden.
Eksempel 2
Her er det andre eksemplet på denne artikkelen der det samme konseptet brukes, men på en annen matrise som inneholder forskjellige verdier. I den andre linjen i koden kan du se at vi har laget en matrise som heter “Arr_val” med Numpy.Array Method. Arrayen inneholder [7, 1, 2], [3, 7, 3] og [2, 4, 7] verdier. Etter det vises den originale matrisen, slik at du enkelt kan se forskjellen mellom den originale matrisen og det genererte resultatet. Numpy.Lining.SVD -metoden brukes etterpå på den spesifiserte matrisen, og resultatet vises.
Importer numpy
arr_val = numpy.Array ([[7, 1, 2], [3, 7, 3],
[2, 4, 7]], dtype = numpy.float32)
trykk ("Her er den originale matrisen:")
print (arr_val)
U, s, v = numpy.Lining.svd (arr_val, full_matrices = falsk)
Print (“\ NFactor of the Created Array by SVD Method:”)
print (“\ nu =”, u, “\ n \ ns =”, s, “\ n \ nv =”, v)
Her er utgangen der du kan se den opprinnelige matrisen og faktoren til den matrisen beregnet ved SVD -metoden.
Eksempel 3
Her lagres en annen matrise i “ARR_3Rd”, Og dens verdier er [12, 3], [4, 7]. Resten av koden til dette programmet er nesten den samme som ovenfor. Du kan sammenligne utdataene som genereres av denne koden og utdataene gitt av de tidligere eksemplene. Utgangen er forskjellig avhengig av den medfølgende inngangsarrayen med form og størrelse.
Importer numpy
arr_3rd = numpy.Array ([[12, 3], [4, 7]], dtype = numpy.float32)
trykk ("Her er den originale matrisen:")
print (arr_3rd)
U, s, v = numpy.Lining.svd (arr_3rd, full_matrices = falsk)
Print (“\ NFactor of the Created Array by SVD Method:”)
print (“\ nu =”, u, “\ n \ ns =”, s, “\ n \ nv =”, v)
Her er følgende resultat:
Eksempel 4
Dette er det siste eksemplet på denne artikkelen, og her bruker vi to separate 2D -matriser. La oss se kodelinjen for linje i følgende skjermbilde.
Her startet vi med å importere Numpy og Numpy.Lining -moduler som gir all funksjonalitet som kreves for lineær algebra. Etter det opprettes to 2D -matriser med Numpy.tilfeldig.Randn -metode. Disse matriser er lagret i “First_arr” og “seconc_arr” variabler. Etter det brukes en utskriftsuttalelse til å vise de originale matriser. Kodingslinjen for det er "Print (" Her er de originale matriser: \ n ", first_arr)" og "print (" Her er de originale matriser: \ n ", andre_arr)".
Nå har vi brukt LNG.SVD -metode på den gitte matrisen og angir alternativet Full_matrices til “True”. I den siste delen brukes fire flere utskriftsuttalelser. Den første utskriftserklæringen vil vise "Her kan du se formen på alle returnerte verdier:" Tekst, og resten av utskriftsuttalelsene vil vise formen på verdiene som returneres av den utførte funksjonen. Se det komplette kodeskjermbildet nedenfor:
Importer numpy
Importer numpy.Lining som lng
first_arr = numpy.tilfeldig.Randn (2, 5) + 1j*numpy.tilfeldig.Randn (2, 5)
Second_arr = b = numpy.tilfeldig.Randn (2, 5, 7, 3) + 1j*numpy.tilfeldig.Randn (2, 5, 7, 3)
trykk ("Her er de originale matriser: \ n", first_arr)
Print ("Her er de originale matriser: \ n", Second_arr)
u, s, vh = lng.svd (first_arr, full_matrices = true)
trykk ("Her kan du se formen på alle returnerte verdier: \ n")
print ("u =", u.form)
print ("s =", s.form)
print ("VH =", VH.form)
Følgende komplette skjermbilder av den forrige koden er vedlagt for din referanse:
Konklusjon
SVD brukes mye for å løse problemer innen fysikk, statistikk, maskinlæring og andre felt. Vi har dekket definisjonen og syntaksen til SVD -metoden i dette korte essayet. I tillegg brukes forskjellige forekomster av 2*2 og 3*3 matrise -nedbrytninger for å illustrere innleggets hovedpunkt. Du kan bruke denne siden som en ressurs for å lære grunnleggende om SVD -tilnærmingen og hvorfor den brukes så ofte i dag.