Mínimos Quadrados: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Tekkito (discussão | contribs)
Criou página com 'Este o nome que se da ao ajuste ou ''fitting'' de uma função (polinômio) a um conjunto de dados. Se <math>(X_i, Y_i)</math> com <math>i=1, N</math> representam o conjunto de ...'
 
Sebas (discussão | contribs)
pequeno erro de grafia mas com significado
 
(8 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
<!---
--->
Este o nome que se da ao ajuste ou ''fitting'' de uma função (polinômio) a um conjunto de dados.
Este o nome que se da ao ajuste ou ''fitting'' de uma função (polinômio) a um conjunto de dados.


Se <math>(X_i, Y_i)</math> com <math>i=1, N</math> representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou  
Se <math>(X_i, Y_i)</math> com <math>i=1, N</math> representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou  
de uma observação (pesquisa de opinião ou censo) ou de uma simulação numérica.
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe  
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe  
correlação (os pontos parecem estar sobre alguma curva). <br>
correlação (os pontos parecem estar sobre alguma curva). <br>
Depois o seguinte a fazer é o ajuste de mínimos quadrados:


Suponhamos que a relação aparente entre Y e X é linear:
=Equação linear=
 
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]
 
Sendo que um experimento foi realizado e temos <math>N</math> pontos, como descrito acima, e consideramos que um ajuste linear é coerente, uma reta deve ser construída para melhor representar estes pontos. Como mostrado na figura a baixo, para cada ponto, teremos um erro <math>\epsilon_i</math>, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,
 
:<math>\epsilon_i = y_i - f(x_i)</math> ,
 
onde
 
<!---
:<math>f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n</math>
--->
 
:<math>f(x) = \alpha_0 + \alpha_1x  </math>
 
é a função que representa a curva de melhor ajuste.
 
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro <math>\epsilon</math>. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de <math>\epsilon_i</math>. Isto poderia ser feito minimizando módulo de <math>\epsilon_i</math>, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos:
 
:<math>S = \sum_{i=1}^N \epsilon_i^2</math>,
assim
:<math>S = \sum_{i=1}^N [y_i - f(x_i)]^2 = \sum_{i=1}^N [y_i - f(x_i;\alpha_0,\alpha_1)]^2 </math>.
 
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar <math>S</math> em relação às constantes da função <math>(\alpha_0,\alpha_1)</math>:
 
:<math>\frac{\partial S}{\partial \alpha_i} = 0</math>.
 
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:
 
:<math>\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0</math>
e
:<math>\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0</math> .
 
Derivando as equações acima, temos que
 
:<math>\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0</math>
e
:<math>\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0</math> .
 
Assim,
 
:<math>\alpha_0\underbrace{\sum_{i=1}^N 1}_N + \alpha_1\underbrace{\sum_{i=1}^N x_i}_X = \underbrace{\sum_{i=1}^N y_i}_Y </math>
e
:<math>\alpha_0\underbrace{\sum_{i=1}^N x_i}_X + \alpha_1\underbrace{\sum_{i=1}^N x_i^2}_{X^2} = \underbrace{\sum_{i=1}^N y_ix_i}_{YX}</math> .
 
Lembre-se de que os valores <math>x_i</math> e <math>y_i</math> são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica
 
:<math>\begin{pmatrix}N & X \\ X & X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}</math> .
 
 
Cuidado com o fato que <math>(X^2 \neq X*X)</math> e <math>(YX \neq Y*X)</math>. Após construir a matriz, resolva com o método que mais lhe agrade (ha diversos métodos de solução de sistemas lineares, tais como a Regra de Cramer ou a eliminação Gaussiana).
 
=Equação quadrática=
 
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]
 
Utilizando o mesmo método descrito para um ajuste linear, considerando que o melhor ajuste para um conjunto de pontos seja uma curva proveniente de função quadrática, temos que a função é dada por
 
:<math>f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2</math> .
 
Desse modo, a soma do quadrado do erro fica
 
