Vectorizare (matematică)
Î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ă]Note
[modificare | modificare sursă]- ^ 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.
- ^ en Duong, Tarn (). „ks: Kernel Smoothing”. R package version 1.11.0.
- ^ en Azzalini, Adelchi (). „The R package 'sn': The Skew-Normal and Related Distributions such as the Skew-t”. R package version 1.5.1.
- ^ 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.