Vectorizare (matematică)

De la Wikipedia, enciclopedia liberă

Î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 m × n, denumită vec(A), este un vector coloană mn × 1 obținut prin aranjare coloanelor matricei A una peste alta:

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

De exemplu, pentru matricea 2×2 , vectorizarea este .

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

Compatibilitatea cu produsul Kronecker[modificare | modificare sursă]

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

pentru matricele A, B și C cu dimensiunile k×l, l×m și m×n.[note 1] De exemplu, dacă (endomorfismul adjunct în algebra Lie⁠(d) gl(n, C) al tuturor matricilor n×n complexe), atunci , unde este matricea unitate n×n.

Există alte două formulări utile:

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

Compatibilitatea cu produsul Hadamard[modificare | modificare sursă]

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

Compatibilitatea cu produsul interior[modificare | modificare sursă]

Vectorizarea este o transformare unitară din spațiul matricelor n×n cu produsul interior Frobenius sau operatorul Hilbert–Schmidt⁠(d) la Cn2:

Unde cu indicele superior este notată adjuncta.

Vectorizarea ca sumă liniară[modificare | modificare sursă]

Operația de vectorizare a unei matrice poate fi scrisă ca o sumă liniară. Fie X matricea m × n care să fie vectorizată și fie ei vectorul celei de-a i-a bază canonică a spațiului n-dimensional, adică . Fie Bi o matrice de blocuri (mn) × m definită astfel:

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

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

Î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:

Semivectorizare[modificare | modificare sursă]

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 porțiunea triunghiulară inferioară⁠(d), adică n(n + 1)/2 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 n × n A este vectorul coloană n(n + 1)/2 × 1 obținut prin vectorizarea numai a părții triunghiulare inferioare a lui A:

De exemplu, pentru matricea 2×2, semivectorizarea este .

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[modificare | modificare sursă]

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[modificare | modificare sursă]

  1. ^ a b Identitatea pentru vectorizarea rândului este .

Note[modificare | modificare sursă]

  1. ^ en Macedo, H. D.; Oliveira, J. N. (). „Typing Linear Algebra: A Biproduct-oriented Approach”. Science of Computer Programming. 78 (11): 2160–2191. arXiv:1312.4818Accesibil gratuit. doi:10.1016/j.scico.2012.07.012. 
  2. ^ en Duong, Tarn (). „ks: Kernel Smoothing”. R package version 1.11.0. 
  3. ^ en Azzalini, Adelchi (). „The R package 'sn': The Skew-Normal and Related Distributions such as the Skew-t”. R package version 1.5.1. 
  4. ^ en Vinod, Hrishikesh D. (). „Simultaneous Reduction and Vec Stacking”. Hands-on Matrix Algebra Using R: Active and Motivated Learning with Applications. Singapore: World Scientific. pp. 233–248. ISBN 978-981-4313-69-8 – via Google Books. 

Bibliografie[modificare | modificare sursă]

  • en Jan R. Magnus and Heinz Neudecker (1999), Matrix Differential Calculus with Applications in Statistics and Econometrics, 2nd Ed., Wiley. ISBN: 0-471-98633-X.