:<math>S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2</math>.
 
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:
 
:<math>\begin{pmatrix} N & X & X^2 \\ X & X^2 & X^3 \\ X^2 & X^3 & X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} </math> .
 
Fique atento ao fato de que
 
:<math>X = \sum_{i=1}^N X_i\, , \, Y = \sum_{i=1}^N Y_i \, , \, X^2 = \sum_{i=1}^N X_i^2 \, , \, X^3 = \sum_{i=1}^N X_i^3 \, , \, X^4 = \sum_{i=1}^N X_i^4 \, , \, YX = \sum_{i=1}^N Y_iX_i \,\, e \,\, YX^2 = \sum_{i=1}^N Y_iX_i^2</math> .
 
 
 
=Polinômio de grau n=
 
Generalizando o procedimento acima, apresentado para polinômios de grau 1 e 2, podemos ajustar um conjunto de pontos com um polinômio de um grau específico <math>n</math>. Assim, a função será descrita por
 
:<math>f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n</math>
 
e a soma dos quadrados do erro é dada por
 
:<math>S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2</math>.
 
Ao final do procedimento, teremos um sistema linear de <math>n</math> equações e <math>n</math> incógnitas para resolver. O resultado deste sistema são os coeficientes :<math>\alpha_0, \alpha_1, \alpha_2.. \alpha_n</math> que compõem o polinômio que melhor se ajusta aos dados experimentais.
 
:<math>\begin{pmatrix}N & X & X^2 & \dots & X^n \\ X & X^2 & X^3 & \dots & X^{n+1} \\ X^2 & X^3 & X^4 & \dots & X^{n+2} \\ \vdots & \vdots & \vdots & \, & \vdots \\ X^n & X^{n+1} & X^{n+2} & \dots & X^{2n}\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \\ \vdots \\ \alpha_n \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \\ \vdots \\ YX^n \end{pmatrix}</math>
 
 
 
=Outros tipos de funções=
 
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.
 
==Exponencial 1==
 
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:
 
:<math>f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 > 0 </math> ,
 
definimos uma nova  função :
 
:<math>f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x</math>.
 
Assim, recaímos no problema do ajuste linear recém visto:
 
:<math>f_2(x) = c_1 + c_2x</math>, com <math> c_1 = \ln(\alpha_1) </math> e  <math> c_2 = - \alpha_2</math>.
 
==Exponencial 2==
 
Se a função exponencial for do tipo:
 
:<math>f(x) = \alpha_1 \alpha_2^x</math>,
 
supondo <math>f(x)>0</math>, definimos:


:<math>Y = a + bX\;</math>
:<math>f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)</math>.


ou seja que para cada i:
Assim, como no caso anterior, voltamos para o problema de ajuste linear:


:<math>Y_i = a + b X_i\;</math>
:<math>f_2(x) = c_1 + c_2x</math>,


Definimos:
com <math> c_1 = \ln(\alpha_1) </math> e  <math> c_2=\ln(\alpha_2)</math>.


<math>\chi = \sum_{i=1}^N (Y_i - a - b X_i)^{2}</math>


Se a relação linear entre Y e X fosse exata o valor de <math>\chi</math> seria zero. Mas, como se trata de valores provenientes de um experimento,
==Algébrica==
mesmo sendo essa a relação entre eles, <math>\chi</math> não será zero. Entretanto os valores de {a, b} que procuramos são aqueles que minimizam o valor de <math>\chi</math>.
Isto não mostra o caminho para encontrar esses coeficientes:


<math>\frac{\partial\chi}{\partial a} = \frac{\partial\chi}{\partial b} = 0</math>
Se a função for do tipo:


o que nos leva a:
:<math>f(x) = \alpha_1 x^{\alpha_2}</math> ,


<math>\sum_{i=1}^N 2 (Y_i - a - b X_i)(-1) = 0 \Rightarrow \sum_{i=1}^N (Y_i - a - b X_i)= 0</math>
com <math>f(x)>0</math> e <math>x>0</math>, definimos:


