O que é uma matriz?
Uma matriz com m
colunas e n
linhas representa uma função que consome um vetor * com m
elementos (ou coordenadas) e produz um vetor com n
elementos.
A partir disso, é possível observar que, se e somente se uma matriz for quadrada, a dimensionalidade do vetor não será alterada. Por exemplo. você obtém um vetor 3D ao transformar um vetor 3D, um 2D de um 2D etc.
* : Na física, os vetores são geralmente usados para indicar forças ou outras "influências" que "movimentam" coisas como velocidade ou aceleração. Mas não há nada que o impeça de usar um vetor para representar um ponto ou qualquer matriz arbitrária de números (algumas bibliotecas e linguagens de programação até usam "vetor" para significar "matriz 1D"). Para uso com matrizes, qualquer coisa pode ser os elementos do seu vetor (mesmo seqüências de caracteres ou cores), desde que você possa adicionar, subtrair e multiplicá-los por quaisquer que sejam os elementos da sua matriz. Daí o vetor de nome , que significa "transportadora" - carrega ou mantém valores para você.
O que significa multiplicar por uma matriz?
Então, se uma matriz é uma função, que tipo de função ? O que a função faz? A receita para isso é definida pelos elementos da matriz. Vamos chamar a entrada u
, a saída v
, a matriz M
(a multiplicação M*u=v
é a mesma que f(u)=v
) e u(i)
fornecer o i
th elemento de u
(o segundo elemento é a coordenada y, por exemplo). Para a matriz, M(i,j)
significa linha i
, coluna j
.
A construção do elemento v(1)
, a primeira no resultado, é descrita pela primeira linha da matriz. u(1)
vezes M(1,1)
, mais u(2)
vezes M(1,2)
, ... mais u(i)
vezes M(1,i)
. Uma matriz é um pouco como uma linguagem de programação muito simples, que é boa apenas para funções de programação que funcionam alterando as entradas, adicionando-as a si mesmas, etc. **
É útil imaginar que você está trabalhando em um elemento de saída de cada vez; portanto, você está usando apenas uma linha da matriz por vez. Você escreve u
horizontalmente. Você escreve a i-ésima linha M
abaixo dela. Você multiplica cada par acima / abaixo e escreve os produtos abaixo e depois os soma. Repita para cada linha para obter todos os elementos de v
. (Agora você vê por que uma matriz m
by n
deve operar em um m
vetor e produzir um n
vetor.)
Outra maneira de pensar sobre isso - digamos que estamos fazendo uma transformação 3D em 3D, portanto, uma matriz 3x3 (ou transformação 3D como costuma ser chamada porque você pode fingir que essa "função" está "movendo" pontos 3D, mesmo que seja realmente apenas mudando os números). Digamos que a primeira linha seja [1 2 0]
. Isso significa que, para obter x do resultado, obtenha 1 do x da entrada, 2 do y da entrada e 0 do z da entrada. Então é realmente uma receita.
** : Se uma matriz é uma linguagem de programação, ela nem está completa.
O que significa multiplicar duas matrizes?
Se ambas são matrizes de tamanho apropriado, A*B
significa "uma função que se aplica primeiro e B
depois A
". Você pode ver por que existem restrições nos tamanhos para multiplicação, porque o tamanho determina o tamanho da entrada e da saída e uma matriz consome a saída da outra. Por que multiplicação significa combinar funções? É mais fácil perceber que tem que ser. Se A*u
é o mesmo que f(u)
e B*u
é o mesmo que g(u)
então f(g(u))
é o mesmo f(B*u)
que é o mesmo que A*(B*u)
.
Da mesma forma, aplicações repetidas da mesma função podem ser mostradas como potências, pois A*A*A
significa aplicar a função que A
representa três vezes.
Como as matrizes são úteis?
Qual a vantagem de fazer uma transformação new_x = 1*x+2*y+0*z
(se a primeira linha for [1 2 0])? Isso não é muito óbvio, mas vamos dar outra matriz 2D para explicar isso. A matriz é:
[ 0 1
1 0 ]
Ou [0 1; 1 0]
usando a notação conveniente do Matlab. O que essa matriz faz? Ele transforma um vetor 2D da seguinte maneira: para o x do resultado, tire 1 do y da entrada. Para o y do resultado, tire 1 do x da entrada. Acabamos de trocar as coordenadas xey da entrada - essa matriz reflete pontos sobre a linha x = y. Isso é útil! Por extensão, você verá que todas as matrizes com 1s na linha SW - NE refletem. Você também pode ver por que as matrizes de identidade retornam a entrada (para x de saída, pegue x de entrada; para y de saída, pegue y de entrada ...).
Agora você vê por que os símbolos são, por exemplo. Xx
, Yx
- que significa o quanto de entrada X
, Y
etc. entra em produção x
.
De que outra forma as matrizes são úteis?
Que outra transformação você pode fazer? Você pode redimensionar usando uma matriz de identidade, mas com um número diferente de 1 ao longo da diagonal. Por exemplo,[2.5 0; 0 22.5]
multiplicará todas as coordenadas da entrada por 2,5 e, se você aplicar essa matriz a todos os pontos da imagem, a imagem será 2,5 maior. Se você colocar apenas 2,5 em uma linha ( [2.5 0; 0 1]
), apenas a coordenada x será multiplicada; portanto, você somente estenderá ao longo de x.
Outras matrizes podem dar outras transformações, como "inclinação", que têm graus variados de utilidade. Pessoalmente, a inclinação é a minha menos favorita, porque a matriz parece tão simples, mas a transformação em si raramente faz nada, exceto alterar uma imagem. Uma útil é a "rotação" - como você gira um ponto? Tente trabalhar a posição do ponto(x, y)
depois de girar em theta
graus no sentido anti-horário sobre a origem. Você descobrirá que as novas coordenadas x e y resultam da multiplicação dos antigos x e y por alguns senos e cossenos de teta. Você deve ser capaz de escrever facilmente uma matriz de rotação usando senos e cossenos que correspondem a esta função.
Com matrizes não quadradas, você também pode alterar a dimensionalidade de uma entrada. Transformar uma entrada 2D em 3D não é muito útil, pois é difícil "fabricar" algo para inserir na nova coordenada, mas 3D em 2D é muito útil. Entre outras coisas, é assim que seu computador sabe projetar *** uma cena 3D em imagem 2D para desenhar em seu monitor.
Como os vetores podem conter coisas diferentes, você pode até descrever uma matriz que criptografa uma seqüência de caracteres n de cada vez, embaralhando-os ou "multiplicando-os" (você teria que criar a função de multiplicação / adição).
*** : Ao projetar , você pega um objeto 3D como uma escultura, lança uma luz sobre ele e vê que tipo de sombra 2D cai na parede.
Quais são as limitações das matrizes?
Você pode fazer todas as funções com matrizes? Não. Pensando graficamente, é difícil imaginar algo que uma matriz não poderia fazer (mas existe: um efeito "turbilhão" não pode ser feito, por exemplo). No entanto, aqui está um exemplo fácil: digamos que a função f
seja tal que f(u)
o devolva u
com todos os elementos ao quadrado . Você verá que não pode escrever uma matriz para isso: com matrizes, existe apenas um recurso para descrever receitas que multiplicam coordenadas por um número constante, nenhuma outra função sofisticada, como poder, pode ser expressa.
**** : É também por isso que se chama álgebra linear - a função de potência é não linear , não faz uma linha reta quando plotada.
Na estranha linha extra em matrizes 4D
Agora, por que a matriz no seu exemplo é 4 por 4? Isso não significa espaço 4-dimensional? Não temos computadores 4D, então por quê? Este é realmente um truque interessante com matrizes que se relaciona com o ponto anterior sobre operações lineares.
Em relação a quais funções não podem ser executadas com matrizes: Qual é a matriz para mover um ponto 2D por 2 unidades para a direita (que produz o ponto (x+2, y)
? Mais uma vez, ficamos presos. Existe uma maneira de multiplicar a entrada, mas não há como adicionar Para o trabalho em 2D, o truque é fingir que você não está no espaço 2D, mas no espaço 3D, exceto a altura (coordenada z ou terceiro elemento) de tudo que é sempre 1 (é um pouco como um universo 2D é apenas uma "placa" caída no chão de um universo 3D - nesse caso, a terceira coordenada é sempre 0). Depois, você pode usar essa última coordenada mágica como uma constante, porque sabe que é sempre 1 para cada entrada.
Da mesma forma, para mover pontos 3D, você precisa de coordenadas 4D. É também por isso que todas as matrizes de transformação 3D que você vê terão [0 0 0 1]
a última linha - você nunca deve alterar a quarta dimensão, ou o resultado será muito complicado para representar em 3D!