Qual a diferença dos operadores * e ** quando utilizados entre duas matrizes?
Passo 1
O que você perguntou: “Qual a diferença dos operadores
e
quando utilizados entre duas matrizes?”\n
Informações/assunções relevantes que vou usar (não pedi nada adicional):
Informações/assunções relevantes que vou usar (não pedi nada adicional):
- A pergunta está ambígua quanto ao ambiente (matemática pura, MATLAB/Octave, Python/NumPy, etc.). Vou cobrir os contextos mais comuns e úteis para quem estuda exatas.
- Vou explicar:
- o que é multiplicação matricial (a operação que muitas vezes se escreve com
em notação matemática ou em algumas linguagens), - o que é multiplicação elemento a elemento (Hadamard),
- o que significa “potência” de matriz,
- como
e costumam ser interpretados em MATLAB/Octave e em Python/NumPy (os casos práticos mais frequentes).
- o que é multiplicação matricial (a operação que muitas vezes se escreve com
- Não vou pedir mais dados: apresentarei definições, regras de dimensão, exemplos numéricos e dicas de escolha.
Passo 2
Definição e regra da multiplicação matricial (o que muitas vezes se quer ao falar de “multiplicar matrizes”):
- Se
é uma matriz de tamanho e é uma matriz de tamanho , então a multiplicação matricial é definida e resulta numa matriz de tamanho . - Cada elemento de
é dado por
- Observações importantes:
- As “dimensões internas” devem casar: o número de colunas de
tem que ser igual ao número de linhas de . - A multiplicação matricial geralmente NÃO é comutativa: em geral
.
- As “dimensões internas” devem casar: o número de colunas de
- Exemplo numérico (muito concreto):
Calculemos
pela fórmula:
Passo 3
Definição do produto elemento a elemento (Hadamard) — operação diferente de multiplicação matricial:
- Se
e têm exatamente o mesmo tamanho , o produto elemento a elemento (ou simplesmente “multiplicação elemento a elemento”) é a matriz com
- Propriedades: é comutativo (
) e não exige a condição de “colunas iguais às linhas” — apenas igualdade de formas. - Exemplo com as mesmas
e do passo anterior:
Passo 4
Potência de matriz (o que
significa) — conceito relacionado ao operador de exponenciação:
- Para uma matriz quadrada
(tamanho ), a potência inteira positiva é a multiplicação matricial repetida:
- Condição: só faz sentido (diretamente) para matrizes quadradas quando se fala em potência inteira.
- Exemplo com
do passo 2:
Passo 5
Como as linguagens/ bibliotecas mais comuns tratam
e
(resumo prático para programar e para provas aplicadas):
-
MATLAB / Octave:
-
é multiplicação matricial (produto linear) — exige dimensões compatíveis. -
é multiplicação elemento a elemento (Hadamard). -
é potência matricial (só para matrizes quadradas, por exemplo
). - é potência elemento a elemento (eleva cada entrada).
- Conclusão: em MATLAB, o operador de dois asteriscos
não é usado para exponenciação — usa-se e o ponto para versão elemento a elemento.
-
-
Python com NumPy (tipo mais usado:
): -
entre dois faz multiplicação elemento a elemento (Hadamard), com regras de broadcasting. - Para multiplicação matricial linear usa-se o operador
ou a função / . -
entre arrays faz potência elemento a elemento (equivalente a ). - Observação: existe o tipo
(menos recomendado/obsoleto): nele faz multiplicação matricial e com um inteiro faz potência matricial; por isso muita confusão surge — preferir e usar para produto matricial. - Exemplos concretos com nossas matrizes (assumindo
): -
dá o Hadamard . -
(ou ) dá o produto matricial . -
faz potência elemento a elemento, produzindo .]
-
-
Passo 6
Regras práticas e dicas para a prova (ou para programar sem erro):
- Pergunte-se qual operação matemática você quer:
- Composição de transformações lineares / produto de matrizes no sentido da álgebra linear? Use multiplicação matricial.
- Multiplicar entrada a entrada (por exemplo aplicar pesos elemento a elemento, Hadamard)? Use multiplicação elemento a elemento.
- Elevar uma matriz a uma potência inteira? Use a potência matricial (só para quadradas).
- Em códigos, saiba a convenção da linguagem/biblioteca:
- MATLAB:
= matricial; = elemento a elemento; = potência matricial; = potência elemento a elemento. - NumPy (ndarray):
= elemento a elemento; = matricial; = potência elemento a elemento. Para potência matricial use .
- MATLAB:
- Verifique dimensões antes de aplicar: produto matricial exige colunas de
= linhas de ; Hadamard exige mesmas formas (ou formas compatíveis por broadcasting). - Cuidado com tipos: evitar
para não misturar sem querer semânticas diferentes.
Passo 7
Resumo conceitual rápido (para ficar na cabeça)
- Multiplicação matricial: operação linear definida por
, não comutativa em geral. - Produto elemento a elemento (Hadamard):
, comutativo. - Potência de matriz: repetição do produto matricial para matrizes quadradas.
- Em código: o símbolo textual
e podem representar coisas diferentes conforme a linguagem; leia a documentação (MATLAB vs NumPy têm convenções distintas).
Resposta
Em matemática pura,
normalmente denota multiplicação matricial (produto linear) e
não é uma notação padrão.
Em MATLAB/Octave: = multiplicação matricial,
= multiplicação elemento a elemento,
= potência matricial,
= potência elemento a elemento.
Em Python/NumPy ( ):
= multiplicação elemento a elemento (Hadamard),
ou
= multiplicação matricial, e
= potência elemento a elemento; em
(menos usado)
é matricial e
com inteiro faz potência matricial.
Em MATLAB/Octave:
Em Python/NumPy (