Mínimos Quadrados Móveis - Paulo-de-Souza/MatPhyEng GitHub Wiki
Data: 04 de Maio de 2025
Resumo feito com ajuda do DeepSeek
O Método dos Mínimos Quadrados Móveis (Moving Least Squares - MLS) é uma técnica de aproximação usada para ajustar superfícies ou funções a um conjunto de pontos dispersos, sendo muito utilizada em computação gráfica, elementos finitos sem malha (meshfree methods) e reconstrução de superfícies.
O MLS é uma extensão do método tradicional dos mínimos quadrados, mas com a diferença de que os pesos dos pontos variam de acordo com a posição de avaliação. Isso significa que a aproximação é local, ou seja, os pontos mais próximos da região de interesse têm maior influência no resultado.
Dado um conjunto de pontos {
onde:
-
$p(x)=[p_1(x),p_2(x),...,p_m(x)]^T$ é uma base de funções (geralmente polinômios). -
$a(x)=[a_1(x),a_2(x),...,a_m(x)]^T$ são coeficientes que variam com$x$ .
Para cada ponto de avaliação
onde
Derivando
onde:
-
$P$ é a matriz de base avaliada nos pontos$x_i$ $W(x) = diag(w_1(x),w_2(x),...,w_n(x))$ $y = [y_1,y_2,...,y_n]^T$
Substituindo
-
Suavidade: A suavidade da aproximação depende da função de peso
$wi(x)$ e da base$p(x)$ . -
Interpolação/Aproximação: Se
$w_i(x)\rightarrow \infty$ quando$x \rightarrow x_i$ , o MLS interpola os dados. Caso contrário, apenas aproxima. -
Custo Computacional: Como a matriz
$P^T W(x)P$ deve ser invertida para cada$x$ , o método pode ser computacionalmente intensivo.
- Reconstrução de Superfícies: Usado em point cloud para gerar superfícies suaves.
- Métodos Sem Malha (Meshfree): Em simulações físicas onde malhas são difíceis de gerar.
- Computação Gráfica: Para deformação de objetos e animação.
O MLS é um método de aproximação local que usa ponderação por distância para ajustar funções a dados dispersos. Sua flexibilidade o torna útil em várias áreas, mas exige cuidado na escolha das funções de peso e base para garantir precisão e eficiência.
A tabela a seguir da um referência geral das diferenças entre os dois métodos, o
Critério | LS | MLS |
---|---|---|
Escopo | Global (coeficientes constantes) | Local (coeficientes variam com x) |
Função peso | Não usa |
|
Sensibilidade | Alta | Baixa (pesos reduzem influência de distantes) |
Aplicação Típica | Ajuste de curvas, regressão | Métodos Meshless |
Custo Computacional | Baixo (resolve um sistema para todo o domínio) | Alto (resolve um sistema para cada ponto de interesse) |
Para um polinômio quadrático, a base seria:
e a matriz
Para casos multidimensionais irão surgir termos cruzados, um exemplo em superfície 2D, com termos até segunda ordem terá a base:
e a matriz
O cálculo do MLS segue os mesmos passos do caso 1D mas agora com 6 coeficientes
Algumas Observações
- Custo Computacional: Bases maiores (com muitos termos) exigem inverter matrizes maiores, o que pode ser caro para muitos pontos.
- Overfiting: Polinômios de alta ordem ou muitas interações podem levar a sobreajuste. Funções de peso bem escolhidas ajudam a controlar isso.
- Implementação: Em códigos, usar bibliotecas como
numpy
para construir$P$ e resolver o sistema linear.
No método Moving Least Squares (MLS), a escolha da função peso
- Decaimento com a distância:
$w_i(x)$ deve diminuir conforme$|x-x_i|$ aumenta. - Suporte compacto: Pode ser definida apenas numa região ao redor de
$x$ (raio de influência$h$ ), reduzindo custo computacional.
A escolha do parâmetro
- h pequeno: aproximação mais localizada (risco de underfitting).
- h grande: suavização excessiva (risco de overfitting).
A função Gaussiana apresenta as seguintes características:
- Suave (infinitamente diferenciável).
- Não tem suporte compacto estrito (peso nunca é exatamente zero), mas decai rapidamente.
- Parâmetro h controla o raio de influência.
E é definida pela equação:
A spline cúbico apresenta:
- Suporte compacto (peso zero para
$r > 1$ ) - Duas vezes diferenciável
- Muito usada em métodos sem malha
Sendo
Esse tipo de peso tem a característica de ser constante perto de
Suave dentro do suporte, porém complexa computacionalmente, é definida por:
Por fim, um peso definido linearmente apresenta uma simplicidade em implementação, no entanto é diferenciável somente uma vez, sendo escrito conforme:
Uma comparação entre as funções é expressa na tabela
Função | Suporte Compacto? | Suavidade |
Custo Computacional |
---|---|---|---|
Gaussiana | Não | Alto | |
Exponencial | Sim | Alto | |
Spline Cúbico | Sim | Moderado | |
Flat Top | Sim | Baixo | |
Linear | Sim | Muito Baixo |
Quando Usar Cada Uma?
- Gaussiana: Quando suavidade extrema é necessária (ex: reconstrução de superfícies).
- Spline Cúbico: Métodos sem malha (EFGM) onde balancear suavidade e eficiência é crítico.
- Flat Top: Para interpolação exata nos pontos.
- Linear: Aplicações simples onde diferenciabilidade não é essencial.