Mínimos Quadrados Móveis - Paulo-de-Souza/MatPhyEng GitHub Wiki

Mínimos Quadrados Móveis

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.

Princípio Básico

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.

Funcionamento do MLS

Definição da Função de Aproximação

Dado um conjunto de pontos { $x_i,y_i$ } $^n_{i=1}$, queremos aproximar uma função $f(x)$ na forma:

$$ f(x) \approx \hat{f}(x) = \sum_{j=1}^m p_j(x)a_j(x) = p^T(x)a(x) $$

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$.

Minimização Ponderada Localmente

Para cada ponto de avaliação $x$, minimizamos o erro quadrático ponderado:

$$J(x) = \sum_{i=1}^n w_i(x) [\hat{f}(x_i)-y_i]^2$$

onde $w_i(x)$ é uma função de peso que decresce com a distância $|x - x_i|$ (ex: Gaussiana, spline cúbico).

Solução para Coeficientes a(x)

Derivando $J(x)$ em relação a $a(x)$ e igualando a zero, obtemos:

$$a(x) = (P^TW(x)P)^{-1}P^TW(x)y$$

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$

Aproximação Final

Substituindo $a(x)$ na expressão de $\hat{f}(x)$, temos:

$$\hat{f}(x) = p^T(x)(P^TW(x)P)^{-1}P^TW(x)y$$

Características Importantes

  • 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.

Aplicações

  • 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.

Resumo

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.

Diferença entre o MLS e o Mínimos Quadrados Tradicional (LS)

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 $w_i(x)$ (ex.: Gaussiana, função cúbica)
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)

Base Polinomial de Segunda Ordem

Caso Unidimensional

Para um polinômio quadrático, a base seria:

$$p(x)= \begin{bmatrix} 1 \\ x \\ x^2 \end{bmatrix} $$

e a matriz $P$ (para N pontos) ficaria:

$$P = \begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ \vdots & \vdots & \vdots \\ 1 & x_N & x_N^2 \end{bmatrix} $$

Caso Multidimensional

Para casos multidimensionais irão surgir termos cruzados, um exemplo em superfície 2D, com termos até segunda ordem terá a base:

$$p(x,y)= \begin{bmatrix} 1 & x & y & xy & x^2 & y^2 \end{bmatrix}^T $$

e a matriz $P$ (para N pontos do tipo ($x_i,y_i$)) ficaria:

$$P = \begin{bmatrix} 1 & x_1 & y_1 & x_1y_1 & x_1^2 & y_1^2 \\ 1 & x_2 & y_2 & x_2y_2 & x_2^2 & y_2^2 \\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots\\ 1 & x_N & y_N & x_Ny_N & x_N^2 & y_N^2 \end{bmatrix} $$

O cálculo do MLS segue os mesmos passos do caso 1D mas agora com 6 coeficientes

$$\hat{f}(x,y) = a_0 + a_1x + a_2y + a_3xy + a_4x^2 + a_5y^2$$

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.

Funções de Peso

No método Moving Least Squares (MLS), a escolha da função peso $w_i(x)$ é crucial, pois determina a influência dos pontos vizinhos na aproximação local. As funções peso devem satisfazer duas propriedades principais:

  1. Decaimento com a distância: $w_i(x)$ deve diminuir conforme $|x-x_i|$ aumenta.
  2. 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$ define a vizinhança considerada para a aproximação, podendo ser fixo ou adaptativo.

  • h pequeno: aproximação mais localizada (risco de underfitting).
  • h grande: suavização excessiva (risco de overfitting).

Funções de peso usuais no MLS

Função Gaussiana

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:

$$w_i = exp \left(-\left(\frac{|x-x_i|}{2} \right)^2 \right)$$

Spline Cúbico

A spline cúbico apresenta:

  • Suporte compacto (peso zero para $r > 1$)
  • Duas vezes diferenciável
  • Muito usada em métodos sem malha

Sendo $r = |x-x_i|/h$, sua expressão é dada por:

$$w_i(r) = 1 - 6r^2 + 8r^3 - 3r^4 \hspace{1cm} r \leq 1$$

Função Flat Top

Esse tipo de peso tem a característica de ser constante perto de $x_i$, o que é útil para interpolações exatas, ao definir $0 < \alpha < 1$, a expressão para a flat top é:

$$w_i(r) = 1 \hspace{1cm} r \leq \alpha$$

$$w_i(r) = \frac{(1-r)^2}{1-\alpha} \hspace{1cm}\alpha < r \leq 1$$

$$w_i(r) = 0 \hspace{1cm} r > 1$$

Função Exponencial com Suporte Compacto

Suave dentro do suporte, porém complexa computacionalmente, é definida por:

$$w_i(r) = exp \left(-\left(\frac{r^2}{1-r^2} \right)\right) \hspace{1cm} r < 1$$

Função Linear Simples

Por fim, um peso definido linearmente apresenta uma simplicidade em implementação, no entanto é diferenciável somente uma vez, sendo escrito conforme:

$$w_i(r) = 1 -r \hspace{1cm} r \leq 1$$

Uma comparação entre as funções é expressa na tabela

Função Suporte Compacto? Suavidade $C^k$ Custo Computacional
Gaussiana Não $C^\infty$ Alto
Exponencial Sim $C^\infty$ Alto
Spline Cúbico Sim $C^2$ Moderado
Flat Top Sim $C^1$ Baixo
Linear Sim $C^0$ 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.
⚠️ **GitHub.com Fallback** ⚠️