Qual a diferença dos operadores * e .* quando utilizados entre duas matrizes?
Passo 1
O enunciado pergunta: qual a diferença entre os operadores
Informações relevantes dadas (implícitas na pergunta):
* e .* quando usados entre duas matrizes?Informações relevantes dadas (implícitas na pergunta):
- Ambos são operadores binários aplicados a duas matrizes (ou a uma matriz e um escalar).
- A notação
*e.*é típica de ambientes como MATLAB/Octave (em outras linguagens a semântica pode variar).
Passo 2
Definição e condição para
Sejam e
duas matrizes com dimensões
* (produto matricial).Sejam
Então o produto matricial
(também escrito simplesmente
) está definido e é uma matriz em
. O elemento na linha
e coluna
de
é dado por
Explicando devagar: para obter cada entrada do produto, você pega a linha
de
e a coluna
de
, multiplica termo a termo e soma os resultados — isto é o produto interno entre linha e coluna. Observações importantes:
- As dimensões internas devem coincidir (
no exemplo). - Em geral
(produto não comuta). - Produto matricial é a operação linear padrão usada em álgebra linear (composição de transformações lineares).
Passo 3
Definição e condição para
Sejam e
duas matrizes com a mesma dimensão
.* (multiplicação elemento a elemento — produto de Hadamard).Sejam
Então
está definido e é uma matriz em
com entradas
Ou seja, multiplica-se cada entrada de
pela entrada correspondente de
. Observações importantes:
- As duas matrizes devem ter exatamente as mesmas dimensões (mesmo número de linhas e colunas).
- O produto elemento a elemento é comutativo:
. - Este produto não corresponde ao produto matricial padrão e não tem as mesmas propriedades de inversão/identidade (a “identidade” é a matriz de uns, não a identidade
).
Passo 4
Exemplo numérico passo a passo (para ficar bem concreto).
Considere
Considere
Produto matricial
. As dimensões são
e
, logo o produto está definido e resulta em
:
Multiplicação elemento a elemento
. As dimensões coincidem (ambas
), resultado é
:
Repare que os resultados são bem diferentes:
vem de somas de produtos entre linhas e colunas;
é só produto entrada a entrada.]
Passo 5
Propriedades contrastantes — pontos úteis para prova/implementação:
- Dimensões: para
é necessário que o número de colunas de seja igual ao número de linhas de . Para as duas matrizes precisam ter exatamente as mesmas dimensões. - Comutatividade:
(sim), mas geralmente não é igual a (não, em geral). - Associatividade:
vale quando os produtos matriciais são definidos; para Hadamard, também vale (associativo elemento a elemento). - Distributividade: o produto matricial distribui sobre soma à esquerda e à direita quando definido; Hadamard também distribui sobre soma elemento a elemento.
- Identidade: a identidade para produto matricial é a matriz identidade
(tal que ), enquanto a identidade para Hadamard é a matriz de uns (tal que ). - Escalares: multiplicação por escalar
coincide em ambos os casos no sentido prático: quando a operação faz sentido no ambiente (em MATLAB ambos funcionam com escalar). - Diferença de linguagem: em MATLAB/Octave
*= produto matricial e.*= elemento a elemento. Em NumPy (Python) o operador*faz multiplicação elemento a elemento; o produto matricial em NumPy usa@ounp.dot.
Passo 6
Dicas rápidas para a prova (pra você não morrer na hora):
- Sempre verifique as dimensões antes de aplicar
*. Se as dimensões não batem, o erro é de dimensão. - Se a operação desejada é “multiplicar cada elemento correspondente”, use
.*. Se quer compor transformações/usar produto linear, use*. - Lembre-se do exemplo numérico memorizável: com as matrizes
e acima, enquanto . Isso costuma convencer qualquer corretor — e a si mesmo.
Resposta
* = produto matricial (produto linear): exige que
.* = multiplicação elemento a elemento (produto de Hadamard): exige que