¿Qué es una matriz?
Una matriz con m
columnas y n
filas representa una función que consume un vector * con m
elementos (o coordenadas) y produce un vector con n
elementos.
A partir de esto, puede observar que si y solo si una matriz es cuadrada, la dimensionalidad del vector no cambiará. P.ej. obtienes un vector 3D al transformar un vector 3D, un 2D de un 2D, etc.
* : En física, los vectores se usan generalmente para indicar fuerzas u otras "influencias" que "se mueven" cosas como la velocidad o la aceleración. Pero no hay nada que le impida usar un vector para representar un punto o cualquier matriz arbitraria de números (algunas bibliotecas y lenguajes de programación incluso usan "vector" para significar "matriz 1D"). Para usar con matrices, cualquier cosa puede ser los elementos de su vector (incluso cadenas o colores), siempre que tenga una forma de sumarlos, restarlos y multiplicarlos por cualesquiera que sean los elementos de su matriz. De ahí el vector de nombre , que significa "portador": transporta o mantiene valores para usted.
¿Qué significa multiplicar por una matriz?
Entonces, si una matriz es una función, ¿qué tipo de función ? ¿Qué hace la función? La receta para ello está definida por los elementos de la matriz. Llamemos a la entrada u
, a la salida v
, a la matriz M
(la multiplicación M*u=v
es entonces la misma que f(u)=v
) y u(i)
da el i
elemento th de u
(el segundo elemento es la coordenada y, por ejemplo). Para la matriz, M(i,j)
significa fila i
, columna j
.
La construcción del elemento v(1)
, la primera en el resultado, se describe en la primera fila de la matriz. u(1)
tiempos M(1,1)
, más u(2)
tiempos M(1,2)
, ... más u(i)
tiempos M(1,i)
. Una matriz es un poco como un lenguaje de programación muy simple, que solo es bueno para las funciones de programación que funcionan mezclando las entradas, agregándolas, etc. **
Es útil imaginar que está trabajando en un elemento de salida a la vez, por lo tanto, está usando solo una fila de la matriz a la vez. Escribes u
horizontalmente. Escribe la i-ésima fila de M
abajo. Multiplica cada par arriba / abajo y escribe los productos a continuación, luego suma los productos. Repita para cada fila para obtener cada elemento de v
. (Ahora puede ver por qué una matriz m
by n
debe operar en un m
vector y producir un n
vector).
Otra forma de pensar sobre esto: digamos que estamos haciendo una transformación 3D a 3D, por lo que una matriz de 3x3 (o transformación 3D como se las llama a menudo porque puede pretender que esta "función" es "mover" puntos 3D, aunque en realidad es solo cambiando los números). Digamos que la primera fila es [1 2 0]
. Esto significa que, para obtener x del resultado, obtenga 1 de la entrada x, 2 de la entrada y, y 0 de la entrada z. Entonces es realmente una receta.
** : Si una matriz es un lenguaje de programación, entonces ni siquiera está completa.
¿Qué significa multiplicar dos matrices?
Si ambos son matrices de tamaño apropiado, a continuación, A*B
significa "una función que se aplica primero B
a continuación A
". Puede ver por qué existen restricciones en los tamaños para la multiplicación, porque el tamaño determina el tamaño de entrada y salida, y una matriz consume la salida de la otra. ¿Por qué la multiplicación significa combinar funciones? Es más fácil notar que tiene que ser así. Si A*u
es igual a f(u)
y B*u
es igual a g(u)
entonces f(g(u))
es igual a f(B*u)
cual es igual a A*(B*u)
.
Del mismo modo, las aplicaciones repetidas de la misma función pueden mostrarse como potencias, ya que A*A*A
significa aplicar la función que A
representa tres veces.
¿Cómo son útiles las matrices?
¿De qué sirve hacer una transformación new_x = 1*x+2*y+0*z
(si la primera fila es [1 2 0])? Eso no es muy obvio, pero tomemos otra matriz 2D para explicar eso. La matriz es:
[ 0 1
1 0 ]
O [0 1; 1 0]
usando la conveniente notación de Matlab. ¿Qué hace esta matriz? Transforma un vector 2D así: para la x del resultado, tome 1 de la y de la entrada. Para la y del resultado, tome 1 de la x de la entrada. Acabamos de intercambiar las coordenadas x e y de la entrada; esta matriz refleja puntos sobre la línea x = y. Eso es algo útil! Por extensión, verá que todas las matrices con 1 a lo largo de la línea SW - NE se reflejan. También puede ver por qué las matrices de identidad le devuelven la entrada (para x de salida, tome x de entrada; para y de salida, tome y de entrada ...).
Ahora puede ver por qué los símbolos son, por ejemplo. Xx
, Yx
- que significan la cantidad de entrada X
, Y
etc. entra en la salida x
.
¿De qué otra manera son útiles las matrices?
¿Qué otra transformación puedes hacer? Puede cambiar el tamaño tomando una matriz de identidad, pero con un número diferente a 1 a lo largo de la diagonal. Por ejemplo, [2.5 0; 0 22.5]
multiplicará cada coordenada de la entrada por 2.5, y si aplica esta matriz a cada punto de una imagen, la imagen será 2.5 más grande. Si solo coloca un 2.5 en una fila ( [2.5 0; 0 1]
), entonces solo se multiplicará la coordenada x, por lo que solo se extenderá a lo largo de x.
Otras matrices pueden dar otras transformaciones, como "sesgo", que tienen diversos grados de utilidad. Personalmente, el sesgo es mi menos favorito porque la matriz parece muy simple, pero la transformación en sí rara vez hace algo más que destrozar una imagen. Una útil es la "rotación": ¿cómo se rota un punto? Intente calcular la posición del punto (x, y)
después de rotar en theta
grados en sentido antihorario sobre el origen. Encontrará que las nuevas coordenadas x e y surgen de multiplicar las viejas x e y por algunos senos y cosenos de theta. Debería poder escribir fácilmente una matriz de rotación utilizando senos y cosenos que correspondan a esta función.
Con matrices no cuadradas, también puede cambiar la dimensionalidad de una entrada. Convertir una entrada 2D en 3D no es muy útil, ya que es difícil "fabricar" algo para poner en la nueva coordenada, pero 3D en 2D es muy útil. Entre otras cosas, esta es la forma en que su equipo sabe proyectar *** una escena 3D imagen 2D en dibujar en el monitor.
Dado que los vectores pueden contener cosas diferentes, incluso podría describir una matriz que encripta una cadena de caracteres n a la vez, barajándolos o "multiplicándolos" (tendría que crear la función de multiplicación / suma).
*** : Cuando proyectas , tomas un objeto 3D como una escultura, le das una luz y ves qué tipo de sombra 2D cae en una pared.
¿Cuáles son las limitaciones de las matrices?
¿Puedes hacer todas las funciones con matrices? No. Pensando gráficamente, es difícil imaginar algo que una matriz no podría hacer (pero existe: un efecto de "remolino", por ejemplo). Sin embargo, aquí hay un ejemplo fácil: Digamos que la función f
es tal que f(u)
te devuelve u
con cada elemento al cuadrado . Verá que no puede escribir una matriz para esto: con las matrices solo hay una facilidad para describir recetas que multiplican las coordenadas por un número constante, no se pueden expresar otras funciones sofisticadas como la potencia.
**** : Esta es también la razón por la que se llama álgebra lineal : la función de potencia no es lineal , no forma una línea recta cuando se traza.
En la extraña fila extra en matrices 4D
Ahora, ¿por qué la matriz en su ejemplo es 4 por 4? ¿No significa esto un espacio de 4 dimensiones? No tenemos computadoras 4D, entonces ¿por qué? Esto es realmente un truco interesante con matrices que se relaciona con el punto anterior sobre operaciones lineales.
Con respecto a qué funciones no se pueden hacer con matrices: ¿Cuál es la matriz para mover un punto 2D en 2 unidades a la derecha (que produce el punto (x+2, y)
? Nuevamente, nos quedamos atascados. Hay una manera de multiplicar la entrada, pero no hay manera de agregar una constante. Para el trabajo 2D, el truco es fingir que en realidad no estás en el espacio 2D, sino en el espacio 3D, excepto que la altura (coordenada z o tercer elemento) de todo es siempre 1 (es un poco como es un universo 2D solo una "placa" que se extiende sobre el piso de un universo 3D, en ese caso la tercera coordenada siempre es 0). Luego puede usar esta última coordenada mágica como una constante, porque sabe que siempre es 1 para cada entrada.
Del mismo modo, para mover puntos 3D, necesita coordenadas 4D. Esa es también la razón por la cual todas las matrices de transformación 3D que verá tendrán [0 0 0 1]
como última fila: nunca debe alterar la cuarta dimensión, ¡o el resultado será demasiado complicado para representarlo en 3D!