En matemáticas , el producto de Hadamard (también conocido como producto de elemento , producto de entrada [1] : cap. 5 o producto de Schur [2] ) es una operación binaria que toma dos matrices de las mismas dimensiones y produce otra matriz de la misma dimensión que los operandos, donde cada elemento i , j es el producto de los elementos i , j de las dos matrices originales. Debe distinguirse del producto de matriz más común . Se atribuye y lleva el nombre del matemático francésJacques Hadamard o el matemático ruso alemán Issai Schur .
El producto de Hadamard es asociativo y distributivo . A diferencia del producto de matrices, también es conmutativo . [3]
Para dos matrices A y B de la misma dimensión m × n , el producto de Hadamard (o [4] [5] [6] ) es una matriz de la misma dimensión que los operandos, con elementos dados por [3]
Para matrices de diferentes dimensiones ( m × n y p × q , donde m ≠ p o n ≠ q ), el producto de Hadamard no está definido.
El producto de Hadamard de dos matrices semidefinidas positivas es semidefinido positivo. [3] [8] Esto se conoce como el teorema del producto de Schur, [7] en honor al matemático ruso Issai Schur . Para dos matrices A y B semidefinidas positivas , también se sabe que el determinante de su producto de Hadamard es mayor o igual que el producto de sus respectivos determinantes: [8]
La multiplicación de Hadamard está integrada en ciertos lenguajes de programación con varios nombres. En MATLAB , GNU Octave , GAUSS y HP Prime , se conoce como multiplicación de arreglos , o en Julia multiplicación de transmisión , con el símbolo .*
. [12] En Fortran , R , [13] APL , J y Wolfram Language ( Mathematica ), se realiza a través del operador de multiplicación simple *
, mientras que el producto matricial se realiza a través de la función matmul
,,%*%
+.×
+/ .*
y los operadores , .
respectivamente. En Python con la biblioteca numérica NumPy , la multiplicación de objetos de matriza*b
produce el producto de Hadamard y la multiplicación a@b
produce el producto de matriz. Con la biblioteca simbólica SymPy , la multiplicación de objetos de matriz como ambos y producirá el producto de matriz, el producto de Hadamard se puede obtener con . [14]
En C++, la biblioteca Eigen proporciona una función miembro para la clase Matrix ( ), mientras que la biblioteca Armadillo usa el operadora*b
a@b
a.multiply_elementwise(b)
cwiseProduct
a.cwiseProduct(b)
%
para hacer expresiones compactas ( a % b
; a * b
es un producto de matrices). El paquete R matrixcalc presenta la función hadamard.prod()
para el producto de Hadamard de matrices numéricas o vectores.