<math>\sum_{i=1}^N 2 (Y_i - a - b X_i)(-X_i) = 0 \Rightarrow \sum_{i=1}^N (Y_i X_i - a X_i - b X_i^2)= 0</math>
:<math>f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)</math>.


Definindo a seguinte notação:
e assim


:<math>[1] = \sum_{i=1}^N 1 = N; \;\;\; [X] = \sum_{i=1}^N X_i; \;\;\; [Y] = \sum_{i=1}^N Y_i  </math>
:<math>f_2(x) = c_1 + c_2\ln(x)</math> ,


:<math>[XY] = \sum_{i=1}^N X_i Y_i; \;\; [X^2] = \sum_{i=1}^N X_i^2 </math>
onde <math>c_1 = \ln(\alpha_1)</math> e <math>c_2 = \alpha_2</math>. Note também que os valores de x devem ser transformados em <math>\ln(x)</math> para ajustar os pontos.


Temos as duas equações que determinam os valores de {a.b}:
 
----
=Código FORTRAN=
A seguir vemos uma possível implementação do método em linguagem F90.<br>
Observem a simplicidade do mesmo:
 
<pre>
! programa fortran para ajuste linear de conjunto de dados
Implicit none
Real :: xi,yi, x,y,xy,x2
Real :: det,a,b
 
n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0
Do
    Read(*,*,end=100) xi,yi
    n = n + 1                          ! soma do numero de pontosd
    x  = x  + xi;      y =  y + yi    ! somatorio dos x e y
    x2 = x2 + xi**2;  xy = xy + xi*y  ! somatorio dos x**2 e x*y <- cuidado ha um erro aqui (compila mas ...
End Do
 
100 det = n*x2 - x**2
a =  y*x2 - xy*x / det  ! <- outro erro aqui
b = ...          / det  !    fica como exercicio
 
print*, 'a=', a, 'b=', b
end
</pre>
=Ajuste ponderado=
Dependendo da situação, convém fazer um ajuste levando em conta o erro associado a cada ponto, i.e., atribuindo maior peso para pontos com um erro baixo e menor peso para os pontos onde o erro é sabidamente maior. Ou seja, se definirmos <math>w_i</math> como o peso associado ao ponto <math>(x_i,y_i)</math>, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.
Se <math>S_{y_i}</math> é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então <math>w_i</math> como:
 
<math>w_i=S_{y_i}^{-2}</math>
 
E o resíduo <math>\chi^2</math>, para o cálculo do ajuste ponderado, será dada por:
 
<math>\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i</math>
 
Aplicando o mesmo procedimento anterior para minimizar <math> \chi^2 </math>, obtemos as equações


:<math> \begin{bmatrix}
:<math> \begin{bmatrix}
a[1] + b[X]  & = &[ Y] \\
a[w] + b[xw]  & = &[yw] \\
a[X] + b[X^2] & = & [XY]  
a[xw] + b[x^2w] & = & [xyw]  
\end{bmatrix}</math>
\end{bmatrix}</math>


Ou seja, um sistema de duas equações lineares com duas incógnitas (a e b) em termos dos valores [1], [x], etc.<br>
E, portanto, os valores de <math>a</math> e <math>b</math> são:
Em forma matricial:
 
<math>a = ([yw][x^2w] - [xyw][xw]) / \Delta</math>
 
<math>b = ([w][xyw]  -  [xw][yw]) / \Delta</math>
 
com <math>\Delta</math>:
 
<math>\Delta = [w][x^2w] - [xw]^2</math>
 
=Erro dos coeficientes=
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.<br />
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.<br />
Mas como saber se esses coeficientes são "bons". Ou seja, que margem de erro eles tem.<br />
Intuitivamente sabemos que quanto maior seja a dispersão dos <math>y_i</math> em volta
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.
 
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,
eles são funções de <math>x_i</math> e <math>y_i</math>, onde só os segundos são considerados como
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:
 
<math>a = a(y_i) \Rightarrow \frac{\partial a}{\partial y_i} = \frac{1}{\Delta} \frac{\partial }{\partial y_i} \left\{[yw][x^2w] - [xyw][xw]\right\}</math>
 
<math>\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[x^2w] - x_i w_i [xw]\right\}</math>
 
