Você está na página 1de 8

Mı́nimos quadrados ordinários aplicados à

superfı́cies
Priscila Gutierres
28 de Junho de 2018

Resumo
Nesse artigo discutiremos o algoritmo de mı́nimos quadrados para su-
perfı́cie, utilizando uma base polinomial.

1 Introdução
O método de mı́nimos quadrados é uma abordagem padrão em análise de re-
gressão para aproximar a solução de sistemas lineares sobredeterminados.
A aplicação mais importante é o ajuste de dados, de forma a minimizar a dife-
rença entre valores observados e o ajuste fornecido pelo modelo.
Nesse trabalho, discutiremos um algoritmo de mı́nimos quadrados aplicados a
duas funções.

2 Resultados teóricos
2.1 Definições e teoremas
Definição 2.1. Seja A 2 Rmx n . O sistema de n equações e n incógnitas dado
por:
At A D At b
é chamado de sistema de equações normais.

Definição 2.2. O erro quadrático médio (EQM) é definido como sendo a média
da diferença entre o valor do estimador e do parâmetro ao quadrado.

Teorema 1. Seja A 2 Rmx n . A possui posto máximo se, e somente se, a matriz
A é não singular.

Teorema 2. Dada uma matriz A 2 Rmx n e um vetor coluna b com dimensões


nx1, o vetor x com dimensões nx1 existe e é a solução do problema de mı́nimos
quadrados para o sistema sobre determinado Ax D b se, e somente se, x satisfaz
as equações normais AT Ax D AT b.

1
Teorema 3. A solução para x 2 Rn é única se, e somente se, A tem posto
máximo.

As demonstações desses resultados podem ser encontradas em [1].

2.2 Método dos mı́nimos quadrados


Dada uma matriz A 2 Rmx n e um vetor real b, queremos encontrar um vetor
x 2 Rn tal que r.x/ D jjAx bjj2 é minimizado. Seja R.A/ um subespaço de
Rm ,com m > n e Ax uma transformação linear de n em m.
Dado qualquer y 2 R.A/, existe x 2 Rn tal que Ax D y. Se b 2 Rm pertence a
R.A/, temos uma solução.
Caso contrário, considere o vetor Ax b que conecta os vetores Ax e b. Como
b … R.A/ projetamos b no plano R.A/ para obter um vetor u 2 R.A/. Logo,
existe um vetor x 2 Rn tal que Ax D u.
O vetor b Ax é ortogonal a R.A/, e como todo vetor em R.A/ é uma combinação
linear de colunas de A, que é formada por vetores do Rm , isso significa que b Ax
é ortogonal a cada uma das colunas de A, isto é:

AT .b Ax/ D 0

Desse modo, precisamos apenas calcular o sistema de equações normais para


obter o vetor u que minimiza o erro quadrático médio da solução procurada.

3 Algoritmo
3.1 Geração dos pontos e plotagem
O script em python main, cria pontos distribuı́dos em uma malha regular, ge-
rando um arquivo de saı́da para a posterior utilização no programa olse, que cal-
cula os coeficientes da aproximação de mı́nimos quadrados. Depois, esse mesmo
script em python, calcula o erro quadrático médio cometido na aproximação
e gera os gráficos da função e de sua aproximação em mı́nimos quadrados. O
script normalpoints.py, analogamente, cria pontos distribuı́dos normalmente e
depois calcula o erro quadrático médio cometido na aproximação em mı́nimos
quadrados.

3.2 Algoritmo de mı́nimos quadrados


O algoritmo olse (ordinary least square estimation), criado em linguagem C,
recebe o arquivo de pontos do script P em python Pe mostra a aproximação em
mı́nimos quadrados dada por 0 C niD1 ˛i x i C niD1 ˇi y i , nessa ordem.
Para a manipulação de álgebra linear, foi usada uma estrutura de dados simples,
no lugar de alguma estrutura pré-existente e otimizada para essa função, como
a GSL - GNU Scientific Library, disponı́vel para C e C++ , BLAS ou Lapack,
disponı́veis para Python e Fortran.
Primeiramente o código foi pensado para ser executado em modo serial. Du-
rante o desenvolvimento, procuramos otimizar de alguns trechos de código com
o OpenMP, mas por não ter sido inicialmente planejado para ser usado dessa
forma, o código se mostrou instável e em algumas tentativas inconsistente,

2
optando-se por mantê-lo serial.
Se continuado, o desenvolvimento levaria em conta o uso de alguma estrutura
de dados dedicada e testada como algumas das citadas e não a criação do zero
de bibliotecas para a paralelização posterior. [3]

3.3 Exemplo de utilização


Script main.py (malha regular): Mudamos a variável NPOINTS do script main
para o tamanho da malha desejada. Criamos os pontos da função desejada:
./main.py -creat s1_100points.dat regular s1
Script normalpoints.py (pontos criados a partir da distribuição normal): mu-
damos a variável mu e sigma para os valores desejados de média e desvio padrão
e NPOINTS para o número de pontos desejado no corpo do script.
Criamos os pontos da função desejada:
./normalpoints -creat s1_100points.dat normal s1
Executamos o método dos mı́nimos quadrados:

./olse s1_100points.dat 1
O programa olse cria um arquivo chamado output.dat. A seguir, plotamos e
calculamos o erro quadrático médio da malha regular com o seguinte comando:
./main.py -plotresult s1_100points.dat output.dat

Para pontos gerados com a distribuição normal, calculamos o erro quadrático


médio com o seguinte comando:
./normalpoints -mseresult s1_100points.dat output.dat

