Hadamard-szorzat

A Wikipédiából, a szabad enciklopédiából

A matematikában a Hadamard-szorzat, más néven Schur-szorzat vagy elemenkénti szorzat egy két változós művelet, aminek tényezői ugyanolyan dimenziójuk. A szorzatban álló elemek a tényezők megfelelő elemeinek szorzatai. Nem tévesztendő össze a közönséges mátrixszorzással. Nevét a francia Jacques Hadamard, vagy a német Issai Schur után kapta.

A Hadamard-szorzás asszociatív, disztributív a mátrixok összeadására, és a közönséges mátrixszorzástól eltérően kommutatív is.

Definíció[szerkesztés | forrásszöveg szerkesztése]

Legyenek A, B ugyanolyan dimenziójú, m \times n-es mátrixok. Ekkor A és B Hadamard-szorzata, A \circ B is m \times n-es, és

(A \circ B)_{i,j} = (A)_{i,j} \cdot (B)_{i,j}.

Nem azonos méretű mátrixokra a Hadamard-szorzást nem értelmezzük.

Tulajdonságai[szerkesztés | forrásszöveg szerkesztése]

A Hadamard-szorzás kommutatív, asszociatív és disztributív a mátrixok összeadására:

A \circ B = B \circ A,
A \circ (B \circ C) = (A \circ B) \circ C,
A \circ (B + C) = A \circ B + A \circ C.

A Hadamard-szorzás identitásmátrixa az m \times n-es mátrixok halmazán az az m \times n-es mátrix, aminek minden eleme 1. Ez különbözik a szokásos identitásmátrixtól. Egy mátrix Hadamard-invertálható, ha egy eleme sem nulla.[1]

A D_x és a D_y átlós mátrixokra, és főátlójukra, mint x és y vektorokra teljesül:[2]

x^*(A \circ B)y = \mathrm{tr}(D_x^* A D_y B^T),

ahol x^* az x adjungáltja. Általában, csupa egy vektorokkal megmutatható, hogy a Hadamard-szorzat elemeinek összege egyenlő AB^T nyomával. Négyzetes A és B mátrixok Hadamard-szorzatának sorösszege éppen az AB^T főátlóján álló elemei[3]

\sum_j (A \circ B)_{i,j} = (AB^T)_{i,i}.

A Hadamard-szorzat a Kronecker-szorzat principális részmátrixa.

Schur szorzástétele[szerkesztés | forrásszöveg szerkesztése]

Pozitív szemidefinit mátrixok Hadamard-szorzata is pozitív szemidefinit.[3] Ez Schur szorzástétele néven ismert.[1] Sőt, ha A és B pozitív szemidefinit, akkor:

\det(A \circ B) \ge \det(A) \det(B). \, [3]

Programozási nyelvekben[szerkesztés | forrásszöveg szerkesztése]

A Hadamard-szorzást egyes programozási nyelvek beépítetten tartalmazzák. A MATLAB nyelvben a .* számítja.[4] Fortranban és Mathematicában egyszerűen a * jelöli, míg a közönséges mátrixszorzat rendre a matmul függvénnyel, illetve . jellel számítható. Pythonban a sympy szimbolikus matematikai függvénytár tartalmazza, az array() adattípushoz kapcsolódóan, míg a közönséges mátrixszorzáshoz a mátrix (matrix)osztályt kell használni. A kettő között beépített konverziókkal lehet váltani. Az Eigen C++ függvénytár rendszere hasonló. R-ben a Hadamard-szorzat alapértelmezett, a mátrixszorzás a matrix.A%*%matrix.B alakban valósítható meg.

Alkalmazása[szerkesztés | forrásszöveg szerkesztése]

A Hadamard-szorzatot veszteséges tömörítő algoritmusok használják, például a JPEG.

Jegyzetek[szerkesztés | forrásszöveg szerkesztése]

  1. ^ a b Million, Elizabeth: The Hadamard Product. (Hozzáférés: 2012. január 2.)
  2. (Horn & Johnson 1991)
  3. ^ a b c (Styan 1973)
  4. Arithmetic Operators + - * / \ ^ ' -. MATLAB documentation. MathWorks. (Hozzáférés: 2012. január 2.)