Vectorizare (matematică)

De la testwiki
Sari la navigare Sari la căutare

În matematică, în special în algebră liniară, vectorizarea unei matrice este o transformare liniară care transformă matricea într-un vector. Mai exact, vectorizarea unei matrice A Format:Nowrap, denumită vec(A), este un vector coloană Format:Nowrap obținut prin aranjare coloanelor matricei A una peste alta:

vec(A)=[a1,1,,am,1,a1,2,,am,2,,a1,n,,am,n]T

Aici, ai,j reprezintă elementul din linia i și coloana j din A, iar cu indicele superior T este notată transpunerea. Vectorizarea exprimă, prin coordonate, izomorfismul 𝐑m×n:=𝐑m𝐑n𝐑mn între acestea (adică dintre matrici și vectori) ca spații vectoriale.

De exemplu, pentru matricea 2×2 A=[abcd], vectorizarea este vec(A)=[acbd].

Legătura dintre vectorizarea lui A și vectorizarea transpusei sale este dată de matricea de comutare.

Compatibilitatea cu produsul Kronecker

Vectorizarea este folosită frecvent împreună cu produsul Kronecker pentru a exprima înmulțirea matricilor ca o transformare liniară pe matrici. În special,

vec(ABC)=(CTA)vec(B)

pentru matricele A, B și C cu dimensiunile k×l, l×m și m×n.[note 1] De exemplu, dacă adA(X)=AXXA (endomorfismul adjunct în Format:Ill-wd Format:Nowrap al tuturor matricilor n×n complexe), atunci vec(adA(X))=(InAATIn)vec(X), unde In este matricea unitate n×n.

Există alte două formulări utile:

vec(ABC)=(InAB)vec(C)=(CTBTIk)vec(A)vec(AB)=(ImA)vec(B)=(BTIk)vec(A)

Mai general, s-a demonstrat că vectorizarea este autoadjunctă în structura închisă monoidală a oricărei categorii de matrice.[1]

Compatibilitatea cu produsul Hadamard

Vectorizarea este un homomorfism algebric din spațiul matricilor Format:Nowrap cu produsul Hadamard la Cn2 cu produsul său Hadamard:

vec(AB)=vec(A)vec(B).

Compatibilitatea cu produsul interior

Vectorizarea este o transformare unitară din spațiul matricelor n×n cu produsul interior Frobenius sau Format:Ill-wd la Cn2:

tr(AB)=vec(A)vec(B),

Unde cu indicele superior este notată adjuncta.

Vectorizarea ca sumă liniară

Operația de vectorizare a unei matrice poate fi scrisă ca o sumă liniară. Fie X matricea Format:Nowrap care să fie vectorizată și fie ei vectorul celei de-a i-a bază canonică a spațiului n-dimensional, adică 𝐞i=[0,,0,1,0,,0]T. Fie Bi o matrice de blocuri Format:Nowrap definită astfel:

𝐁i=[𝟎𝟎𝐈m𝟎𝟎]=𝐞i𝐈m

Bi este formată din n matrici de blocuri de dimensiuni Format:Nowrap, plasate una deasupra alteia, și toate aceste matrici sunt nule cu excepția celei de a i-a, care este matricea unitate Format:Nowrap, Im.

Apoi versiunea vectorizată a lui X poate fi exprimată după cum urmează:

vec(𝐗)=i=1n𝐁i𝐗𝐞i

Înmulțirea lui X cu ei extrage coloana a i-a, în timp ce înmulțirea cu Bi o pune în poziția dorită în vectorul final.

Alternativ, suma liniară poate fi exprimată folosind produsul Kronecker:

vec(𝐗)=i=1n𝐞i𝐗𝐞i

Semivectorizare

Pentru o matrice simetrică A, vectorul vec(A) conține mai multe informații decât este strict necesar, deoarece matricea este complet determinată de simetrie împreună cu Format:Ill-wd, adică Format:Nowrap de pe și sub diagonala principală. Pentru astfel de matrici, semivectorizarea este uneori mai utilă decât vectorizarea. Semivectorizarea, vech(A), a unei matrice simetrice Format:Nowrap A este vectorul coloană Format:Nowrap obținut prin vectorizarea numai a părții triunghiulare inferioare a lui A:

vech(A)=[A1,1,,An,1,A2,2,,An,2,,An1,n1,An,n1,An,n]T.

De exemplu, pentru matricea A=[abbd] 2×2, semivectorizarea este vech(A)=[abd].

Există matrici unice care transformă semivectorizarea unei matrice în vectorizarea acesteia și invers numite, respectiv, matrice de duplicare și matrice de eliminare.

În limbajele de programare

Limbajele de programare care au implementate operații matriciale pot avea mijloace ușoare de vectorizare. În Matlab/GNU Octave o matrice A poate fi vectorizată prin A(:). GNU Octave permite, de asemenea, vectorizarea și semivectorizarea prin vec(A) și, respectiv, vech(A). Julia are și el funcția vec(A).

În Python tablourile NumPy implementează metoda platten,[note 1] iar în R efectul dorit poate fi obținut cu funcțiile c() sau as.vector(). În R funcția vec() a pachetului „ks” permite vectorizarea, iar funcția vech() implementată în ambele pachete „ks” și „sn” permite semivectorizarea.[2][3][4]

Note explicative

Format:Reflist

Note

Bibliografie

  • Format:En icon Jan R. Magnus and Heinz Neudecker (1999), Matrix Differential Calculus with Applications in Statistics and Econometrics, 2nd Ed., Wiley. Format:Isbn.

Format:Portal
Eroare la citare: Există etichete <ref> pentru un grup numit „note”, dar nu și o etichetă <references group="note"/>