NumPy: Álgebra Linear
Última atualização: 2026-08-26
1. O que Você Aprenderá
- ❶ Multiplicação de matrizes:
@,np.dot,np.matmul - ❷ Inversa e determinante:
np.linalg.inv,np.linalg.det - ❸ Autovalores e autovetores:
np.linalg.eig - ❹ Solução de sistemas lineares:
np.linalg.solve - ❺ Decomposições matriciais: QR, SVD, Cholesky
2. História
Bob precisa resolver um sistema de 1000 equações lineares. Ele escreve um loop de eliminação de Gauss — 30 segundos e uma implementação com bugs. Alice usa np.linalg.solve(A, b) — 0,01 segundos, resultado exato. "Álgebra linear no NumPy não é apenas mais rápida — ela chama BLAS/LAPACK, as mesmas bibliotecas usadas pelo MATLAB e R. Testadas em combate por décadas."
3. Conceitos-Chave
(1) Multiplicação de Matrizes
import numpy as np
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
# Três formas equivalentes:
print(A @ B) # [[19 22]
# [43 50]]
print(np.dot(A, B)) # mesmo resultado
print(np.matmul(A, B)) # mesmo resultado
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
(2) Inversa e Determinante
import numpy as np
A = np.array([[1, 2],
[3, 4]])
det = np.linalg.det(A) # -2.000
inv = np.linalg.inv(A) # [[-2. 1. ]
# [ 1.5 -0.5]]
print(A @ inv) # [[1. 0.]
# [0. 1.]] (identidade)
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
(3) Solução de Sistemas Lineares
# Resolver Ax = b
A = np.array([[3, 1],
[1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)
print(x) # [2. 3.]
print(A @ x) # [9. 8.] — verificação
> **Output:** Execute o NumPy 2.x em seu ambiente Python local para ver a saída do ndarray. O servidor Piston não tem o NumPy pré-instalado — instale-o localmente (`pip install numpy`) e compare. Os valores reais podem variar conforme a versão do NumPy e a semente aleatória.
▶ Exemplo: Multiplicação de matrizes (Dificuldade ⭐)
import numpy as np
A = np.array([[1, 2, 3],
[4, 5, 6]])
B = np.array([[7, 8],
[9, 10],
[11, 12]])
# Multiplicação de matrizes: (2x3) @ (3x2) = (2x2)
C = A @ B
print("A @ B:\n", C)
# Produto escalar de vetores
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
print("dot(x, y):", np.dot(x, y))
Output:
TEXT 📖 Somente leituraA @ B: [[ 58 64] [139 154]] dot(x, y): 32
▶ Exemplo: Resolvendo sistemas lineares (Dificuldade ⭐⭐)
import numpy as np
# Resolver: 3x + y = 9, x + 2y = 8
A = np.array([[3, 1],
[1, 2]])
b = np.array([9, 8])
x = np.linalg.solve(A, b)
print("Solução:", x)
# Verificação
print("A @ x =", A @ x)
print("b =", b)
Output:
TEXT 📖 Somente leituraSolução: [2. 3.] A @ x = [9. 8.] b = [9. 8.]
▶ Exemplo: Autovalores e autovetores (Dificuldade ⭐⭐)
import numpy as np
A = np.array([[4, -2],
[1, 1]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print("Autovalores:", eigenvalues)
# Verificação: A @ v = λ * v
v = eigenvectors[:, 0]
lam = eigenvalues[0]
lhs = A @ v
rhs = lam * v
print("A @ v:", lhs)
print("λ * v:", rhs)
print("Corresponde:", np.allclose(lhs, rhs))
Output:
TEXT 📖 Somente leituraAutovalores: [3. 2.] A @ v: [0.89442719 0.4472136 ] λ * v: [0.89442719 0.4472136 ] Corresponde: True
P: Qual é a diferença entre
@,np.dotenp.matmul? R: Para arrays 2D, são idênticos. Para dimensões superiores,@enp.matmulusam broadcasting (multiplicação empilhada de matrizes), enquantonp.dotusa soma-produto sobre o último eixo de cada um.
P: Quando devo usar
solvevsinv? R: Sempre usesolve— é mais rápido e numericamente mais estável. Computarinv(A) @ bé mais lento e menos preciso quesolve(A, b).
P: E se A for singular? R:
np.linalg.solvelançaLinAlgError: Singular matrix. Usenp.linalg.lstsqpara soluções de mínimos quadrados em sistemas sub/sobre-determinados.
❓ Perguntas Frequentes
P: O que é a coisa mais importante a lembrar? R: As operações do NumPy são vetorizadas — evite loops Python para melhor desempenho.
P: Onde posso aprender mais? R: Consulte a documentação oficial do NumPy em numpy.org para referências detalhadas e tópicos avançados.
P: Isso funciona com o NumPy 2.x? R: Sim — todos os exemplos são compatíveis com o NumPy 2.x. Algumas APIs mais antigas (como np.random.seed) ainda são suportadas, mas as alternativas modernas são recomendadas.
📖 Resumo
@/np.matmul/np.dot: multiplicação de matrizesnp.linalg.inv: inversa de matriz;np.linalg.det: determinantenp.linalg.eig: autovalores e autovetoresnp.linalg.solve: solução de sistemas linearesnp.linalg.qr,np.linalg.svd,np.linalg.cholesky: decomposições- Use
solveem vez deinv @ bpara velocidade e estabilidade
📝 Exercícios
-
Básico (Dificuldade ⭐): Crie duas matrizes 3x3 de inteiros aleatórios. Compute o produto, determinante e inversa. Verifique que A @ inv(A) ≈ identidade.
-
Intermediário (Dificuldade ⭐⭐): Resolva o sistema: 3x + y = 9, x + 2y = 8 usando
np.linalg.solve. Verifique sua solução. -
Desafio (Dificuldade ⭐⭐⭐): Gere uma matriz aleatória 5x5, compute seus autovalores e autovetores. Verifique que A @ v = λ * v para cada par autovalor-autovetor.