thumb|O produto de Hadamard opera em matrizes de formatos idênticos e produz uma terceira matriz com as mesmas dimensões. Na matemática, o produto de Hadamard (também conhecido como produto elemento a elemento, produto entrada a entrada ou produto de Schur) é uma operação binária que recebe duas matrizes de mesmas dimensões e retorna uma matriz com os elementos correspondentes multiplicados. Esta operação pode ser pensada como uma "multiplicação ingênua de matrizes" e é diferente do produto matricial. É atribuído e nomeado em homenagem ao matemático francês Jacques Hadamard ou ao matemático russo Issai Schur.

O produto de Hadamard é associativo e distributivo. Ao contrário do produto matricial, ele também é comutativo.

Definição Para duas matrizes e de mesma dimensão , o produto de Hadamard (às vezes ) é uma matriz da mesma dimensão que os operandos, com elementos dados por

Para matrizes de dimensões diferentes ( e , onde ou ), o produto de Hadamard é indefinido.

Um exemplo do produto de Hadamard para duas matrizes 2 × 3 arbitrárias:

Propriedades O produto de Hadamard é comutativo (ao trabalhar com um anel comutativo), associativo e distributivo sobre a adição. Ou seja, se A, B e C são matrizes do mesmo tamanho, e k é um escalar: A matriz identidade sob a multiplicação de Hadamard de duas matrizes é uma matriz onde todos os elementos são iguais a 1. Isso é diferente da matriz identidade sob a multiplicação regular de matrizes, onde apenas os elementos da diagonal principal são iguais a 1. Além disso, uma matriz tem uma inversa sob a multiplicação de Hadamard se e somente se todos os elementos forem invertíveis, ou equivalentemente sobre um corpo, se e somente se nenhum dos elementos for igual a zero. Para vetores e e matrizes diagonais correspondentes e com esses vetores como suas diagonais principais, a seguinte identidade é válida: onde denota a transposta conjugada de . Em particular, usando vetores de uns, isso mostra que a soma de todos os elementos no produto de Hadamard é o traço de onde o sobrescrito T denota a matriz transposta, ou seja, . Um resultado relacionado para e quadradas é que as somas das linhas de seu produto de Hadamard são os elementos diagonais de : Da mesma forma, Além disso, um produto matriz-vetor de Hadamard pode ser expresso como onde é o vetor formado pelas diagonais da matriz . Tomando , isso implica que O produto de Hadamard é uma submatriz principal do Produto de Kronecker. O produto de Hadamard satisfaz a desigualdade de posto Se e são matrizes positivas definidas, então a seguinte desigualdade envolvendo o produto de Hadamard é válida: onde é o -ésimo maior autovalor de . Se e são matrizes diagonais, então O produto de Hadamard de dois vetores e é o mesmo que a multiplicação matricial da matriz diagonal correspondente de um vetor pelo outro vetor: O operador transformando um vetor em uma matriz diagonal pode ser expresso usando o produto de Hadamard como onde é um vetor constante com elementos , e é a matriz identidade.

A propriedade do produto misto O produto de Hadamard obedece a certas relações com outros operadores de produto matricial. Se é o Produto de Kronecker, assumindo que tem as mesmas dimensões que e as mesmas de , então

Se é o produto de divisão de face (face-splitting product), então

Se é o Produto de Khatri-Rao por colunas, então

Teorema do produto de Schur

O produto de Hadamard de duas matrizes semidefinidas positivas é semidefinido positivo. Isso é conhecido como o teorema do produto de Schur, em homenagem ao matemático russo Issai Schur. Para duas matrizes semidefinidas positivas e , também é sabido que o determinante de seu produto de Hadamard é maior ou igual ao produto de seus respectivos determinantes:

Operações análogas

Outras operações de Hadamard também são vistas na literatura matemática, a saber, a raiz de Hadamard e a potência de Hadamard (que são essencialmente a mesma coisa devido aos índices fracionários), definidas para uma matriz de forma que:

Para

e para

A inversa de Hadamard é lida como:

Uma divisão de Hadamard é definida como:

Em linguagens de programação A maioria das linguagens de programação científicas ou numéricas inclui o produto de Hadamard, sob vários nomes.