Só os termos com y contribuem para a derivada. Como os <math>y_i</math> aparecem somados, ao derivar respeito do ''i''-esimo
sobra apenas o que multiplica ele
 
Para incluir o efeito do erro de cada <math>y_i</math> deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos
fazemos uma media quadrática deles:
 
<math>\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}</math>
 
onde:
<math>\left(\frac{\partial a}{\partial y_i}\Delta y_i \right)^2 = \frac{1}{\Delta^2} \left\{ w_i^2[x^2w]^2 + x_i^2 w_i^2 [xw]^2 - 2w_i[x^2w] x_i w_i [xw]\right\}w_i^{-1}</math>
 
o somatório fica:
 
<math>\frac{1}{\Delta^2} \sum_{i=1}^N \left(w_i[x^2w]^2 + x_i^2 w_i [xw]^2 - 2 [x^2w] x_i w_i [xw]\right) =
\frac{1}{\Delta^2} \left([w][x^2w]^2 + [x^2w][xw]^2 - 2 [x^2w][xw][xw]\right)</math>
 
 
e com mais algumas simplificações chegamos a simples relação:
 
<math>\Delta a = \sqrt{\frac{[x^2w]}{\Delta}}</math>
 
Analogamente para o b (que resulta ser mais fácil), se chega a:
 
<math>\Delta b = \sqrt{\frac{[w]}{\Delta}}</math>
 
 
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:
 
<math>w=1/(\Delta y)^2</math>
 
:<math>\Rightarrow \Delta = w^2 (N[x^2] - [x]^2)= (w N \sigma)^2</math>
 
onde <math>\sigma^2 = <x^2> - <x>^2</math>
 
resultando:
 
<math>\Delta a = \frac{\Delta y \sqrt{<x^2>}}{\sigma \sqrt{N}}</math>
 
<math>\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}</math>


:<math>
Por tanto, três fatores determinam a qualidade do ajuste:
\begin{matrix}
a &  [1] & [X]    & = &  [Y] \\
b &  [X] & [X^2]  & = & [XY]
\end{matrix}
</math>


Os valores a eb são obtidos resolvendo os determinantes correspondentes, ficando assim:
* E erro das medidas (<math>\Delta y</math>) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado
* O número de medidas <math>N</math>, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele
* Por último, a dispersão da viariável independente x (<math>\sigma</math>) também, quanto maior, melhor


<math>det = [1][X^2] - [X]^2</math>
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre <math>\Delta y</math>, apenas <math>N</math> pares de dados {<math>{x_i, y_i}</math>}.
Nesse caso podemos estimar o valor de  <math>\Delta y</math> pelo <math>\chi^2</math> assim:


<math>a = [Y][X^2] - [XY][X] / det</math>
<math>\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}</math>


<math>b = [1][XY]  - [X][Y] / det</math>
Pois o resíduo <math>\chi^2</math> pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.
O <math>N-2</math> em lugar de <math>N</math>, é pelo fato de que o ajuste já contem dois parâmetros (<math>a</math> e <math>b</math>
obtidos dos dados, então os erros individuais não são todos independentes.

Edição atual tal como às 14h22min de 27 de julho de 2021


Este o nome que se da ao ajuste ou fitting de uma função (polinômio) a um conjunto de dados.

Se (Xi,Yi) com i=1,N representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica. E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento) e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe correlação (os pontos parecem estar sobre alguma curva).

Equação linear

Exemplo de ajuste linear para um conjunto de pontos.

Sendo que um experimento foi realizado e temos N pontos, como descrito acima, e consideramos que um ajuste linear é coerente, uma reta deve ser construída para melhor representar estes pontos. Como mostrado na figura a baixo, para cada ponto, teremos um erro ϵi, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,

