<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://fiscomp.if.ufrgs.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sebas</id>
	<title>Física Computacional - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="http://fiscomp.if.ufrgs.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sebas"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Especial:Contribui%C3%A7%C3%B5es/Sebas"/>
	<updated>2026-04-29T00:18:22Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=5548</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=5548"/>
		<updated>2021-07-27T14:22:21Z</updated>

		<summary type="html">&lt;p&gt;Sebas: pequeno erro de grafia mas com significado&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = y_i - f(x_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(x_i,y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[xw]   &amp;amp; = &amp;amp;[yw] \\&lt;br /&gt;
a[xw] + b[x^2w] &amp;amp; = &amp;amp; [xyw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = ([yw][x^2w] - [xyw][xw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = ([w][xyw]  -  [xw][yw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][x^2w] - [xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[x^2w] - x_i w_i [xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Só os termos com y contribuem para a derivada. Como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do &#039;&#039;i&#039;&#039;-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][x^2w]^2 + [x^2w][xw]^2 - 2 [x^2w][xw][xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[x^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[x^2] - [x]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável independente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2387</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2387"/>
		<updated>2018-07-04T14:52:43Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Ajuste ponderado */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = y_i - f(x_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(x_i,y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[xw]   &amp;amp; = &amp;amp;[yw] \\&lt;br /&gt;
a[xw] + b[x^2w] &amp;amp; = &amp;amp; [xyw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = ([yw][x^2w] - [xyw][xw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = ([w][xyw]  -  [xw][yw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][x^2w] - [xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[x^2w] - x_i w_i [xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Só os termos com y contribuem para a derivada. Como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do &#039;&#039;i&#039;&#039;-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][x^2w]^2 + [x^2w][xw]^2 - 2 [x^2w][xw][xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[x^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[x^2] - [x]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2386</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2386"/>
		<updated>2018-07-04T14:51:48Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Erro dos coeficientes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = y_i - f(x_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[xw]   &amp;amp; = &amp;amp;[yw] \\&lt;br /&gt;
a[xw] + b[x^2w] &amp;amp; = &amp;amp; [xyw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = ([yw][x^2w] - [xyw][xw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = ([w][xyw]  -  [xw][yw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][x^2w] - [xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[x^2w] - x_i w_i [xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Só os termos com y contribuem para a derivada. Como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do &#039;&#039;i&#039;&#039;-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][x^2w]^2 + [x^2w][xw]^2 - 2 [x^2w][xw][xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[x^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[x^2] - [x]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2385</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2385"/>
		<updated>2018-07-04T14:45:46Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Ajuste ponderado */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = y_i - f(x_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[xw]   &amp;amp; = &amp;amp;[yw] \\&lt;br /&gt;
a[xw] + b[x^2w] &amp;amp; = &amp;amp; [xyw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = ([yw][x^2w] - [xyw][xw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = ([w][xyw]  -  [xw][yw]) / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][x^2w] - [xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[X^2w] - x_i w_i [Xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pois só os termos com y contribuem para a derivada. e como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do i-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][X^2w]^2 + [X^2w][Xw]^2 - 2 [X^2w][Xw][Xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[X^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[X^2] - [X]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2384</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2384"/>
		<updated>2018-07-04T14:40:25Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Equação linear */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = y_i - f(x_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [y_i - (\alpha_0 + \alpha_1x_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1x_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N y_ix_i - \sum_{i=1}^N \alpha_0x_i - \sum_{i=1}^N \alpha_1x_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[Xw]   &amp;amp; = &amp;amp;[Yw] \\&lt;br /&gt;
a[Xw] + b[X^2w] &amp;amp; = &amp;amp; [XYw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = [Yw][X^2w] - [XYw][Xw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = [w][XYw]  -  [Xw][Yw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][X^2w] - [Xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[X^2w] - x_i w_i [Xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pois só os termos com y contribuem para a derivada. e como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do i-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][X^2w]^2 + [X^2w][Xw]^2 - 2 [X^2w][Xw][Xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[X^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[X^2] - [X]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2383</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2383"/>
		<updated>2018-07-04T14:35:08Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Ajuste ponderado */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = Y_i - f(X_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1X_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_iX_i - \sum_{i=1}^N \alpha_0X_i - \sum_{i=1}^N \alpha_1X_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;Y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (y_i - a - b x_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[Xw]   &amp;amp; = &amp;amp;[Yw] \\&lt;br /&gt;
a[Xw] + b[X^2w] &amp;amp; = &amp;amp; [XYw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = [Yw][X^2w] - [XYw][Xw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = [w][XYw]  -  [Xw][Yw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][X^2w] - [Xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[X^2w] - x_i w_i [Xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pois só os termos com y contribuem para a derivada. e como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do i-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][X^2w]^2 + [X^2w][Xw]^2 - 2 [X^2w][Xw][Xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[X^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[X^2] - [X]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2382</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2382"/>
		<updated>2018-07-04T14:33:36Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = Y_i - f(X_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1X_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_iX_i - \sum_{i=1}^N \alpha_0X_i - \sum_{i=1}^N \alpha_1X_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;Y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (Y_i - a - b X_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[Xw]   &amp;amp; = &amp;amp;[Yw] \\&lt;br /&gt;
a[Xw] + b[X^2w] &amp;amp; = &amp;amp; [XYw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = [Yw][X^2w] - [XYw][Xw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = [w][XYw]  -  [Xw][Yw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][X^2w] - [Xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[X^2w] - x_i w_i [Xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pois só os termos com y contribuem para a derivada. e como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do i-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][X^2w]^2 + [X^2w][Xw]^2 - 2 [X^2w][Xw][Xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[X^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[X^2] - [X]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \frac{\Delta y \sqrt{&amp;lt;x^2&amp;gt;}}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \frac{\Delta y}{\sigma \sqrt{N}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;) também, quanto maior, melhor&lt;br /&gt;
&lt;br /&gt;
Por último, consideremos o caso mais simples, ajuste sem ponderar e sem informação sobre &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;, apenas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pares de dados {&amp;lt;math&amp;gt;{x_i, y_i}&amp;lt;/math&amp;gt;}.&lt;br /&gt;
Nesse caso podemos estimar o valor de  &amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt; pelo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; assim:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;math&amp;gt;\Delta y \approx \sqrt{\frac{\chi^2}{N-2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pois o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt; pode ser interpretado como o somatório dos erros de cada ponto, tomados como a distancia entre a medida e o ajuste.&lt;br /&gt;
O &amp;lt;math&amp;gt;N-2&amp;lt;/math&amp;gt; em lugar de &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, é pelo fato de que o ajuste já contem dois parâmetros (&amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;&lt;br /&gt;
obtidos dos dados, então os erros individuais não são todos independentes.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2381</id>
		<title>Mínimos Quadrados</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=M%C3%ADnimos_Quadrados&amp;diff=2381"/>
		<updated>2018-07-02T22:45:03Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Este o nome que se da ao ajuste ou &#039;&#039;fitting&#039;&#039; de uma função (polinômio) a um conjunto de dados.&lt;br /&gt;
&lt;br /&gt;
Se &amp;lt;math&amp;gt;(X_i, Y_i)&amp;lt;/math&amp;gt; com &amp;lt;math&amp;gt;i=1, N&amp;lt;/math&amp;gt; representam o conjunto de dados (N) obtidos de um experimento (instrumento) ou &lt;br /&gt;
de uma observação (por exemplo, em pesquisa de opinião ou censo) ou de uma simulação numérica.&lt;br /&gt;
E se suspeitamos que existe uma correlação entre os X (variável independente ou de entrada, controlada pelo experimento)&lt;br /&gt;
e os Y (cuja dependência com X queremos testar), primeiro colocamos os pontos num gráfico para ver se o conjunto forma&lt;br /&gt;
uma nuvem dispersa (quando não existe correlação aparente, isto é X e Y não conformam uma função), ou se existe &lt;br /&gt;
correlação (os pontos parecem estar sobre alguma curva). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Equação linear=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadlinear.png|right|frame|Exemplo de ajuste linear para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
Sendo que um experimento foi realizado e temos &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; 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 &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, que é definido como a distância entre o ponto experimental e a curva (reta neste caso) teórica que desejamos ajustar, ou seja,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\epsilon_i = Y_i - f(X_i)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!---&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + .... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é a função que representa a curva de melhor ajuste. &lt;br /&gt;
&lt;br /&gt;
Para encontrar a reta que melhor se ajusta aos dados experimentais, desejamos minimizar o erro &amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;. Como o erro pode ter tanto valores negativos quanto positivos, o que importa é minimizar o valor absoluto  de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;. Isto poderia ser feito minimizando módulo de &amp;lt;math&amp;gt;\epsilon_i&amp;lt;/math&amp;gt;, mas como a função módulo tem uma descontinuidade, é mais fácil minimizar o quadrado do erro. Para isto, definimos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim&lt;br /&gt;
:&amp;lt;math&amp;gt;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 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para obter a melhor reta que se ajusta aos dados experimentais, temos que minimizar &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; em relação às constantes da função &amp;lt;math&amp;gt;(\alpha_0,\alpha_1)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_i} = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Como a reta possui apenas dois coeficientes, para o ajuste linear temos duas equações:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_0} = \frac{\partial}{\partial \alpha_0}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{\partial S}{\partial \alpha_1} = \frac{\partial}{\partial \alpha_1}\sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i)]^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Derivando as equações acima, temos que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_i - \sum_{i=1}^N \alpha_0 - \sum_{i=1}^N \alpha_1X_i = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\sum_{i=1}^N Y_iX_i - \sum_{i=1}^N \alpha_0X_i - \sum_{i=1}^N \alpha_1X_i^2 = 0&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Assim,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\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 &amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Lembre-se de que os valores &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;Y_i&amp;lt;/math&amp;gt; são conhecidos (são dados do problema). Desse modo, terminamos com um sistema linear para resolver, que na notação matricial fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X \\ X &amp;amp; X^2\end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \end{pmatrix} = \begin{pmatrix} Y \\ YX \end{pmatrix}&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cuidado com o fato que &amp;lt;math&amp;gt;(X^2 \neq X*X)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(YX \neq Y*X)&amp;lt;/math&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Equação quadrática=&lt;br /&gt;
&lt;br /&gt;
[[Image:minquadquadratico.png|right|frame|Exemplo de ajuste quadrático para um conjunto de pontos.]]&lt;br /&gt;
&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Desse modo, a soma do quadrado do erro fica&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - (\alpha_0 + \alpha_1X_i + \alpha_2X_i^2)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Após algumas contas, como feito na seção anterior, temos o sistema linear de 3 equações e 3 incógnitas para resolver:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix} N &amp;amp; X &amp;amp; X^2 \\ X &amp;amp; X^2 &amp;amp; X^3 \\ X^2 &amp;amp; X^3 &amp;amp; X^4 \end{pmatrix} \begin{pmatrix} \alpha_0 \\ \alpha_1 \\ \alpha_2 \end{pmatrix} = \begin{pmatrix} Y \\ YX \\ YX^2 \end{pmatrix} &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
Fique atento ao fato de que&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;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&amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polinômio de grau n=&lt;br /&gt;
&lt;br /&gt;
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 &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Assim, a função será descrita por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_0 + \alpha_1x + \alpha_2x^2 + \alpha_3x^3 + ... + \alpha_nx^n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e a soma dos quadrados do erro é dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N [Y_i - f(X_i;\alpha_0,\alpha_1,...,\alpha_n)]^2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ao final do procedimento, teremos um sistema linear de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; equações e &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; incógnitas para resolver. O resultado deste sistema são os coeficientes :&amp;lt;math&amp;gt;\alpha_0, \alpha_1, \alpha_2.. \alpha_n&amp;lt;/math&amp;gt; que compõem o polinômio que melhor se ajusta aos dados experimentais.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}N &amp;amp; X &amp;amp; X^2 &amp;amp; \dots &amp;amp; X^n \\ X &amp;amp; X^2 &amp;amp; X^3 &amp;amp; \dots &amp;amp; X^{n+1} \\ X^2 &amp;amp; X^3 &amp;amp; X^4 &amp;amp; \dots &amp;amp; X^{n+2} \\ \vdots &amp;amp; \vdots &amp;amp; \vdots &amp;amp; \, &amp;amp; \vdots \\ X^n &amp;amp; X^{n+1} &amp;amp; X^{n+2} &amp;amp; \dots &amp;amp; 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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Outros tipos de funções=&lt;br /&gt;
&lt;br /&gt;
Dependendo do tipo de experimento, podem haver outras relações entre os pontos, como funções exponenciais.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 1==&lt;br /&gt;
&lt;br /&gt;
Se os dados de um experimento se ajustarem bem  a uma função exponencial do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 e^{-\alpha_2x} \, , \, \, \, \alpha_1\, , \, \alpha_2 &amp;gt; 0 &amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
definimos uma nova  função :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1 e^{-\alpha_2 x}) = \ln(\alpha_1) - \alpha_2 x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, recaímos no problema do ajuste linear recém visto: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;, com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2 = - \alpha_2&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Exponencial 2==&lt;br /&gt;
&lt;br /&gt;
Se a função exponencial for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 \alpha_2^x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
supondo &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + x\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Assim, como no caso anterior, voltamos para o problema de ajuste linear:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2x&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt; c_1 = \ln(\alpha_1) &amp;lt;/math&amp;gt; e  &amp;lt;math&amp;gt; c_2=\ln(\alpha_2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Algébrica==&lt;br /&gt;
&lt;br /&gt;
Se a função for do tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \alpha_1 x^{\alpha_2}&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;f(x)&amp;gt;0&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x&amp;gt;0&amp;lt;/math&amp;gt;, definimos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = \ln(f(x)) = \ln(\alpha_1) + \alpha_2\ln(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f_2(x) = c_1 + c_2\ln(x)&amp;lt;/math&amp;gt; ,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;c_1 = \ln(\alpha_1)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;c_2 = \alpha_2&amp;lt;/math&amp;gt;. Note também que os valores de x devem ser transformados em &amp;lt;math&amp;gt;\ln(x)&amp;lt;/math&amp;gt; para ajustar os pontos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Código FORTRAN=&lt;br /&gt;
A seguir vemos uma possível implementação do método em linguagem F90.&amp;lt;br&amp;gt;&lt;br /&gt;
Observem a simplicidade do mesmo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ! programa fortran para ajuste linear de conjunto de dados&lt;br /&gt;
 Implicit none&lt;br /&gt;
 Real :: xi,yi, x,y,xy,x2&lt;br /&gt;
 Real :: det,a,b&lt;br /&gt;
&lt;br /&gt;
 n = 0;  x = 0;  y = 0;  xy = 0;  x2 = 0&lt;br /&gt;
 Do&lt;br /&gt;
    Read(*,*,end=100) xi,yi&lt;br /&gt;
    n = n + 1                          ! soma do numero de pontosd&lt;br /&gt;
    x  = x  + xi;      y =  y + yi     ! somatorio dos x e y&lt;br /&gt;
    x2 = x2 + xi**2;  xy = xy + xi*y   ! somatorio dos x**2 e x*y &amp;lt;- cuidado ha um erro aqui (compila mas ...&lt;br /&gt;
 End Do&lt;br /&gt;
&lt;br /&gt;
 100 det = n*x2 - x**2&lt;br /&gt;
 a =  y*x2 - xy*x / det  ! &amp;lt;- outro erro aqui&lt;br /&gt;
 b = ...          / det  !    fica como exercicio&lt;br /&gt;
&lt;br /&gt;
 print*, &#039;a=&#039;, a, &#039;b=&#039;, b&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Ajuste ponderado=&lt;br /&gt;
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 &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como o peso associado ao ponto &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, gostaríamos que ele seja maior quanto menor for o erro associado a este ponto.&lt;br /&gt;
Se &amp;lt;math&amp;gt;S_{y_i}&amp;lt;/math&amp;gt; é o erro associado a este ponto, e considerando que o ajuste proposto é tal que minimiza a distância quadrática, podemos definir então &amp;lt;math&amp;gt;w_i&amp;lt;/math&amp;gt; como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w_i=S_{y_i}^{-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resíduo &amp;lt;math&amp;gt;\chi^2&amp;lt;/math&amp;gt;, para o cálculo do ajuste ponderado, será dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\chi^2 = \sum_{i=1}^N (Y_i - a - b X_i)^{2}w_i&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando o mesmo procedimento anterior para minimizar &amp;lt;math&amp;gt; \chi^2 &amp;lt;/math&amp;gt;, obtemos as equações&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \begin{bmatrix}&lt;br /&gt;
a[w] + b[Xw]   &amp;amp; = &amp;amp;[Yw] \\&lt;br /&gt;
a[Xw] + b[X^2w] &amp;amp; = &amp;amp; [XYw] &lt;br /&gt;
\end{bmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E, portanto, os valores de &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; são:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;a = [Yw][X^2w] - [XYw][Xw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;b = [w][XYw]  -  [Xw][Yw] / \Delta&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
com &amp;lt;math&amp;gt;\Delta&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta = [w][X^2w] - [Xw]^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Erro dos coeficientes=&lt;br /&gt;
Vimos como obter os coeficientes (a e b para uma reta) do ajuste de um conjunto de dados.&amp;lt;br /&amp;gt; &lt;br /&gt;
Também como fazer esse ajuste quando os erros na variável dependente y não são todos iguais.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mas como saber se esses coeficientes são &amp;quot;bons&amp;quot;. Ou seja, que margem de erro eles tem.&amp;lt;br /&amp;gt;&lt;br /&gt;
Intuitivamente sabemos que quanto maior seja a dispersão dos &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; em volta&lt;br /&gt;
da curva do ajuste, maior será nossa incerteza sobre os coeficientes.&lt;br /&gt;
&lt;br /&gt;
Vamos ver como traduzir isso de forma quantitativa. Voltando as expressões dos coeficientes a e b,&lt;br /&gt;
eles são funções de &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt;, onde só os segundos são considerados como &lt;br /&gt;
fonte de erro. Assim para ver como o erro neles propaga-se para os coeficientes, escrevemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;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\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{\partial a}{\partial y_i} = \frac{1}{\Delta}\left\{ w_i[X^2w] - x_i w_i [Xw]\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
pois só os termos com y contribuem para a derivada. e como os &amp;lt;math&amp;gt;y_i&amp;lt;/math&amp;gt; aparecem somados, ao derivar respeito do i-esimo&lt;br /&gt;
sobra apenas o que multiplica ele&lt;br /&gt;
&lt;br /&gt;
Para incluir o efeito do erro de cada y_i deveriamos somar i de 1 a N, mas como o erro pode ser para mais o menos&lt;br /&gt;
fazemos uma media quadrática deles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\sum_{i=1}^N \left( \frac{\partial a}{\partial y_i} \Delta y_i \right)^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde:&lt;br /&gt;
&amp;lt;math&amp;gt;\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}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
o somatório fica:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\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) = &lt;br /&gt;
\frac{1}{\Delta^2} \left([w][X^2w]^2 + [X^2w][Xw]^2 - 2 [X^2w][Xw][Xw]\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
e com mais algumas simplificações chegamos a simples relação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \sqrt{\frac{[X^2w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analogamente para o b (que resulta ser mais fácil), se chega a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \sqrt{\frac{[w]}{\Delta}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podemos interpretar essa expressões no caso sem ponderar, ou seja quando todos os erros são iguais:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;w=1/(\Delta y)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\Rightarrow \Delta = w^2 (N[X^2] - [X]^2)= (w N \sigma)^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt;\sigma^2 = &amp;lt;x^2&amp;gt; - &amp;lt;x&amp;gt;^2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
resultando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta a = \Delta y \sqrt{\frac{&amp;lt;x^2&amp;gt;}{N\sigma^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta b = \Delta y \sqrt{\frac{1}{N\sigma^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por tanto, três fatores determinam a qualidade do ajuste:&lt;br /&gt;
&lt;br /&gt;
* E erro das medidas (&amp;lt;math&amp;gt;\Delta y&amp;lt;/math&amp;gt;) que deve ser minimizado, porem está geralmente limitado pelo instrumento utililizado&lt;br /&gt;
* O número de medidas &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;, quanto maior, melhor, porem vemos que o erro dos coeficientes diminui com a raiz dele&lt;br /&gt;
* Por último, a dispersão da viariável dependente x (&amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;), também quanto maior, melhor&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Laborat%C3%B3rio_de_Estruturas_Celulares&amp;diff=2380</id>
		<title>Laboratório de Estruturas Celulares</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Laborat%C3%B3rio_de_Estruturas_Celulares&amp;diff=2380"/>
		<updated>2018-03-21T18:30:00Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;No laboratório de estruturas celulares temos como objetivo o estudo experimental e teórico da organização de tecidos biológicos. Estes estudos vão desde a morfogênese de organismos muito simples tais como a [[Hidra]], ou&lt;br /&gt;
o [[Dictyostelium]], como o estudo da disseminação do câncer.&lt;br /&gt;
&lt;br /&gt;
Projetos em andamento&lt;br /&gt;
&lt;br /&gt;
Medidas de tensão superficial em agregados de hidras.&lt;br /&gt;
&lt;br /&gt;
Morfogênese da hidra como função do número inicial de células.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Artigos de Hidras:&lt;br /&gt;
&lt;br /&gt;
Regeneration of Hydra from reaggregated cells - A. Gierer et al. (1972)[http://www.ncbi.nlm.nih.gov/pubmed/4507522]&lt;br /&gt;
&lt;br /&gt;
Minimum tissue size required for hydra regeneration - H. Shimizu et al. (1993)[http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6WDG-45PMHGB-31&amp;amp;_user=687304&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;view=c&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=687304&amp;amp;md5=6a50418222b8b0c14144c579b0efca26]&lt;br /&gt;
&lt;br /&gt;
Pattern formation in the immortal Hydra -  Werner A. Müller[http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6TCY-42R6XJF-B&amp;amp;_user=687304&amp;amp;_coverDate=03%2F31%2F1996&amp;amp;_rdoc=12&amp;amp;_fmt=high&amp;amp;_orig=browse&amp;amp;_srch=doc-info(%23toc%235183%231996%23999879996%23241172%23FLP%23display%23Volume)&amp;amp;_cdi=5183&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;_ct=20&amp;amp;_acct=C000037798&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=687304&amp;amp;md5=b791042ea3121eaee887336a4bd109fa]&lt;br /&gt;
&lt;br /&gt;
Parameters of self-organization in hydra aggregates - U. Technau et al. (2000)[http://www.pnas.org/content/97/22/12127.abstract]&lt;br /&gt;
&lt;br /&gt;
Biological pattern formation: from basic mechanisms to complex structures. A. J. Koch and H. Meinhardt. Rev. Mod. Phys. 66, 1481 - 1507 (1994)[http://prola.aps.org/abstract/RMP/v66/i4/p1481_1]&lt;br /&gt;
&lt;br /&gt;
A receptor based model for pattern formation in Hydra. J. A. Sherratt et al. Forma 10, 77 - 95 (1995)[http://eprints.maths.ox.ac.uk/474/01/63.pdf]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Teoria_de_Redes_e_Crime&amp;diff=2379</id>
		<title>Teoria de Redes e Crime</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Teoria_de_Redes_e_Crime&amp;diff=2379"/>
		<updated>2018-03-21T18:25:18Z</updated>

		<summary type="html">&lt;p&gt;Sebas: Criou página com &amp;#039;Aplicação de técnicas da mecânica estatística, numéricas e analíticas para estudo de grafos abstratos e de sistemas reais (redes sociais e tecnológicas) com o intuito...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aplicação de técnicas da mecânica estatística, numéricas e analíticas para estudo de grafos&lt;br /&gt;
abstratos e de sistemas reais (redes sociais e tecnológicas) com o intuito de &lt;br /&gt;
subsidiar o combate ao crime.&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=P%C3%A1gina_principal&amp;diff=2378</id>
		<title>Página principal</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=P%C3%A1gina_principal&amp;diff=2378"/>
		<updated>2018-03-21T18:22:27Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;A Wiki is a collaboratively edited Web site designed to promote the accumulation and refining of data with the least possible hassle. Any user viewing a Wiki can edit anything they see quickly and easily&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bem vindos a &#039;&#039;&#039;ComplexWiki&#039;&#039;&#039;, ambiente de trabalho cooperativo para [[#Pesquisa]], [[#Ensino]] e dicas sobre [[#Linux]].&lt;br /&gt;
É preciso se cadastrar para fazer contribuições.&lt;br /&gt;
ComplexWiki está dentro do [http://www.if.ufrgs.br Instituto de Física].&lt;br /&gt;
-- &#039;&#039;Sebastián Gonçalves&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Visite também o [http://www.if.ufrgs.br/wiki wiki oficial] do Instituto de Física--&amp;gt;&lt;br /&gt;
Consulte [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User&#039;s Guide] para informações de como usar o software wiki (em inglês) e [[ComplexWiki:Sobre]] sobre o estilo local.&lt;br /&gt;
&lt;br /&gt;
== Pesquisa ==&lt;br /&gt;
&lt;br /&gt;
* [[Atrito]]&lt;br /&gt;
&lt;br /&gt;
* [[Econofísica]]&lt;br /&gt;
&lt;br /&gt;
* [[Epidemias]]&lt;br /&gt;
&lt;br /&gt;
* [[Laboratório de Estruturas Celulares]]&lt;br /&gt;
&lt;br /&gt;
* [[Teoria de Redes e Crime]]&lt;br /&gt;
&lt;br /&gt;
[[Instituições de pesquisa]] sobre complexidade no mundo&lt;br /&gt;
&lt;br /&gt;
[[Conferencias]]&lt;br /&gt;
&lt;br /&gt;
== Ensino ==&lt;br /&gt;
&lt;br /&gt;
===[[Métodos computacionais]]===&lt;br /&gt;
&lt;br /&gt;
===[[FIP20706 Tópicos em Física Estatística: redes e dinâmica de epidemias]]=== &lt;br /&gt;
&lt;br /&gt;
===[[Introdução a Sistemas Dinâmicos]]===&lt;br /&gt;
&lt;br /&gt;
===[[Dinâmica Molecular]]===&lt;br /&gt;
&lt;br /&gt;
===Texto de Apoio ao Ensino de Física===&lt;br /&gt;
&lt;br /&gt;
* [[Ondas]]&lt;br /&gt;
 &lt;br /&gt;
* [[Raio X]]&lt;br /&gt;
&lt;br /&gt;
===[[Applets]]===&lt;br /&gt;
&lt;br /&gt;
===[[Dicas para apresentações]]===&lt;br /&gt;
&lt;br /&gt;
==Linux Forum==&lt;br /&gt;
&lt;br /&gt;
====Hardware====&lt;br /&gt;
&lt;br /&gt;
* [[Touchpad (Synaptic/ALPS)]]&lt;br /&gt;
&lt;br /&gt;
* [[Impressoras multifuncionais]]: instalando o scanner&lt;br /&gt;
&lt;br /&gt;
* [[linux &amp;amp; vaio sz]]&lt;br /&gt;
&lt;br /&gt;
====Software====&lt;br /&gt;
&lt;br /&gt;
* [[instalação de linux basica pela rede]]: procedimento&lt;br /&gt;
&lt;br /&gt;
* [[Reinstalando todos os pacotes de instalação antiga]]&lt;br /&gt;
&lt;br /&gt;
* [[sources.list]]: configurando automaticamente&lt;br /&gt;
&lt;br /&gt;
* [[kubuntu]]: como configurar senha de root&lt;br /&gt;
&lt;br /&gt;
* f90 da Intel: [[upgrade para Edgy]]&lt;br /&gt;
&lt;br /&gt;
* [[32 bits rodando em 64]]: como configurar&lt;br /&gt;
&lt;br /&gt;
* [[thunderbird &amp;amp; firefox]]: como escolher o navegador que abre os links do thunderbird&lt;br /&gt;
&lt;br /&gt;
* [[thunderbird]]: instalando dicionários &lt;br /&gt;
&lt;br /&gt;
* [[XFig]]: truques&lt;br /&gt;
&lt;br /&gt;
* [[pdf]]&lt;br /&gt;
&lt;br /&gt;
* [[latex, emacs, UTF-8 e acentos]]&lt;br /&gt;
&lt;br /&gt;
* [[c cedilha no Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
* [[sincronizar estação]]&lt;br /&gt;
&lt;br /&gt;
* [[colocar legendas num video]]&lt;br /&gt;
&lt;br /&gt;
== Mix ==&lt;br /&gt;
&lt;br /&gt;
[[Distribuição Docente 2007]]&lt;br /&gt;
&lt;br /&gt;
== Consulta (wiki) ==&lt;br /&gt;
* [[mysql]]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Setting_user_rights_in_MediaWiki Dando privilégio de Administrador (sysop ou OpSys) para um usuário]&lt;br /&gt;
* [[Mudando o titulo da página principal (mainpage)]]&lt;br /&gt;
* [[Modificando a barra de navegação (navigation bar)]]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Page_access_restriction_with_MediaWiki#Get_the_patch Restringindo páginas]&lt;br /&gt;
* [[Fórmulas]] e [http://meta.wikimedia.org/wiki/Help:Table tabelas]&lt;br /&gt;
* [http://isaacnewton.princeton.edu/index.php/MediaWiki:Color_Names As cores do mediawiki]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Extended_image_syntax#Location Imágens (avanzado)]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Layout_customization Customization]&lt;br /&gt;
* [[Backup de servidor wiki]]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Upgrading_MediaWiki Upgrade do mediawiki]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Help:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Help:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://mail.wikipedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Gnuplot Extensão para Gnuplot]&lt;br /&gt;
* [[Moodle]]&lt;br /&gt;
* [[mediawiki: dicas]]&lt;br /&gt;
&lt;br /&gt;
== Novidades ==&lt;br /&gt;
&lt;br /&gt;
Adicionado suporte para Gnuplot (veja [[Espaço dos alunos]] )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Não mexer o que segue, do not touch below --&amp;gt;&lt;br /&gt;
&amp;lt;!-- linha para Google analytics, ponerla en cada pagina que quiero monitorar --&amp;gt;&lt;br /&gt;
&amp;lt;analytics uacct=&amp;quot;UA-379257-2&amp;quot;&amp;gt;&amp;lt;/analytics&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;--&#039;&#039;&#039;MediaWiki instalado com sucesso.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Consulte o [http://meta.wikimedia.org/wiki/Help:Contents Manual de Usuário] para informações de como usar o software wiki.&lt;br /&gt;
&lt;br /&gt;
== Começando ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opções de configuração]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ do MediaWiki]&lt;br /&gt;
* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Atrito&amp;diff=2377</id>
		<title>Atrito</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Atrito&amp;diff=2377"/>
		<updated>2018-03-21T18:21:18Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Integrantes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Professores IF: &#039;&#039;Silvio Dahmen, Sebastián Gonçalves&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Douturado: &#039;&#039;Maria Luján Iglesias (em andamento)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Doutores: &#039;&#039;Italo Neide (UNIVATES)&#039;&#039;, &#039;&#039;Evy Salcedo Torres (UFSC)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Coolaboradores Externos: &#039;&#039;Miguel Kiwi (Univ de Chile) Claudio Fusco (Lyon), V.M. Kenkre (UNM-USA), Mukesh Tiwari&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objetivo:&#039;&#039;&#039; entender as causas microscópicas do atrito para explicar e predizer tanto os experimentos a escala microscópica quanto as observaçõs no dominio macroscópico &lt;br /&gt;
&lt;br /&gt;
== Assuntos ==&lt;br /&gt;
&lt;br /&gt;
*[[Atrito de dímero em 2D]]&lt;br /&gt;
&lt;br /&gt;
*[[Potenciais de interação]]&lt;br /&gt;
&lt;br /&gt;
*[[coolaboration with Claudio]]&lt;br /&gt;
&lt;br /&gt;
*[[Coolaboración con Miguel y Ricardo]]&lt;br /&gt;
*[[Artigos Relevantes]]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=362</id>
		<title>Área 3</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=362"/>
		<updated>2016-04-14T17:05:26Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A) Interpolação e Extrapolação&lt;br /&gt;
--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
1 - Explique a ideia do algoritmo de Neville (linhas gerais).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2 - Em aula fizemos um algoritmo que interpola um conjunto de pontos usando o algoritmo de Neville.&lt;br /&gt;
Na ocasião, eu propus que os polinómios fossem mapeados em uma matriz quadrada A de dimensão NxN, onde os elementos da primeira coluna eram os pontos P11, P22, P33, etc e os demais elementos eram colocados nas demais colunas...&lt;br /&gt;
Agora eu quero propor uma outra maneira de mapear e isto implica uma outra maneira de construir o algoritmo. O objetivo é que você ENTENDA os passos, construa o seu algoritmo com calma. &lt;br /&gt;
Mapeie da seguinte maneira:&lt;br /&gt;
os polinómios P11, P22, P33, etc (os quais são dados do problema) são colocados na diagonal principal da matriz A (A[1][1], A[2][2], etc). Em seguida, os polinómios P12, P23, P34, etc, são colocados na diagonal seguinte (A[1][2], A[2][3], etc) . Os polinómios P123, P234, etc na outra diagonal (A[1][3], A[2][4], etc) e assim sucessivamente.&lt;br /&gt;
Este algoritmo terá uma fórmula de recorrência diferente daquele feito em aula e também a maneira de variar os índices será outra.&lt;br /&gt;
&lt;br /&gt;
Use os seguintes N=4 pontos como dados de entrada:&lt;br /&gt;
&lt;br /&gt;
0.000000 0.000000&lt;br /&gt;
&lt;br /&gt;
1.500000 0.997495&lt;br /&gt;
&lt;br /&gt;
3.000000 0.141120&lt;br /&gt;
&lt;br /&gt;
4.500000 -0.977530&lt;br /&gt;
&lt;br /&gt;
Uma vez que o algoritmo esteja funcionando para N=4, use os seguintes N=9 pontos:&lt;br /&gt;
&lt;br /&gt;
0.000000 0.000000&lt;br /&gt;
 &lt;br /&gt;
0.750000 0.681639&lt;br /&gt;
&lt;br /&gt;
1.500000 0.997495&lt;br /&gt;
&lt;br /&gt;
2.250000 0.778073&lt;br /&gt;
&lt;br /&gt;
3.000000 0.141120&lt;br /&gt;
&lt;br /&gt;
3.750000 -0.571561&lt;br /&gt;
&lt;br /&gt;
4.500000 -0.977530&lt;br /&gt;
&lt;br /&gt;
5.250000 -0.858935&lt;br /&gt;
&lt;br /&gt;
6.000000 -0.279415&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O ideal é fazer um programa que leia estes dados de dentro de um arquivo de entrada e faça a interpolação para um valor de N qualquer que o usuário queira.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3 - Use o algoritmo construído em 2 para interpolar os seguintes N=11 pontos:&lt;br /&gt;
&lt;br /&gt;
0.000000 -0.200000&lt;br /&gt;
&lt;br /&gt;
0.600000 -0.227273&lt;br /&gt;
&lt;br /&gt;
1.200000 -0.263158&lt;br /&gt;
&lt;br /&gt;
1.800000 -0.312500&lt;br /&gt;
&lt;br /&gt;
2.400000 -0.384615&lt;br /&gt;
&lt;br /&gt;
3.000000 -0.500000&lt;br /&gt;
&lt;br /&gt;
3.600000 -0.714286&lt;br /&gt;
&lt;br /&gt;
4.200000 -1.250000&lt;br /&gt;
&lt;br /&gt;
4.800000 -4.999993&lt;br /&gt;
&lt;br /&gt;
5.400000 2.500002&lt;br /&gt;
&lt;br /&gt;
6.000000 1.000000&lt;br /&gt;
&lt;br /&gt;
Desenhe no gnuplot estes pontos e os valores interpolados pelo seu programa. Varie x entre 0 e 6 varrendo x a cada 0.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
B) Zeros de Funções&lt;br /&gt;
------------------------------&lt;br /&gt;
&lt;br /&gt;
Legenda para esta seção: &lt;br /&gt;
&amp;lt;math&amp;gt;F(x) = f(x) + x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
F&#039;(x) é a derivada de F(x) com relação à x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Considere a função &amp;lt;math&amp;gt;f(x) = e^{-x/10}\sin(2x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4 - Faça no gnuplot um gráfico desta função dentro do intervalo pedido [-5:5]. Desenhe junto a linha y=0 para que você possa visualizar graficamente quantas raízes há neste intervalo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 - Retome o programa (fornecido em aula e que está no Moodle) que calcula zeros de funções usando o método de Newton-Raphson e adapte-do para encontrar TODOS os zeros da função f(x) no intervalo [-5:5]. Imprima estas raízes num arquivo chamado raizes.dat.&lt;br /&gt;
Fundamental se dar conta de alguns &amp;quot;detalhes&amp;quot; antes de executar esta tarefa:&lt;br /&gt;
* Como o método de Newton-Raphson encontra apenas uma raiz para cada valor &amp;quot;chute&amp;quot; de x (&amp;quot;x_init&amp;quot;), então você deverá relançar o método várias vezes até encontrar todas as raízes do intervalo. Isto exige que você faça um loop variando &amp;quot;x_init&amp;quot; e, para cada x_init, você aplica o método de iteração.&lt;br /&gt;
* Note que o método pode (e provavelmente vai) encontrar a mesma raiz mais de uma vez. Você não deve estocar raízes repetidas! e isto implica que você deve pensar em uma maneira de fazer isto (dicas no final da lista para os que quiserem)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6 - Faça exatamente o mesmo procedimento que fizeste no problema 5 com o método de iteração simples. Uma vez feito o algoritmo do problema 5, basta você alterar a parte que calcula a iteração para usar o método de iteração simples visto em aula. &lt;br /&gt;
Usando este método, quantas raízes você consegue encontrar? &lt;br /&gt;
Calcule F&#039;(x) para cada raiz encontrada no problema 5 e interprete o resultado que você acaba de obter à luz do que foi discutido em aula sobre a estabilidade do método de iteração simples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7- método de bissecção: discuta brevemente as desvantagens deste método.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dicas para o problema 5 (no ponto onde você vai verificar se a nova raiz encontrada já foi calculada)&lt;br /&gt;
a) você pode estocar as raízes em uma matriz (ex raizes[] ) e, a cada vez que o algoritmo encontra uma raiz, ele deve comparar com as demais raízes já estocadas na matriz raizes[].&lt;br /&gt;
b) quando você for comparar a nova raiz encontrada (digamos x) com os elementos da matriz raizes[] (digamos raizes[i]), perceba que você estará comparando números reais. Então cuidado com os operadores de igual (==) ou diferente (!=), pois um número será diferente do outro se e somente se todas os algarismos significativos o forem! portanto, ao invés de comparar se x!=raizes[i], faça fabs(x-raizes[i]) &amp;lt; PRECISAO, onde fmod(a) é o módulo de a.&lt;br /&gt;
c) não hesite em &amp;quot;debugar&amp;quot; o seu programa ! Isto vai ajudá-la(o) a entender o que há de errado.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
C) Ajuste de curvas usando o método dos mínimos quadrados&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8)  Dados os pontos;&lt;br /&gt;
&lt;br /&gt;
x: 0.10    0.20    0.30    0.40    0.50    0.60    0.70   0.80    0.90  1.00&lt;br /&gt;
&lt;br /&gt;
y:  0.62    0.63    0.64    0.66    0.68    0.71   0.76    0.81    0.89  1.00&lt;br /&gt;
&lt;br /&gt;
Ajuste uma função do tipo f(x) = a0+a1*x+a2*x2 usando o método dos mínimos quadrados. Depois faça um gráfico usando os pontos da tabela e compare com a curva teórica que você calculou.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) A resistência à compressão do concreto ( chamada de sigma ), decresce com o aumento da razão água/cimento (w/c, cuja unidade é em galões de água por saco de cimento). A resistência à compressão de várias amostras  é dada na tabela a seguir:&lt;br /&gt;
&lt;br /&gt;
w/c:         4.5       5.0     5.5      6.0         6.5      7.0       7.5      8.0       8.5     9.0&lt;br /&gt;
&lt;br /&gt;
sigma:     7000  6125  5237    4665     4123   3810   3107     3070     2580     2287&lt;br /&gt;
&lt;br /&gt;
Usando o método dos mínimos quadrados e utilizando uma função do tipo &amp;lt;math&amp;gt;g(x)= a e^{-bx}&amp;lt;/math&amp;gt; ,  onde &amp;lt;math&amp;gt;g(x)=sigma&amp;lt;/math&amp;gt;  e  &amp;lt;math&amp;gt;x=w/c&amp;lt;/math&amp;gt;,  ajuste o  sigma aos dados da tabela. &lt;br /&gt;
Note que é possível linearizar a g(x) fazendo uma substituição de variável:  &amp;lt;math&amp;gt;f(x) = ln(g(x)) = ln(a) - b x&amp;lt;/math&amp;gt;. Isto recai exatamente na função linear &amp;lt;math&amp;gt;f(x)=a_0+a_1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a_0=ln(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a_1=-b&amp;lt;/math&amp;gt;.  É importante dar-se conta, no momento de ajustar a g(x), que você usou o &amp;lt;math&amp;gt;ln(g(x))&amp;lt;/math&amp;gt;  para chegar a sua forma linearizada. Portanto, no momento de ajustar os pontos fornecidos, você deve também  transformar o &amp;quot;sigma&amp;quot; pela mesma função: &amp;lt;math&amp;gt;ln(sigma)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Grafique junto os pontos fornecidos na tabela acima com a função exponencial g(x) (usando obviamente os valores de a e b encontrados com o seu programa).&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=360</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=360"/>
		<updated>2015-10-07T13:13:51Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Derivada à esquerda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, definimos a derivada numérica (a direita) como:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{\Delta f^+}{\Delta x} = \frac{\Delta f(x)}{\Delta x} = {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada à esquerda ==&lt;br /&gt;
A derivada numérica pode também ser calculada com um incremento a esquerda do &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (e também centrado no &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como veremos depois).&lt;br /&gt;
Em cálculo as três devem coincidir para existir a derivada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;. Existem funções que podem ser contínuas em um ponto,&lt;br /&gt;
porém ter derivada diferente a esquerda e direita, por tanto nesses casos a derivada no ponto não está definida.&lt;br /&gt;
O exemplo mais simples é &amp;lt;math&amp;gt;|x|&amp;lt;/math&amp;gt;, continua e com derivada em todo &amp;lt;math&amp;gt;x \neq 0&amp;lt;/math&amp;gt;. Nesse ponto as derivadas a esquerda e direita são diferentes.&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=359</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=359"/>
		<updated>2015-10-07T13:12:48Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Derivada à esquerda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, definimos a derivada numérica (a direita) como:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{\Delta f^+}{\Delta x} = \frac{\Delta f(x)}{\Delta x} = {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada à esquerda ==&lt;br /&gt;
A derivada numérica pode também ser calculada com um incremento a esquerda do &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; (e também centrado no &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; como veremos depois).&lt;br /&gt;
Em cálculo as três devem coincidir para existir a derivada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;. Existem funções que podem ser contínuas em um ponto,&lt;br /&gt;
porém ter derivada diferente a esquerda e direita, por tanto nesses casos a derivada no ponto não está definida.&lt;br /&gt;
O exemplo mais simples é &amp;lt;math&amp;gt;|x|&amp;lt;/math&amp;gt;, continua em todo e com derivada em todo &amp;lt;math&amp;gt;x \neq 0&amp;lt;/math&amp;gt;. Nesse ponto as derivadas a esquerda e direita são diferentes.&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=358</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=358"/>
		<updated>2015-10-07T13:10:47Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Derivada à esquerda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, definimos a derivada numérica (a direita) como:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{\Delta f^+}{\Delta x} = \frac{\Delta f(x)}{\Delta x} = {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada à esquerda ==&lt;br /&gt;
A derivada numérica pode também ser calculada com um incremento a esquerda do $$x$$ (e também centrado no $$x$$ como veremos depois).&lt;br /&gt;
Em cálculo as três devem coincidir para existir a derivada em $$x$$. Existem funções que podem ser contínuas em um ponto,&lt;br /&gt;
porém ter derivada diferente a esquerda e direita, por tanto nesses casos a derivada no ponto não está definida.&lt;br /&gt;
O exemplo mais simples é $$|x|$$, continua em todo e com derivada em todo $$x \neq 0$$. Nesse ponto as derivadas a esquerda e direita são diferentes.&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=357</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=357"/>
		<updated>2015-09-28T11:46:20Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, definimos a derivada numérica (a direita) como:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{\Delta f^+}{\Delta x} = \frac{\Delta f(x)}{\Delta x} = {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada à esquerda ==&lt;br /&gt;
A derivada numérica poderia também ser calculada com um incremento a esquerda do x (e tembeém centrado no x como veremos depois)&lt;br /&gt;
No cálculo não ha diferença entre as três se a função é continua a esquerda e direita do ponto x&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=356</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=356"/>
		<updated>2015-09-23T13:16:00Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Derivada à direita */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, definimos a derivada numérica (a direita) como:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{\Delta f^+}{\Delta x} = \frac{\Delta f(x)}{\Delta x} = {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=355</id>
		<title>Derivada Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Derivada_Num%C3%A9rica&amp;diff=355"/>
		<updated>2015-09-23T13:12:15Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A  derivada de uma função  &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; é definida como um processo de limite, o qual é matematicamente descrito por:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)=\lim_{\Delta x\to 0}{f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 1)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Numericamente é impossível tomarmos o limite  &amp;lt;math&amp;gt;\Delta x\to 0&amp;lt;/math&amp;gt;; temos necessariamente que trabalhar com um valor de  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; &#039;&#039;finito&#039;&#039;. Portanto, a todo cálculo numérico de uma derivada será associado um &#039;&#039;erro numérico&#039;&#039;. Abaixo veremos dois métodos numéricos para calcular derivadas e estimaremos os erros associados a tais métodos. &lt;br /&gt;
&lt;br /&gt;
== Derivada à direita ==&lt;br /&gt;
&lt;br /&gt;
Este método se baseia na definição formal de derivada. Para um dado valor de incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, podemos estimar a derivada da função:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x) \approx {f(x+\Delta x)-f(x)\over \Delta x}&amp;lt;/math&amp;gt; || (Eq. 2)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A expressão a direita é chamada de quociente diferencial de Newton. Existem duas fontes de erro nessa expressão, o erro de  &#039;&#039;&#039;arredondamento&#039;&#039;&#039; e o erro de &#039;&#039;&#039;truncamento&#039;&#039;&#039;. O primeiro é um erro associado à precisão numérica dos computadores, que é  finita (o número de casas dos números).&lt;br /&gt;
Comparando a expressão (2) com a (1), notamos que, quanto menor o valor de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, o valor estimado numericamente é mais próximo ao valor real. No entanto, numericamente não podemos tomar &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; tão pequeno quanto se queira, porque há um limite de precisão numérica. Assim,  na região do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; pequeno há o tipo de erro chamado de &#039;&#039;&#039;erro de arredondamento&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Por exemplo, se o nosso computador hipotético processar uma operação matemática com 4 casas decimais, temos que, para a função &amp;lt;math&amp;gt;f(x) = x^2 &amp;lt;/math&amp;gt;,   &amp;lt;math&amp;gt; f(0,1) = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt; f(0,1001) = 0,01002001&amp;lt;/math&amp;gt;. Note que, usando a precisão de nosso computador, &amp;lt;math&amp;gt;f(x) = f(x+\Delta x)&amp;lt;/math&amp;gt; no caso em que &amp;lt;math&amp;gt;x = 0,01&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,001&amp;lt;/math&amp;gt;. Com isso, o resultado da derivada numérica seria &amp;lt;math&amp;gt;f\, &#039;(0,1) = 0&amp;lt;/math&amp;gt;, o que sabemos não ser verdade, já que podemos calcular essa derivada analiticamente. Isso coloca um limite inferior para o incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;, e assim para a precisão da estimativa numérica da derivada.&lt;br /&gt;
&lt;br /&gt;
O segundo tipo de erro  podemos dizer que é &amp;quot;intrínseco&amp;quot; ao método numérico. Para estimá-lo, faremos uso da expansão em série de Taylor da função :&amp;lt;math&amp;gt;f&#039;(x)&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f(x+\Delta x) = f(x) + f&#039;(x)\Delta x + \frac{1}{2}f&#039;&#039;(x)(\Delta x)^2 + \frac{1}{6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt; || (Eq. 3)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
manipulando os termos acima, temos:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;{f(x+\Delta x)-f(x)\over \Delta x} = f&#039; + \frac{1}{2}f&#039;&#039;\Delta x + ... \, ,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e assim&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039; = \underbrace{{f(x+\Delta x)-f(x)\over \Delta x}}_{Quociente\; de\; Newton} - \frac{1}{2}f&#039;&#039;\Delta x + ... \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com o método de de derivada à direita , Eq. 2,  notamos que a diferença existe a partir do termo &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Podemos dizer que o erro ao usar a quociente de Newton para calcular a derivada é proporcional à &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt;. Assim, vemos que o erro cresce &#039;&#039;linearmente&#039;&#039; com &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; e portanto devemos usar valores pequenos do incremento.&lt;br /&gt;
&lt;br /&gt;
Resumindo, por um lado temos o &#039;&#039;&#039;erro de truncamento&#039;&#039;&#039; e pelo outro o de &#039;&#039;&#039;arredondamento&#039;&#039;&#039;, onde o valor ótimo será uma solução de compromisso entre os dois tipos de erro. Vemos então que deve haver um &#039;&#039;intervalo de valores&#039;&#039; dentro do qual o  &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; deve variar para que a derivada numérica seja a mais próxima do valor real possível. Nas figuras 5 e 6 mostramos um exemplo.&lt;br /&gt;
&lt;br /&gt;
== Derivada Centrada ==&lt;br /&gt;
&lt;br /&gt;
Outro cálculo numérico da derivada pode ser feito baseado na declividade de &#039;&#039;&#039;dois&#039;&#039;&#039; pontos próximos, um antes e outro depois do ponto onde queremos avaliar a derivada.&lt;br /&gt;
&lt;br /&gt;
A declividade da linha definida por esses dois pontos é:&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width: 75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;f&#039;(x)\approx {f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}&amp;lt;/math&amp;gt; || (Eq. 4)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
que é chamada de &#039;&#039;&#039;derivada centrada&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Podemos mostrar que o erro intrínseco a este método é menor do que o erro associado ao método anterior.   Para  estimar o erro de truncamento, expandimos &amp;lt;math&amp;gt;f(x) &amp;lt;/math&amp;gt; em torno de &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; ( feito na Eq(3)) e em torno de  &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x-\Delta x) = f(x) + f&#039;(x)(-\Delta x) + \frac{1}{2}f&#039;&#039;(x)(-\Delta x)^2 - {1\over 6}f&#039;&#039;&#039;(x)(\Delta x)^3 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Somando &amp;lt;math&amp;gt;f(x+\Delta x) &amp;lt;/math&amp;gt;  dada pela Eq.(3) e os termos de &amp;lt;math&amp;gt;f(x-\Delta x) &amp;lt;/math&amp;gt;  da expressao acima, notamos que os termos lineares em &amp;lt;math&amp;gt; -\Delta x&amp;lt;/math&amp;gt;  se cancelam. Isolando &amp;lt;math&amp;gt; f&#039;(x)&amp;lt;/math&amp;gt;, temos: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f&#039;(x) = \underbrace{{f(x+\Delta x)-f(x-\Delta x)\over 2\Delta x}}  -{2\over 6}f&#039;&#039;&#039;(x)(\Delta x)^2 + ...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comparando a expressão acima com a definição do método de derivada centrada, Eq. 4, notamos que  o erro de truncamento  é da ordem de &amp;lt;math&amp;gt;(\Delta x)^2&amp;lt;/math&amp;gt;. Para &amp;lt;math&amp;gt;|\Delta x| &amp;lt; 1 &amp;lt;/math&amp;gt;, vemos que o erro de truncamento associado ao método de derivada centrada é menor do que o erro para a derivada à direita.&lt;br /&gt;
&lt;br /&gt;
== Medida numérica do Erro associado a cada método ==&lt;br /&gt;
&lt;br /&gt;
Para ter uma estimativa do erro associado a utilização da derivada numérica, podemos comparar valores utilizando uma função que tem sua derivada conhecida analiticamente. Assim, o erro é dado por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; erro = {|f&#039;_{an}(x) - f&#039;_{num}(x)| \over |f&#039;_{an}(x)|}, &amp;lt;/math&amp;gt;&lt;br /&gt;
onde &amp;lt;math&amp;gt;f&#039;_{an}(x)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;f&#039;_{num}(x)&amp;lt;/math&amp;gt; são as derivada analítica e numérica de &amp;lt;math&amp;gt; f(x) &amp;lt;/math&amp;gt;, respectivamente.&lt;br /&gt;
&lt;br /&gt;
Note que, multiplicando o erro por 100, temos a porcentagem de erro que acompanha a derivada numérica.&lt;br /&gt;
&lt;br /&gt;
== Programa ==&lt;br /&gt;
&lt;br /&gt;
Implementar a derivada numérica em [[FORTRAN]] é apenas uma linha de código:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 Df = (f(x+h) - f(x))/h&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Onde f(x) deve ser definida num bloco FUNCTION F(x) ... END FUNCTION F.&lt;br /&gt;
&lt;br /&gt;
O resto depende de onde e para que queremos calcular a derivada.&lt;br /&gt;
&lt;br /&gt;
== Exemplo ==&lt;br /&gt;
&lt;br /&gt;
Como demonstração, usaremos a função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dada por&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x) = \frac{\sin(x^2) e^{x/3}}{\sqrt{x^2+4}}.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os gráficos abaixo ilustram os métodos de derivada à direita (figuras 1 e 2) e derivada centrada (figuras 3 e 4), ambos com &amp;lt;math&amp;gt;x=0,6&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\Delta x = 0,4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Primeiramente, a figura 1 mostra a derivada à direita, onde a curva em vermelho representa &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e a curva em azul representa a derivada de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada3.png|thumb|300px|left|Figura 1 - Derivada à direita]]&lt;br /&gt;
&lt;br /&gt;
A figura 2 mostra um zoom no ponto &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; com a curva da derivada calculada pelo método descrito acima. Em azul a derivada calculada numericamente, só que agora com um deslocamento em &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; para passar pelo ponto &amp;lt;math&amp;gt;(f(x),x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada4.png|thumb|300px|Figura 2 - Derivada à direita (zoom)]]&lt;br /&gt;
&lt;br /&gt;
O exemplo do método de derivada centrada está representado na figura 3. Em vermelho a curva &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; e em azul a sua derivada.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada1.png|thumb|300px|left|Figura 3 - Derivada centrada]]&lt;br /&gt;
&lt;br /&gt;
A figura 4 mostra um zoom com a curva da derivada centrada em &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:derivada2.png|thumb|300px|Figura 4 - Derivada centrada (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Além da ilustração dos métodos de derivação numérica, as figuras 5 e 6 mostram o gráfico do valor retornado pelo método da derivação à direita em função do incremento &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. &lt;br /&gt;
&lt;br /&gt;
[[Imagem:der.png|thumb|300px|left|Figura 5 - Erros de truncamento e precisão]]&lt;br /&gt;
&lt;br /&gt;
[[Imagem:der_zoom.png|thumb|300px|Figura 6 - Erros de truncamento e precisão (zoom)]]&lt;br /&gt;
&lt;br /&gt;
Na figura 5, a derivada numérica em x=3 em função do &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; utilizado. O valor exato da derivada é &amp;lt;math&amp;gt;f&#039;(3)=-4.08963&amp;lt;/math&amp;gt;. Diminuindo o valor do incremento, vemos que em volta de &amp;lt;math&amp;gt;\Delta x = 0.01&amp;lt;/math&amp;gt; a derivada começa a convergir, piorando a partir de &amp;lt;math&amp;gt;\Delta x = 10^{-6}&amp;lt;/math&amp;gt;. Para valores muito pequenos temos o erro de arredondamento e para valores muito alto temos o erro de truncamento.&lt;br /&gt;
&lt;br /&gt;
Na figura 6 vemos ampliada a região de convergência, onde o valor de &amp;lt;math&amp;gt;\Delta x = 8x10^{-5}&amp;lt;/math&amp;gt; parece ser o ótimo.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTA:&#039;&#039;&#039; os programa FORTRAN usado para o calculo da derivada esta em Real (ou Real*4, ou seja ponto flutuante em representação de 32 bits). Como seria em dupla precisão (Real*8)?&lt;br /&gt;
&lt;br /&gt;
== Links Externos==&lt;br /&gt;
&lt;br /&gt;
*[http://www.sitmo.com/eqcat/12 Numerical Differentiation] Quant Equation Archive, sitmo&lt;br /&gt;
* http://mathworld.wolfram.com/NumericalDifferentiation.html&lt;br /&gt;
* http://math.fullerton.edu/mathews/n2003/NumericalDiffMod.html&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=348</id>
		<title>Comandos Unix/Linux</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=348"/>
		<updated>2015-08-13T22:09:27Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Programas de uso corrente */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SUGESTÃO&#039;&#039;&#039;: a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;esquerda&#039;&#039;&#039; de  &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o comando, a &#039;&#039;&#039;direita&#039;&#039;&#039; de &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o que ele faz. Entre aspas indicamos o argumento &lt;br /&gt;
(são comandos que precisam dele), mas as aspas devem ser omitidas na prática.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Os primeiros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
date                    &amp;lt;- dá data e hora&lt;br /&gt;
who                     &amp;lt;- responde quem está logado&lt;br /&gt;
finger  &amp;quot;nome&amp;quot;          &amp;lt;- dá informações do usuário &amp;quot;nome&amp;quot;&lt;br /&gt;
ping    &amp;quot;máquina&amp;quot;       &amp;lt;- informa se &amp;quot;máquina&amp;quot; está acessível na rede&lt;br /&gt;
clear                   &amp;lt;- limpa a tela&lt;br /&gt;
locate  &amp;quot;file&amp;quot;          &amp;lt;- mostra todos os arquivos do disco que tem &amp;quot;file&amp;quot; como parte do nome&lt;br /&gt;
which   &amp;quot;comando&amp;quot;       &amp;lt;- responde onde (em que diretório) se encontra &amp;quot;comando&amp;quot;&lt;br /&gt;
du  -h  &amp;quot;dir&amp;quot;           &amp;lt;- lista o espaço ocupado pelos diretórios abaixo do &amp;quot;dir&amp;quot;. &lt;br /&gt;
                           O -h é uma opção para mostrar o resultado em unidades humanas(bytes)                   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplos com argumentos (alguns argumentos só funcionam no lief):&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
| finger || alex&lt;br /&gt;
|-&lt;br /&gt;
| ping   || pequim&lt;br /&gt;
|- &lt;br /&gt;
| locate || firefox&lt;br /&gt;
|-&lt;br /&gt;
|| which || gnuplot&lt;br /&gt;
|-&lt;br /&gt;
|  du -h || /home&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Básicos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls             &amp;lt;- listagem do diretório&lt;br /&gt;
ls -l          &amp;lt;- idem com mais informação&lt;br /&gt;
ls --color     &amp;lt;- idem com esquema de cores &lt;br /&gt;
ls -a          &amp;lt;- mostra arquivos ocultos do sistema (os .*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguir se o comando precisa de argumento colocamos um nome genérico (ex: &#039;&#039;dir, file,&#039;&#039; etc) e sem aspas&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
mkdir  dir          &amp;lt;- cria o diretório  dir&lt;br /&gt;
cd     dir          &amp;lt;- troca para o diretório  dir&lt;br /&gt;
pwd                 &amp;lt;- responde onde você está (qual diretório)&lt;br /&gt;
cd    ..            &amp;lt;- volta ao diretório que está em cima&lt;br /&gt;
cd    ~             &amp;lt;- vai para o nosso diretório de partida: /home/eu&lt;br /&gt;
rmdir dir           &amp;lt;- apaga o diretório (se ele estiver vazio)  dir&lt;br /&gt;
&lt;br /&gt;
cp    file1 file2      &amp;lt;- copia o arquivo file1 no file2&lt;br /&gt;
rm    file             &amp;lt;- apaga o file&lt;br /&gt;
rm    *                &amp;lt;- PERIGO!  Apaga tudo o que está no diretório,&lt;br /&gt;
rm    *.dat            &amp;lt;- que apaga só os .dat&lt;br /&gt;
rm -i *                &amp;lt;- apaga tudo no diretório atual, mas perguntando antes &lt;br /&gt;
cp   file1 dir/file2   &amp;lt;- copia file1 no file2 no diretório dir &lt;br /&gt;
mv   file1 file2       &amp;lt;- troca o nome de file1 para file2&lt;br /&gt;
mv    file  dir/       &amp;lt;- coloca o file no subdiretório dir&lt;br /&gt;
&lt;br /&gt;
cat   file             &amp;lt;- mostra o conteúdo de file&lt;br /&gt;
more  file             &amp;lt;- também, mas página por página&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O  &#039;&#039;&#039;more&#039;&#039;&#039; pode ser usado para mostrar qualquer coisa na tela, uma página por vez.&lt;br /&gt;
&lt;br /&gt;
Exemplo: se ls -l dá muita informação, pode-se usar  more. Aí aparece a&lt;br /&gt;
&lt;br /&gt;
primeira página e espera por mais (dar &amp;lt;space&amp;gt; para continuar, &amp;lt;enter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
avança uma linha, &amp;lt;q&amp;gt; para sair ou  &amp;lt;ctrl&amp;gt;+&amp;lt;c&amp;gt;  para interromper).&lt;br /&gt;
&lt;br /&gt;
ls -l | more           &amp;lt;- dá o diretório atual página x página&lt;br /&gt;
&lt;br /&gt;
== Sobre arquivos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort  file        &amp;lt;- ordena alfabeticamente o arquivo file&lt;br /&gt;
wc    file        &amp;lt;- conta as linhas, palavras e bytes  do arquivo file&lt;br /&gt;
tail  file        &amp;lt;- mostra as últimas 10 linhas de file&lt;br /&gt;
head  file        &amp;lt;- mostra as primeiras 10 linhas de file&lt;br /&gt;
diff  file file1  &amp;lt;- compara e mostra as diferenças entre file1 e file2&lt;br /&gt;
&lt;br /&gt;
split file        &amp;lt;- separa file em pedaços iguais&lt;br /&gt;
lpr   file        &amp;lt;- imprime file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;emacs&#039;&#039;&#039; fornece um ambiente de edição adequado ao tipo de arquivo (manual mínimo em html ou nos formatos pdf&lt;br /&gt;
e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/).&lt;br /&gt;
&lt;br /&gt;
Existem editores mais simples como &#039;&#039;&#039;jed,&#039;&#039;&#039; versão reduzida do emacs&lt;br /&gt;
Ou o &#039;&#039;&#039;gedit&#039;&#039;&#039;, editor gráfico do desktop &#039;&#039;gnome&#039;&#039;. Isso significa que, navegando nos arquivos, ao clicar em um, &lt;br /&gt;
o mesmo será editado com o &#039;&#039;&#039;gedit&#039;&#039;&#039;. Desktop é o nome do sistema gerenciador de janelas, que faz a interface gráfica&lt;br /&gt;
amigável do sistema operacional.&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;vi&#039;&#039;&#039; pode resultar pouco amigável, porém é o único que não falta em nenhum sistema que rode Linux ou Unix&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi               &amp;lt;- chama o vi e depois ...&lt;br /&gt;
a                &amp;lt;- para inserir texto &lt;br /&gt;
&amp;lt;esc&amp;gt;            &amp;lt;- para desativar a função&lt;br /&gt;
No vi você não pode começar a digitar sem antes digitar &amp;quot;a&amp;quot; &lt;br /&gt;
/palavra &amp;lt;enter&amp;gt; &amp;lt;- para procurar palavra&lt;br /&gt;
x                &amp;lt;- para apagar por letra&lt;br /&gt;
dd               &amp;lt;- apaga uma linha&lt;br /&gt;
:w               &amp;lt;- para salvar&lt;br /&gt;
:q               &amp;lt;- para sair&lt;br /&gt;
:q!              &amp;lt;- para sair sem salvar&lt;br /&gt;
:wq              &amp;lt;- para sair salvando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dos principais problemas encontrados por usuários do &#039;&#039;&#039;vi&#039;&#039;&#039; é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas &#039;&#039;&#039;expressões regulares&#039;&#039;&#039; válidas&lt;br /&gt;
no editor &#039;&#039;&#039;sed&#039;&#039;&#039;. Assim para substituir a palavra &#039;&#039;word1&#039;&#039; por &#039;&#039;word2&#039;&#039; se faz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:s/word1/word2/g   &amp;lt;- substitui word1 por word2 (uma por vez)&lt;br /&gt;
:%s/word1/word2/g  &amp;lt;- substitui todas as ocorrencias de word1 por word2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mais comandos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
write colega  &amp;lt;- estabelece comunicação on-line com o colega, se estiver logado na mesma máquina&lt;br /&gt;
man   comando &amp;lt;- dá informação a respeito do comando&lt;br /&gt;
import nome_arq1.jpg  &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq1&amp;quot; e extensão jpg&lt;br /&gt;
import nome_arq2.ps   &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq2&amp;quot; e extensão ps&lt;br /&gt;
convert arq.jpg arq.ps &amp;lt;- converte o arquivo &amp;quot;arq&amp;quot; do formato &amp;quot;jpg&amp;quot; para &amp;quot;ps&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandos especiais ==&lt;br /&gt;
=== grep ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  kk   file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
verifica se a palvra &#039;&#039;&#039;&#039;&#039;kk&#039;&#039;&#039;&#039;&#039;  está no arquivo &#039;&#039;&#039;&#039;&#039;file&#039;&#039;&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Muito útil quando se procura um arquivo perdido com um determinado assunto.&amp;lt;br&amp;gt; &lt;br /&gt;
Exemplo: você não sabe qual o arquivo com o relatório sobre &amp;quot;decaimento&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Então digita:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  decai  *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
e vai mostrar os arquivos (se tiver algum), contendo a palavra  &#039;&#039;&#039;&#039;&#039;decai&#039;&#039;&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Se você procura duas palavras juntas deve usar aspas. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  &amp;quot;pi =&amp;quot;  *.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mostra os arquivos &#039;&#039;&#039;&#039;&#039;tex&#039;&#039;&#039;&#039;&#039; contendo &#039;&#039;&#039;&#039;&#039;pi =&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca &#039;&#039;&#039;word1&#039;&#039;&#039; por &#039;&#039;&#039;word2&#039;&#039;&#039; no arquivo &#039;&#039;&#039;file&#039;&#039;&#039;. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo &#039;&#039;&#039;file2&#039;&#039;&#039;camante&lt;br /&gt;
&lt;br /&gt;
=== awk ===&lt;br /&gt;
awk é um processador de linhas de arquivo com muita funcionalidade.&lt;br /&gt;
Ele opera assim: lei uma a uma as linhas de um arquivo (pp por exemplo)&lt;br /&gt;
e dessas linhas podemos decidir o que imprimir e quando imprimir ouate imprimir as linhas modificadas&lt;br /&gt;
(por uma opração matemática ou por substituição de palavras)&lt;br /&gt;
A melhor forma de entender como funciona como sempre é através de exemplos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a &#039;&#039;&#039;primeira&#039;&#039;&#039; ($1) e &#039;&#039;&#039;quarta&#039;&#039;&#039;($4) colunas de cada linha do arquivo &#039;&#039;notas&#039;&#039;&lt;br /&gt;
Se o conteúdo desse arquivo são as notas de uma turma:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan    4 8  6&lt;br /&gt;
pedro   7 4 10&lt;br /&gt;
mateus  7 8  5&lt;br /&gt;
felipe  8 3  7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
depois de executar a linha da awk acima teremos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan 6&lt;br /&gt;
pedro 10&lt;br /&gt;
mateus 5&lt;br /&gt;
felipe 7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aparece aqui um conceito importante da linguagem de comandos: as variáveis, neste caso $1, $2&lt;br /&gt;
indicam a primeira, segunda, etc palavras (podem ser números ou combinações dos dois).&lt;br /&gt;
Como sabe o &#039;&#039;awk&#039;&#039; onde termina uma e começa a outra? Pelo espaço em branco (pode ser um ou mais espaços)&lt;br /&gt;
que definem o fim de uma e começo da seguinte.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe, compare as duas linhas quase idênticas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $3, $4}&#039; notas&lt;br /&gt;
awk &#039;{print $1, $3  $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vírgula (,) entre as variáveis ($3 e $4) faz toda a diferença!&lt;br /&gt;
&lt;br /&gt;
Mas este, se bem é muito prático é apenas uma amostra do que &#039;&#039;awk&#039;&#039; pode fazer&lt;br /&gt;
Ele pode filtrar de acordo a critérios. Por exemplo para imprimir as notas dos alunos&lt;br /&gt;
que tiraram mais de 7 na primeira:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vários ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo alo, alo      &amp;lt;- é um eco mesmo, devolve o que se manda para ele&lt;br /&gt;
cal                &amp;lt;- mostra um calendário, teste agora e verá&lt;br /&gt;
cal 2000           &amp;lt;- aqui terá o ano inteiro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sessões remotas e transferência de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh  usuario@maquina.dominio                                &amp;lt;- programa para entrar em máquina e fazer sessão remota&lt;br /&gt;
scp  usuario@máquina.dominio:arquivo-remoto arquivo-local   &amp;lt;- comunicação para troca de arquivos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Monitoramento de processos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps x                  &amp;lt;- mostra seus processos, incluindo ssh, etc&lt;br /&gt;
ps aux                &amp;lt;- o mesmo do sistema todo&lt;br /&gt;
top                   &amp;lt;- o mesmo com mais informação&lt;br /&gt;
kill -9               &amp;lt;- mata o processo que não está dando certo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Compactado e armazenado de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gzip file                                &amp;lt;- comprime os arquivos&lt;br /&gt;
tar  cvf todos_meus_dados.tar  *.dat     &amp;lt;- arquiva um conjunto de arquivos (no exemplo todos os .dat)&lt;br /&gt;
tar  cvfz todos_meus_dados.tgz *.dat     &amp;lt;- faz o mesmo criando um arquivo ja comprimido&lt;br /&gt;
tar  xvf todos_meus_dados.tar            &amp;lt;- desarquiva (explode) o conjunto de dados&lt;br /&gt;
tar  xvfz todos_meus_dados.tgz           &amp;lt;- faz o mesmo de um arquivo comprimido&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x  file            &amp;lt;- dá a file permissão para ser executado&lt;br /&gt;
ln -s file dir/           &amp;lt;- cria um atalho (link) de file no diretório dir/&lt;br /&gt;
alias                     &amp;lt;- mostra os alias que estão definidos&lt;br /&gt;
alias dir=&#039;ls -l --color&#039; &amp;lt;- define um alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caracteres de significado especial no UNIX ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||redirecionando a saída padrão (tela)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt;||redirecionando a entrada padrão (teclado)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||adicionando a saída padrão à um arquivo existente&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;pre&amp;gt;|&amp;lt;/pre&amp;gt;&amp;lt;/tt&amp;gt;||pipe (duto) passa a saída padrão de um comando para o próximo&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt;||coloca o programa em &amp;quot;background&amp;quot; devolvendo controle do terminal&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;||para referir-se a variáveis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;||é o curinga para referência de nomes de arquivos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Programas de uso corrente ==&lt;br /&gt;
&lt;br /&gt;
(requerem de sessão gráfica)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xterm      &amp;lt;- abre um terminal de comandos&lt;br /&gt;
gv  exemplo.ps    &amp;lt;- visualiza um arquivo postscript (ex: exemplo.ps)&lt;br /&gt;
&lt;br /&gt;
evince ou okular  &amp;lt;- visualizador de arquivos gráficos: tif, gif, jpg, etc&lt;br /&gt;
xfig              &amp;lt;- programa para fazer desenhos simples (tipo paintbrush do win)&lt;br /&gt;
gimp              &amp;lt;- programa para tratamento de imagens&lt;br /&gt;
&lt;br /&gt;
iceweasel, firefox ou chrome  &amp;lt;- navegadorores de páginas web&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Discutidos em capítulos separados ==&lt;br /&gt;
&lt;br /&gt;
* [[gnuplot]], [[xmgrace]]: para fazer gráficos&lt;br /&gt;
* [[LaTex]]: para processar texto com qualidade de publicação&lt;br /&gt;
* &#039;&#039;&#039;gcc, f77 ou f90&#039;&#039;&#039;: compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=347</id>
		<title>Comandos Unix/Linux</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=347"/>
		<updated>2015-08-13T22:06:50Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Editores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SUGESTÃO&#039;&#039;&#039;: a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;esquerda&#039;&#039;&#039; de  &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o comando, a &#039;&#039;&#039;direita&#039;&#039;&#039; de &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o que ele faz. Entre aspas indicamos o argumento &lt;br /&gt;
(são comandos que precisam dele), mas as aspas devem ser omitidas na prática.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Os primeiros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
date                    &amp;lt;- dá data e hora&lt;br /&gt;
who                     &amp;lt;- responde quem está logado&lt;br /&gt;
finger  &amp;quot;nome&amp;quot;          &amp;lt;- dá informações do usuário &amp;quot;nome&amp;quot;&lt;br /&gt;
ping    &amp;quot;máquina&amp;quot;       &amp;lt;- informa se &amp;quot;máquina&amp;quot; está acessível na rede&lt;br /&gt;
clear                   &amp;lt;- limpa a tela&lt;br /&gt;
locate  &amp;quot;file&amp;quot;          &amp;lt;- mostra todos os arquivos do disco que tem &amp;quot;file&amp;quot; como parte do nome&lt;br /&gt;
which   &amp;quot;comando&amp;quot;       &amp;lt;- responde onde (em que diretório) se encontra &amp;quot;comando&amp;quot;&lt;br /&gt;
du  -h  &amp;quot;dir&amp;quot;           &amp;lt;- lista o espaço ocupado pelos diretórios abaixo do &amp;quot;dir&amp;quot;. &lt;br /&gt;
                           O -h é uma opção para mostrar o resultado em unidades humanas(bytes)                   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplos com argumentos (alguns argumentos só funcionam no lief):&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
| finger || alex&lt;br /&gt;
|-&lt;br /&gt;
| ping   || pequim&lt;br /&gt;
|- &lt;br /&gt;
| locate || firefox&lt;br /&gt;
|-&lt;br /&gt;
|| which || gnuplot&lt;br /&gt;
|-&lt;br /&gt;
|  du -h || /home&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Básicos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls             &amp;lt;- listagem do diretório&lt;br /&gt;
ls -l          &amp;lt;- idem com mais informação&lt;br /&gt;
ls --color     &amp;lt;- idem com esquema de cores &lt;br /&gt;
ls -a          &amp;lt;- mostra arquivos ocultos do sistema (os .*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguir se o comando precisa de argumento colocamos um nome genérico (ex: &#039;&#039;dir, file,&#039;&#039; etc) e sem aspas&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
mkdir  dir          &amp;lt;- cria o diretório  dir&lt;br /&gt;
cd     dir          &amp;lt;- troca para o diretório  dir&lt;br /&gt;
pwd                 &amp;lt;- responde onde você está (qual diretório)&lt;br /&gt;
cd    ..            &amp;lt;- volta ao diretório que está em cima&lt;br /&gt;
cd    ~             &amp;lt;- vai para o nosso diretório de partida: /home/eu&lt;br /&gt;
rmdir dir           &amp;lt;- apaga o diretório (se ele estiver vazio)  dir&lt;br /&gt;
&lt;br /&gt;
cp    file1 file2      &amp;lt;- copia o arquivo file1 no file2&lt;br /&gt;
rm    file             &amp;lt;- apaga o file&lt;br /&gt;
rm    *                &amp;lt;- PERIGO!  Apaga tudo o que está no diretório,&lt;br /&gt;
rm    *.dat            &amp;lt;- que apaga só os .dat&lt;br /&gt;
rm -i *                &amp;lt;- apaga tudo no diretório atual, mas perguntando antes &lt;br /&gt;
cp   file1 dir/file2   &amp;lt;- copia file1 no file2 no diretório dir &lt;br /&gt;
mv   file1 file2       &amp;lt;- troca o nome de file1 para file2&lt;br /&gt;
mv    file  dir/       &amp;lt;- coloca o file no subdiretório dir&lt;br /&gt;
&lt;br /&gt;
cat   file             &amp;lt;- mostra o conteúdo de file&lt;br /&gt;
more  file             &amp;lt;- também, mas página por página&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O  &#039;&#039;&#039;more&#039;&#039;&#039; pode ser usado para mostrar qualquer coisa na tela, uma página por vez.&lt;br /&gt;
&lt;br /&gt;
Exemplo: se ls -l dá muita informação, pode-se usar  more. Aí aparece a&lt;br /&gt;
&lt;br /&gt;
primeira página e espera por mais (dar &amp;lt;space&amp;gt; para continuar, &amp;lt;enter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
avança uma linha, &amp;lt;q&amp;gt; para sair ou  &amp;lt;ctrl&amp;gt;+&amp;lt;c&amp;gt;  para interromper).&lt;br /&gt;
&lt;br /&gt;
ls -l | more           &amp;lt;- dá o diretório atual página x página&lt;br /&gt;
&lt;br /&gt;
== Sobre arquivos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort  file        &amp;lt;- ordena alfabeticamente o arquivo file&lt;br /&gt;
wc    file        &amp;lt;- conta as linhas, palavras e bytes  do arquivo file&lt;br /&gt;
tail  file        &amp;lt;- mostra as últimas 10 linhas de file&lt;br /&gt;
head  file        &amp;lt;- mostra as primeiras 10 linhas de file&lt;br /&gt;
diff  file file1  &amp;lt;- compara e mostra as diferenças entre file1 e file2&lt;br /&gt;
&lt;br /&gt;
split file        &amp;lt;- separa file em pedaços iguais&lt;br /&gt;
lpr   file        &amp;lt;- imprime file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;emacs&#039;&#039;&#039; fornece um ambiente de edição adequado ao tipo de arquivo (manual mínimo em html ou nos formatos pdf&lt;br /&gt;
e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/).&lt;br /&gt;
&lt;br /&gt;
Existem editores mais simples como &#039;&#039;&#039;jed,&#039;&#039;&#039; versão reduzida do emacs&lt;br /&gt;
Ou o &#039;&#039;&#039;gedit&#039;&#039;&#039;, editor gráfico do desktop &#039;&#039;gnome&#039;&#039;. Isso significa que, navegando nos arquivos, ao clicar em um, &lt;br /&gt;
o mesmo será editado com o &#039;&#039;&#039;gedit&#039;&#039;&#039;. Desktop é o nome do sistema gerenciador de janelas, que faz a interface gráfica&lt;br /&gt;
amigável do sistema operacional.&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;vi&#039;&#039;&#039; pode resultar pouco amigável, porém é o único que não falta em nenhum sistema que rode Linux ou Unix&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi               &amp;lt;- chama o vi e depois ...&lt;br /&gt;
a                &amp;lt;- para inserir texto &lt;br /&gt;
&amp;lt;esc&amp;gt;            &amp;lt;- para desativar a função&lt;br /&gt;
No vi você não pode começar a digitar sem antes digitar &amp;quot;a&amp;quot; &lt;br /&gt;
/palavra &amp;lt;enter&amp;gt; &amp;lt;- para procurar palavra&lt;br /&gt;
x                &amp;lt;- para apagar por letra&lt;br /&gt;
dd               &amp;lt;- apaga uma linha&lt;br /&gt;
:w               &amp;lt;- para salvar&lt;br /&gt;
:q               &amp;lt;- para sair&lt;br /&gt;
:q!              &amp;lt;- para sair sem salvar&lt;br /&gt;
:wq              &amp;lt;- para sair salvando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dos principais problemas encontrados por usuários do &#039;&#039;&#039;vi&#039;&#039;&#039; é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas &#039;&#039;&#039;expressões regulares&#039;&#039;&#039; válidas&lt;br /&gt;
no editor &#039;&#039;&#039;sed&#039;&#039;&#039;. Assim para substituir a palavra &#039;&#039;word1&#039;&#039; por &#039;&#039;word2&#039;&#039; se faz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:s/word1/word2/g   &amp;lt;- substitui word1 por word2 (uma por vez)&lt;br /&gt;
:%s/word1/word2/g  &amp;lt;- substitui todas as ocorrencias de word1 por word2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mais comandos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
write colega  &amp;lt;- estabelece comunicação on-line com o colega, se estiver logado na mesma máquina&lt;br /&gt;
man   comando &amp;lt;- dá informação a respeito do comando&lt;br /&gt;
import nome_arq1.jpg  &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq1&amp;quot; e extensão jpg&lt;br /&gt;
import nome_arq2.ps   &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq2&amp;quot; e extensão ps&lt;br /&gt;
convert arq.jpg arq.ps &amp;lt;- converte o arquivo &amp;quot;arq&amp;quot; do formato &amp;quot;jpg&amp;quot; para &amp;quot;ps&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandos especiais ==&lt;br /&gt;
=== grep ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  kk   file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
verifica se a palvra &#039;&#039;&#039;&#039;&#039;kk&#039;&#039;&#039;&#039;&#039;  está no arquivo &#039;&#039;&#039;&#039;&#039;file&#039;&#039;&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Muito útil quando se procura um arquivo perdido com um determinado assunto.&amp;lt;br&amp;gt; &lt;br /&gt;
Exemplo: você não sabe qual o arquivo com o relatório sobre &amp;quot;decaimento&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Então digita:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  decai  *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
e vai mostrar os arquivos (se tiver algum), contendo a palavra  &#039;&#039;&#039;&#039;&#039;decai&#039;&#039;&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Se você procura duas palavras juntas deve usar aspas. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  &amp;quot;pi =&amp;quot;  *.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mostra os arquivos &#039;&#039;&#039;&#039;&#039;tex&#039;&#039;&#039;&#039;&#039; contendo &#039;&#039;&#039;&#039;&#039;pi =&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca &#039;&#039;&#039;word1&#039;&#039;&#039; por &#039;&#039;&#039;word2&#039;&#039;&#039; no arquivo &#039;&#039;&#039;file&#039;&#039;&#039;. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo &#039;&#039;&#039;file2&#039;&#039;&#039;camante&lt;br /&gt;
&lt;br /&gt;
=== awk ===&lt;br /&gt;
awk é um processador de linhas de arquivo com muita funcionalidade.&lt;br /&gt;
Ele opera assim: lei uma a uma as linhas de um arquivo (pp por exemplo)&lt;br /&gt;
e dessas linhas podemos decidir o que imprimir e quando imprimir ouate imprimir as linhas modificadas&lt;br /&gt;
(por uma opração matemática ou por substituição de palavras)&lt;br /&gt;
A melhor forma de entender como funciona como sempre é através de exemplos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a &#039;&#039;&#039;primeira&#039;&#039;&#039; ($1) e &#039;&#039;&#039;quarta&#039;&#039;&#039;($4) colunas de cada linha do arquivo &#039;&#039;notas&#039;&#039;&lt;br /&gt;
Se o conteúdo desse arquivo são as notas de uma turma:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan    4 8  6&lt;br /&gt;
pedro   7 4 10&lt;br /&gt;
mateus  7 8  5&lt;br /&gt;
felipe  8 3  7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
depois de executar a linha da awk acima teremos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan 6&lt;br /&gt;
pedro 10&lt;br /&gt;
mateus 5&lt;br /&gt;
felipe 7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aparece aqui um conceito importante da linguagem de comandos: as variáveis, neste caso $1, $2&lt;br /&gt;
indicam a primeira, segunda, etc palavras (podem ser números ou combinações dos dois).&lt;br /&gt;
Como sabe o &#039;&#039;awk&#039;&#039; onde termina uma e começa a outra? Pelo espaço em branco (pode ser um ou mais espaços)&lt;br /&gt;
que definem o fim de uma e começo da seguinte.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe, compare as duas linhas quase idênticas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $3, $4}&#039; notas&lt;br /&gt;
awk &#039;{print $1, $3  $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vírgula (,) entre as variáveis ($3 e $4) faz toda a diferença!&lt;br /&gt;
&lt;br /&gt;
Mas este, se bem é muito prático é apenas uma amostra do que &#039;&#039;awk&#039;&#039; pode fazer&lt;br /&gt;
Ele pode filtrar de acordo a critérios. Por exemplo para imprimir as notas dos alunos&lt;br /&gt;
que tiraram mais de 7 na primeira:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vários ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo alo, alo      &amp;lt;- é um eco mesmo, devolve o que se manda para ele&lt;br /&gt;
cal                &amp;lt;- mostra um calendário, teste agora e verá&lt;br /&gt;
cal 2000           &amp;lt;- aqui terá o ano inteiro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sessões remotas e transferência de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh  usuario@maquina.dominio                                &amp;lt;- programa para entrar em máquina e fazer sessão remota&lt;br /&gt;
scp  usuario@máquina.dominio:arquivo-remoto arquivo-local   &amp;lt;- comunicação para troca de arquivos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Monitoramento de processos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps x                  &amp;lt;- mostra seus processos, incluindo ssh, etc&lt;br /&gt;
ps aux                &amp;lt;- o mesmo do sistema todo&lt;br /&gt;
top                   &amp;lt;- o mesmo com mais informação&lt;br /&gt;
kill -9               &amp;lt;- mata o processo que não está dando certo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Compactado e armazenado de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gzip file                                &amp;lt;- comprime os arquivos&lt;br /&gt;
tar  cvf todos_meus_dados.tar  *.dat     &amp;lt;- arquiva um conjunto de arquivos (no exemplo todos os .dat)&lt;br /&gt;
tar  cvfz todos_meus_dados.tgz *.dat     &amp;lt;- faz o mesmo criando um arquivo ja comprimido&lt;br /&gt;
tar  xvf todos_meus_dados.tar            &amp;lt;- desarquiva (explode) o conjunto de dados&lt;br /&gt;
tar  xvfz todos_meus_dados.tgz           &amp;lt;- faz o mesmo de um arquivo comprimido&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x  file            &amp;lt;- dá a file permissão para ser executado&lt;br /&gt;
ln -s file dir/           &amp;lt;- cria um atalho (link) de file no diretório dir/&lt;br /&gt;
alias                     &amp;lt;- mostra os alias que estão definidos&lt;br /&gt;
alias dir=&#039;ls -l --color&#039; &amp;lt;- define um alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caracteres de significado especial no UNIX ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||redirecionando a saída padrão (tela)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt;||redirecionando a entrada padrão (teclado)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||adicionando a saída padrão à um arquivo existente&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;pre&amp;gt;|&amp;lt;/pre&amp;gt;&amp;lt;/tt&amp;gt;||pipe (duto) passa a saída padrão de um comando para o próximo&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt;||coloca o programa em &amp;quot;background&amp;quot; devolvendo controle do terminal&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;||para referir-se a variáveis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;||é o curinga para referência de nomes de arquivos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Programas de uso corrente ==&lt;br /&gt;
&lt;br /&gt;
(requerem de sessão gráfica)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xterm      &amp;lt;- abre um terminal de comandos&lt;br /&gt;
rxvt       &amp;lt;- o mesmo com outra aparência&lt;br /&gt;
gv  exemplo.ps    &amp;lt;- visualiza um arquivo postscript (ex: exemplo.ps)&lt;br /&gt;
&lt;br /&gt;
xv                &amp;lt;- visualizador de arquivos gráficos: tif, gif, jpg, etc&lt;br /&gt;
xfig              &amp;lt;- programa para fazer desenhos simples (tipo paintbrush do win)&lt;br /&gt;
gimp              &amp;lt;- programa para tratamento de imagens&lt;br /&gt;
&lt;br /&gt;
konqueror           &amp;lt;- gerenciador de arquivos e navegador (do kde)&lt;br /&gt;
kdehelp             &amp;lt;- interface tipo netscape para help&lt;br /&gt;
firefox ou mozilla  &amp;lt;- navegadorores de página da web&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discutidos em capítulos separados ==&lt;br /&gt;
&lt;br /&gt;
* [[gnuplot]], [[xmgrace]]: para fazer gráficos&lt;br /&gt;
* [[LaTex]]: para processar texto com qualidade de publicação&lt;br /&gt;
* &#039;&#039;&#039;gcc, f77 ou f90&#039;&#039;&#039;: compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=346</id>
		<title>Comandos Unix/Linux</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=346"/>
		<updated>2015-08-13T22:06:14Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Editores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SUGESTÃO&#039;&#039;&#039;: a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;esquerda&#039;&#039;&#039; de  &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o comando, a &#039;&#039;&#039;direita&#039;&#039;&#039; de &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o que ele faz. Entre aspas indicamos o argumento &lt;br /&gt;
(são comandos que precisam dele), mas as aspas devem ser omitidas na prática.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Os primeiros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
date                    &amp;lt;- dá data e hora&lt;br /&gt;
who                     &amp;lt;- responde quem está logado&lt;br /&gt;
finger  &amp;quot;nome&amp;quot;          &amp;lt;- dá informações do usuário &amp;quot;nome&amp;quot;&lt;br /&gt;
ping    &amp;quot;máquina&amp;quot;       &amp;lt;- informa se &amp;quot;máquina&amp;quot; está acessível na rede&lt;br /&gt;
clear                   &amp;lt;- limpa a tela&lt;br /&gt;
locate  &amp;quot;file&amp;quot;          &amp;lt;- mostra todos os arquivos do disco que tem &amp;quot;file&amp;quot; como parte do nome&lt;br /&gt;
which   &amp;quot;comando&amp;quot;       &amp;lt;- responde onde (em que diretório) se encontra &amp;quot;comando&amp;quot;&lt;br /&gt;
du  -h  &amp;quot;dir&amp;quot;           &amp;lt;- lista o espaço ocupado pelos diretórios abaixo do &amp;quot;dir&amp;quot;. &lt;br /&gt;
                           O -h é uma opção para mostrar o resultado em unidades humanas(bytes)                   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplos com argumentos (alguns argumentos só funcionam no lief):&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
| finger || alex&lt;br /&gt;
|-&lt;br /&gt;
| ping   || pequim&lt;br /&gt;
|- &lt;br /&gt;
| locate || firefox&lt;br /&gt;
|-&lt;br /&gt;
|| which || gnuplot&lt;br /&gt;
|-&lt;br /&gt;
|  du -h || /home&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Básicos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls             &amp;lt;- listagem do diretório&lt;br /&gt;
ls -l          &amp;lt;- idem com mais informação&lt;br /&gt;
ls --color     &amp;lt;- idem com esquema de cores &lt;br /&gt;
ls -a          &amp;lt;- mostra arquivos ocultos do sistema (os .*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguir se o comando precisa de argumento colocamos um nome genérico (ex: &#039;&#039;dir, file,&#039;&#039; etc) e sem aspas&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
mkdir  dir          &amp;lt;- cria o diretório  dir&lt;br /&gt;
cd     dir          &amp;lt;- troca para o diretório  dir&lt;br /&gt;
pwd                 &amp;lt;- responde onde você está (qual diretório)&lt;br /&gt;
cd    ..            &amp;lt;- volta ao diretório que está em cima&lt;br /&gt;
cd    ~             &amp;lt;- vai para o nosso diretório de partida: /home/eu&lt;br /&gt;
rmdir dir           &amp;lt;- apaga o diretório (se ele estiver vazio)  dir&lt;br /&gt;
&lt;br /&gt;
cp    file1 file2      &amp;lt;- copia o arquivo file1 no file2&lt;br /&gt;
rm    file             &amp;lt;- apaga o file&lt;br /&gt;
rm    *                &amp;lt;- PERIGO!  Apaga tudo o que está no diretório,&lt;br /&gt;
rm    *.dat            &amp;lt;- que apaga só os .dat&lt;br /&gt;
rm -i *                &amp;lt;- apaga tudo no diretório atual, mas perguntando antes &lt;br /&gt;
cp   file1 dir/file2   &amp;lt;- copia file1 no file2 no diretório dir &lt;br /&gt;
mv   file1 file2       &amp;lt;- troca o nome de file1 para file2&lt;br /&gt;
mv    file  dir/       &amp;lt;- coloca o file no subdiretório dir&lt;br /&gt;
&lt;br /&gt;
cat   file             &amp;lt;- mostra o conteúdo de file&lt;br /&gt;
more  file             &amp;lt;- também, mas página por página&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O  &#039;&#039;&#039;more&#039;&#039;&#039; pode ser usado para mostrar qualquer coisa na tela, uma página por vez.&lt;br /&gt;
&lt;br /&gt;
Exemplo: se ls -l dá muita informação, pode-se usar  more. Aí aparece a&lt;br /&gt;
&lt;br /&gt;
primeira página e espera por mais (dar &amp;lt;space&amp;gt; para continuar, &amp;lt;enter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
avança uma linha, &amp;lt;q&amp;gt; para sair ou  &amp;lt;ctrl&amp;gt;+&amp;lt;c&amp;gt;  para interromper).&lt;br /&gt;
&lt;br /&gt;
ls -l | more           &amp;lt;- dá o diretório atual página x página&lt;br /&gt;
&lt;br /&gt;
== Sobre arquivos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort  file        &amp;lt;- ordena alfabeticamente o arquivo file&lt;br /&gt;
wc    file        &amp;lt;- conta as linhas, palavras e bytes  do arquivo file&lt;br /&gt;
tail  file        &amp;lt;- mostra as últimas 10 linhas de file&lt;br /&gt;
head  file        &amp;lt;- mostra as primeiras 10 linhas de file&lt;br /&gt;
diff  file file1  &amp;lt;- compara e mostra as diferenças entre file1 e file2&lt;br /&gt;
&lt;br /&gt;
split file        &amp;lt;- separa file em pedaços iguais&lt;br /&gt;
lpr   file        &amp;lt;- imprime file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;emacs&#039;&#039;&#039; fornece um ambiente de edição adequado ao tipo de arquivo (manual mínimo em html ou nos formatos pdf&lt;br /&gt;
e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/).&lt;br /&gt;
&lt;br /&gt;
Existem editores mais simples como &#039;&#039;&#039;jed,&#039;&#039;&#039; versão reduzida do emacs&lt;br /&gt;
Ou o &#039;&#039;&#039;gedit&#039;&#039;&#039;, editor gráfico do desktop &#039;&#039;gnome&#039;&#039;. Isso significa que, navegando nos arquivos, oo clicar em um &lt;br /&gt;
o mesmo será editado com o &#039;&#039;&#039;gedit&#039;&#039;&#039;. Desktop é o nome do sistema gerenciador de janelas, que faz a interface grafia&lt;br /&gt;
amigável do sistema operacional.&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;vi&#039;&#039;&#039; pode resultar pouco amigável, porém é o único que não falta em nenhum sistema que rode Linux ou Unix&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi               &amp;lt;- chama o vi e depois ...&lt;br /&gt;
a                &amp;lt;- para inserir texto &lt;br /&gt;
&amp;lt;esc&amp;gt;            &amp;lt;- para desativar a função&lt;br /&gt;
No vi você não pode começar a digitar sem antes digitar &amp;quot;a&amp;quot; &lt;br /&gt;
/palavra &amp;lt;enter&amp;gt; &amp;lt;- para procurar palavra&lt;br /&gt;
x                &amp;lt;- para apagar por letra&lt;br /&gt;
dd               &amp;lt;- apaga uma linha&lt;br /&gt;
:w               &amp;lt;- para salvar&lt;br /&gt;
:q               &amp;lt;- para sair&lt;br /&gt;
:q!              &amp;lt;- para sair sem salvar&lt;br /&gt;
:wq              &amp;lt;- para sair salvando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dos principais problemas encontrados por usuários do &#039;&#039;&#039;vi&#039;&#039;&#039; é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas &#039;&#039;&#039;expressões regulares&#039;&#039;&#039; válidas&lt;br /&gt;
no editor &#039;&#039;&#039;sed&#039;&#039;&#039;. Assim para substituir a palavra &#039;&#039;word1&#039;&#039; por &#039;&#039;word2&#039;&#039; se faz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:s/word1/word2/g   &amp;lt;- substitui word1 por word2 (uma por vez)&lt;br /&gt;
:%s/word1/word2/g  &amp;lt;- substitui todas as ocorrencias de word1 por word2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mais comandos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
write colega  &amp;lt;- estabelece comunicação on-line com o colega, se estiver logado na mesma máquina&lt;br /&gt;
man   comando &amp;lt;- dá informação a respeito do comando&lt;br /&gt;
import nome_arq1.jpg  &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq1&amp;quot; e extensão jpg&lt;br /&gt;
import nome_arq2.ps   &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq2&amp;quot; e extensão ps&lt;br /&gt;
convert arq.jpg arq.ps &amp;lt;- converte o arquivo &amp;quot;arq&amp;quot; do formato &amp;quot;jpg&amp;quot; para &amp;quot;ps&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandos especiais ==&lt;br /&gt;
=== grep ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  kk   file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
verifica se a palvra &#039;&#039;&#039;&#039;&#039;kk&#039;&#039;&#039;&#039;&#039;  está no arquivo &#039;&#039;&#039;&#039;&#039;file&#039;&#039;&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Muito útil quando se procura um arquivo perdido com um determinado assunto.&amp;lt;br&amp;gt; &lt;br /&gt;
Exemplo: você não sabe qual o arquivo com o relatório sobre &amp;quot;decaimento&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Então digita:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  decai  *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
e vai mostrar os arquivos (se tiver algum), contendo a palavra  &#039;&#039;&#039;&#039;&#039;decai&#039;&#039;&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Se você procura duas palavras juntas deve usar aspas. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  &amp;quot;pi =&amp;quot;  *.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mostra os arquivos &#039;&#039;&#039;&#039;&#039;tex&#039;&#039;&#039;&#039;&#039; contendo &#039;&#039;&#039;&#039;&#039;pi =&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca &#039;&#039;&#039;word1&#039;&#039;&#039; por &#039;&#039;&#039;word2&#039;&#039;&#039; no arquivo &#039;&#039;&#039;file&#039;&#039;&#039;. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo &#039;&#039;&#039;file2&#039;&#039;&#039;camante&lt;br /&gt;
&lt;br /&gt;
=== awk ===&lt;br /&gt;
awk é um processador de linhas de arquivo com muita funcionalidade.&lt;br /&gt;
Ele opera assim: lei uma a uma as linhas de um arquivo (pp por exemplo)&lt;br /&gt;
e dessas linhas podemos decidir o que imprimir e quando imprimir ouate imprimir as linhas modificadas&lt;br /&gt;
(por uma opração matemática ou por substituição de palavras)&lt;br /&gt;
A melhor forma de entender como funciona como sempre é através de exemplos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a &#039;&#039;&#039;primeira&#039;&#039;&#039; ($1) e &#039;&#039;&#039;quarta&#039;&#039;&#039;($4) colunas de cada linha do arquivo &#039;&#039;notas&#039;&#039;&lt;br /&gt;
Se o conteúdo desse arquivo são as notas de uma turma:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan    4 8  6&lt;br /&gt;
pedro   7 4 10&lt;br /&gt;
mateus  7 8  5&lt;br /&gt;
felipe  8 3  7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
depois de executar a linha da awk acima teremos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan 6&lt;br /&gt;
pedro 10&lt;br /&gt;
mateus 5&lt;br /&gt;
felipe 7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aparece aqui um conceito importante da linguagem de comandos: as variáveis, neste caso $1, $2&lt;br /&gt;
indicam a primeira, segunda, etc palavras (podem ser números ou combinações dos dois).&lt;br /&gt;
Como sabe o &#039;&#039;awk&#039;&#039; onde termina uma e começa a outra? Pelo espaço em branco (pode ser um ou mais espaços)&lt;br /&gt;
que definem o fim de uma e começo da seguinte.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe, compare as duas linhas quase idênticas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $3, $4}&#039; notas&lt;br /&gt;
awk &#039;{print $1, $3  $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vírgula (,) entre as variáveis ($3 e $4) faz toda a diferença!&lt;br /&gt;
&lt;br /&gt;
Mas este, se bem é muito prático é apenas uma amostra do que &#039;&#039;awk&#039;&#039; pode fazer&lt;br /&gt;
Ele pode filtrar de acordo a critérios. Por exemplo para imprimir as notas dos alunos&lt;br /&gt;
que tiraram mais de 7 na primeira:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vários ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo alo, alo      &amp;lt;- é um eco mesmo, devolve o que se manda para ele&lt;br /&gt;
cal                &amp;lt;- mostra um calendário, teste agora e verá&lt;br /&gt;
cal 2000           &amp;lt;- aqui terá o ano inteiro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sessões remotas e transferência de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh  usuario@maquina.dominio                                &amp;lt;- programa para entrar em máquina e fazer sessão remota&lt;br /&gt;
scp  usuario@máquina.dominio:arquivo-remoto arquivo-local   &amp;lt;- comunicação para troca de arquivos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Monitoramento de processos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps x                  &amp;lt;- mostra seus processos, incluindo ssh, etc&lt;br /&gt;
ps aux                &amp;lt;- o mesmo do sistema todo&lt;br /&gt;
top                   &amp;lt;- o mesmo com mais informação&lt;br /&gt;
kill -9               &amp;lt;- mata o processo que não está dando certo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Compactado e armazenado de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gzip file                                &amp;lt;- comprime os arquivos&lt;br /&gt;
tar  cvf todos_meus_dados.tar  *.dat     &amp;lt;- arquiva um conjunto de arquivos (no exemplo todos os .dat)&lt;br /&gt;
tar  cvfz todos_meus_dados.tgz *.dat     &amp;lt;- faz o mesmo criando um arquivo ja comprimido&lt;br /&gt;
tar  xvf todos_meus_dados.tar            &amp;lt;- desarquiva (explode) o conjunto de dados&lt;br /&gt;
tar  xvfz todos_meus_dados.tgz           &amp;lt;- faz o mesmo de um arquivo comprimido&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x  file            &amp;lt;- dá a file permissão para ser executado&lt;br /&gt;
ln -s file dir/           &amp;lt;- cria um atalho (link) de file no diretório dir/&lt;br /&gt;
alias                     &amp;lt;- mostra os alias que estão definidos&lt;br /&gt;
alias dir=&#039;ls -l --color&#039; &amp;lt;- define um alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caracteres de significado especial no UNIX ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||redirecionando a saída padrão (tela)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt;||redirecionando a entrada padrão (teclado)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||adicionando a saída padrão à um arquivo existente&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;pre&amp;gt;|&amp;lt;/pre&amp;gt;&amp;lt;/tt&amp;gt;||pipe (duto) passa a saída padrão de um comando para o próximo&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt;||coloca o programa em &amp;quot;background&amp;quot; devolvendo controle do terminal&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;||para referir-se a variáveis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;||é o curinga para referência de nomes de arquivos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Programas de uso corrente ==&lt;br /&gt;
&lt;br /&gt;
(requerem de sessão gráfica)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xterm      &amp;lt;- abre um terminal de comandos&lt;br /&gt;
rxvt       &amp;lt;- o mesmo com outra aparência&lt;br /&gt;
gv  exemplo.ps    &amp;lt;- visualiza um arquivo postscript (ex: exemplo.ps)&lt;br /&gt;
&lt;br /&gt;
xv                &amp;lt;- visualizador de arquivos gráficos: tif, gif, jpg, etc&lt;br /&gt;
xfig              &amp;lt;- programa para fazer desenhos simples (tipo paintbrush do win)&lt;br /&gt;
gimp              &amp;lt;- programa para tratamento de imagens&lt;br /&gt;
&lt;br /&gt;
konqueror           &amp;lt;- gerenciador de arquivos e navegador (do kde)&lt;br /&gt;
kdehelp             &amp;lt;- interface tipo netscape para help&lt;br /&gt;
firefox ou mozilla  &amp;lt;- navegadorores de página da web&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discutidos em capítulos separados ==&lt;br /&gt;
&lt;br /&gt;
* [[gnuplot]], [[xmgrace]]: para fazer gráficos&lt;br /&gt;
* [[LaTex]]: para processar texto com qualidade de publicação&lt;br /&gt;
* &#039;&#039;&#039;gcc, f77 ou f90&#039;&#039;&#039;: compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=345</id>
		<title>Comandos Unix/Linux</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=345"/>
		<updated>2015-08-13T22:00:07Z</updated>

		<summary type="html">&lt;p&gt;Sebas: /* Editores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;SUGESTÃO&#039;&#039;&#039;: a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;esquerda&#039;&#039;&#039; de  &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o comando, a &#039;&#039;&#039;direita&#039;&#039;&#039; de &#039;&#039;&#039;&amp;lt;-&#039;&#039;&#039; o que ele faz. Entre aspas indicamos o argumento &lt;br /&gt;
(são comandos que precisam dele), mas as aspas devem ser omitidas na prática.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Os primeiros ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
date                    &amp;lt;- dá data e hora&lt;br /&gt;
who                     &amp;lt;- responde quem está logado&lt;br /&gt;
finger  &amp;quot;nome&amp;quot;          &amp;lt;- dá informações do usuário &amp;quot;nome&amp;quot;&lt;br /&gt;
ping    &amp;quot;máquina&amp;quot;       &amp;lt;- informa se &amp;quot;máquina&amp;quot; está acessível na rede&lt;br /&gt;
clear                   &amp;lt;- limpa a tela&lt;br /&gt;
locate  &amp;quot;file&amp;quot;          &amp;lt;- mostra todos os arquivos do disco que tem &amp;quot;file&amp;quot; como parte do nome&lt;br /&gt;
which   &amp;quot;comando&amp;quot;       &amp;lt;- responde onde (em que diretório) se encontra &amp;quot;comando&amp;quot;&lt;br /&gt;
du  -h  &amp;quot;dir&amp;quot;           &amp;lt;- lista o espaço ocupado pelos diretórios abaixo do &amp;quot;dir&amp;quot;. &lt;br /&gt;
                           O -h é uma opção para mostrar o resultado em unidades humanas(bytes)                   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Exemplos com argumentos (alguns argumentos só funcionam no lief):&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
| finger || alex&lt;br /&gt;
|-&lt;br /&gt;
| ping   || pequim&lt;br /&gt;
|- &lt;br /&gt;
| locate || firefox&lt;br /&gt;
|-&lt;br /&gt;
|| which || gnuplot&lt;br /&gt;
|-&lt;br /&gt;
|  du -h || /home&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Básicos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls             &amp;lt;- listagem do diretório&lt;br /&gt;
ls -l          &amp;lt;- idem com mais informação&lt;br /&gt;
ls --color     &amp;lt;- idem com esquema de cores &lt;br /&gt;
ls -a          &amp;lt;- mostra arquivos ocultos do sistema (os .*)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguir se o comando precisa de argumento colocamos um nome genérico (ex: &#039;&#039;dir, file,&#039;&#039; etc) e sem aspas&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
mkdir  dir          &amp;lt;- cria o diretório  dir&lt;br /&gt;
cd     dir          &amp;lt;- troca para o diretório  dir&lt;br /&gt;
pwd                 &amp;lt;- responde onde você está (qual diretório)&lt;br /&gt;
cd    ..            &amp;lt;- volta ao diretório que está em cima&lt;br /&gt;
cd    ~             &amp;lt;- vai para o nosso diretório de partida: /home/eu&lt;br /&gt;
rmdir dir           &amp;lt;- apaga o diretório (se ele estiver vazio)  dir&lt;br /&gt;
&lt;br /&gt;
cp    file1 file2      &amp;lt;- copia o arquivo file1 no file2&lt;br /&gt;
rm    file             &amp;lt;- apaga o file&lt;br /&gt;
rm    *                &amp;lt;- PERIGO!  Apaga tudo o que está no diretório,&lt;br /&gt;
rm    *.dat            &amp;lt;- que apaga só os .dat&lt;br /&gt;
rm -i *                &amp;lt;- apaga tudo no diretório atual, mas perguntando antes &lt;br /&gt;
cp   file1 dir/file2   &amp;lt;- copia file1 no file2 no diretório dir &lt;br /&gt;
mv   file1 file2       &amp;lt;- troca o nome de file1 para file2&lt;br /&gt;
mv    file  dir/       &amp;lt;- coloca o file no subdiretório dir&lt;br /&gt;
&lt;br /&gt;
cat   file             &amp;lt;- mostra o conteúdo de file&lt;br /&gt;
more  file             &amp;lt;- também, mas página por página&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O  &#039;&#039;&#039;more&#039;&#039;&#039; pode ser usado para mostrar qualquer coisa na tela, uma página por vez.&lt;br /&gt;
&lt;br /&gt;
Exemplo: se ls -l dá muita informação, pode-se usar  more. Aí aparece a&lt;br /&gt;
&lt;br /&gt;
primeira página e espera por mais (dar &amp;lt;space&amp;gt; para continuar, &amp;lt;enter&amp;gt;&lt;br /&gt;
&lt;br /&gt;
avança uma linha, &amp;lt;q&amp;gt; para sair ou  &amp;lt;ctrl&amp;gt;+&amp;lt;c&amp;gt;  para interromper).&lt;br /&gt;
&lt;br /&gt;
ls -l | more           &amp;lt;- dá o diretório atual página x página&lt;br /&gt;
&lt;br /&gt;
== Sobre arquivos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sort  file        &amp;lt;- ordena alfabeticamente o arquivo file&lt;br /&gt;
wc    file        &amp;lt;- conta as linhas, palavras e bytes  do arquivo file&lt;br /&gt;
tail  file        &amp;lt;- mostra as últimas 10 linhas de file&lt;br /&gt;
head  file        &amp;lt;- mostra as primeiras 10 linhas de file&lt;br /&gt;
diff  file file1  &amp;lt;- compara e mostra as diferenças entre file1 e file2&lt;br /&gt;
&lt;br /&gt;
split file        &amp;lt;- separa file em pedaços iguais&lt;br /&gt;
lpr   file        &amp;lt;- imprime file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Editores ==&lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;emacs&#039;&#039;&#039; fornece um ambiente de edição adequado ao tipo de arquivo (manual mínimo em html ou nos formatos pdf&lt;br /&gt;
e ps em ftp://lief.if.ufrgs.br/ftp/pub/emacs/).&lt;br /&gt;
&lt;br /&gt;
Existem editores mais simples como &#039;&#039;&#039;jed,&#039;&#039;&#039; versão reduzida do emacs&lt;br /&gt;
Outro edito gráfico é o &#039;&#039;&#039;kate&#039;&#039;&#039; que vem junto com o &#039;&#039;&#039;konqueror&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
O &#039;&#039;&#039;vi&#039;&#039;&#039; pode resultar pouco amigável, porém é o único que não falta em nenhum sistema que rode Unix&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
vi               &amp;lt;- chama o vi e depois ...&lt;br /&gt;
a                &amp;lt;- para inserir texto &lt;br /&gt;
&amp;lt;esc&amp;gt;            &amp;lt;- para desativar a função&lt;br /&gt;
No vi você não pode começar a digitar sem antes digitar &amp;quot;a&amp;quot; &lt;br /&gt;
/palavra &amp;lt;enter&amp;gt; &amp;lt;- para procurar palavra&lt;br /&gt;
x                &amp;lt;- para apagar por letra&lt;br /&gt;
dd               &amp;lt;- apaga uma linha&lt;br /&gt;
:w               &amp;lt;- para salvar&lt;br /&gt;
:q               &amp;lt;- para sair&lt;br /&gt;
:q!              &amp;lt;- para sair sem salvar&lt;br /&gt;
:wq              &amp;lt;- para sair salvando&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dos principais problemas encontrados por usuários do &#039;&#039;&#039;vi&#039;&#039;&#039; é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas &#039;&#039;&#039;expressões regulares&#039;&#039;&#039; válidas&lt;br /&gt;
no editor &#039;&#039;&#039;sed&#039;&#039;&#039;. Assim para substituir a palavra &#039;&#039;word1&#039;&#039; por &#039;&#039;word2&#039;&#039; se faz&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
:s/word1/word2/g   &amp;lt;- substitui word1 por word2 (uma por vez)&lt;br /&gt;
:%s/word1/word2/g  &amp;lt;- substitui todas as ocorrencias de word1 por word2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mais comandos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
write colega  &amp;lt;- estabelece comunicação on-line com o colega, se estiver logado na mesma máquina&lt;br /&gt;
man   comando &amp;lt;- dá informação a respeito do comando&lt;br /&gt;
import nome_arq1.jpg  &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq1&amp;quot; e extensão jpg&lt;br /&gt;
import nome_arq2.ps   &amp;lt;-  importa da tela uma imagem selecionada (com o mouse) e gera um arquivo com nome &amp;quot;nome_arq2&amp;quot; e extensão ps&lt;br /&gt;
convert arq.jpg arq.ps &amp;lt;- converte o arquivo &amp;quot;arq&amp;quot; do formato &amp;quot;jpg&amp;quot; para &amp;quot;ps&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Comandos especiais ==&lt;br /&gt;
=== grep ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  kk   file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
verifica se a palvra &#039;&#039;&#039;&#039;&#039;kk&#039;&#039;&#039;&#039;&#039;  está no arquivo &#039;&#039;&#039;&#039;&#039;file&#039;&#039;&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Muito útil quando se procura um arquivo perdido com um determinado assunto.&amp;lt;br&amp;gt; &lt;br /&gt;
Exemplo: você não sabe qual o arquivo com o relatório sobre &amp;quot;decaimento&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Então digita:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  decai  *&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
e vai mostrar os arquivos (se tiver algum), contendo a palavra  &#039;&#039;&#039;&#039;&#039;decai&#039;&#039;&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
Se você procura duas palavras juntas deve usar aspas. Por exemplo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grep  &amp;quot;pi =&amp;quot;  *.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mostra os arquivos &#039;&#039;&#039;&#039;&#039;tex&#039;&#039;&#039;&#039;&#039; contendo &#039;&#039;&#039;&#039;&#039;pi =&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca &#039;&#039;&#039;word1&#039;&#039;&#039; por &#039;&#039;&#039;word2&#039;&#039;&#039; no arquivo &#039;&#039;&#039;file&#039;&#039;&#039;. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed &#039;s/word1/word2/g&#039; file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo &#039;&#039;&#039;file2&#039;&#039;&#039;camante&lt;br /&gt;
&lt;br /&gt;
=== awk ===&lt;br /&gt;
awk é um processador de linhas de arquivo com muita funcionalidade.&lt;br /&gt;
Ele opera assim: lei uma a uma as linhas de um arquivo (pp por exemplo)&lt;br /&gt;
e dessas linhas podemos decidir o que imprimir e quando imprimir ouate imprimir as linhas modificadas&lt;br /&gt;
(por uma opração matemática ou por substituição de palavras)&lt;br /&gt;
A melhor forma de entender como funciona como sempre é através de exemplos:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a &#039;&#039;&#039;primeira&#039;&#039;&#039; ($1) e &#039;&#039;&#039;quarta&#039;&#039;&#039;($4) colunas de cada linha do arquivo &#039;&#039;notas&#039;&#039;&lt;br /&gt;
Se o conteúdo desse arquivo são as notas de uma turma:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan    4 8  6&lt;br /&gt;
pedro   7 4 10&lt;br /&gt;
mateus  7 8  5&lt;br /&gt;
felipe  8 3  7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
depois de executar a linha da awk acima teremos&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
juan 6&lt;br /&gt;
pedro 10&lt;br /&gt;
mateus 5&lt;br /&gt;
felipe 7&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aparece aqui um conceito importante da linguagem de comandos: as variáveis, neste caso $1, $2&lt;br /&gt;
indicam a primeira, segunda, etc palavras (podem ser números ou combinações dos dois).&lt;br /&gt;
Como sabe o &#039;&#039;awk&#039;&#039; onde termina uma e começa a outra? Pelo espaço em branco (pode ser um ou mais espaços)&lt;br /&gt;
que definem o fim de uma e começo da seguinte.&lt;br /&gt;
&lt;br /&gt;
Outro detalhe, compare as duas linhas quase idênticas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{print $1, $3, $4}&#039; notas&lt;br /&gt;
awk &#039;{print $1, $3  $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vírgula (,) entre as variáveis ($3 e $4) faz toda a diferença!&lt;br /&gt;
&lt;br /&gt;
Mas este, se bem é muito prático é apenas uma amostra do que &#039;&#039;awk&#039;&#039; pode fazer&lt;br /&gt;
Ele pode filtrar de acordo a critérios. Por exemplo para imprimir as notas dos alunos&lt;br /&gt;
que tiraram mais de 7 na primeira:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
awk &#039;{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}&#039; notas&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vários ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo alo, alo      &amp;lt;- é um eco mesmo, devolve o que se manda para ele&lt;br /&gt;
cal                &amp;lt;- mostra um calendário, teste agora e verá&lt;br /&gt;
cal 2000           &amp;lt;- aqui terá o ano inteiro&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sessões remotas e transferência de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh  usuario@maquina.dominio                                &amp;lt;- programa para entrar em máquina e fazer sessão remota&lt;br /&gt;
scp  usuario@máquina.dominio:arquivo-remoto arquivo-local   &amp;lt;- comunicação para troca de arquivos&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Monitoramento de processos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ps x                  &amp;lt;- mostra seus processos, incluindo ssh, etc&lt;br /&gt;
ps aux                &amp;lt;- o mesmo do sistema todo&lt;br /&gt;
top                   &amp;lt;- o mesmo com mais informação&lt;br /&gt;
kill -9               &amp;lt;- mata o processo que não está dando certo&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Compactado e armazenado de arquivos ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gzip file                                &amp;lt;- comprime os arquivos&lt;br /&gt;
tar  cvf todos_meus_dados.tar  *.dat     &amp;lt;- arquiva um conjunto de arquivos (no exemplo todos os .dat)&lt;br /&gt;
tar  cvfz todos_meus_dados.tgz *.dat     &amp;lt;- faz o mesmo criando um arquivo ja comprimido&lt;br /&gt;
tar  xvf todos_meus_dados.tar            &amp;lt;- desarquiva (explode) o conjunto de dados&lt;br /&gt;
tar  xvfz todos_meus_dados.tgz           &amp;lt;- faz o mesmo de um arquivo comprimido&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x  file            &amp;lt;- dá a file permissão para ser executado&lt;br /&gt;
ln -s file dir/           &amp;lt;- cria um atalho (link) de file no diretório dir/&lt;br /&gt;
alias                     &amp;lt;- mostra os alias que estão definidos&lt;br /&gt;
alias dir=&#039;ls -l --color&#039; &amp;lt;- define um alias&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Caracteres de significado especial no UNIX ==&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;background:paleturquoise&amp;quot;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||redirecionando a saída padrão (tela)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;&amp;lt;/tt&amp;gt;||redirecionando a entrada padrão (teclado)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;gt;&amp;gt;&amp;lt;/tt&amp;gt;||adicionando a saída padrão à um arquivo existente&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;pre&amp;gt;|&amp;lt;/pre&amp;gt;&amp;lt;/tt&amp;gt;||pipe (duto) passa a saída padrão de um comando para o próximo&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;amp;&amp;lt;/tt&amp;gt;||coloca o programa em &amp;quot;background&amp;quot; devolvendo controle do terminal&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;$&amp;lt;/tt&amp;gt;||para referir-se a variáveis&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;||é o curinga para referência de nomes de arquivos&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Programas de uso corrente ==&lt;br /&gt;
&lt;br /&gt;
(requerem de sessão gráfica)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xterm      &amp;lt;- abre um terminal de comandos&lt;br /&gt;
rxvt       &amp;lt;- o mesmo com outra aparência&lt;br /&gt;
gv  exemplo.ps    &amp;lt;- visualiza um arquivo postscript (ex: exemplo.ps)&lt;br /&gt;
&lt;br /&gt;
xv                &amp;lt;- visualizador de arquivos gráficos: tif, gif, jpg, etc&lt;br /&gt;
xfig              &amp;lt;- programa para fazer desenhos simples (tipo paintbrush do win)&lt;br /&gt;
gimp              &amp;lt;- programa para tratamento de imagens&lt;br /&gt;
&lt;br /&gt;
konqueror           &amp;lt;- gerenciador de arquivos e navegador (do kde)&lt;br /&gt;
kdehelp             &amp;lt;- interface tipo netscape para help&lt;br /&gt;
firefox ou mozilla  &amp;lt;- navegadorores de página da web&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discutidos em capítulos separados ==&lt;br /&gt;
&lt;br /&gt;
* [[gnuplot]], [[xmgrace]]: para fazer gráficos&lt;br /&gt;
* [[LaTex]]: para processar texto com qualidade de publicação&lt;br /&gt;
* &#039;&#039;&#039;gcc, f77 ou f90&#039;&#039;&#039;: compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=N%C3%BAmeros_Aleat%C3%B3rios&amp;diff=198</id>
		<title>Números Aleatórios</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=N%C3%BAmeros_Aleat%C3%B3rios&amp;diff=198"/>
		<updated>2011-11-22T13:58:22Z</updated>

		<summary type="html">&lt;p&gt;Sebas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Processos Aleatórios ==&lt;br /&gt;
&lt;br /&gt;
=== Introdução ===&lt;br /&gt;
&lt;br /&gt;
Existem na natureza processos de caráter estocástico, cujo resultado não pode ser predito a priori. Os exemplos típicos são o lançamento de uma moeda, o jogo dos dados ou a roleta. Em cada um desses casos sabemos quais são os resultados possíveis, porem não ha como predizer o resultado da próxima jogada. Entretanto podemos sim dizer qual será resultado em termos estatísticos de um grande número de jogadas: se lançarmos 1000 vezes uma moeda aproximadamente 50% das vezes o resultado será cara, e a percentagem será cada vez mais próxima de 50% quanto maior o número de lançamentos. O mesmo pode ser dito da roleta: num grande número de jogadas aproximadamente 1/37 das vezes terá dado o 17 por exemplo. Embora não seja suficiente para ganhar no jogo é um resultado previsível do ponto de vista estatístico. De uma outra forma, se nos fosse permitido colocar uma ficha nos pares e no zero ao mesmo tempo repetindo a jogada um grande número de vezes, teríamos lucro no final das contas.&lt;br /&gt;
&lt;br /&gt;
Por outra parte existem na física processos cuja natureza é em principio determinística, cujo resultado é, em princípio, previsível conhecendo as condições inicias, mas que na prática resulta impossível como por exemplo a exata trajetória das moléculas de um gás.&lt;br /&gt;
&lt;br /&gt;
Mesmo assim poderíamos integrar as equações de Newton de N partículas (moléculas ou planetas) com um dos algoritmos estáveis usados na unidade anterior: o Euler-Cromer ou de preferência o Verlet. O principio é o mesmo que no caso de uma única partícula como foi o caso do oscilador harmônico unidimensional. No caso de N partículas existem algumas complicações adicionais pois é necessário somar a força que as N-1 partículas fazem em uma dada. À integração numérica das equações de movimento de N partículas é dada o nome de Dinâmica Molecular e será tratada em Métodos da Física Computacional II. O método é muito usado é viável num PC até 100000 ou 1 milhão de partículas. Porem depois de um determinado tempo a trajetória obtida para uma dada partícula pode estar muito afastada da trajetória teórica. No fundo acontece algo parecido com o problema da moeda. Ele é em princípio um problema determinístico mas na prática resulta randômico. Se diz que são problema sensíveis as condições iniciais: uma pequena variação na posição ou velocidade inicial da moeda se traduz numa trajetória muito diferente depois de um certo tempo.&lt;br /&gt;
&lt;br /&gt;
Mas no caso de um gás, no fim não interessa pois nada importa a posição exata de uma dada molécula, o que importa são as propriedades estatísticas do sistema com um todo. Fazendo o análogo com o problema da moeda, é saber que proporção de cara ou coroa teremos depois de N lançamentos. No gás as medidas que interessam são a pressão, energia, temperatura, etc, propriedades médias do sistema em equilíbrio.&lt;br /&gt;
&lt;br /&gt;
Dependendo das propriedades de interesse e dada essa caraterística randômica do movimento individual complexo de uma molécula qualquer, podemos adotar um modelo mais simples para simular o comportamento do sistema que o método de Dinâmica Molecular, relativamente difícil de programar. Tomemos o exemplo de um gás que está inicialmente contido numa metade de uma caixa (ver figura abaixo), que está dividida ao meio por uma parede com um fim pequeno furo pelo qual pode passar uma molécula por vez.   Sabemos que depois de um tempo o sistema alcançará o equilíbrio e que o número médio de partículas em cada metade da caixa será N/2.&lt;br /&gt;
&lt;br /&gt;
Uma maneira simples de simular esse processo e supor que as partículas não interagem entre elas e que a probabilidade (por unidade de tempo) de uma dada partícula trocar de lado e a mesma para todas independente do lado da caixa na qual se encontre.   Podemos implementar esse modelo escolhendo aleatoriamente uma partícula e trocá-la de lado. Acompanhando este processo no tempo deveríamos observar a evolução do sistema ao equilíbrio.&lt;br /&gt;
Números aleatórios&lt;br /&gt;
&lt;br /&gt;
Para implementar esse modelo precisamos números aleatórios. Os verdadeiros números aleatórios são aqueles que resultam de um experimento estocástico, como os exemplos citados ao começo: moeda, dados, roleta. Mas para poder usar em cálculos no computador devemos achar um método mais rápido de gerar um seqüência de números aleatórios, deve ser o própio computador quem forneça essa seqüência. Isso é possível como veremos em seguida, porem eles não são estritamente aleatórios, eles parecem não obedecer a nenhum padrão, nenhuma seqüência lógica parece estar por trás desses números, mas na verdade se trata de uma seqüência completamente previsível, só para quem conhece a regra de geração da seqüência, ou seja ninguém poderia acertar o próximo número a menos que conheça a receita. Ou seja que podem se comportar como números aleatórios tão bons quanto os verdadeiros. Por isso são as vezes chamados de pseudo-aleatórios.&lt;br /&gt;
&lt;br /&gt;
Uma maneira de gerar uma seqüência assim é por meio da operação de congruência&lt;br /&gt;
(resto da divisão inteira):&lt;br /&gt;
&lt;br /&gt;
xn+1 = resto { (a xn + b)/m }&lt;br /&gt;
&lt;br /&gt;
onde a, b, m e os xn são todos números enteiros. Dependendo da escolha dos enteiros a, b e m, a sequencia de números {x1, x2, ..., xn} é uma sequencia randómica dos números entre 1 e m. A melhor maneira de entender como isso funciona é com um exemplo: Seja a=4, b=3 e m=1, e seja o x inicial x0= 2&lt;br /&gt;
A continução temos um exemplo de código FORTRAN implementando a simulação do exemplo do gas na caixa. No exemplo simulamos 1000 partículas e fica como exercício decidir que variáveis imprimir e como calculá-las. Também se é necessário imprimir a cada passo da simulação.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 !Aula5: Programa Gas, simulação com 1000 partículas&lt;br /&gt;
 Program Gas&lt;br /&gt;
 Implicit None&lt;br /&gt;
 Real*8 Randi&lt;br /&gt;
 Integer N, i, j, t, x&lt;br /&gt;
 Parameter (N = 1000)&lt;br /&gt;
 Integer Box(N)&lt;br /&gt;
 &lt;br /&gt;
 Read(*,*) t, x  !t:tempo de simulação, x:semente de Randi&lt;br /&gt;
 &lt;br /&gt;
 Do i = 1, N&lt;br /&gt;
    Box(i) = -1&lt;br /&gt;
 End Do&lt;br /&gt;
 &lt;br /&gt;
 Do j = 1, t&lt;br /&gt;
    i = N*Randi(x)+1&lt;br /&gt;
    Box(i) = -Box(i)&lt;br /&gt;
    Print*, j, &#039;deixo/vc(exercício 2)&#039;&lt;br /&gt;
 End Do&lt;br /&gt;
 &lt;br /&gt;
 End Program Gas&lt;br /&gt;
&lt;br /&gt;
Nesse programa introduzi-mos duas elementos novos do FORTRAN:&lt;br /&gt;
&lt;br /&gt;
   1. Parameter é para assignar (em tempo de compilação) um valor fixo a uma variável que não pode mudar durante a execução do programa, evitando o erro decorrente de uma alteração involuntária por distração, etc.&lt;br /&gt;
   2. O segundo novo elemento é o vector A(10) ou B(5,20).&lt;br /&gt;
      No caso que nos ocupa é Box(N); a utilidade dele fica evidente no própio programa: de uma vez só definimos uma variável a qual, por meio do indice, permite guardar o estado de um grande número de variáveis. Neste caso são as posições das 1000 partículas.&lt;br /&gt;
&lt;br /&gt;
Exercícios:&lt;br /&gt;
&lt;br /&gt;
   1. Graficar a evolução temporal das partículas a esquerda e a direita da parede (ver figura acima).&lt;br /&gt;
   2. Observe o &amp;quot;tempo&amp;quot; necessário para entrar em regime estacionário. Como varia esse tempo se mudarmos o número de partículas. Você pode estabelecer uma relação entre t e N?&lt;br /&gt;
   3. Implemente uma maneira de calcular a média de partículas num lado da caixa (precissa os dois?) e veja como varia no tempo.&lt;br /&gt;
   4. Depende do intervalo usado para calcular a média?&lt;br /&gt;
   5. Observe a variação no número de partículas no regime estacionário. Implemente uma forma de quantificar essa variação no seu programa. Ou seja a desvio cuadrático médio ou flutuação&lt;br /&gt;
   6. Quantifique a dependencia do desvio no regime estacionário com o número de partículas&lt;/div&gt;</summary>
		<author><name>Sebas</name></author>
	</entry>
</feed>