No MATLAB, o produto de Hadamard é expresso como "multiplicação por ponto" (dot multiply): a .* b, ou a chamada de função: times(a, b). Ele também tem operadores de ponto análogos que incluem, por exemplo, os operadores a .^ b e a ./ b. Devido a esse mecanismo, é possível reservar * e ^ para multiplicação de matrizes e exponenciais de matrizes, respectivamente.

A linguagem de programação Julia tem uma sintaxe semelhante à do MATLAB, onde a multiplicação de Hadamard é chamada de multiplicação de transmissão (broadcast multiplication) e também é denotada por a .* b, e outros operadores são definidos analogamente elemento a elemento, por exemplo, potências de Hadamard usam a .^ b. Mas, ao contrário do MATLAB, em Julia essa sintaxe de "ponto" é generalizada com um operador de transmissão genérico . que pode aplicar qualquer função elemento a elemento. Isso inclui tanto operadores binários (como a multiplicação e exponenciação mencionadas anteriormente, bem como qualquer outro operador binário, como o produto de Kronecker), quanto operadores unários, como ! e √. Assim, qualquer função f em notação de prefixo pode ser aplicada como f.(x).

Python não tem suporte integrado a arrays, o que leva a notações inconsistentes/conflitantes. A biblioteca numérica NumPy interpreta a*b ou a.multiply(b) como o produto de Hadamard, e usa a@b ou a.matmul(b) para o produto matricial. Com a biblioteca simbólica SymPy, a multiplicação de objetos usando a*b ou a@b produzirá o produto matricial. O produto de Hadamard pode ser obtido com a chamada de método a.multiply_elementwise(b). Alguns pacotes Python incluem suporte para potências de Hadamard usando métodos como np.power(a, b), ou o método do Pandas a.pow(b).

Em C++, a biblioteca Eigen fornece uma função membro cwiseProduct para a classe (a.cwiseProduct(b)), enquanto a biblioteca Armadillo usa o operador % para criar expressões compactas (a % b; a * b é um produto matricial).

No GAUSS e na HP Prime, a operação é conhecida como multiplicação de arrays (array multiplication).

Em Fortran, R, APL, J e Wolfram Language (Mathematica), os operadores de multiplicação * ou × aplicam o produto de Hadamard, enquanto o produto matricial é escrito usando matmul, %*%, +.×, +/ .* e ., respectivamente.

Na linguagem de programação Maple, o operador de multiplicação * não é definido para Matrizes e Vetores. O produto matricial é escrito usando ., enquanto o produto de Hadamard pode ser obtido usando *~. (O ~ é um 'operador de transmissão' semelhante ao . em Julia.)

O pacote R matrixcalc introduz a função hadamard.prod() para o produto de Hadamard de matrizes ou vetores numéricos.

Aplicações O produto de Hadamard aparece em algoritmos de compressão com perda, como o JPEG. A etapa de decodificação envolve um produto entrada por entrada, em outras palavras, o produto de Hadamard.

No processamento de imagem, o operador de Hadamard pode ser usado para realçar, suprimir ou mascarar regiões da imagem. Uma matriz representa a imagem original, a outra atua como peso ou matriz de mascaramento.

É usado na literatura de aprendizado de máquina, por exemplo, para descrever a arquitetura de redes neurais recorrentes como GRUs ou LSTMs.

Também é usado para estudar as propriedades estatísticas de vetores e matrizes aleatórias.

O produto de face penetrante thumb|O produto de face penetrante de matrizes De acordo com a definição de V. Slyusar, o produto de face penetrante da matriz p×g e da matriz multidimensional de dimensão n (n > 1) com blocos p×g () é uma matriz do tamanho de com a forma:

Exemplo Se

então

Propriedades principais

onde denota o produto de divisão de face das matrizes, onde é um vetor.

Aplicações O produto de face penetrante é usado na teoria de matrizes e tensores de arranjos de antenas digitais. Esta operação também pode ser usada em modelos de rede neural artificial, especificamente nas camadas convolucionais.

Ver também Produto interno de Frobenius Multiplicação ponto a ponto Produto de Kronecker Produto de Khatri-Rao

Referências

Categoria:Teoria das matrizes Categoria:Issai Schur