Módulo 4 · Álgebra linear

Matrizes como transformações

Aula 4.2 · cerca de 20 minutos

Uma matriz m×n é uma função linear de ℝⁿ em ℝᵐ. As colunas da matriz mostram para onde vão os vetores da base. Multiplicar matrizes é compor transformações.

Rotação 2D por θ:     [ cos θ  −sin θ ]
                      [ sin θ   cos θ ]

Escala:               [ sx  0 ]
                      [ 0  sy ]

A ordem importa: AB ≠ BA em geral. Rotacionar e depois transladar é diferente de transladar e depois rotacionar. Em gráficos 3D, usamos coordenadas homogêneas (matrizes 4×4) para que a translação também vire multiplicação.

import numpy as np

def rot(theta):
    c, s = np.cos(theta), np.sin(theta)
    return np.array([[c, -s], [s, c]])

p = np.array([1.0, 0.0])
print(rot(np.pi / 2) @ p)                    # ≈ [0, 1]
print(rot(np.pi / 4) @ rot(np.pi / 4) @ p)   # mesma coisa: rotações se compõem

Determinante e inversa

O determinante é o fator pelo qual a transformação multiplica áreas (ou volumes). det = 0 significa que a matriz “achata” o espaço e não tem inversa. Um sistema Ax = b tem solução única exatamente quando det(A) ≠ 0.

Dica: Em código numérico, quase nunca calcule a inversa explicitamente. Use np.linalg.solve(A, b) em vez de inv(A) @ b: é mais rápido e mais estável.

Exercício 1

Qual é o determinante de uma matriz de rotação? O que isso significa?

Exercício 2

Custo de multiplicar duas matrizes n×n com o algoritmo ingênuo?