Vectorizare (matematică)

transformare liniară a unei matrice într-un vector coloană

Î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

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

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

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

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

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

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
  1. ^ a b Identitatea pentru vectorizarea rândului este  .
  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.4818 . 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
  • 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.