Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão Python

7.1 Ajuste de uma reta


Nesta seção, discutiremos o procedimento de ajuste de uma reta a um conjunto de pontos dados. Em outras palavras, discutiremos o método de solução para o problema de encontrar o polinômio do primeiro grau que melhor se aproxima a um dado conjunto de pontos pelo método dos mínimos quadrados.

Seja, então, {(x1,y1), (x2,y2),, (xN,yN)} um conjunto de N pontos dados. Buscamos encontrar a função f(x) = a1 + a2x tal que o resíduo

R = j=1N(f(x j) - yj)2 (7.3)

seja mínimo.

Para tal, primeiro observamos que f(xj) = a1 + a2xj e, portanto, o resíduo pode ser escrito explicitamente como uma função de a1 e a2 conforme a seguinte expressão:

R(a1,a2) = j=1N(a 1 + a2xj - yj)2. (7.4)

Observamos que R(a1,a2) é uma forma quadrática e que seu mínimo ocorre quando suas derivadas parciais primeiras são iguais a zero, isto é, R a1 = a1 j=1N(a 1 + a2xj - yj)2 = 0, (7.5) R a2 = a2 j=1N(a 1 + a2xj - yj)2 = 0. (7.6)

Ou seja, 2 j=1N(a 1 + a2xj - yj) 1 = 0, (7.7) 2 j=1N(a 1 + a2xj - yj) xj = 0, (7.8)

e isolando as incógnitas temos a1 j=1N1 + a 2 j=1Nx j = j=1Ny j, (7.9) a1 j=1Nx j + a2 j=1Nx j2 = j=1Ny jxj. (7.10)

Observando que j=1N1 = N, o sistema linear acima pode ser escrito na forma matricial Ma = w, isto é,

N j=1Nx j j=1Nx j j=1Nx j2 M a1 a2 a = j=1Ny j j=1Nx jyj w. (7.11)

Este sistema linear de duas equações e duas incógnitas admite uma única solução quando o determinante da matriz dos coeficientes for não nulo, isto é, N j=1Nx j2 - j=1Nx j 20 (7.12)

Pode-se mostrar usando a desigualdade de Cauchy–Schwarz que isto acontece quando existem pelo menos duas abscissas diferentes envolvidas no ajuste. Usando a fórmula da inversa de uma matriz dois-por-dois, chegamos às seguintes fórmulas para os coeficientes a1 e a2:

a1 = j=1Nx j2 j=1Ny j - j=1Nx j j=1Nx jyj N j=1Nxj2 - j=1Nxj 2 a2 = N j=1Nx jyj - j=1Nx j j=1Ny j N j=1Nxj2 - j=1Nxj 2 (7.13)

Por fim, observamos que o sistema Ma = w descrito na Equação (7.11) pode ser reescrito na forma V T V a = V T y, onde V := [1x] é a matriz dos coeficientes do seguinte sistema linear sobre determinado:

a1 + a2x1 = y1 a1 + a2x2 = y2 a1 + a2xN = yN (7.14)

Se os pontos dados não são colineares, este sistema não tem solução. Mas, sempre que pelo menos duas abscissas foram diferentes, M = V T V é uma matriz invertível e (veja o Exercício 7.1.1), então

a = V T V -1V T y, (7.15)

nos fornece a chamada solução por mínimos quadrados do sistema (7.14). Note que esta é uma forma de obter os coeficientes a = (a1,a2) equivalente àquela dada em (7.13).

Exemplo 7.1.1. Retornemos ao Exemplo 7.0.1. Isto é, dado o conjunto de pontos {(1, 1,2), (1,5, 1,3), (2, 2,3)}, encontrar a função do tipo f(x) = a1 + a2x que melhor se ajusta os pontos dados no sentido de mínimos quadrados.

Solução. Usando as fórmulas em (7.13), obtemos a1 = 7,25 4,8 - 4,5 7,75 3 7,25 - 20,25 = -0,05, (7.16) a2 = 3 7,75 - 4,5 4,8 3 7,25 - 20,25 = 1,1. (7.17)

Ou seja, verificamos que, de fato, a função f(x) = -0,05 + 1,1x corresponde à reta que melhor ajusta os pontos dados no sentido de mínimos quadrados. Os pontos e a reta ajustada estão esboçados na Figura 7.1.

