Claramente, o sistema não possui solução exata única (a matriz não é sequer quadrada, menos ainda invertível). Analisando do ponto de vista de transformações lineares, sabemos que o sistema será possível e indeterminado se (1,0,0)∈[(1,3,5),(2,4,6)]. No entanto,
Logo, os 3 vetores são linearmente independentes e o sistema é impossível, pois não existem vetores v em R2 tais que Av=(1,0,0), onde A é a matriz associada ao sistema.
Supondo que a modelagem foi feita corretamente (sistemas como esses são perfeitamente possíveis e comuns em problemas reais, principalmente quando se tem mais dados observados que incógnitas a serem determinadas), uma solução aproximada seria determinar o vetor pertencente ao espaço gerado pelas colunas de A (nesse caso, uma combinação linear entre os vetores (1,3,5) e (2,4,6)) que está “mais próximo” do vetor (1,0,0). Isto é, utilizando a norma vetorial, queremos determinar xˉ∈R2 que minimize ∥b−Axˉ∥ (b=(1,0,0)).
Considere, então, o caso geral Ax=b (com A∈Rm×n). O que procuramos é:
Pensando geometricamente, ∥b−Ax∥ corresponde à distância do ponto b∈Rm até o subespaço de Rm gerado pelas colunas de A, logo, a menor distância será aquela ortogonal ao subespaço. Isso significa que o vetor xˉ∈Rn procurado é tal que o vetor (b−Axˉ)∈Rm é ortogonal ao espaço coluna de A e, em particular, é ortogonal a cada vetor coluna de A.
Portanto, sejam a1,…,an as respectivas colunas de A, temos:
O que por sua vez nos dá AT(b−Axˉ)=0. Essa equação, comumente escrita como ATAxˉ=ATb, é chamada de equação normal e é a base para a solução do problema Ax=b através da abordagem desenvolvida até aqui, denominada de Método dos Quadrados Mínimos (o nome vem da análise do problema do ponto de vista do Cálculo, que procura minimizar o erro quadrático∥b−Axˉ∥2, resultando na mesma equação normal).
Consideremos primeiramente o caso mais simples, quando A∈Rm×n, com m≥n, possui posto completo (ou seja, n). Pelo Theorem 2 e a equivalência entre transformações lineares e matrizes, sabemos que o posto de ATA, que é n×n, também será n. Logo, ATA é invertível e podemos resolver ATAxˉ=ATb por:
Apesar de podermos determinar xˉ exatamente nesse caso, é importante destacar que ele corresponde à solução da equação normal ATAxˉ=ATb, e não ao problema original Ax=b que, como vimos, pode nem mesmo possuir soluções. Esse é o caso do sistema linear (2), uma vez que tal A possui 3 linhas e 2 colunas (m>n) e posto completo (min{3,2}=2), mas o sistema é impossível.
Quando, no entanto, A é quadrada e invertível, a solução da equação normal coincide exatamente com a solução do sistema original, pois:
O mesmo acontece quando Ax=b é possível e indeterminado. Nesse caso, ATA não será invertível e as infinitas soluções de ATAxˉ=ATb irão coincidir com as de Ax=b.
Uma vez que Ax=b é um sistema impossível, as soluções (ou a solução única, no caso m≥n e posto completo) de ATAxˉ=ATb são soluções aproximadas de Ax=b, com base no critério de minimizar ∥b−Axˉ∥.
A decomposição SVD de A nos permite construir uma ferramenta para resolver ATAx=ATb no caso geral, que independe da quantidade de linhas e colunas, assim como do posto de A.
Começamos definindo a pseudoinversa de uma matriz e constatando algumas de suas propriedades.
Para ilustrar melhor como obter Σ+, se posto de A é igual a r e seja:
A+ é uma generalização da ideia de inversa para uma matriz qualquer, daí o nome de pseudoinversa. Existem outros tipos de pseudoinversas, esta em específico satisfaz as chamadas condições de Penrose:
AA+A=A
A+AA+=A+
(AA+)T=AA+
(A+A)T=A+A
Essas condições são verificadas sem muita dificuldade considerando-se a decomposição SVD de A e as propriedades das matrizes U, V, Σ e Σ+.
Concluímos que, quando m≥n e A tem posto completo, (ATA)−1AT=A+. Em geral, calcular a decomposição SVD de A e determinar sua pseudoinversa tem menor custo computacional que calcular (ATA)−1AT, uma vez que inversão de matrizes tem alto custo.
Agora, estendemos esse resultado para o caso geral, onde A+b nos dará uma solução única para a equação normal em função de um critério específico.
Com isso, temos uma solução geral para o problema de Quadrados Mínimos, e ainda, única pelo critério de norma mínima (mesmo que a equação normal possua infinitas soluções).
Voltando ao sistema inicial (2), encontraremos sua solução aproximada via quadrados mínimos utilizando a inversa da matriz ATA (pois como já vimos, a matriz associada a esse sistema tem posto completo).
Assim como no tópico de Compressão de Imagens, podemos utilizar a linguagem Python e as funções de Álgebra Linear da biblioteca NumPy, dessa vez para resolver quadrados mínimos via pseudoinversa numericamente. Isso normalmente é feito em problemas reais, cujas matrizes possuem dimensões maiores e o cálculo exato da solução é pouco viável:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
# Definir as matrizes
A = np.array([[1, 2],
[2, 4],
[3, 6]], dtype=float)
b = np.array([[1],
[0],
[0]], dtype=float)
# Calcular a pseudoinversa
A_pinv = np.linalg.pinv(A)
# Calcular a solução
x = A_pinv @ b
print("\nPseudoinversa de A:")
print(A_pinv)
print("Solução:")
print(x)
Solução numérica de quadrados mínimos via pseudoinversa
Note que o resultado é determinado numericamente e normalmente não corresponde à solução exata, mas é suficientemente preciso na maioria dos casos práticos.