ϵi=yif(xi) ,

onde


f(x)=α0+α1x

é a função que representa a curva de melhor ajuste.

Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro ϵ. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto de ϵi. Isto poderia ser feito minimizando módulo de ϵi, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos:

S=i=1Nϵi2,

assim

S=i=1N[yif(xi)]2=i=1N[yif(xi;α0,α1)]2.

Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar S em relação às constantes da função (α0,α1):

Sαi=0.

Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:

Sα0=α0i=1N[yi(α0+α1xi)]2=0

e

Sα1=α1i=1N[yi(α0+α1xi)]2=0 .

Derivando as equações acima, temos que

i=1Nyii=1Nα0i=1Nα1xi=0

e

i=1Nyixii=1Nα0xii=1Nα1xi2=0 .

Assim,

α0i=1N1N+α1i=1NxiX=i=1NyiY

e

α0i=1NxiX+α1i=1Nxi2X2=i=1NyixiYX .

Lembre-se de que os valores xi e yi são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica

(NXXX2)(α0α1)=(YYX) .


Cuidado com o fato que (X2X*X) e (YXY*X). Após construir a matriz, resolva com o método que mais lhe agrade (ha diversos métodos de solução de sistemas lineares, tais como a Regra de Cramer ou a eliminação Gaussiana).

Equação quadrática

Exemplo de ajuste quadrático para um conjunto de pontos.

Utilizando o mesmo método descrito para um ajuste linear, considerando que o melhor ajuste para um conjunto de pontos seja uma curva proveniente de função quadrática, temos que a função é dada por

f(x)=α0+α1x+α2x2 .

Desse modo, a soma do quadrado do erro fica

S=i=1Nϵi2=i=1N[Yi(α0+α1Xi+α2Xi2)]2.

Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:

(NXX2XX2X3X2X3X4)(α0α1α2)=(YYXYX2) .

Fique atento ao fato de que

X=i=1NXi,Y=i=1NYi,X2=i=1NXi2,X3=i=1NXi3,X4=i=1NXi4,YX=i=1NYiXieYX2=i=1NYiXi2 .


Polinômio de grau n

Generalizando o procedimento acima, apresentado para polinômios de grau 1 e 2, podemos ajustar um conjunto de pontos com um polinômio de um grau específico n. Assim, a função será descrita por

f(x)=α0+α1x+α2x2+α3x3+...+αnxn

e a soma dos quadrados do erro é dada por

S=i=1Nϵi2=i=1N[Yif(Xi;α0,α1,...,αn)]2.

Ao final do procedimento, teremos um sistema linear de n equações e n incógnitas para resolver. O resultado deste sistema são os coeficientes :α0,α1,α2..αn que compõem o polinômio que melhor se ajusta aos dados experimentais.

(NXX2XnXX2X3Xn+1X2X3X4Xn+2XnXn+1Xn+2X2n)(α0α1α2αn)=(YYXYX2YXn)


Outros tipos de funções

Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.

Exponencial 1

Se os dados de um experimento se ajustarem bem a uma função exponencial do tipo:

f(x)=α1eα2x,α1,α2>0 ,

definimos uma nova função :

f2(x)=ln(f(x))=ln(α1eα2x)=ln(α1)α2x.

Assim, recaímos no problema do ajuste linear recém visto:

f2(x)=c1+c2x, com c1=ln(α1) e c2=α2.

Exponencial 2

Se a função exponencial for do tipo:

f(x)=α1α2x,

supondo f(x)>0, definimos:

f2(x)=ln(f(x))=ln(α1)+xln(α2).

Assim, como no caso anterior, voltamos para o problema de ajuste linear:

f2(x)=c1+c2x,

com c1=ln(α1) e c2=ln(α2).


Algébrica

Se a função for do tipo:

f(x)=α1xα2 ,

com f(x)>0 e x>0, definimos:

f2(x)=ln(f(x))=ln(α1)+α2ln(x).