Deixamos ao leitor a verificação de que os coeficientes a1 e a2 também podem ser obtidos pela expressão (7.15).

Em Python, podemos computar os coeficientes a1 e a2 da seguinte forma:

>>> xi = np.array([1, 1.5, 2])  
>>> yi = np.array([1.2,1.3,2.3])  
>>> V = np.array([xi**1,xi**0]).transpose();V  
array([[ 1. ,  1. ],  
       [ 1.5,  1. ],  
       [ 2. ,  1. ]])  
>>> a = ((np.linalg.inv((V.transpose()).dot(V))).dot(V.transpose())).dot(yi);a  
array([ 1.1 , -0.05])

Então, o gráfico da função ajustada e dos pontos pode ser obtido com os comandos:

>>> xx = np.linspace(0.5,2.5)  
>>> plt.plot(xi,yi,’ro’,xx,np.polyval(a,xx),’b-’)  
>>> plt.grid();plt.show()

O procedimento apresentado de ajuste de uma reta por mínimos quadrados pode ser generalizado para qualquer família de funções que seja um espaço vetorial de dimensão finita. Problemas de ajuste com tais famílias de funções é o que chamamos de problemas de ajuste linear, os quais exploramos em detalhe na próxima seção.

Exercício resolvido


ER 7.1.1.

a)
Mostre que o sistema linear Ma = w descrito na Equação 7.11 pode ser reescrito na forma V T V a = V T y, onde V = [1x].
b)
Mostre que V , como definido no item a), tem posto igual a 2 quando pelo menos duas abscissas do conjunto de pontos {(xj,yj)}j=1N são diferentes. E, portanto, M = V T V é uma matriz invertível.

Solução.
a)
Basta observar que
V T V = 1 1 1 x 1 x2 xN 1 x1 1 x2 1 x N = N j=1Nx j j=1Nx j j=1Nx j2 = M (7.18)

e

V T y = 1 1 1 x 1 x2 xN y1 y2 y N = j=1Ny j j=1Nx jyj = w. (7.19)
b)
Sejam xixj duas abscissas diferentes. Então, a i-ésima e j-ésima linhas na matriz V são linearmente independentes e, portanto, o posto de V é igual a 2. Por fim, V T V é não singular, pois, se u é tal que V T V u = 0, então
0 = uT V T V u = (V u)T (V u) = (V u) (V u) V u = 0. (7.20)

Agora, V u = 0 é uma combinação linear das linhas de V igual a zero, logo u = 0, pois as linhas de V são linearmente independentes como mostrado antes. Concluímos que se V T V u = 0, então u = 0, isto é, V T V é não singular.

Exercícios


E 7.1.1. Sejam dados o conjunto de pontos {(0,23,-0,54), (-0,30,-0,54), (0,04,-0,57)}. Encontre a função f(x) = a1 + a2x que melhor se ajusta no sentido de mínimos quadrados aos pontos dados. Faça, então, um gráfico com os pontos e o esboço da função ajustada.

Resposta. f(x) = -0,55 - 0,01x.

E 7.1.2. Seja dado o conjunto de pontos {(-0,35, 0,2), (0,15,-0,5), (0,23, 0,54), (0,35, 0,7)}. Encontre a função f(x) = a1 + a2x que melhor se ajusta no sentido de mínimos quadrados aos pontos dados. Faça, então, um gráfico com os pontos e o esboço da função ajustada.

Resposta. f(x) = 0,19 - 0,47x.

E 7.1.3. Seja dado o conjunto de pontos {(-1,94, 1,02), (-1,44, 0,59), (0,93,-0,28), (1,39,-1,04)}. Encontre a função f(x) = a1 + a2x que melhor se ajusta no sentido de mínimos quadrados aos pontos dados. Então, responda cada item:

a)
Encontre o valor de f(1).
b)
Encontre o valor de f(0,93).
c)
Encontre o valor de |f(0,93) - (-0,28)|.
d)
Encontre o valor do resíduo R = j=1N(f(x j) - yj)2.

Forneça os valores calculados com 7 dígitos significativo por arredondamento.

Resposta. a)  - 0,6025387; b)  - 0,5651848; c) 0,2851848; d) 0,1488041.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 15/5/2019 às 15:24:50.

Informe erros ou edite você mesmo!