Multiplicando matrizes elemento a elemento no GNU Octave

Faaaaaaala cientista!
Hoje continuamos nossa série de posts sobre matrizes no GNU Octave! Neste post falaremos da multiplicação de matrizes e vetores. Vamos lá?

Lembra de como definir vetores e matrizes, caro cientista? Para relembrar, dê uma olhada no post anterior da série. Nele também ensinamos a calcular a transposta desses elementos.

A multiplicação entre vetores e matrizes pode ser feita de duas maneiras: elemento a elemento, conhecido como produto de Hadamard, e a multiplicação propriamente dita. Por exemplo, vejamos as matrizes matA e matB a seguir:

>> matA = [1 0 3; 2 1 5; 3 6 0];
>> matB = [2 4 1; 6 0 2; 4 4 0];

O Octave não mostra as matrizes obtidas quando colocamos ponto e vírgula ao fim do comando. Nesse caso, se quisermos ver o objeto, digitamos seu nome e teclamos :

>> matA
matA =
   1   0   3
   2   1   5
   3   6   0

>> matB
matB =
   2   4   1
   6   0   2
   4   4   0

As matrizes desse exemplo contém três linhas e três colunas. Para verificar o tamanho de um elemento, usamos a função size():

>> size(matA)
ans =
   3   3

>> size(matB)
ans =
   3   3

No primeiro caso, multiplicação elemento a elemento, cada elemento da primeira matriz é multiplicado com o seu correspondente na segunda matriz:

  • Elemento na primeira linha, primeira coluna da primeira matriz vezes o elemento na primeira linha, primeira coluna da segunda matriz: 1 * 2 = 2.
  • Elemento na primeira linha, segunda coluna da primeira matriz vezes o elemento na primeira linha, segunda coluna da segunda matriz: 0 * 4 = 0.

Você entendeu a ideia. Cada elemento da primeira matriz é multiplicado com o elemento da segunda matriz que esteja na mesma posição, ok?

Para multiplicarmos elemento a elemento no Octave, utilizamos o operador ponto e vezes (.*). Nas matrizes do nosso exemplo, a operação fica assim:

>> matA .* matB
ans =
    2    0    3
   12    0   10
   12   24    0

A única limitação nesse caso é que os vetores ou matrizes devem ter o mesmo tamanho. Senão, alguns dos elementos ficarão sem par para multiplicar. Veja por exemplo a matriz matC, e o que acontece quando tentamos multiplicá-la por matA ou matB:

>> matC = [1 4; 0 2]
matC =
   1   4
   0   2

>> matA .* matC
error: product: nonconformant arguments (op1 is 3x3, op2 is 2x2)

>> matB .* matC
error: product: nonconformant arguments (op1 is 3x3, op2 is 2x2)

Uma última dica: para somar e subtrair matrizes, utilize os operadores mais (+) e menos (). A regra é a mesma: os vetores/matrizes devem ter o mesmo tamanho! Experimente com os exemplos anteriores!

É isso aí cientista! Semana que vem continuaremos abordando a multiplicação de vetores e matrizes. Quer aprender mais sobre como trabalhar com o Octave? Vetores, matrizes, gráficos, funções e muito mais estão presentes no livro “Octave”, lançado pela Casa do Código! Adquira o seu!
Um giga abraço! Até a próxima!


Gostou? Curta e compartilhe com seus amigos!
Quer baixar os códigos do Programando Ciência? Corre lá no nosso GitHub!
Faça uma doação pro Programando Ciência!
Curta a gente também no Facebook: www.facebook.com/programandociencia
Estou no Twitter! Siga-me se puder! @alexdesiqueira

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s