Como fazer vetorização para soma para implementação de oitava?

Aug 15 2020

Estou tentando entender a transformação de uma forma de soma para vetorização (ou uma forma de multiplicações de matrizes) para implementá-la em alguma linguagem de programação (oitava ou python ou qualquer outra) sem usar loops for.

A expressão que eu quero vetorizar é esta

O documento de onde obtive este formulário tentou explicar o processo

Até agora isso está claro, exceto para (1) que o documento tentou explicar assim:

Fiquei confuso porque o que sei da multiplicação de matrizes é multiplicar uma linha por uma coluna. Não consigo entender esta etapa em que a multiplicação aqui é como multiplicar uma coluna por uma linha.

Você poderia explicar o último passo um pouco mais?

Respostas

1 kidkkr Oct 22 2020 at 10:11

Você pode pensar em um vetor coluna como um elemento da matriz. Deixe-me explicar com um exemplo simples.

Apoiar o$A$é uma matriz 3 por 3 e$\vec{a_i}$é seu$i$o vetor coluna.

$$ A = \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix} = \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} $$para algum vetor tridimensional$\vec{v} = \begin{bmatrix} x & y & z \end{bmatrix} $,

$$ \begin{align} &A\vec{x}\\ &= \begin{bmatrix} ax + by + cz \\ dx + ey + fz \\ gx + hy + iz \end{bmatrix} \\ &= \begin{bmatrix} ax \\ dx \\ gx \end{bmatrix} + \begin{bmatrix} by \\ ey \\ hy \end{bmatrix} + \begin{bmatrix} cz \\ fz \\ iz \end{bmatrix}\\ &=x\vec{a_1} + y\vec{a_2} + z\vec{a_3} \\ &= \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} \\ &= \begin{bmatrix} \vec{a_1} & \vec{a_2} & \vec{a_3} \end{bmatrix} * \vec{v} \end{align} $$