Inicio › Temas › Álgebra lineal
🧮 Álgebra lineal nivel básico
Matrices como transformaciones
Una matriz 2×2 es una función que dobla el plano: rota, estira, cizalla o refleja.
🕹️ Ábrelo en el curso interactivo (simulador y código ejecutable)
La idea
Una matriz de 2×2 no es solo una tabla de cuatro números: es una función que toma cada vector del plano y lo lleva a otro vector. La regla es el producto matriz-vector, y lo que la hace especial es que respeta la estructura del plano: la imagen de una suma es la suma de las imágenes y la imagen de un múltiplo es el mismo múltiplo de la imagen. Esas dos propiedades definen una transformación lineal.
Para saber qué hace una matriz basta mirar sus columnas: la primera es la imagen del vector e₁ = (1, 0) y la segunda la del vector e₂ = (0, 1). Como cualquier vector se escribe v = v₁e₁ + v₂e₂, su imagen queda determinada por esas dos flechas. De ahí salen las familias clásicas: la rotación de ángulo θ, el escalado que estira cada eje por separado, la cizalla que desliza las filas horizontales y la reflexión que invierte un eje. Aplicar dos transformaciones seguidas equivale a multiplicar sus matrices, y como el producto de matrices no es conmutativo, el orden importa: girar y luego estirar no da el mismo resultado que estirar y luego girar.
Geométricamente, la transformación convierte la cuadrícula de cuadrados unitarios en una red de paralelogramos: las rectas siguen siendo rectas, el origen no se mueve y el paralelismo se conserva. El determinante mide cuánto se multiplica el área en el proceso, y su signo indica si la orientación se conserva o se invierte. Cuando el determinante vale cero el plano entero se aplasta sobre una recta y la información se pierde de forma irreversible.
Fórmulas clave
- Acción sobre un vectorA·v = (a v₁ + b v₂, c v₁ + d v₂)
- Rotación de ángulo θR(θ) = [[cos θ, −sen θ], [sen θ, cos θ]]
- EscaladoS(sₓ, s_y) = [[sₓ, 0], [0, s_y]]
- Cizalla horizontalH(k) = [[1, k], [0, 1]]
- Reflexión en el eje XF = [[1, 0], [0, −1]]
- Composición(A ∘ B)(v) = (A·B)·v, en general A·B ≠ B·A
Dónde se aplica
Todo motor gráfico —de un videojuego a un programa de diseño— mueve, gira y escala objetos multiplicando sus vértices por matrices, y encadena varias en una sola antes de enviarla a la tarjeta gráfica. En robótica, la posición de cada eslabón de un brazo articulado se obtiene componiendo rotaciones y traslaciones. En procesamiento de imágenes, corregir la perspectiva de una foto escaneada o alinear dos radiografías consiste en estimar la matriz que mejor superpone una sobre la otra. Y en ciencia de datos, cada capa lineal de una red neuronal es exactamente una multiplicación por una matriz.
Con programación (Python)
import math
def mat_vec(A, v):
return [A[0][0]*v[0] + A[0][1]*v[1], A[1][0]*v[0] + A[1][1]*v[1]]
def mat_mul(A, B):
return [[sum(A[i][k]*B[k][j] for k in range(2)) for j in range(2)] for i in range(2)]
def det(A):
return A[0][0]*A[1][1] - A[0][1]*A[1][0]
ang = math.radians(30)
R = [[math.cos(ang), -math.sin(ang)], [math.sin(ang), math.cos(ang)]]
S = [[2, 0], [0, 1.5]]
H = [[1, 1], [0, 1]]
cuadrado = [(0, 0), (1, 0), (1, 1), (0, 1)]
for nombre, M in [("rotacion 30", R), ("escala 2 y 1.5", S), ("cizalla k=1", H)]:
print(nombre, "-> det =", round(det(M), 4))
for p in cuadrado:
q = mat_vec(M, p)
print(" ", p, "->", (round(q[0], 3), round(q[1], 3)))
print("R*S =", [[round(v, 4) for v in f] for f in mat_mul(R, S)])
print("S*R =", [[round(v, 4) for v in f] for f in mat_mul(S, R)])
print("El producto no conmuta, pero los determinantes coinciden:", round(det(mat_mul(R, S)), 6))La versión en JavaScript, editable y ejecutable en el navegador, está en la página interactiva del tema.