4 Resultados e discussão
Utilizamos duas funções para testar o algoritmo criado. São elas:

S1 .x; y/ D si n.x/ C cos.y/


e
1
S2 .x; y/ D
.x C 1/2 C y 2

4.1 Resultados para uma malha regular de pontos


Os arquivos referentes aos pontos e aos coeficientes utilizados podem ser encon-
trados nas pastas .../examples/regular grid/S1 e .../examples/regular grid/S2,
respectivamente.
Para a função S1 em uma malha regular, foram obtidos os seguintes resul-
tados:

3
Número de pontos Grau do polinômio Erro quadrático médio
100 1 0.4737171497303143
100 4 0.23596378937679863
100 6 0.1987871748061262
100 10 22367.00946090367

(a) Função original (b) Aproximação por polinômio de grau 1

Figura 1

(a) Aproximação por polinômio de grau 4 (b) Aproximação por polinômio de grau 6

Figura 2

Número de pontos Grau do polinômio Erro quadrático médio


10000 1 0.4752206712379134
10000 4 0.22681245243134154
10000 6 0.1926120422430487
10000 10 8692.62536901357

(a) Função original (b) Aproximação por polinômio de grau 1

Figura 3

4
(a) Aproximação por polinômio de grau 4 (b) Aproximação por polinômio de grau 6

Figura 4

Nas duas tabelas, podemos observar que para o polinômio de grau 10 a


solução diverge. Isso pode ser explicado pelo mau condicionamento da matriz
de coeficientes, que leva a uma solução errada para o problema de mı́nimos qua-
drados.
Qualitativamente e quantitativamente, podemos observar que o polinômio de
grau 6 oferece uma aproximação dos dados melhor que os polinômios de grau 1
e 4, com um EQM de aproximadamente 0,24.

Para a função S2 em uma malha regular, foram obtidos os seguintes resul-


tados:

Número de pontos Grau do polinômio Erro quadrático médio


100 1 0.002231280858731179
100 4 0.0018474540173799789
100 6 0.001933236040456637
100 10 752.3921131080267

(a) Função original (b) Aproximação por polinômio de grau 1

Figura 5

5
(a) Aproximação por polinômio de grau 4 (b) Aproximação por polinômio de grau 6

Figura 6

Número de pontos Grau do polinômio Erro quadrático médio


10000 1 0.0006187912870890108
10000 4 0.0005144381836153069
10000 6 0.0005612051084443939
10000 10 156.2316364608026

(a) Função original (b) Aproximação por polinômio de grau 1

Figura 7

(a) Aproximação por polinômio de grau 4 (b) Aproximação por polinômio de grau 6

Figura 8

Como esperado, para o grau 10 a solução foi divergente. Quantitativamente,


o polinômio com o menor EQM é o polinômio de grau 6. Como estamos tra-
balhando em uma malha regular de pontos, podemos observar a oscilação nas
bordas do intervalo, caracterizando o fenômeno de Runge.

6
4.2 Resultados para uma malha normal de pontos
Os arquivos referentes aos pontos e aos coeficientes utilizados podem ser encon-
trados nas pastas .../examples/normal/S1 e .../examples/normal/S2, respecti-
vamente.
Para a função S1 com uma distribuição normal de pontos de média 5 e desvio
padrão 0.6, foram obtidos os seguintes resultados:

Número de pontos Grau do polinômio Erro quadrático médio


100 1 0.050686088571271624
100 4 3.56749623345176e-06
100 6 1.540214990437028e-08

Número de pontos Grau do polinômio Erro quadrático médio


10000 1 0.049812826098435646
10000 4 2.3792656094825216e-05
10000 6 1.0738658729996415e-06
Para a função S2 com uma distribuição normal de pontos de média 5 e des-
vio padrão 0.6, foram obtidos os seguintes resultados:

Número de pontos Grau do polinômio Erro quadrático médio


100 1 1.9209105378887037e-06
100 4 4.704018327195444e-07
100 6 1.7876084186322767e-06

Número de pontos Grau do polinômio Erro quadrático médio


10000 1 1.5164781965688507e-06
10000 4 1.161877744484548e-06
10000 6 2.7209374268356375e-06
Aproximar uma região com a utilização de um único polinômio não é uma
boa abordagem, já que perdemos informação sobre o comportamento da função
ao longo da malha.
Para esse caso, a divisão da malha utilizando um polinômio interpolador em
cada em regiões definidas de forma a otimizar utilização dos dados é uma solução
melhor.

5 Conclusão
Para as duas funções testadas o algoritmo de mı́nimos quadrados mostrou re-
sultados satisfatórios para uma primeira implementação.
A utilização de uma estrutura de dadoas otimizada e a segmentação da malha
de pontos são melhorias que podem ser implementadas para obter resultados
ainda melhores.

7
Referências
[1] Jr. Ford, William., Numerical Linear Algebra with Applications using MA-
TLAB, Academic Press, 2014.
[2] Oshiro, S.M., Roma, A.M., Fabris, A.E., Rocha, M. S., Matsui, A.A.M.,
Suárez-lha, M.E.V. & lha,K. 1998. Um método numérico aplicado à adsorção
de CO2 em carvão ativado à várias temperaturas, ANAIS ASSOC. BRAS.
QUÍM. 47(2),170-173,1998.
[3] Aparecido Rodrigues, Francisco.,Técnicas de orientação a objetos para com-
putação cientı́fica paralela. Dissertação de mestrado, IFSC-USP, 2004.

Você também pode gostar