e assim

f2(x)=c1+c2ln(x) ,

onde c1=ln(α1) e c2=α2. Note também que os valores de x devem ser transformados em ln(x) para ajustar os pontos.



Código FORTRAN

A seguir vemos uma possível implementação do método em linguagem F90.
Observem a simplicidade do mesmo:

 ! programa fortran para ajuste linear de conjunto de dados
 Implicit none
 Real :: xi,yi, x,y,xy,x2
 Real :: det,a,b

 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0
 Do
    Read(*,*,end=100) xi,yi
    n = n + 1                          ! soma do numero de pontosd
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y <- cuidado ha um erro aqui (compila mas ...
 End Do

 100 det = n*x2 - x**2
 a =  y*x2 - xy*x / det  ! <- outro erro aqui
 b = ...          / det  !    fica como exercicio

 print*, 'a=', a, 'b=', b
 end

Ajuste ponderado

Dependendo da situação, convém fazer um ajuste levando em conta o erro associado a cada ponto, i.e., atribuindo maior peso para pontos com um erro baixo e menor peso para os pontos onde o erro é sabidamente maior. Ou seja, se definirmos wi como o peso associado ao ponto (xi,yi), gostaríamos que ele seja maior quanto menor for o erro associado a este ponto. Se Syi é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então wi como:

wi=Syi2

E o resíduo χ2, para o cálculo do ajuste ponderado, será dada por:

χ2=i=1N(yiabxi)2wi

Aplicando o mesmo procedimento anterior para minimizar χ2, obtemos as equações

[a[w]+b[xw]=[yw]a[xw]+b[x2w]=[xyw]]

E, portanto, os valores de a e b são:

a=([yw][x2w][xyw][xw])/Δ

b=([w][xyw][xw][yw])/Δ

com Δ:

Δ=[w][x2w][xw]2

Erro dos coeficientes

Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.
Mas como saber se esses coeficientes são "bons". Ou seja, que margem de erro eles tem.
Intuitivamente sabemos que quanto maior seja a dispersão dos yi em volta da curva do ajuste, maior será nossa incerteza sobre os coeficientes.

Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b, eles são funções de xi e yi, onde só os segundos são considerados como fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:

a=a(yi)ayi=1Δyi{[yw][x2w][xyw][xw]}

ayi=1Δ{wi[x2w]xiwi[xw]}

Só os termos com y contribuem para a derivada. Como os yi aparecem somados, ao derivar respeito do i-esimo sobra apenas o que multiplica ele

Para incluir o efeito do erro de cada yi deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos fazemos uma media quadrática deles:

Δa=i=1N(ayiΔyi)2

onde: (ayiΔyi)2=1Δ2{wi2[x2w]2+xi2wi2[xw]22wi[x2w]xiwi[xw]}wi1

o somatório fica:

1Δ2i=1N(wi[x2w]2+xi2wi[xw]22[x2w]xiwi[xw])=1Δ2([w][x2w]2+[x2w][xw]22[x2w][xw][xw])


e com mais algumas simplificações chegamos a simples relação:

Δa=[x2w]Δ

Analogamente para o b (que resulta ser mais fácil), se chega a:

Δb=[w]Δ


Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:

w=1/(Δy)2

Δ=w2(N[x2][x]2)=(wNσ)2

onde σ2=<x2><x>2

resultando:

Δa=Δy<x2>σN

Δb=ΔyσN

Por tanto, três fatores determinam a qualidade do ajuste:

  • E erro das medidas (Δy) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado
  • O número de medidas N, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele
  • Por último, a dispersão da viariável independente x (σ) também, quanto maior, melhor

Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre Δy, apenas N pares de dados {xi,yi}. Nesse caso podemos estimar o valor de Δy pelo χ2 assim:

Δyχ2N2

Pois o resíduo χ2 pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste. O N2 em lugar de N, é pelo fato de que o ajuste já contem dois parâmetros (a e b obtidos dos dados, então os erros individuais não são todos independentes.