<?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=Caca</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=Caca"/>
	<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php/Especial:Contribui%C3%A7%C3%B5es/Caca"/>
	<updated>2026-04-21T12:05:12Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Din%C3%A2mica_Molecular&amp;diff=268</id>
		<title>Dinâmica Molecular</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Din%C3%A2mica_Molecular&amp;diff=268"/>
		<updated>2015-04-08T18:00:07Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===== [[Introdução  à Dinâmica Molecular (DM)]] =====&lt;br /&gt;
===== [[DM: um primeiro programa]] =====&lt;br /&gt;
===== [[Medidas estáticas e dinâmicas]] =====&lt;br /&gt;
===== [[Otimizações]] =====&lt;br /&gt;
===== [[DM à temperatura constante]] =====&lt;br /&gt;
===== [[DM de potenciais descontínuos]] =====&lt;br /&gt;
===== [[DM de partículas não esféricas]] =====&lt;br /&gt;
===== [[DM de sistemas fora do equilíbrio]] =====&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Din%C3%A2mica_Molecular&amp;diff=256</id>
		<title>Dinâmica Molecular</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Din%C3%A2mica_Molecular&amp;diff=256"/>
		<updated>2015-03-30T18:59:45Z</updated>

		<summary type="html">&lt;p&gt;Caca: Criou página com 'teste'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;teste&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=P%C3%A1gina_principal&amp;diff=255</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=255"/>
		<updated>2015-03-30T18:59:04Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''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''&lt;br /&gt;
&lt;br /&gt;
Bem vindos a '''ComplexWiki''', 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;
-- ''Sebastián Gonçalves''&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'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;
[[Instituições de pesquisa]] sobre complexidade no mundo&lt;br /&gt;
&lt;br /&gt;
[[Conferencias]]&lt;br /&gt;
&lt;br /&gt;
== Administração ==&lt;br /&gt;
&lt;br /&gt;
* [[Planejamento Estratégico IF-UFRGS]]&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;--'''MediaWiki instalado com sucesso.'''&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>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=229</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=229"/>
		<updated>2012-06-21T19:08:18Z</updated>

		<summary type="html">&lt;p&gt;Caca: &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 algortimo 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 matrix 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 poliô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 difente 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;
&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 algorimo 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;
F(x) = f(x) + x&lt;br /&gt;
&lt;br /&gt;
F'(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) = exp(-0.1*x)*sin(2*x)&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 encotrar 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 repedidas! 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'(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 estabalidade 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 *exp( -b * x )&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)=a0+a1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a0=ln(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a1=-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 forncecidos, 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 forncecidos 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>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=228</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=228"/>
		<updated>2012-06-21T19:07:37Z</updated>

		<summary type="html">&lt;p&gt;Caca: &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 algortimo 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 matrix 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 poliô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 difente 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;
&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 algorimo 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;
F(x) = f(x) + x&lt;br /&gt;
&lt;br /&gt;
F'(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) = exp(-0.1*x)*sin(2*x)&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 encotrar 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 repedidas! 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'(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 estabalidade 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 *exp( -b * x )&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)-=a0+a1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a0=ln(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a1=-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 forncecidos, 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 forncecidos 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>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=227</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=227"/>
		<updated>2012-06-21T19:05:00Z</updated>

		<summary type="html">&lt;p&gt;Caca: &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 algortimo 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 matrix 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 poliô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 difente 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;
&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 algorimo 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;
F(x) = f(x) + x&lt;br /&gt;
&lt;br /&gt;
F'(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) = exp(-0.1*x)*sin(2*x)&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 encotrar 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 repedidas! 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'(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 estabalidade 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 *exp( -b * x )&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 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)-=a0+a1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a0=exp(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a1=-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 forncecidos, 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 forncecidos 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>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=226</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=226"/>
		<updated>2012-06-21T18:59:02Z</updated>

		<summary type="html">&lt;p&gt;Caca: &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 algortimo 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 matrix 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 poliô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 difente 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;
&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 algorimo construído em 8 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;
F(x) = f(x) + x&lt;br /&gt;
&lt;br /&gt;
F'(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) = exp(-0.1*x)*sin(2*x)&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 encotrar 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 repedidas! 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'(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 estabalidade 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 *exp( -b * x )&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 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)-=a0+a1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a0=exp(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a1=-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 forncecidos, 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 forncecidos 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>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_3&amp;diff=225</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=225"/>
		<updated>2012-06-21T18:52:19Z</updated>

		<summary type="html">&lt;p&gt;Caca: &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 algortimo 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 matrix 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 poliô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 difente 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;
&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 algorimo construído em 8 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;
F(x) = f(x) + x&lt;br /&gt;
&lt;br /&gt;
F'(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) = exp(-0.1*x)*sin(2*x)&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 encotrar 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 repedidas! 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'(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 estabalidade 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 f(x)= a *exp( f * x ),  onde &amp;lt;math&amp;gt;f(x)=sigma&amp;lt;/math&amp;gt;  e  &amp;lt;math&amp;gt;x=w/c&amp;lt;/math&amp;gt; ajuste sigma aos dados da tabela. &lt;br /&gt;
Note que é possível linearizar a f(x) fazendo uma substituição de variável:  &amp;lt;math&amp;gt;f2(x) = ln*f(x) = ln(a) - b x&amp;lt;/math&amp;gt;. Isto recai exatamente na função linear &amp;lt;math&amp;gt;f(x)-=a0+a1x&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;a0=exp(a)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;a1=-b&amp;lt;/math&amp;gt;.&lt;br /&gt;
Grafique os pontos da tabela e a função obtida.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_2&amp;diff=224</id>
		<title>Área 2</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_2&amp;diff=224"/>
		<updated>2012-05-21T18:59:29Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A) &amp;quot;tecnicalidades&amp;quot;&lt;br /&gt;
--------------------------&lt;br /&gt;
&lt;br /&gt;
O que estes programas escrevem na tela?&lt;br /&gt;
&lt;br /&gt;
1)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
j=0;&lt;br /&gt;
do{&lt;br /&gt;
j++;&lt;br /&gt;
i = 4*j ;&lt;br /&gt;
printf(&amp;quot;i=%d j=%d \n&amp;quot;, i, j) ;&lt;br /&gt;
}while(i&amp;lt;=10) ;&lt;br /&gt;
printf(&amp;quot;\n j=%d \n&amp;quot;, j) ; &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for(j=0 ; j&amp;lt;3 ; j++)&lt;br /&gt;
{ &lt;br /&gt;
printf(&amp;quot; j=%d \n\n&amp;quot;, j );&lt;br /&gt;
for(i=j; i&amp;lt;3 ; i++)&lt;br /&gt;
{&lt;br /&gt;
k=i+j ;&lt;br /&gt;
printf(&amp;quot;i=%d k=%d\n&amp;quot;, i, k);&lt;br /&gt;
}&lt;br /&gt;
} &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Abaixo você encontra partes de programas. Eles contêm erros. Identifique-os e pense no que você faria para resolvê-los.&lt;br /&gt;
&lt;br /&gt;
3.a) Ponto a ser observado: uso de variáreis globais e/ou locais &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
float A ;&lt;br /&gt;
void main()&lt;br /&gt;
{ &lt;br /&gt;
float B ;&lt;br /&gt;
operações dentro da função main() ...&lt;br /&gt;
}&lt;br /&gt;
float Soma()&lt;br /&gt;
{&lt;br /&gt;
return (A+B);&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Como você faria para construir uma função que retornasse a soma de dois números reais? &lt;br /&gt;
&lt;br /&gt;
3.b) Ponto a ser observado: alocação estática de memória&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
main()&lt;br /&gt;
{ &lt;br /&gt;
int i;&lt;br /&gt;
float mat1[ i ] ;&lt;br /&gt;
&lt;br /&gt;
for (i=0; i&amp;lt;10; i++)&lt;br /&gt;
mat1[ i ] = (float)rand()/RAND_MAX ; &lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
B) Derivação e integração numéricas&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Legenda para esta seção:&lt;br /&gt;
&lt;br /&gt;
f'(x) : derivada primeira da função f(x)&lt;br /&gt;
h = (xb-xa)/N , xa, xb são início e fim do intervalo de intregração respectivamente e N é o número de vezes que este intervalo é dividido.&lt;br /&gt;
Considere as seguintes funções&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;f(x) = x^2 + 6x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;g(x) = 1/(x+3) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p(x)=exp(-x)/(x^3-1)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1- Usando o método da derivada à direita, calcule f'(x) nos pontos x=-2 e 2. &lt;br /&gt;
Como você sabe se o valor encontrado é correto sem calcular o valor analítico de f'(x) ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2- Use o mesmo programa feito em (1) para calcular g'(-10), g'(-2).&lt;br /&gt;
Faça h variar de &amp;lt;math&amp;gt;h=10^{-10}&amp;lt;/math&amp;gt; até h=1.&lt;br /&gt;
O intervalo de h durante o qual g'(x) é constante é o mesmo para x=-10 e para x=-2? Como você interpreta isto?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3- Informação: o erro associado ao método da derivada à direita é linear em h, enquanto o método da derivada centrada tem um erro da ordem de h2. &lt;br /&gt;
&lt;br /&gt;
3a - O que significa isto?&lt;br /&gt;
&lt;br /&gt;
3b - Mostre analiticamente (dica: se baseia no que está feito na complex-wiki e foi discutido em aula)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4 - Use o método da derivada centrada para calcular a derivada da função p(x) nos pontos x: -2, 0.5, 2 e 5. Para cada um destes pontos, faça &amp;quot;h&amp;quot; variar bastante (digamos, entre 10-10 e 1) e compare os resultatos num gráfico feito em gnuplot. Faça um gráfico com as curvas p'(x) em todos os pontos pedidos com seus respectivos valores analíticos comparativos. Note que o intervalo para o qual a derivada numérica converge para o seu valor analítico depende da proximidade do valor de x ao ponto de divergência da função g(x). Por quê?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5 - Construa um programa usando o método de Simpson para calcular a integral de g(x) entre -10 e -4.&lt;br /&gt;
Compare a precisão do resultado obtido com o programa feito em aula onde aplicamos o método do trapézio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6 - Aplique o método de Simpson para diversos valores de N. Calcule o erro usando Erro(N) = |Int(N)-Int(N-2)|/|Int(N)|, onde Int(N) é o valor da integral de g(x) para um dado N. Faça este processo até que o erro atinja um valor mínimo estipulado pelo usuário.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7 - Mostre analiticamente que o método do trapézio tem um erro da ordem de f''(x)*h3. &lt;br /&gt;
Dica para fazer esta demonstração:&lt;br /&gt;
&lt;br /&gt;
1- escreva a expressão da regra do trapézio para a f(x) E compare-a com o valor exato de uma integral da f(x)&lt;br /&gt;
&lt;br /&gt;
2- expanda a expressão f(x) na expressão do trapézio E na expressão do valor exato&lt;br /&gt;
&lt;br /&gt;
3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem &amp;lt;math&amp;gt;h^2&amp;lt;/math&amp;gt;. A partir de &amp;lt;math&amp;gt;h^3&amp;lt;/math&amp;gt; eles têm uma diferença.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS: O algoritmo de Simpson tem um erro da ordem de &amp;lt;math&amp;gt;h^5*f(4)&amp;lt;/math&amp;gt; . O procedimento para demonstração é o mesmo, mas neste é mais longo. Faça se quiser, mas o importante é que você entenda a idéia.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=223</id>
		<title>Área 1</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=223"/>
		<updated>2012-04-24T17:05:44Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abaixo há  exercícios e/ou problemas bem diversos, com vários níveis de dificuldade. Tente fazer todos ou pelo menos pensar sobre todos. Os  primeiros são os mesmos do trabalho 4 e  voce já deve ter feito  2 deles. Pense e tente fazer os demais.Quando for pedido apenas para fazer o algoritmo, faça também o programa.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1) Faça um algoritmo para calcular a mensalidade pelos alunos de uma academia de ginástica que tem como mensalidade básica R$85 e aplica os seguintes descontos&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade igual ou inferior a 15 anos terão desconto de 15%&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade superior a 15 anos terão desconto de 10%&lt;br /&gt;
&lt;br /&gt;
- homens com idade inferior a 22 anos não terão desconto&lt;br /&gt;
&lt;br /&gt;
- homens com idade igual ou superior a 22 anos terão desconto de 20%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Faça um algoritmo para calcular a nota resultante de um aluno que fez 3 provas. A nota é definida como sendo a média aritmética das 3 provas.&lt;br /&gt;
&lt;br /&gt;
Considere a seguinte tabela:&lt;br /&gt;
&lt;br /&gt;
- aprovado se nota &amp;gt;= 7&lt;br /&gt;
&lt;br /&gt;
- em exame se  5 &amp;lt;= nota &amp;lt; 7&lt;br /&gt;
&lt;br /&gt;
- reprovado se nota &amp;lt; 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é par.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é primo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Faça um algoritmo que leia 3 números da tela e os retorne em &lt;br /&gt;
&lt;br /&gt;
5.1- ordem crescente&lt;br /&gt;
&lt;br /&gt;
5.2- ordem decrescente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Faça um algortimo para determinar todos os divisores  do número N que estão entre os inteiros  i1 e i2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
7) Peça para o usuário entrar com um valor de temperatura em Celsius, transforme para Fahrenheit e coloque o valor na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Calcule os zeros de uma função de segundo grau (ax2+bx+c=0). &lt;br /&gt;
&lt;br /&gt;
a) na primeira versão, peça para o usuário entrar com os valores de &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
b) na segunda versão, crie um arquivo com os parâmetros &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot; e leia-os a partir de um arquivo externo ao  programa&lt;br /&gt;
&lt;br /&gt;
Em ambos os casos, não esqueça de verificar as limitações e ambiguidades do algoritmo que fará este cálculo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Peça para o usuário escolher um número N. Determine se este número N é primo ou não e diga para o usuário. &lt;br /&gt;
Use o algoritmo  feito em 4) para fazer um  programa em C.&lt;br /&gt;
Coloque o programa num arquivo de latex. Use o comando &amp;quot;verbatim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Construa duas matrizes de duas dimensões de inteiros, digamos A[N][M] e B[M][N]. Elas não precisam ter mesma dimensão, ou seja, N e M não são necessariamente os mesmos. &lt;br /&gt;
Primeiramente escolha M e N pequenos (em torno de 2 ou 3) para que você possa imprimi-las na tela.&lt;br /&gt;
Depois calcule o produto de A por B e mostre a matriz resultante na tela tb.&lt;br /&gt;
Crie de dentro do seu programa um arquivo de saída que contenha as matrizes A, B e o produto das duas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11) Leia o arquivo &amp;quot;dados.dat&amp;quot; que está no moodle  e coloque-os numa matriz do tipo &amp;quot;float&amp;quot; que se chama, por exemplo X.&lt;br /&gt;
Considerando a sequência de números X[i], faça:&lt;br /&gt;
&lt;br /&gt;
a) Encontre o valor máximo desta sequencia de números &lt;br /&gt;
&lt;br /&gt;
b) Ordene esta sequência de menor à maior&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12) Números de Fibonacci são uma sequência definida como recursiva pela fórmula abaixo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;F(n) =\left\{ \begin{matrix} 0\,,\qquad\qquad\qquad\quad\,\ \ \,&amp;amp;&amp;amp;\mbox{se }n=0\,;\ \ \\ 1,\qquad\qquad\qquad\qquad\,&amp;amp;&amp;amp;\mbox{se }n=1;\ \ \,\\ F(n-1)+F(n-2)&amp;amp;&amp;amp;\mbox{outros casos.} \end{matrix} \right. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na prática: você começa com 0 e 1, e então produz o próximo número de Fibonacci somando os dois anteriores para formar o próximo. Os primeiros Números de Fibonacci para n = 0, 1,… são&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Faça um programa que gera uma sequência de Fibonacci. Peça para o usuário escolher quantos termos da série serão mostrados.&lt;br /&gt;
Coloque a sequência num arquivo (você deve abri-lo e escrever nele de dentro do programa). Chame este arquivo usando um script em gnuplot e faça um gráfico em eps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13) Faça um programa que calcule o ln(1+x), |x| &amp;lt; 1 com base na expansão em serie de Taylor: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;ln(1+x)=\sum_{n=0}^{n=\infty}\frac{(-1)^n}{n+1}x^{n+1}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: num programa você não poderá somar termos infinitamente. O somatório deverá ser de 0 até N. Teste vários valores de N para verificar quando o log(1+x) converge. Você pode comparar com o valor que você obtém se fizer o cálculo na calculadora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O usuário deve fornecer os valores de x e N e você deve verificar no seu programa que o |x| é menor do que 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14) Em t=0 um bloco de massa &amp;lt;math&amp;gt;m=2kg&amp;lt;/math&amp;gt; é lançado no campo gravitacional terrestre a partir do solo (&amp;lt;math&amp;gt;x_0=0;y_0=0&amp;lt;/math&amp;gt;) com velocidade inicial &amp;lt;math&amp;gt;\vec{v_0}=v_{0x}\vec{i}+v_{0y}\vec{j}&amp;lt;/math&amp;gt;.  Considere &amp;lt;math&amp;gt;g=-10m/s^2&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
a-  Faça um programa ara determinar os vetores posição e  velocidade do desse bloco para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; separados por&lt;br /&gt;
um intervalo  &amp;lt;math&amp;gt;\Delta t = t_{max}/100&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;t_{max}&amp;lt;/math&amp;gt; é o tempo que leva para o corpo voltar ao solo. O programa deve parar neste momento.&lt;br /&gt;
&lt;br /&gt;
b- Faça gráficos da trajetória e do módulo da velocidade  para&lt;br /&gt;
as seguintes condições iniciais (em m/s): &lt;br /&gt;
&lt;br /&gt;
b1) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b2) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b3) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b4) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b5) &amp;lt;math&amp;gt;v_0= 3 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
15 - Em &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; o motorista de um carro de &amp;lt;math&amp;gt;m=700kg&amp;lt;/math&amp;gt;$ que se move a &amp;lt;math&amp;gt;32m/s&amp;lt;/math&amp;gt; percebe um obstáculo (parado) na pista  &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; metros à sua frente. Sem tentar desviar, o motorista freia com aceleração &amp;lt;math&amp;gt;a=-8m/s^2&amp;lt;/math&amp;gt;$ até parar (ou bater). &lt;br /&gt;
&lt;br /&gt;
15a)  Faça um algoritmo para determinar a posição (suponha &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;) e  a velocidade desse carro para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;   separados por um intervalo &amp;lt;math&amp;gt;\Delta t=0.1s&amp;lt;/math&amp;gt;.  O programa deve indicar a se o carro atingiu  o obstáculo ou não. Caso não tenha atingido, deve indicar a distância ao obstáculo.&lt;br /&gt;
&lt;br /&gt;
15b) Faça um programa para o algoritmo da questão anterior. A distância do obstáculo deve  ser lida como entrada. A saída deve mostrar na tela se houve ou não colisão. Caso não haja, deve indicar a distância até o obstáculo. Além disso, os valores de posição contra tempo e velocidade&lt;br /&gt;
contra tempo devem ser escritos em um arquivo de três colunas &amp;lt;math&amp;gt;(t,x,v)&amp;lt;/math&amp;gt; de nome ``dadosCarro.dat''. Teste seu programa para as seguintes&lt;br /&gt;
distâncias ao obstáculo:  &amp;lt;math&amp;gt; L= 40, 50, 60 &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=222</id>
		<title>Área 1</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=222"/>
		<updated>2012-04-22T07:11:22Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abaixo há  exercícios e/ou problemas bem diversos, com vários níveis de dificuldade. Tente fazer todos ou pelo menos pensar sobre todos. Os  primeiros são os mesmos do trabalho 4 e  voce já deve ter feito  2 deles. Pense e tente fazer os demais.Quando for pedido apenas para fazer o algoritmo, faça também o programa.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1) Faça um algoritmo para calcular a mensalidade pelos alunos de uma academia de ginástica que tem como mensalidade básica R$85 e aplica os seguintes descontos&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade igual ou inferior a 15 anos terão desconto de 15%&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade superior a 15 anos terão desconto de 10%&lt;br /&gt;
&lt;br /&gt;
- homens com idade inferior a 22 anos não terão desconto&lt;br /&gt;
&lt;br /&gt;
- homens com idade igual ou superior a 22 anos terão desconto de 20%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Faça um algoritmo para calcular a nota resultante de um aluno que fez 3 provas. A nota é definida como sendo a média aritmética das 3 provas.&lt;br /&gt;
&lt;br /&gt;
Considere a seguinte tabela:&lt;br /&gt;
&lt;br /&gt;
- aprovado se nota &amp;gt;= 7&lt;br /&gt;
&lt;br /&gt;
- em exame se  5 &amp;lt;= nota &amp;lt; 7&lt;br /&gt;
&lt;br /&gt;
- reprovado se nota &amp;lt; 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é par.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é primo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Faça um algoritmo que leia 3 números da tela e os retorne em &lt;br /&gt;
&lt;br /&gt;
5.1- ordem crescente&lt;br /&gt;
&lt;br /&gt;
5.2- ordem decrescente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Faça um algortimo para determinar todos os divisores  do número N que estão entre os inteiros  i1 e i2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
7) Peça para o usuário entrar com um valor de temperatura em Celsius, transforme para Fahrenheit e coloque o valor na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Calcule os zeros de uma função de segundo grau (ax2+bx+c=0). &lt;br /&gt;
&lt;br /&gt;
a) na primeira versão, peça para o usuário entrar com os valores de &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
b) na segunda versão, crie um arquivo com os parâmetros &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot; e leia-os a partir de um arquivo externo ao  programa&lt;br /&gt;
&lt;br /&gt;
Em ambos os casos, não esqueça de verificar as limitações e ambiguidades do algoritmo que fará este cálculo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Peça para o usuário escolher um número N. Determine se este número N é primo ou não e diga para o usuário. &lt;br /&gt;
Use o algoritmo  feito em 4) para fazer um  programa em C.&lt;br /&gt;
Coloque o programa num arquivo de latex. Use o comando &amp;quot;verbatim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Construa duas matrizes de duas dimensões de inteiros, digamos A[N][M] e B[M][N]. Elas não precisam ter mesma dimensão, ou seja, N e M não são necessariamente os mesmos. &lt;br /&gt;
Primeiramente escolha M e N pequenos (em torno de 2 ou 3) para que você possa imprimi-las na tela.&lt;br /&gt;
Depois calcule o produto de A por B e mostre a matriz resultante na tela tb.&lt;br /&gt;
Crie de dentro do seu programa um arquivo de saída que contenha as matrizes A, B e o produto das duas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11) Leia o arquivo &amp;quot;dados.dat&amp;quot; que está no moodle  e coloque-os numa matriz do tipo &amp;quot;float&amp;quot; que se chama, por exemplo X.&lt;br /&gt;
Considerando a sequência de números X[i], faça:&lt;br /&gt;
&lt;br /&gt;
a) Encontre o valor máximo desta sequencia de números &lt;br /&gt;
&lt;br /&gt;
b) Ordene esta sequência de menor à maior&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12) Números de Fibonacci são uma sequência definida como recursiva pela fórmula abaixo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;F(n) =\left\{ \begin{matrix} 0\,,\qquad\qquad\qquad\quad\,\ \ \,&amp;amp;&amp;amp;\mbox{se }n=0\,;\ \ \\ 1,\qquad\qquad\qquad\qquad\,&amp;amp;&amp;amp;\mbox{se }n=1;\ \ \,\\ F(n-1)+F(n-2)&amp;amp;&amp;amp;\mbox{outros casos.} \end{matrix} \right. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na prática: você começa com 0 e 1, e então produz o próximo número de Fibonacci somando os dois anteriores para formar o próximo. Os primeiros Números de Fibonacci para n = 0, 1,… são&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Faça um programa que gera uma sequência de Fibonacci. Peça para o usuário escolher quantos termos da série serão mostrados.&lt;br /&gt;
Coloque a sequência num arquivo (você deve abri-lo e escrever nele de dentro do programa). Chame este arquivo usando um script em gnuplot e faça um gráfico em eps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13) Faça um programa que calcule o log(1+x), |x| &amp;lt; 1 com base na expansão em serie de Taylor: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: num programa você não poderá somar termos infinitamente. O somatório deverá ser de 1 até N. Teste vários valores de N para verificar quando o log(1+x) converge. Você pode comparar com o valor que você obtém se fizer o cálculo na calculadora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O usuário deve fornecer os valores de x e N e você deve verificar no seu programa que o |x| é menor do que 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14) Em t=0 um bloco de massa &amp;lt;math&amp;gt;m=2kg&amp;lt;/math&amp;gt; é lançado no campo gravitacional terrestre a partir do solo (&amp;lt;math&amp;gt;x_0=0;y_0=0&amp;lt;/math&amp;gt;) com velocidade inicial &amp;lt;math&amp;gt;\vec{v_0}=v_{0x}\vec{i}+v_{0y}\vec{j}&amp;lt;/math&amp;gt;.  Considere &amp;lt;math&amp;gt;g=-10m/s^2&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
a-  Faça um programa ara determinar os vetores posição e  velocidade do desse bloco para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; separados por&lt;br /&gt;
um intervalo  &amp;lt;math&amp;gt;\Delta t = t_{max}/100&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;t_{max}&amp;lt;/math&amp;gt; é o tempo que leva para o corpo voltar ao solo. O programa deve parar neste momento.&lt;br /&gt;
&lt;br /&gt;
b- Faça gráficos da trajetória e do módulo da velocidade  para&lt;br /&gt;
as seguintes condições iniciais (em m/s): &lt;br /&gt;
&lt;br /&gt;
b1) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b2) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b3) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b4) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b5) &amp;lt;math&amp;gt;v_0= 3 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
15 - Em &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; o motorista de um carro de &amp;lt;math&amp;gt;m=700kg&amp;lt;/math&amp;gt;$ que se move a &amp;lt;math&amp;gt;32m/s&amp;lt;/math&amp;gt; percebe um obstáculo (parado) na pista  &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; metros à sua frente. Sem tentar desviar, o motorista freia com aceleração &amp;lt;math&amp;gt;a=-8m/s^2&amp;lt;/math&amp;gt;$ até parar (ou bater). &lt;br /&gt;
&lt;br /&gt;
15a)  Faça um algoritmo para determinar a posição (suponha &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;) e  a velocidade desse carro para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;   separados por um intervalo &amp;lt;math&amp;gt;\Delta t=0.1s&amp;lt;/math&amp;gt;.  O programa deve indicar a se o carro atingiu  o obstáculo ou não. Caso não tenha atingido, deve indicar a distância ao obstáculo.&lt;br /&gt;
&lt;br /&gt;
15b) Faça um programa para o algoritmo da questão anterior. A distância do obstáculo deve  ser lida como entrada. A saída deve mostrar na tela se houve ou não colisão. Caso não haja, deve indicar a distância até o obstáculo. Além disso, os valores de posição contra tempo e velocidade&lt;br /&gt;
contra tempo devem ser escritos em um arquivo de três colunas &amp;lt;math&amp;gt;(t,x,v)&amp;lt;/math&amp;gt; de nome ``dadosCarro.dat''. Teste seu programa para as seguintes&lt;br /&gt;
distâncias ao obstáculo:  &amp;lt;math&amp;gt; L= 40, 50, 60 &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=221</id>
		<title>Área 1</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=221"/>
		<updated>2012-04-22T07:05:27Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abaixo há  exercícios e/ou problemas bem diversos, com vários níveis de dificuldade. Tente fazer todos ou pelo menos pensar sobre todos. Os  primeiros são os mesmos do trabalho 4 e  voce já deve ter feito  2 deles; pense e tente fazer os demais.&lt;br /&gt;
Quando for pedido apenas para fazer o algoritmo, faça também o programa.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1) Faça um algoritmo para calcular a mensalidade pelos alunos de uma academia de ginástica que tem como mensalidade básica R$85 e aplica os seguintes descontos&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade igual ou inferior a 15 anos terão desconto de 15%&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade superior a 15 anos terão desconto de 10%&lt;br /&gt;
&lt;br /&gt;
- homens com idade inferior a 22 anos não terão desconto&lt;br /&gt;
&lt;br /&gt;
- homens com idade igual ou superior a 22 anos terão desconto de 20%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Faça um algoritmo para calcular a nota resultante de um aluno que fez 3 provas. A nota é definida como sendo a média aritmética das 3 provas.&lt;br /&gt;
&lt;br /&gt;
Considere a seguinte tabela:&lt;br /&gt;
&lt;br /&gt;
- aprovado se nota &amp;gt;= 7&lt;br /&gt;
&lt;br /&gt;
- em exame se  5 &amp;lt;= nota &amp;lt; 7&lt;br /&gt;
&lt;br /&gt;
- reprovado se nota &amp;lt; 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é par.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é primo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Faça um algoritmo que leia 3 números da tela e os retorne em &lt;br /&gt;
&lt;br /&gt;
5.1- ordem crescente&lt;br /&gt;
&lt;br /&gt;
5.2- ordem decrescente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Faça um algortimo para determinar todos os divisores  do número N que estão entre os inteiros  i1 e i2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
7) Peça para o usuário entrar com um valor de temperatura em Celsius, transforme para Fahrenheit e coloque o valor na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Calcule os zeros de uma função de segundo grau (ax2+bx+c=0). &lt;br /&gt;
&lt;br /&gt;
a) na primeira versão, peça para o usuário entrar com os valores de &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
b) na segunda versão, crie um arquivo com os parâmetros &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot; e leia-os a partir de um arquivo externo ao  programa&lt;br /&gt;
&lt;br /&gt;
Em ambos os casos, não esqueça de verificar as limitações e ambiguidades do algoritmo que fará este cálculo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Peça para o usuário escolher um número N. Determine se este número N é primo ou não e diga para o usuário. &lt;br /&gt;
Use o algoritmo  feito em 4) para fazer um  programa em C.&lt;br /&gt;
Coloque o programa num arquivo de latex. Use o comando &amp;quot;verbatim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Construa duas matrizes de duas dimensões de inteiros, digamos A[N][M] e B[M][N]. Elas não precisam ter mesma dimensão, ou seja, N e M não são necessariamente os mesmos. &lt;br /&gt;
Primeiramente escolha M e N pequenos (em torno de 2 ou 3) para que você possa imprimi-las na tela.&lt;br /&gt;
Depois calcule o produto de A por B e mostre a matriz resultante na tela tb.&lt;br /&gt;
Crie de dentro do seu programa um arquivo de saída que contenha as matrizes A, B e o produto das duas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11) Leia o arquivo &amp;quot;dados.dat&amp;quot; que está no moodle  e coloque-os numa matriz do tipo &amp;quot;float&amp;quot; que se chama, por exemplo X.&lt;br /&gt;
Considerando a sequência de números X[i], faça:&lt;br /&gt;
&lt;br /&gt;
a) Encontre o valor máximo desta sequencia de números &lt;br /&gt;
&lt;br /&gt;
b) Ordene esta sequência de menor à maior&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12) Números de Fibonacci são uma sequência definida como recursiva pela fórmula abaixo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;F(n) =\left\{ \begin{matrix} 0\,,\qquad\qquad\qquad\quad\,\ \ \,&amp;amp;&amp;amp;\mbox{se }n=0\,;\ \ \\ 1,\qquad\qquad\qquad\qquad\,&amp;amp;&amp;amp;\mbox{se }n=1;\ \ \,\\ F(n-1)+F(n-2)&amp;amp;&amp;amp;\mbox{outros casos.} \end{matrix} \right. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na prática: você começa com 0 e 1, e então produz o próximo número de Fibonacci somando os dois anteriores para formar o próximo. Os primeiros Números de Fibonacci para n = 0, 1,… são&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Faça um programa que gera uma sequência de Fibonacci. Peça para o usuário escolher quantos termos da série serão mostrados.&lt;br /&gt;
Coloque a sequência num arquivo (você deve abri-lo e escrever nele de dentro do programa). Chame este arquivo usando um script em gnuplot e faça um gráfico em eps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13) Faça um programa que calcule o log(1+x), |x| &amp;lt; 1 com base na expansão em serie de Taylor: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: num programa você não poderá somar termos infinitamente. O somatório deverá ser de 1 até N. Teste vários valores de N para verificar quando o log(1+x) converge. Você pode comparar com o valor que você obtém se fizer o cálculo na calculadora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O usuário deve fornecer os valores de x e N e você deve verificar no seu programa que o |x| é menor do que 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14) Em t=0 um bloco de massa &amp;lt;math&amp;gt;m=2kg&amp;lt;/math&amp;gt; é lançado no campo gravitacional terrestre a partir do solo (&amp;lt;math&amp;gt;x_0=0;y_0=0&amp;lt;/math&amp;gt;) com velocidade inicial &amp;lt;math&amp;gt;\vec{v_0}=v_{0x}\vec{i}+v_{0y}\vec{j}&amp;lt;/math&amp;gt;.  Considere &amp;lt;math&amp;gt;g=-10m/s^2&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
a-  Faça um programa ara determinar os vetores posição e  velocidade do desse bloco para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; separados por&lt;br /&gt;
um intervalo  &amp;lt;math&amp;gt;\Delta t = t_{max}/100&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;t_{max}&amp;lt;/math&amp;gt; é o tempo que leva para o corpo voltar ao solo. O programa deve parar neste momento.&lt;br /&gt;
&lt;br /&gt;
b- Faça gráficos da trajetória e do módulo da velocidade  para&lt;br /&gt;
as seguintes condições iniciais (em m/s): &lt;br /&gt;
&lt;br /&gt;
b1) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b2) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b3) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b4) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b5) &amp;lt;math&amp;gt;v_0= 3 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
15 - Em &amp;lt;math&amp;gt;t=0&amp;lt;/math&amp;gt; o motorista de um carro de &amp;lt;math&amp;gt;m=700kg&amp;lt;/math&amp;gt;$ que se move a &amp;lt;math&amp;gt;32m/s&amp;lt;/math&amp;gt; percebe um obstáculo (parado) na pista  &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; metros à sua frente. Sem tentar desviar, o motorista freia com aceleração &amp;lt;math&amp;gt;a=-8m/s^2&amp;lt;/math&amp;gt;$ até parar (ou bater). &lt;br /&gt;
&lt;br /&gt;
15a)  Faça um algoritmo para determinar a posição (suponha &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;) e  a velocidade desse carro para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt;   separados por um intervalo &amp;lt;math&amp;gt;\Delta t=0.1s&amp;lt;/math&amp;gt;.  O programa deve indicar a se o carro atingiu  o obstáculo ou não. Caso não tenha atingido, deve indicar a distância ao obstáculo.&lt;br /&gt;
&lt;br /&gt;
15b) Faça um programa para o algoritmo da questão anterior. A distância do obstáculo deve  ser lida como entrada. A saída deve mostrar na tela se houve ou não colisão. Caso não haja, deve indicar a distância até o obstáculo. Além disso, os valores de posição contra tempo e velocidade&lt;br /&gt;
contra tempo devem ser escritos em um arquivo de três colunas &amp;lt;math&amp;gt;(t,x,v)&amp;lt;/math&amp;gt; de nome ``dadosCarro.dat''. Teste seu programa para as seguintes&lt;br /&gt;
distâncias ao obstáculo:  &amp;lt;math&amp;gt; L= 40, 50, 60 &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=220</id>
		<title>Área 1</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=%C3%81rea_1&amp;diff=220"/>
		<updated>2012-04-22T06:53:19Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abaixo há  exercícios e/ou problemas bem diversos, com vários níveis de dificuldade. Tente fazer todos ou pelo menos pensar sobre todos. Os  primeiros são os mesmos do trabalho 4 e  voce já deve ter feito  2 deles; pense e tente fazer os demais.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
1) Faça um algoritmo para calcular a mensalidade pelos alunos de uma acedmia de ginástica que tem como mensalidade básica R$85 e aplica os seguintes descontos&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade igual ou inferior a 15 anos terão desconto de 15%&lt;br /&gt;
&lt;br /&gt;
- mulheres com idade superior a 15 anos terão desconto de 10%&lt;br /&gt;
&lt;br /&gt;
- homens com idade inferior a 22 anos não terão desconto&lt;br /&gt;
&lt;br /&gt;
- homens com idade igual ou superior a 22 anos terão desconto de 20%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Faça um algoritmo para calcular a nota resultante de um aluno que fez 3 provas. A nota é definida como sendo a média aritmética das 3 provas.&lt;br /&gt;
&lt;br /&gt;
Considere a seguinte tabela:&lt;br /&gt;
&lt;br /&gt;
- aprovado se nota &amp;gt;= 7&lt;br /&gt;
&lt;br /&gt;
- em exame se  5 &amp;lt;= nota &amp;lt; 7&lt;br /&gt;
&lt;br /&gt;
- reprovado se nota &amp;lt; 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é par.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Faça um algoritmo que determine se um dado número [escolhido pelo usuário e lido pelo algoritmo] é primo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Faça um algoritmo que leia 3 números da tela e os retorne em &lt;br /&gt;
&lt;br /&gt;
5.1- ordem crescente&lt;br /&gt;
&lt;br /&gt;
5.2- ordem decrescente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Faça um algortimo para determinar todos os divisores  do número N que estão entre os inteiros  i1 e i2&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
7) Peça para o usuário entrar com um valor de temperatura em Celsius, transforme para Fahrenheit e coloque o valor na tela.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8) Calcule os zeros de uma função de segundo grau (ax2+bx+c=0). &lt;br /&gt;
&lt;br /&gt;
a) na primeira versão, peça para o usuário entrar com os valores de &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
b) na segunda versão, crie um arquivo com os parâmetros &amp;quot;a&amp;quot; e &amp;quot;b&amp;quot; e leia-os a partir de um arquivo externo ao  programa&lt;br /&gt;
&lt;br /&gt;
Em ambos os casos, não esqueça de verificar as limitações e ambiguidades do algoritmo que fará este cálculo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9) Peça para o usuário escolher um número N. Determine se este número N é primo ou não e diga para o usuário. &lt;br /&gt;
Use o algoritmo  feito em 4) para fazer um  programa em C.&lt;br /&gt;
Coloque o programa num arquivo de latex. Use o comando &amp;quot;verbatim&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10) Construa duas matrizes de duas dimensões de inteiros, digamos A[N][M] e B[M][N]. Elas não precisam ter mesma dimensão, ou seja, N e M não são necessariamente os mesmos. &lt;br /&gt;
Primeiramente escolha M e N pequenos (em torno de 2 ou 3) para que você possa imprimi-las na tela.&lt;br /&gt;
Depois calcule o produto de A por B e mostre a matriz resultante na tela tb.&lt;br /&gt;
Crie de dentro do seu programa um arquivo de saída que contenha as matrizes A, B e o produto das duas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11) Leia o arquivo &amp;quot;dados.dat&amp;quot; que está no moodle  e coloque-os numa matriz do tipo &amp;quot;float&amp;quot; que se chama, por exemplo X.&lt;br /&gt;
Considerando a sequência de números X[i], faça:&lt;br /&gt;
&lt;br /&gt;
a) Encontre o valor máximo desta sequencia de números &lt;br /&gt;
&lt;br /&gt;
b) Ordene esta sequência de menor à maior&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
12) Números de Fibonacci são uma sequência definida como recursiva pela fórmula abaixo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;F(n) =\left\{ \begin{matrix} 0\,,\qquad\qquad\qquad\quad\,\ \ \,&amp;amp;&amp;amp;\mbox{se }n=0\,;\ \ \\ 1,\qquad\qquad\qquad\qquad\,&amp;amp;&amp;amp;\mbox{se }n=1;\ \ \,\\ F(n-1)+F(n-2)&amp;amp;&amp;amp;\mbox{outros casos.} \end{matrix} \right. &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Na prática: você começa com 0 e 1, e então produz o próximo número de Fibonacci somando os dois anteriores para formar o próximo. Os primeiros Números de Fibonacci para n = 0, 1,… são&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Faça um programa que gera uma sequência de Fibonacci. Peça para o usuário escolher quantos termos da série serão mostrados.&lt;br /&gt;
Coloque a sequência num arquivo (você deve abri-lo e escrever nele de dentro do programa). Chame este arquivo usando um script em gnuplot e faça um gráfico em eps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
13) Faça um programa que calcule o log(1+x), |x| &amp;lt; 1 com base na expansão em serie de Taylor: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: num programa você não poderá somar termos infinitamente. O somatório deverá ser de 1 até N. Teste vários valores de N para verificar quando o log(1+x) converge. Você pode comparar com o valor que você obtém se fizer o cálculo na calculadora.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
O usuário deve fornecer os valores de x e N e você deve verificar no seu programa que o |x| é menor do que 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
14) Em t=0 um bloco de massa &amp;lt;math&amp;gt;m=2kg&amp;lt;/math&amp;gt; é lançado no campo gravitacional terrestre a partir do solo (&amp;lt;math&amp;gt;x_0=0;y_0=0&amp;lt;/math&amp;gt;) com velocidade inicial &amp;lt;math&amp;gt;\vec{v_0}=v_{0x}\vec{i}+v_{0y}\vec{j}&amp;lt;/math&amp;gt;.  Considere &amp;lt;math&amp;gt;g=-10m/s^2&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
a-  Faça um programa ara determinar os vetores posição e  velocidade do desse bloco para sucessivos valores de tempo &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; separados por&lt;br /&gt;
um intervalo  &amp;lt;math&amp;gt;\Delta t = t_{max}/100&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;t_{max}&amp;lt;/math&amp;gt; é o tempo que leva para o corpo voltar ao solo. O programa deve parar neste momento.&lt;br /&gt;
&lt;br /&gt;
b- Faça gráficos da trajetória e do módulo da velocidade  para&lt;br /&gt;
as seguintes condições iniciais (em m/s): &lt;br /&gt;
&lt;br /&gt;
b1) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b2) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 5\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b3) &amp;lt;math&amp;gt;v_0= 1 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b4) &amp;lt;math&amp;gt;v_0= 2 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
b5) &amp;lt;math&amp;gt;v_0= 3 \vec{i}+ 8\vec{j}&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=218</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=218"/>
		<updated>2012-03-05T16:18:35Z</updated>

		<summary type="html">&lt;p&gt;Caca: /* Mais comandos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''SUGESTÃO''': a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A '''esquerda''' de  '''&amp;lt;-''' o comando, a '''direita''' de '''&amp;lt;-''' 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: ''dir, file,'' 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  '''more''' 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 '''emacs''' fornece um ambiente especializado por tarefa  (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 '''jed,''' versão reduzida do emacs&lt;br /&gt;
Outro edito gráfico é o '''kate''' que vem junto com o '''konqueror''' &lt;br /&gt;
&lt;br /&gt;
O '''vi''' 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 '''vi''' é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas '''expressões regulares''' válidas&lt;br /&gt;
no editor '''sed'''. Assim para substituir a palavra ''word1'' por ''word2'' 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 '''''kk'''''  está no arquivo '''''file''''' &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  '''''decai'''''.&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 '''''tex''''' contendo '''''pi ='''''&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed 's/word1/word2/g' file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca '''word1''' por '''word2''' no arquivo '''file'''. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed 's/word1/word2/g' file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo '''file2'''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 '{print $1, $4}' notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a '''primeira''' ($1) e '''quarta'''($4) colunas de cada linha do arquivo ''notas''&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 ''awk'' 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 '{print $1, $3, $4}' notas&lt;br /&gt;
awk '{print $1, $3  $4}' 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 ''awk'' 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 '{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}' 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='ls -l --color' &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;
* '''gcc, f77 ou f90''': compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Comandos_Unix/Linux&amp;diff=217</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=217"/>
		<updated>2012-03-05T16:14:02Z</updated>

		<summary type="html">&lt;p&gt;Caca: /* Mais comandos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''SUGESTÃO''': a melhor maneira de aprender é testar cada um no terminal de comandos.&lt;br /&gt;
&lt;br /&gt;
A '''esquerda''' de  '''&amp;lt;-''' o comando, a '''direita''' de '''&amp;lt;-''' 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: ''dir, file,'' 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  '''more''' 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 '''emacs''' fornece um ambiente especializado por tarefa  (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 '''jed,''' versão reduzida do emacs&lt;br /&gt;
Outro edito gráfico é o '''kate''' que vem junto com o '''konqueror''' &lt;br /&gt;
&lt;br /&gt;
O '''vi''' 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 '''vi''' é descobrir como se faz para&lt;br /&gt;
substituir palavras no texto. Isto é feito com as mesmas '''expressões regulares''' válidas&lt;br /&gt;
no editor '''sed'''. Assim para substituir a palavra ''word1'' por ''word2'' 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;
&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 '''''kk'''''  está no arquivo '''''file''''' &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  '''''decai'''''.&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 '''''tex''''' contendo '''''pi ='''''&lt;br /&gt;
&lt;br /&gt;
=== sed ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed 's/word1/word2/g' file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
troca '''word1''' por '''word2''' no arquivo '''file'''. O resultado vai para a tela&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sed 's/word1/word2/g' file &amp;gt; file2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
faz o mesmo salvando o resultado no arquivo '''file2'''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 '{print $1, $4}' notas&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
neste exemplo o awk imprime a '''primeira''' ($1) e '''quarta'''($4) colunas de cada linha do arquivo ''notas''&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 ''awk'' 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 '{print $1, $3, $4}' notas&lt;br /&gt;
awk '{print $1, $3  $4}' 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 ''awk'' 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 '{ if ($2 &amp;gt;= 7) print $1, $2, $3, $4}' 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='ls -l --color' &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;
* '''gcc, f77 ou f90''': compiladores C e [[FORTRAN]]&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=F%C3%B3rmula_de_Lagrange&amp;diff=129</id>
		<title>Fórmula de Lagrange</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=F%C3%B3rmula_de_Lagrange&amp;diff=129"/>
		<updated>2011-10-20T18:44:54Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Polinômios de Lagrange ==&lt;br /&gt;
&lt;br /&gt;
Baseado no fato de que sobre &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pontos &amp;lt;math&amp;gt;(X_1,Y_1), (X_2,Y_2), \cdots, (X_N,Y_N)&amp;lt;/math&amp;gt; passa um ''único'' polinômio de grau &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt;, o '''Polinômio de Lagrange''' pode ser usado como fórmula de interpolação ou extrapolação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(x)=\sum_{i=1}^N Y_i L_i(x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
L_i(x)=\prod_{j=1,j\ne i}^N\frac{x-X_j}{X_i-X_j}=\frac{x-X_1}{X_i-X_1}\cdots\frac{x-X_{i-1}}{X_i-X_{i-1}}&lt;br /&gt;
\frac{x-X_{i+1}}{X_i-X_{i+1}}\cdots\frac{x-X_N}{X_i-X_N}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é um polinômio de grau &amp;lt;math&amp;gt;\;N-1&amp;lt;/math&amp;gt; em &amp;lt;math&amp;gt;\;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Tendo em vista que &amp;lt;math&amp;gt;L_i(X_j)=\delta_{i,j}\;,&amp;lt;/math&amp;gt; onde o delta de Kronecker&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;math&amp;gt;\delta_{ij} = \left\{\begin{matrix} &lt;br /&gt;
1, &amp;amp; \mbox{se } i=j  \\ &lt;br /&gt;
0, &amp;amp; \mbox{se } i \ne j \end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é fácil verificar que, de fato,&amp;lt;math&amp;gt;\;P(X_i)=Y_i&amp;lt;/math&amp;gt;. Assim,&amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; pode ser empregado para se estimar o valor de &amp;lt;math&amp;gt;\;Y(x)&amp;lt;/math&amp;gt; em pontos &amp;lt;math&amp;gt;\;x&amp;lt;/math&amp;gt; não tabulados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo 1 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:lagrangen2.png|right|frame|Fórmula de Lagrange para N=2.]]&lt;br /&gt;
&lt;br /&gt;
Para exemplificar a fórmula de Lagrange, consideramos primeiramente uma reta que passa pelos pontos &amp;lt;math&amp;gt;(X_1,Y_1) = (1,9)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_2,Y_2) = (2,13)&amp;lt;/math&amp;gt;, tendo assim &amp;lt;math&amp;gt;N = 2&amp;lt;/math&amp;gt;. Aplicando a fórmula de Lagrange, temos&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = \frac{x-X_2}{X_1-X_2} = \frac{x-2}{1-2} = -(x-2)&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \frac{x-X_1}{X_2-X_1} = \frac{x-1}{2-1} = (x-1)&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim, o polinômio de Lagrange que passa pelos pontos desejados é dado por:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(x)=\sum_{i=1}^N Y_i L_i(x) = Y_1L_1 + Y_2L_2 = 9(-x+2) + 13(x-1) = 4x + 5 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note que substituindo na equação acima, &amp;lt;math&amp;gt;P(1) = 9&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;P(2) = 13&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplo 2 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:lagrangen3.png|right|frame|Fórmula de Lagrange para N=3.]]&lt;br /&gt;
&lt;br /&gt;
Verificando a fórmula de Lagrange para &amp;lt;math&amp;gt;N = 3&amp;lt;/math&amp;gt;. Suponhamos que desejamos encontrar qual é o polinômio que passa pelos pontos  &amp;lt;math&amp;gt;(X_1,Y_1) = (2,4)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_2,Y_2) = (3,9)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_3,Y_3) = (6,36)&amp;lt;/math&amp;gt;. Temos que:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = \left(\frac{x-X_2}{X_1-X_2}\right) \left(\frac{x-X_3}{X_1-X_3}\right) = \left(\frac{x-3}{2-3}\right) \left(\frac{x-6}{2-6}\right) = \frac{x^2-9x+18}{4}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \left(\frac{x-X_1}{X_2-X_1}\right) \left(\frac{x-X_3}{X_2-X_3}\right) = \left(\frac{x-2}{3-2}\right) \left(\frac{x-6}{3-6}\right) = -\frac{x^2-8x+12}{3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_3 = \left(\frac{x-X_1}{X_3-X_1}\right) \left(\frac{x-X_2}{X_3-X_2}\right) = \left(\frac{x-2}{6-2}\right) \left(\frac{x-3}{6-3}\right) = \frac{x^2-5x+6}{12}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
assim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P(x)=\sum_{i=1}^N Y_i L_i(x) = Y_1L_1 + Y_2L_2 + Y_3L_3 = 4\frac{x^2-9x+18}{4} - 9\frac{x^2-8x+12}{3} + 36\frac{x^2-5x+6}{12} = x^2 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo 3 ==&lt;br /&gt;
&lt;br /&gt;
Para ilustrar graficamente o método da fórmula de Lagrange, usaremos um exemplo com &amp;lt;math&amp;gt;N=4&amp;lt;/math&amp;gt;. Considerando os quatro pontos &amp;lt;math&amp;gt;(X_1,Y_1) = (-1,5)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_2,Y_3) = (1,2)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_3,Y_3) = (-3,5)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_4,Y_4) = (7,4)&amp;lt;/math&amp;gt;, as equações &amp;lt;math&amp;gt;L_i&amp;lt;/math&amp;gt; ficam&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = -\frac{1}{64}(x^3-11x^2+31x-21)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \frac{1}{24}(x^3-9x^2+11x+21)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_3 = -\frac{1}{32}(x^3-7x^2-x+7)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_4 = \frac{1}{192}(x^3-3x^2-x+3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
O gráfico abaixo mostra os quatro pontos &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, as curvas &amp;lt;math&amp;gt;L_iY_i&amp;lt;/math&amp;gt; e a curva final &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt;. Lembre-se que &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; é a curva gerada pela soma dos polinômios &amp;lt;math&amp;gt;L_iY_i&amp;lt;/math&amp;gt;. Note que a curva &amp;lt;math&amp;gt;L_1Y_1&amp;lt;/math&amp;gt; passa pelo ponto &amp;lt;math&amp;gt;(X_1,Y_1)&amp;lt;/math&amp;gt;, assim como as demais e a curva &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; passa por todos os pontos.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:lagrange.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Numericamente  ==&lt;br /&gt;
&lt;br /&gt;
Na prática, a implementação numérica do polinômio de Lagrange é complicada.&lt;br /&gt;
Computacionalmente não é possível fazer um programa geral para interpolação de ordem arbitrária, isto é fazer um programa que, com os N pontos de entrada &amp;lt;math&amp;gt;{X_i,Y_i}&amp;lt;/math&amp;gt;, devolva um polinômio &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; interpolador de grau N. Isto envolve computação simbólica (do tipo utilizada em programas proprietários como o Mathematica, Maple, ou livres como Maxima). &lt;br /&gt;
Por outro lado a implementação numérica do método na força bruta envolve um duplo laço de ordem N:&lt;br /&gt;
devem ser somados N termos (os &amp;lt;math&amp;gt;L_i(x)&amp;lt;/math&amp;gt;) onde cada um deles é construído como um produto de N-1 termos; ao todo &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt; cálculos para cada ponto x (isto fica como exercício a partir da fórmula &lt;br /&gt;
geral do &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
O Algoritmo de Neville [http://www.physics.utah.edu/~detar/phys6720/handouts/interpolation/interpolation/node4.html] é muito útil na realização desta tarefa.Ao final, veremos que o polinômio interpolador de grau n pode ser reconstruído com polinômios de grau n-1. Este processo gera uma fórmula de recorrência,  que é um recurso  bastante comum em algoritmos computacionais. &lt;br /&gt;
&lt;br /&gt;
Para deduzirmos esta fórmula de recorrência, começamos  aproximando cada intervalo por um valor constante. Podemos representar esta aproximação por&lt;br /&gt;
&amp;lt;math&amp;gt;P_1(x)=Y_1,\; P_2(x)=Y_2,\; \cdots\,\; P_N(x)=Y_N&amp;lt;/math&amp;gt;. &lt;br /&gt;
Melhorando a descrição, empregando agora uma aproximação linear em cada intervalo &amp;lt;math&amp;gt;[X_i,\;X_{i+1}]&amp;lt;/math&amp;gt;, denotamos por &amp;lt;math&amp;gt;P_{12}(x),\;P_{23}(x),\; \cdots,\; P_{N-1,N}(x)&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;P_{i,i+1}(x)\;&amp;lt;/math&amp;gt;é o polinômio que passa exatamente sobre&lt;br /&gt;
&amp;lt;math&amp;gt;(X_i,Y_i)\;&amp;lt;/math&amp;gt;e&amp;lt;math&amp;gt;\;(X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1}(x)=\frac{x-X_{i+1}}{X_i-X_{i+1}}Y_i+\frac{x-X_i}{X_{i+1}-X_i}Y_{i+1}\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que &amp;lt;math&amp;gt;P_{i, i+1}(x)\;&amp;lt;/math&amp;gt;pode ser escrito como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1}(x)=\frac{(x-X_{i+1})P_i(x)-(x-X_i)P_{i+1}(x)}{X_i-X_{i+1}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isto sugere que há uma relação entre os polinômios de ordem &amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; com os de ordem &amp;lt;math&amp;gt;\;n+1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para verificar isto, vamos considerar, agora, uma parábola passando exatamente sobre&lt;br /&gt;
&amp;lt;math&amp;gt;(X_i,Y_i)\;,(X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt; e&amp;lt;math&amp;gt;\;(X_{i+2},Y_{i+2})&amp;lt;/math&amp;gt;, que denotaremos por,&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x)=\frac{x-X_{i+1}}{X_i-X_{i+1}}\frac{x-X_{i+2}}{X_i    -X_{i+2}}Y_i&lt;br /&gt;
             +\frac{x-X_i}{X_{i+1}-X_i}\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1}&lt;br /&gt;
             +\frac{x-X_i}{X_{i+2}-X_i}\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fatorando &amp;lt;math&amp;gt;\;1/(X_i-X_{i+2})&amp;lt;/math&amp;gt; e somando e subtraindo &amp;lt;math&amp;gt;\frac{x-X_i}{X_{i+1}-X_i}(x-X_{i+2})Y_{i+1}&amp;lt;/math&amp;gt;, obtemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x) =\frac{1}{X_i-X_{i+2}}\left[(x-X_{i+2})P_{i,i+1}(x)&lt;br /&gt;
-F(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F(x)=(x-X_i)\left[\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}&lt;br /&gt;
-\frac{X_i-X_{i+2}}{X_{i+1}-X_i}\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1} &lt;br /&gt;
+\frac{x-X_{i+2}}{X_{i+1}-X_i}Y_{i+1}\right]\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note que o último termo desta expressão corresponde àquele que foi subtraído após seu termo de sinal contrário ter&lt;br /&gt;
sido somado à expressão que levou a&amp;lt;math&amp;gt;\;P_{i,i+1}(x)&amp;lt;/math&amp;gt; na equação para&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Rearranjando os termos acima, encontramos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F(x)=(x-X_i)\left[\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1}+\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}\right]&lt;br /&gt;
=(x-X_i)P_{i+1,i+2}(x)\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Substituindo este resultado na equação para&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;, obtemos finalmente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x) =\frac{1}{X_i-X_{i+2}}\left[(x-X_{i+2})P_{i,i+1}(x)&lt;br /&gt;
-(x-X_i)P_{i+1,i+2}(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assim, notamos que, de fato, há uma relação de recorrência bastante simples entre os polinômios que envolvem&lt;br /&gt;
&amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\;n+1&amp;lt;/math&amp;gt; pontos, cuja forma geral é dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,\cdots,i+k}(x) =\frac{1}{X_i-X_{i+k}}\left[(x-X_{i+k})P_{i,i+1,\cdots,i+k-1}(x)&lt;br /&gt;
-(x-X_i)P_{i+1,i+2,\cdots,i+k}(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por ser muito mais simples de se implementar numericamente do que a expressão original para &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt;,&lt;br /&gt;
é esta relação de recorrência que é, de fato, utilizada em cálculos numéricos. Os erros cometidos podem ser estimados calculando-se as diferenças entre as diferentes ordens do polinômio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D^{(1)}_{k,i}(x)=P_{i,i+1,\cdots,i+k}(x)-P_{i,i+1,\cdots,i+k-1}(x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D^{(2)}_{k,i}(x)=P_{i,i+1,\cdots,i+k}(x)-P_{i+1,i+2,\cdots,i+k}(x)\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ao invés de se gerar &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; a partir da relação de recorrência para &amp;lt;math&amp;gt;P_{i,i+1,\cdots,i+k}(x)&amp;lt;/math&amp;gt;, pode-se utilizar as equações acima e obter relações de recorrência para &amp;lt;math&amp;gt;\;D^{(1)} \mbox{ e } D^{(2)}&amp;lt;/math&amp;gt;. No final, obtemos &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; a partir destas quantidades. Este desenvolvimento é deixado como exercício.&lt;br /&gt;
&lt;br /&gt;
É importante notar que em nenhum ponto da discussão foi evocada a necessidade dos pontos &amp;lt;math&amp;gt;\;\{X_i\}&amp;lt;/math&amp;gt; serem igualmente espaçados. Portanto, as fórmulas apresentadas aqui podem ser aplicadas em situações bastante gerais.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Como discutido na seção [[Interpolação e extrapolação]], é desaconselhável o uso de polinômios de grau elevado. Por isto, apenas um pequeno subconjunto dos valores tabulados, nas vizinhanças do ponto de interesse &amp;lt;math&amp;gt;\;X&amp;lt;/math&amp;gt;, deve ser empregado.&lt;br /&gt;
Por exemplo, digamos que temos uma tabela com 100 pontos &amp;lt;math&amp;gt;\;\{(X_i,Y_i)\}&amp;lt;/math&amp;gt;. Se desejamos estimar o valor de &amp;lt;math&amp;gt;\;Y&amp;lt;/math&amp;gt; no interior da região &amp;lt;math&amp;gt;[X_1,\; X_N]&amp;lt;/math&amp;gt;, ao invés de construir um polinômio de grau 99, podemos, por exemplo, dividir o espaço em 25 sub-regiões e usar polinômios cúbicos em cada uma delas,&lt;br /&gt;
utilizando apenas &amp;lt;math&amp;gt;(X_{i-1},Y_{i-1}),\; (X_i,Y_i),\; (X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt; e&amp;lt;math&amp;gt;\;(X_{i+2},Y_{i+2})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Contudo, devemos notar que, embora a interpolação seja contínua nas interfaces das regiões, a continuidade das derivadas 1&amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt; e 2&amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt; não é garantida. Em situações em que estas propriedades importam, outras aproximações devem ser adotadas (veja, por exemplo, [[Spline cúbico]]).&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=F%C3%B3rmula_de_Lagrange&amp;diff=128</id>
		<title>Fórmula de Lagrange</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=F%C3%B3rmula_de_Lagrange&amp;diff=128"/>
		<updated>2011-10-20T18:43:59Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Interpolação polinimial &amp;amp; Polinômios de Lagrange ==&lt;br /&gt;
&lt;br /&gt;
Baseado no fato de que sobre &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; pontos &amp;lt;math&amp;gt;(X_1,Y_1), (X_2,Y_2), \cdots, (X_N,Y_N)&amp;lt;/math&amp;gt; passa um ''único'' polinômio de grau &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt;, o '''Polinômio de Lagrange''' pode ser usado como fórmula de interpolação ou extrapolação:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P(x)=\sum_{i=1}^N Y_i L_i(x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
L_i(x)=\prod_{j=1,j\ne i}^N\frac{x-X_j}{X_i-X_j}=\frac{x-X_1}{X_i-X_1}\cdots\frac{x-X_{i-1}}{X_i-X_{i-1}}&lt;br /&gt;
\frac{x-X_{i+1}}{X_i-X_{i+1}}\cdots\frac{x-X_N}{X_i-X_N}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é um polinômio de grau &amp;lt;math&amp;gt;\;N-1&amp;lt;/math&amp;gt; em &amp;lt;math&amp;gt;\;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
Tendo em vista que &amp;lt;math&amp;gt;L_i(X_j)=\delta_{i,j}\;,&amp;lt;/math&amp;gt; onde o delta de Kronecker&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;math&amp;gt;\delta_{ij} = \left\{\begin{matrix} &lt;br /&gt;
1, &amp;amp; \mbox{se } i=j  \\ &lt;br /&gt;
0, &amp;amp; \mbox{se } i \ne j \end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
é fácil verificar que, de fato,&amp;lt;math&amp;gt;\;P(X_i)=Y_i&amp;lt;/math&amp;gt;. Assim,&amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; pode ser empregado para se estimar o valor de &amp;lt;math&amp;gt;\;Y(x)&amp;lt;/math&amp;gt; em pontos &amp;lt;math&amp;gt;\;x&amp;lt;/math&amp;gt; não tabulados.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo 1 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:lagrangen2.png|right|frame|Fórmula de Lagrange para N=2.]]&lt;br /&gt;
&lt;br /&gt;
Para exemplificar a fórmula de Lagrange, consideramos primeiramente uma reta que passa pelos pontos &amp;lt;math&amp;gt;(X_1,Y_1) = (1,9)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_2,Y_2) = (2,13)&amp;lt;/math&amp;gt;, tendo assim &amp;lt;math&amp;gt;N = 2&amp;lt;/math&amp;gt;. Aplicando a fórmula de Lagrange, temos&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = \frac{x-X_2}{X_1-X_2} = \frac{x-2}{1-2} = -(x-2)&amp;lt;/math&amp;gt;&lt;br /&gt;
e&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \frac{x-X_1}{X_2-X_1} = \frac{x-1}{2-1} = (x-1)&amp;lt;/math&amp;gt;,&lt;br /&gt;
assim, o polinômio de Lagrange que passa pelos pontos desejados é dado por:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(x)=\sum_{i=1}^N Y_i L_i(x) = Y_1L_1 + Y_2L_2 = 9(-x+2) + 13(x-1) = 4x + 5 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Note que substituindo na equação acima, &amp;lt;math&amp;gt;P(1) = 9&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;P(2) = 13&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplo 2 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:lagrangen3.png|right|frame|Fórmula de Lagrange para N=3.]]&lt;br /&gt;
&lt;br /&gt;
Verificando a fórmula de Lagrange para &amp;lt;math&amp;gt;N = 3&amp;lt;/math&amp;gt;. Suponhamos que desejamos encontrar qual é o polinômio que passa pelos pontos  &amp;lt;math&amp;gt;(X_1,Y_1) = (2,4)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_2,Y_2) = (3,9)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_3,Y_3) = (6,36)&amp;lt;/math&amp;gt;. Temos que:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = \left(\frac{x-X_2}{X_1-X_2}\right) \left(\frac{x-X_3}{X_1-X_3}\right) = \left(\frac{x-3}{2-3}\right) \left(\frac{x-6}{2-6}\right) = \frac{x^2-9x+18}{4}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \left(\frac{x-X_1}{X_2-X_1}\right) \left(\frac{x-X_3}{X_2-X_3}\right) = \left(\frac{x-2}{3-2}\right) \left(\frac{x-6}{3-6}\right) = -\frac{x^2-8x+12}{3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_3 = \left(\frac{x-X_1}{X_3-X_1}\right) \left(\frac{x-X_2}{X_3-X_2}\right) = \left(\frac{x-2}{6-2}\right) \left(\frac{x-3}{6-3}\right) = \frac{x^2-5x+6}{12}&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
assim&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P(x)=\sum_{i=1}^N Y_i L_i(x) = Y_1L_1 + Y_2L_2 + Y_3L_3 = 4\frac{x^2-9x+18}{4} - 9\frac{x^2-8x+12}{3} + 36\frac{x^2-5x+6}{12} = x^2 &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Exemplo 3 ==&lt;br /&gt;
&lt;br /&gt;
Para ilustrar graficamente o método da fórmula de Lagrange, usaremos um exemplo com &amp;lt;math&amp;gt;N=4&amp;lt;/math&amp;gt;. Considerando os quatro pontos &amp;lt;math&amp;gt;(X_1,Y_1) = (-1,5)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_2,Y_3) = (1,2)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;(X_3,Y_3) = (-3,5)&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;(X_4,Y_4) = (7,4)&amp;lt;/math&amp;gt;, as equações &amp;lt;math&amp;gt;L_i&amp;lt;/math&amp;gt; ficam&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_1 = -\frac{1}{64}(x^3-11x^2+31x-21)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_2 = \frac{1}{24}(x^3-9x^2+11x+21)&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_3 = -\frac{1}{32}(x^3-7x^2-x+7)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L_4 = \frac{1}{192}(x^3-3x^2-x+3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
 &lt;br /&gt;
O gráfico abaixo mostra os quatro pontos &amp;lt;math&amp;gt;(X_i,Y_i)&amp;lt;/math&amp;gt;, as curvas &amp;lt;math&amp;gt;L_iY_i&amp;lt;/math&amp;gt; e a curva final &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt;. Lembre-se que &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; é a curva gerada pela soma dos polinômios &amp;lt;math&amp;gt;L_iY_i&amp;lt;/math&amp;gt;. Note que a curva &amp;lt;math&amp;gt;L_1Y_1&amp;lt;/math&amp;gt; passa pelo ponto &amp;lt;math&amp;gt;(X_1,Y_1)&amp;lt;/math&amp;gt;, assim como as demais e a curva &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; passa por todos os pontos.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:lagrange.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Numericamente  ==&lt;br /&gt;
&lt;br /&gt;
Na prática, a implementação numérica do polinômio de Lagrange é complicada.&lt;br /&gt;
Computacionalmente não é possível fazer um programa geral para interpolação de ordem arbitrária, isto é fazer um programa que, com os N pontos de entrada &amp;lt;math&amp;gt;{X_i,Y_i}&amp;lt;/math&amp;gt;, devolva um polinômio &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt; interpolador de grau N. Isto envolve computação simbólica (do tipo utilizada em programas proprietários como o Mathematica, Maple, ou livres como Maxima). &lt;br /&gt;
Por outro lado a implementação numérica do método na força bruta envolve um duplo laço de ordem N:&lt;br /&gt;
devem ser somados N termos (os &amp;lt;math&amp;gt;L_i(x)&amp;lt;/math&amp;gt;) onde cada um deles é construído como um produto de N-1 termos; ao todo &amp;lt;math&amp;gt;N^2&amp;lt;/math&amp;gt; cálculos para cada ponto x (isto fica como exercício a partir da fórmula &lt;br /&gt;
geral do &amp;lt;math&amp;gt;P(x)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
O Algoritmo de Neville [http://www.physics.utah.edu/~detar/phys6720/handouts/interpolation/interpolation/node4.html] é muito útil na realização desta tarefa.Ao final, veremos que o polinômio interpolador de grau n pode ser reconstruído com polinômios de grau n-1. Este processo gera uma fórmula de recorrência,  que é um recurso  bastante comum em algoritmos computacionais. &lt;br /&gt;
&lt;br /&gt;
Para deduzirmos esta fórmula de recorrência, começamos  aproximando cada intervalo por um valor constante. Podemos representar esta aproximação por&lt;br /&gt;
&amp;lt;math&amp;gt;P_1(x)=Y_1,\; P_2(x)=Y_2,\; \cdots\,\; P_N(x)=Y_N&amp;lt;/math&amp;gt;. &lt;br /&gt;
Melhorando a descrição, empregando agora uma aproximação linear em cada intervalo &amp;lt;math&amp;gt;[X_i,\;X_{i+1}]&amp;lt;/math&amp;gt;, denotamos por &amp;lt;math&amp;gt;P_{12}(x),\;P_{23}(x),\; \cdots,\; P_{N-1,N}(x)&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;P_{i,i+1}(x)\;&amp;lt;/math&amp;gt;é o polinômio que passa exatamente sobre&lt;br /&gt;
&amp;lt;math&amp;gt;(X_i,Y_i)\;&amp;lt;/math&amp;gt;e&amp;lt;math&amp;gt;\;(X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1}(x)=\frac{x-X_{i+1}}{X_i-X_{i+1}}Y_i+\frac{x-X_i}{X_{i+1}-X_i}Y_{i+1}\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vemos que &amp;lt;math&amp;gt;P_{i, i+1}(x)\;&amp;lt;/math&amp;gt;pode ser escrito como:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1}(x)=\frac{(x-X_{i+1})P_i(x)-(x-X_i)P_{i+1}(x)}{X_i-X_{i+1}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isto sugere que há uma relação entre os polinômios de ordem &amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; com os de ordem &amp;lt;math&amp;gt;\;n+1&amp;lt;/math&amp;gt;.&lt;br /&gt;
Para verificar isto, vamos considerar, agora, uma parábola passando exatamente sobre&lt;br /&gt;
&amp;lt;math&amp;gt;(X_i,Y_i)\;,(X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt; e&amp;lt;math&amp;gt;\;(X_{i+2},Y_{i+2})&amp;lt;/math&amp;gt;, que denotaremos por,&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x)=\frac{x-X_{i+1}}{X_i-X_{i+1}}\frac{x-X_{i+2}}{X_i    -X_{i+2}}Y_i&lt;br /&gt;
             +\frac{x-X_i}{X_{i+1}-X_i}\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1}&lt;br /&gt;
             +\frac{x-X_i}{X_{i+2}-X_i}\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Fatorando &amp;lt;math&amp;gt;\;1/(X_i-X_{i+2})&amp;lt;/math&amp;gt; e somando e subtraindo &amp;lt;math&amp;gt;\frac{x-X_i}{X_{i+1}-X_i}(x-X_{i+2})Y_{i+1}&amp;lt;/math&amp;gt;, obtemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x) =\frac{1}{X_i-X_{i+2}}\left[(x-X_{i+2})P_{i,i+1}(x)&lt;br /&gt;
-F(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F(x)=(x-X_i)\left[\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}&lt;br /&gt;
-\frac{X_i-X_{i+2}}{X_{i+1}-X_i}\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1} &lt;br /&gt;
+\frac{x-X_{i+2}}{X_{i+1}-X_i}Y_{i+1}\right]\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note que o último termo desta expressão corresponde àquele que foi subtraído após seu termo de sinal contrário ter&lt;br /&gt;
sido somado à expressão que levou a&amp;lt;math&amp;gt;\;P_{i,i+1}(x)&amp;lt;/math&amp;gt; na equação para&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Rearranjando os termos acima, encontramos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F(x)=(x-X_i)\left[\frac{x-X_{i+2}}{X_{i+1}-X_{i+2}}Y_{i+1}+\frac{x-X_{i+1}}{X_{i+2}-X_{i+1}}Y_{i+2}\right]&lt;br /&gt;
=(x-X_i)P_{i+1,i+2}(x)\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Substituindo este resultado na equação para&amp;lt;math&amp;gt;\;P_{i,i+1,i+2}(x)&amp;lt;/math&amp;gt;, obtemos finalmente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,i+2}(x) =\frac{1}{X_i-X_{i+2}}\left[(x-X_{i+2})P_{i,i+1}(x)&lt;br /&gt;
-(x-X_i)P_{i+1,i+2}(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Assim, notamos que, de fato, há uma relação de recorrência bastante simples entre os polinômios que envolvem&lt;br /&gt;
&amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;\;n+1&amp;lt;/math&amp;gt; pontos, cuja forma geral é dada por:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_{i,i+1,\cdots,i+k}(x) =\frac{1}{X_i-X_{i+k}}\left[(x-X_{i+k})P_{i,i+1,\cdots,i+k-1}(x)&lt;br /&gt;
-(x-X_i)P_{i+1,i+2,\cdots,i+k}(x)\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por ser muito mais simples de se implementar numericamente do que a expressão original para &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt;,&lt;br /&gt;
é esta relação de recorrência que é, de fato, utilizada em cálculos numéricos. Os erros cometidos podem ser estimados calculando-se as diferenças entre as diferentes ordens do polinômio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D^{(1)}_{k,i}(x)=P_{i,i+1,\cdots,i+k}(x)-P_{i,i+1,\cdots,i+k-1}(x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
e&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
D^{(2)}_{k,i}(x)=P_{i,i+1,\cdots,i+k}(x)-P_{i+1,i+2,\cdots,i+k}(x)\;.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ao invés de se gerar &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; a partir da relação de recorrência para &amp;lt;math&amp;gt;P_{i,i+1,\cdots,i+k}(x)&amp;lt;/math&amp;gt;, pode-se utilizar as equações acima e obter relações de recorrência para &amp;lt;math&amp;gt;\;D^{(1)} \mbox{ e } D^{(2)}&amp;lt;/math&amp;gt;. No final, obtemos &amp;lt;math&amp;gt;\;P(x)&amp;lt;/math&amp;gt; a partir destas quantidades. Este desenvolvimento é deixado como exercício.&lt;br /&gt;
&lt;br /&gt;
É importante notar que em nenhum ponto da discussão foi evocada a necessidade dos pontos &amp;lt;math&amp;gt;\;\{X_i\}&amp;lt;/math&amp;gt; serem igualmente espaçados. Portanto, as fórmulas apresentadas aqui podem ser aplicadas em situações bastante gerais.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Como discutido na seção [[Interpolação e extrapolação]], é desaconselhável o uso de polinômios de grau elevado. Por isto, apenas um pequeno subconjunto dos valores tabulados, nas vizinhanças do ponto de interesse &amp;lt;math&amp;gt;\;X&amp;lt;/math&amp;gt;, deve ser empregado.&lt;br /&gt;
Por exemplo, digamos que temos uma tabela com 100 pontos &amp;lt;math&amp;gt;\;\{(X_i,Y_i)\}&amp;lt;/math&amp;gt;. Se desejamos estimar o valor de &amp;lt;math&amp;gt;\;Y&amp;lt;/math&amp;gt; no interior da região &amp;lt;math&amp;gt;[X_1,\; X_N]&amp;lt;/math&amp;gt;, ao invés de construir um polinômio de grau 99, podemos, por exemplo, dividir o espaço em 25 sub-regiões e usar polinômios cúbicos em cada uma delas,&lt;br /&gt;
utilizando apenas &amp;lt;math&amp;gt;(X_{i-1},Y_{i-1}),\; (X_i,Y_i),\; (X_{i+1},Y_{i+1})&amp;lt;/math&amp;gt; e&amp;lt;math&amp;gt;\;(X_{i+2},Y_{i+2})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Contudo, devemos notar que, embora a interpolação seja contínua nas interfaces das regiões, a continuidade das derivadas 1&amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt; e 2&amp;lt;sup&amp;gt;a&amp;lt;/sup&amp;gt; não é garantida. Em situações em que estas propriedades importam, outras aproximações devem ser adotadas (veja, por exemplo, [[Spline cúbico]]).&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Interpola%C3%A7%C3%A3o_e_extrapola%C3%A7%C3%A3o&amp;diff=127</id>
		<title>Interpolação e extrapolação</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Interpola%C3%A7%C3%A3o_e_extrapola%C3%A7%C3%A3o&amp;diff=127"/>
		<updated>2011-10-20T18:42:41Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dado um conjunto de dados &amp;lt;math&amp;gt;(X_1,Y_1), (X_2,Y_2), \cdots (X_N,Y_N)&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;\;Y_i&amp;lt;/math&amp;gt; corresponde ao valor da grandeza &amp;lt;math&amp;gt;\;Y&amp;lt;/math&amp;gt; em &amp;lt;math&amp;gt;\;X=X_i&amp;lt;/math&amp;gt;, aproximações podem ser desenvolvidas para se obter estimativas de &amp;lt;math&amp;gt;\;Y(X)&amp;lt;/math&amp;gt;, em valores de &amp;lt;math&amp;gt;\;X&amp;lt;/math&amp;gt; que não constam do conjunto. Se &amp;lt;math&amp;gt;X_1 \le X \le X_N&amp;lt;/math&amp;gt; esta estimativa é denominada '''interpolação''', caso contrário, chamamos de '''extrapolação'''. Usualmente, os mesmos algoritmos são usados nos dois casos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Em geral, extrapolações são mais perigosas, uma vez que deve-se presumir o comportamento da função em regiões onde não se conhece nada sobre ela. Supõe-se que  o comportamento perto da fronteira da região conhecida se estende até o ponto de interesse, o que constitui um &amp;quot;ato de fé&amp;quot;.  Embora seja extremamente útil para se estimar valores da grandeza além da região conhecida, cabe ressaltar que atrasos significativos no desenvolvimento de grande parte da física moderna teriam ocorrido se tivéssemos nos limitado a extrapolações ao invés de se realizar medidas pois muitos comportamentos diferentes, provenientes de um física nova, foram observados. Apesar disto, extrapolações cuidadosas constituem uma poderosa ferramenta em várias áreas, como por exemplo, na resolução numérica de equações diferencias.&lt;br /&gt;
&lt;br /&gt;
Embora a interpolação possa parecer inofensiva, dificuldades também podem ser encontradas. Um exemplo clássico, evocado no livro [http://www.nr.com Numerical Recipes], é a função:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=3x^2+\frac{\log[(\pi-x)^2]}{\pi^4}+1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A figura abaixo mostra valores de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; calculados a partir desta fórmula, usando valores de &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; igualmente espaçados em &amp;lt;math&amp;gt;0.01&amp;lt;/math&amp;gt;, no intervalo &amp;lt;math&amp;gt;0\le X\le 10&amp;lt;/math&amp;gt;. Note que, este nível de detalhe de conhecimento sobre a função é, em geral, muito satisfatório tanto em cálculos numéricos quanto em medidas experimentais. Contudo, embora a função &lt;br /&gt;
pareça crescer monotonamente, o detalhe mostrado no interior da figura revela claramente que erros grosseiros serão cometidos por fórmulas de interpolação na região &amp;lt;math&amp;gt;x\approx\pi&amp;lt;/math&amp;gt;.&lt;br /&gt;
A curva em vermelho corresponde à fórmula acima, enquanto que os pontos representam os valores tabulados.&lt;br /&gt;
Isto mostra que, como sempre, em se tratando de aproximações numéricas, todas as &amp;quot;receitas&amp;quot; devem sempre ser analisadas cuidadosamente em cada aplicação.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:pathology.jpg]]&lt;br /&gt;
&lt;br /&gt;
Além dos aspectos sutis levantados acima, outra regra importante a ser observada em cálculos numéricos é que polinômios de grau elevado devem ser evitados. Embora seu uso permita a imposição de várias propriedades desejadas, como a imposição da continuidade das derivadas da função, por exemplo, um polinômio de grau &amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; possui o mesmo número de raízes. Isto faz com que eles oscilem fortemente. Logo, isto pode levar a comportamentos indesejados em extrapolações. &lt;br /&gt;
&lt;br /&gt;
No caso da interpolação, este efeito  também ocorre. Ou seja, o uso de polinômios de grau elevado por causar problemas.  Por construção,  os valores da função são&lt;br /&gt;
reproduzidos nos pontos &amp;lt;math&amp;gt;\;X_i&amp;lt;/math&amp;gt;. No entanto, ainda assim podem ocorrer  fortes oscilaçõesê entre 2 pontos adjacentes se a ordem do polinômio for muito elevada. Não há regras simples para se determinar, no caso geral, qual é o melhor grau a ser utilizado. Os teoremas matemáticos genéricos requerem tanta informação sobre a função que, na verdade, se as conhecessemos, não precisaríamos fazer aproximações polinomiais. Uma boa receita para se evitar dificuldades consiste em se utilizar o polinômio de ordem mais baixa possível que garanta as propriedades e precisão desejadas. No caso em que os dados em consideração são obtidos a partir de cálculos numéricos, maior precisão pode ser obtida aumentando-se o número de pontos do conjunto de dados, mantendo-se o grau do polinômio empregado. Em se tratando de dados experimentais, onde em geral pode não ser simples (até mesmo por razões de custo) se obter mais pontos intermediários, aumentar um pouco o grau do polinômio pode ser uma solução aceitável. Se ainda assim isto não for suficiente, cabe ressaltar que existem outros métodos vai além de aproximações polinomiais e que técnicas baseadas em razões entre polinômios diferentes ou envolvendo funções mais complexas podem ser utilizadas com segurança.&lt;br /&gt;
&lt;br /&gt;
No link a seguir, &amp;quot;Interpolação polinomial e Fórmula de Lagrange&amp;quot;, há um exemplo de interpolação / extrapolação polinomial.&lt;br /&gt;
&lt;br /&gt;
Este assunto é muito vasto para ser tratado nesta abordagem introdutória. Uma discussão mais completa pode ser encontrada, por exemplo, no livro [http://www.nr.com Numerical Recipes]. Em particular, boa parte da discussão a seguir, sobre a [[Fórmula de Lagrange]] e [[Spline cúbico]], é fortemente baseada na apresentação deste livro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Voltar para o índice de [[Métodos computacionais]].&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Interpola%C3%A7%C3%A3o_e_extrapola%C3%A7%C3%A3o&amp;diff=126</id>
		<title>Interpolação e extrapolação</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Interpola%C3%A7%C3%A3o_e_extrapola%C3%A7%C3%A3o&amp;diff=126"/>
		<updated>2011-10-20T18:33:48Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dado um conjunto de dados &amp;lt;math&amp;gt;(X_1,Y_1), (X_2,Y_2), \cdots (X_N,Y_N)&amp;lt;/math&amp;gt;, onde &amp;lt;math&amp;gt;\;Y_i&amp;lt;/math&amp;gt; corresponde ao valor da grandeza &amp;lt;math&amp;gt;\;Y&amp;lt;/math&amp;gt; em &amp;lt;math&amp;gt;\;X=X_i&amp;lt;/math&amp;gt;, aproximações podem ser desenvolvidas para se obter estimativas de &amp;lt;math&amp;gt;\;Y(X)&amp;lt;/math&amp;gt;, em valores de &amp;lt;math&amp;gt;\;X&amp;lt;/math&amp;gt; que não constam do conjunto. Se &amp;lt;math&amp;gt;X_1 \le X \le X_N&amp;lt;/math&amp;gt; esta estimativa é denominada '''interpolação''', caso contrário, chamamos de '''extrapolação'''. Usualmente, os mesmos algoritmos são usados nos dois casos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Em geral, extrapolações são mais perigosas, uma vez que deve-se presumir o comportamento da função em regiões onde não se conhece nada sobre ela. Supõe-se que  o comportamento perto da fronteira da região conhecida se estende até o ponto de interesse, o que constitui um &amp;quot;ato de fé&amp;quot;.  Embora seja extremamente útil para se estimar valores da grandeza além da região conhecida, cabe ressaltar que atrasos significativos no desenvolvimento de grande parte da física moderna teriam ocorrido se tivéssemos nos limitado a extrapolações ao invés de se realizar medidas pois muitos comportamentos diferentes, provenientes de um física nova, foram observados. Apesar disto, extrapolações cuidadosas constituem uma poderosa ferramenta em várias áreas, como por exemplo, na resolução numérica de equações diferencias.&lt;br /&gt;
&lt;br /&gt;
Embora a interpolação possa parecer inofensiva, dificuldades também podem ser encontradas. Um exemplo clássico, evocado no livro [http://www.nr.com Numerical Recipes], é a função:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
f(x)=3x^2+\frac{\log[(\pi-x)^2]}{\pi^4}+1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A figura abaixo mostra valores de &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; calculados a partir desta fórmula, usando valores de &amp;lt;math&amp;gt;X_i&amp;lt;/math&amp;gt; igualmente espaçados em &amp;lt;math&amp;gt;0.01&amp;lt;/math&amp;gt;, no intervalo &amp;lt;math&amp;gt;0\le X\le 10&amp;lt;/math&amp;gt;. Note que, este nível de detalhe de conhecimento sobre a função é, em geral, muito satisfatório tanto em cálculos numéricos quanto em medidas experimentais. Contudo, embora a função &lt;br /&gt;
pareça crescer monotonamente, o detalhe mostrado no interior da figura revela claramente que erros grosseiros serão cometidos por fórmulas de interpolação na região &amp;lt;math&amp;gt;x\approx\pi&amp;lt;/math&amp;gt;.&lt;br /&gt;
A curva em vermelho corresponde à fórmula acima, enquanto que os pontos representam os valores tabulados.&lt;br /&gt;
Isto mostra que, como sempre, em se tratando de aproximações numéricas, todas as &amp;quot;receitas&amp;quot; devem sempre ser analisadas cuidadosamente em cada aplicação.&lt;br /&gt;
&lt;br /&gt;
[[Imagem:pathology.jpg]]&lt;br /&gt;
&lt;br /&gt;
Além dos aspectos sutis levantados acima, outra regra importante a ser observada em cálculos numéricos é que polinômios de grau elevado devem ser evitados. Embora seu uso permita a imposição de várias propriedades desejadas, como a imposição da continuidade das derivadas da função, por exemplo, um polinômio de grau &amp;lt;math&amp;gt;\;n&amp;lt;/math&amp;gt; possui o mesmo número de raízes. Isto faz com que eles oscilem fortemente. Logo, isto pode levar a comportamentos indesejados em extrapolações. &lt;br /&gt;
&lt;br /&gt;
No caso da interpolação, este efeito  também ocorre. Ou seja, o uso de polinômios de grau elevado por causar problemas.  Por construção,  os valores da função são&lt;br /&gt;
reproduzidos nos pontos &amp;lt;math&amp;gt;\;X_i&amp;lt;/math&amp;gt;. No entanto, ainda assim podem ocorrer  fortes oscilaçõesê entre 2 pontos adjacentes se a ordem do polinômio for muito elevada. Não há regras simples para se determinar, no caso geral, qual é o melhor grau a ser utilizado. Os teoremas matemáticos genéricos requerem tanta informação sobre a função que, na verdade, se as conhecessemos, não precisaríamos fazer aproximações polinomiais. Uma boa receita para se evitar dificuldades consiste em se utilizar o polinômio de ordem mais baixa possível que garanta as propriedades e precisão desejadas. No caso em que os dados em consideração são obtidos a partir de cálculos numéricos, maior precisão pode ser obtida aumentando-se o número de pontos do conjunto de dados, mantendo-se o grau do polinômio empregado. Em se tratando de dados experimentais, onde em geral pode não ser simples (até mesmo por razões de custo) se obter mais pontos intermediários, aumentar um pouco o grau do polinômio pode ser uma solução aceitável. Se ainda assim isto não for suficiente, cabe ressaltar que existem outros métodos vai além de aproximações polinomiais e que técnicas baseadas em razões entre polinômios diferentes ou envolvendo funções mais complexas podem ser utilizadas com segurança.&lt;br /&gt;
&lt;br /&gt;
Este assunto é muito vasto para ser tratado nesta abordagem introdutória. Uma discussão mais completa pode ser encontrada, por exemplo, no livro [http://www.nr.com Numerical Recipes]. Em particular, boa parte da discussão a seguir, sobre a [[Fórmula de Lagrange]] e [[Spline cúbico]], é fortemente baseada na apresentação deste livro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Voltar para o índice de [[Métodos computacionais]].&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=125</id>
		<title>Integração Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=125"/>
		<updated>2011-10-20T18:26:14Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:integral.jpg|thumb|right|A integração numérica consiste em achar a aproximação numérica para o valor de &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Integração numérica''' é um termo amplo que abrange até a integração de equações diferenciais como é discutido&lt;br /&gt;
em Métodos Computacionais B. Aqui nos referimos exclusivamente ao cálculo numérico da '''integral definida''':&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; S = \int_{a}^{b} f(x) dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O termo '''definida''', quer dizer que a integral se faz entre limites definidos, no caso '''a''' e '''b'''.&lt;br /&gt;
&lt;br /&gt;
O interesse de fazer esse cálculo numericamente se deve a:&lt;br /&gt;
&lt;br /&gt;
# existência de funções contínuas sem '''primitiva,''' o que inviabiliza a conta analítica.&lt;br /&gt;
# funções descontinuas ou definidas por trechos &lt;br /&gt;
# funções (ou tabelas) provenientes de experimentos&lt;br /&gt;
# funções continuas e com primitiva de representação simbólica, porem de difícil avaliação na prática (mais difícil que avaliar a própria função)&lt;br /&gt;
 &lt;br /&gt;
== Definição ==&lt;br /&gt;
&lt;br /&gt;
Revisemos o conceito de '''integral''' do cálculo:&lt;br /&gt;
A '''integral''' definida de uma função f(x) no intervalo [a, b] se define como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \int_a^b f(x)\, dx = \lim_{N\to\infty} \sum_{i=0}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A integral de f(x) pode ser entendida como a soma de pequenos retângulos de base dx e altura f(x), onde o produto f(x) dx é a área deste retângulo.&amp;lt;br&amp;gt;&lt;br /&gt;
A soma de todas estas pequenas áreas, ou áreas infinitesimais, fornece a área total abaixo da curva.&amp;lt;br&amp;gt;&lt;br /&gt;
Mais precisamente podemos dizer que a integral acima é o valor limite da soma:&lt;br /&gt;
: &amp;lt;math&amp;gt; \sum_{i=0}^{N} f(x_i) \Delta x. &amp;lt;/math&amp;gt; &lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;\Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
é o comprimento dos pequenos intervalos nos quais dividimos o intervalo (b-a), &amp;lt;math&amp;gt;f(x_i)&amp;lt;/math&amp;gt; &lt;br /&gt;
é o valor da função em algum ponto deste intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Quando &amp;lt;math&amp;gt;N \to \infty&amp;lt;/math&amp;gt; o valor da soma acima é igual a área abaixo da curva.&lt;br /&gt;
&lt;br /&gt;
A integral também é conhecida como antiderivada: &lt;br /&gt;
:&amp;lt;math&amp;gt; \int f(x)dx = F(x)  \Leftrightarrow \frac{dF(x)}{dx}= f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
Relembremos porque:&lt;br /&gt;
&lt;br /&gt;
== Teorema Fundamental do Cálculo ==&lt;br /&gt;
&lt;br /&gt;
Se resolvermos a integral acima entre os limites ''a'' e ''b'', o resultado pode ser escrito como dependendo só dos extremos:&lt;br /&gt;
 &lt;br /&gt;
:&amp;lt;math&amp;gt; S =  \int_{a}^{b} f(x) dx = F(b) - F(a) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos ver agora como se isso for válido, então F(x) é a primitiva procurada.&lt;br /&gt;
&lt;br /&gt;
Calculando a integral entre &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x + \Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pela definição da integral entre limites definidos podemos escrevê-la como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = f(x'') \Delta x = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; x''&amp;lt;/math&amp;gt; é um valor de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; entre os extremos do intervalo.&lt;br /&gt;
&lt;br /&gt;
Passando o &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; para a direita e tomando o limite quando ele vai para zero: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \lim_{\Delta x \to 0 } f(x'') = \lim_{\Delta x \to 0 } \frac{ F(x + \Delta x) - F(x) }{ \Delta x } \Rightarrow f(x) = \frac{d}{dx} F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstramos que a derivada de F(x) resulta ser a função f(x) que queremos integrar. Em outras palavras, o '''Teorema fundamental do Cálculo'''&lt;br /&gt;
diz que resolver uma integral se resume a achar a ''primitiva'', ou seja uma função cuja derivada seja o integrando.&lt;br /&gt;
&lt;br /&gt;
'''O problema prático é que não todas as funções tem primitiva.'''. &lt;br /&gt;
Vejamos então.&lt;br /&gt;
&lt;br /&gt;
== Cálculo Numérico ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Trapezio.png|right|frame|Ilustração da regra do retângulo.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:integrationtrapezio.png|right|frame|Ilustração da regra do trapézio.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Integrationsimpson.png|right|frame|Ilustração da regra de Simpson.]]&lt;br /&gt;
&lt;br /&gt;
O cálculo numérico de uma integral definida se baseia na própria definição acima.&lt;br /&gt;
Com a diferença que N é finito. Obviamente quanto maior, melhor.&amp;lt;br&amp;gt;&lt;br /&gt;
 -Temos que pelos retângulos definidos pelo extremo esquerdo de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_e = \sum_{i=0}^{N-1} f(x_i) \Delta x &amp;lt;/math&amp;gt; &lt;br /&gt;
 -E pelos retângulos definidos pelo extremo direito de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_d = \sum_{i=1}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
 Regra do Trapézio:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)dx \approx S_t = \sum_{i=0}^{N-1} \frac{f(x_i)+f(x_i+\Delta x)}{2}\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;x_i = a + i \Delta x,\;\;  \Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Esta última pode ser reescrita como:&lt;br /&gt;
:&amp;lt;math&amp;gt;\left(\frac{f(a)+f(b)}{2} + \sum_{i=1}^{N-1} f(x_i)\right)\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Também pode se verificar que a integral calculada com os trapézios é a média das integrais calculadas com retângulos:&lt;br /&gt;
:&amp;lt;math&amp;gt;S_t = (S_e + S_d)/2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Regra de Simpson:&lt;br /&gt;
&lt;br /&gt;
Notemos que o método do trapézio é baseado na ideia de passar uma reta por 2 pontos e aproximar a área da função f(x) pela área sob a curva definida pelo trapézio.&lt;br /&gt;
&lt;br /&gt;
A regra de Simpson é uma extensão disto: a ideia é  passar uma parábola por três pontos consecutivos e calcular a área definida por ela. Se tivermos apenas 3 pontos, a integral da parábola que passa entre &amp;lt;math&amp;gt; x_{0} , x_{2}&amp;lt;/math&amp;gt; é dada por:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S= \int_{x_0}^{x_2} f(x) \, dx \approx \frac{x_2-x_0}{6}\left[f(x_0) + 4f\left(\frac{x_0+x_2}{2}\right)+f(x_2)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No entanto, para integrarmos sobre toda o intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; com boa precisão, é necessário dividi-lo em N intervalos, com N grande (e par!). Assim,  é preciso traçar  uma parábola a cada  três pontos consecutivos e a expressão final da fórmula de Simpson é então a soma da área sob todas as parábolas do intervalo &amp;lt;math&amp;gt;\left[ x_{0} ; x_{n}\right]&amp;lt;/math&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S=  \int_{x_0}^{x_n} f(x)dx \simeq \frac{h}{3}\left[f(x_0)+4f(x_1)+2f(x_2)+4f(x_3)+\ldots+4f(x_{n-1})+f(x_n)\right]&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; h =  (x_{n} - x_{0} )/N &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dedução da regra de Simpson pode ser encontrada por exemplo em [http://www.math.ist.utl.pt/~calves/courses/integra/capiii33.html].&lt;br /&gt;
&lt;br /&gt;
== Programação ==&lt;br /&gt;
A seguir um trecho do programa para cálculo da integral da função f(x) (''external function f(x)'')&amp;lt;br/&amp;gt;&lt;br /&gt;
entre a e b com N pontos, usando o método dos retângulos pela esquerda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Read*, a, b, N&lt;br /&gt;
dx = (b-a)/N;  S=0&lt;br /&gt;
&lt;br /&gt;
Do i = 0, N-1&lt;br /&gt;
   x = a + i*dx&lt;br /&gt;
   S = S + f(x)&lt;br /&gt;
EndDo&lt;br /&gt;
Print*, &amp;quot;Integral S=&amp;quot;, S*dx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os outros métodos se programam de maneira similar mudando limites (índice do laço)&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ou tratando de forma diferente os valores das pontas.&lt;br /&gt;
&lt;br /&gt;
== Erro associado ao método numérico ==&lt;br /&gt;
&lt;br /&gt;
O método de integração numérico não retorna o valor exato de uma função, visto que não podemos ter no computador &amp;lt;math&amp;gt;N\to\infty&amp;lt;/math&amp;gt;. O erro aqui discutido estará vinculado ao número de divisões &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; realizada na função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dentro do intervalo que se quer saber o valor da integral. Assim, o erro é definido como&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;erro=\frac{Int(N)-Int(N-1)}{Int(N)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
onde &amp;lt;math&amp;gt;Int(N)&amp;lt;/math&amp;gt; é o valor retornado pelo método numérico utilizado utilizando &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; divisões e &amp;lt;math&amp;gt;Int(N-1)&amp;lt;/math&amp;gt; utilizando &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; divisões. Note que um teste simples para verificar quando a resposta está convergindo é aumentar &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; e calcular o erro a cada incremento no seu valor.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=123</id>
		<title>Integração Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=123"/>
		<updated>2011-10-19T10:20:43Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:integral.jpg|thumb|right|A integração numérica consiste em achar a aproximação numérica para o valor de &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Integração numérica''' é um termo amplo que abrange até a integração de equações diferenciais como é discutido&lt;br /&gt;
em Métodos Computacionais B. Aqui nos referimos exclusivamente ao cálculo numérico da '''integral definida''':&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; S = \int_{a}^{b} f(x) dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O termo '''definida''', quer dizer que a integral se faz entre limites definidos, no caso '''a''' e '''b'''.&lt;br /&gt;
&lt;br /&gt;
O interesse de fazer esse cálculo numericamente se deve a:&lt;br /&gt;
&lt;br /&gt;
# existência de funções contínuas sem '''primitiva,''' o que inviabiliza a conta analítica.&lt;br /&gt;
# funções descontinuas ou definidas por trechos &lt;br /&gt;
# funções (ou tabelas) provenientes de experimentos&lt;br /&gt;
# funções continuas e com primitiva de representação simbólica, porem de difícil avaliação na prática (mais difícil que avaliar a própria função)&lt;br /&gt;
 &lt;br /&gt;
== Definição ==&lt;br /&gt;
&lt;br /&gt;
Revisemos o conceito de '''integral''' do cálculo:&lt;br /&gt;
A '''integral''' definida de uma função f(x) no intervalo [a, b] se define como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \int_a^b f(x)\, dx = \lim_{N\to\infty} \sum_{i=0}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A integral de f(x) pode ser entendida como a soma de pequenos retângulos de base dx e altura f(x), onde o produto f(x) dx é a área deste retângulo.&amp;lt;br&amp;gt;&lt;br /&gt;
A soma de todas estas pequenas áreas, ou áreas infinitesimais, fornece a área total abaixo da curva.&amp;lt;br&amp;gt;&lt;br /&gt;
Mais precisamente podemos dizer que a integral acima é o valor limite da soma:&lt;br /&gt;
: &amp;lt;math&amp;gt; \sum_{i=0}^{N} f(x_i) \Delta x. &amp;lt;/math&amp;gt; &lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;\Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
é o comprimento dos pequenos intervalos nos quais dividimos o intervalo (b-a), &amp;lt;math&amp;gt;f(x_i)&amp;lt;/math&amp;gt; &lt;br /&gt;
é o valor da função em algum ponto deste intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Quando &amp;lt;math&amp;gt;N \to \infty&amp;lt;/math&amp;gt; o valor da soma acima é igual a área abaixo da curva.&lt;br /&gt;
&lt;br /&gt;
A integral também é conhecida como antiderivada: &lt;br /&gt;
:&amp;lt;math&amp;gt; \int f(x)dx = F(x)  \Leftrightarrow \frac{dF(x)}{dx}= f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
Relembremos porque:&lt;br /&gt;
&lt;br /&gt;
== Teorema Fundamental do Cálculo ==&lt;br /&gt;
&lt;br /&gt;
Se resolvermos a integral acima entre os limites ''a'' e ''b'', o resultado pode ser escrito como dependendo só dos extremos:&lt;br /&gt;
 &lt;br /&gt;
:&amp;lt;math&amp;gt; S =  \int_{a}^{b} f(x) dx = F(b) - F(a) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos ver agora como se isso for válido, então F(x) é a primitiva procurada.&lt;br /&gt;
&lt;br /&gt;
Calculando a integral entre &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x + \Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pela definição da integral entre limites definidos podemos escrevê-la como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = f(x'') \Delta x = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; x''&amp;lt;/math&amp;gt; é um valor de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; entre os extremos do intervalo.&lt;br /&gt;
&lt;br /&gt;
Passando o &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; para a direita e tomando o limite quando ele vai para zero: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \lim_{\Delta x \to 0 } f(x'') = \lim_{\Delta x \to 0 } \frac{ F(x + \Delta x) - F(x) }{ \Delta x } \Rightarrow f(x) = \frac{d}{dx} F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstramos que a derivada de F(x) resulta ser a função f(x) que queremos integrar. Em outras palavras, o '''Teorema fundamental do Cálculo'''&lt;br /&gt;
diz que resolver uma integral se resume a achar a ''primitiva'', ou seja uma função cuja derivada seja o integrando.&lt;br /&gt;
&lt;br /&gt;
'''O problema prático é que não todas as funções tem primitiva.'''. &lt;br /&gt;
Vejamos então.&lt;br /&gt;
&lt;br /&gt;
== Cálculo Numérico ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Trapezio.png|right|frame|Ilustração da regra do retângulo.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:integrationtrapezio.png|right|frame|Ilustração da regra do trapézio.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Integrationsimpson.png|right|frame|Ilustração da regra de Simpson.]]&lt;br /&gt;
&lt;br /&gt;
O cálculo numérico de uma integral definida se baseia na própria definição acima.&lt;br /&gt;
Com a diferença que N é finito. Obviamente quanto maior, melhor.&amp;lt;br&amp;gt;&lt;br /&gt;
 -Temos que pelos retângulos definidos pelo extremo esquerdo de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_e = \sum_{i=0}^{N-1} f(x_i) \Delta x &amp;lt;/math&amp;gt; &lt;br /&gt;
 -E pelos retângulos definidos pelo extremo direito de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_d = \sum_{i=1}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
 Regra do Trapézio:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)dx \approx S_t = \sum_{i=0}^{N-1} \frac{f(x_i)+f(x_i+\Delta x)}{2}\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;x_i = a + i \Delta x,\;\;  \Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Esta última pode ser reescrita como:&lt;br /&gt;
:&amp;lt;math&amp;gt;\left(\frac{f(a)+f(b)}{2} + \sum_{i=1}^{N-1} f(x_i)\right)\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Também pode se verificar que a integral calculada com os trapézios é a média das integrais calculadas com retângulos:&lt;br /&gt;
:&amp;lt;math&amp;gt;S_t = (S_e + S_d)/2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Regra de Simpson:&lt;br /&gt;
&lt;br /&gt;
Notemos que o método do trapézio é baseado na ideia de passar uma reta por 2 pontos e aproximar a área da função f(x) pela área sob a curva definida pelo trapézio.&lt;br /&gt;
&lt;br /&gt;
A regra de Simpson é uma extensão disto: a ideia é  passar uma parábola por três pontos consecutivos e calcular a área definida por ela. Se tivermos apenas 3 pontos, a integral da parábola que passa entre &amp;lt;math&amp;gt; x_{1} , x_{3}&amp;lt;/math&amp;gt; é dada por:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S= \int_{x_0}^{x_2} f(x) \, dx \approx \frac{x_2-x_0}{6}\left[f(x_0) + 4f\left(\frac{x_0+x_2}{2}\right)+f(x_2)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No entanto, para integrarmos sobre toda o intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; com boa precisão, é necessário dividi-lo em N intervalos, com N grande (e par!). Assim,  é preciso traçar  uma parábola a cada  três pontos consecutivo e a expressão final da fórmula de Simpson é então a soma da área sob todas as parábolas do intervalo &amp;lt;math&amp;gt;\left[ x_{0} ; x_{n}\right]&amp;lt;/math&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S=  \int_{x_0}^{x_n} f(x)dx \simeq \frac{h}{3}\left[f(x_0)+4f(x_1)+2f(x_2)+4f(x_3)+\ldots+4f(x_{n-1})+f(x_n)\right]&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; h =  (x_{n} - x_{0} )/N &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dedução da regra de Simpson pode ser encontrada por exemplo em [http://www.math.ist.utl.pt/~calves/courses/integra/capiii33.html].&lt;br /&gt;
&lt;br /&gt;
== Programação ==&lt;br /&gt;
A seguir um trecho do programa para cálculo da integral da função f(x) (''external function f(x)'')&amp;lt;br/&amp;gt;&lt;br /&gt;
entre a e b com N pontos, usando o método dos retângulos pela esquerda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Read*, a, b, N&lt;br /&gt;
dx = (b-a)/N;  S=0&lt;br /&gt;
&lt;br /&gt;
Do i = 0, N-1&lt;br /&gt;
   x = a + i*dx&lt;br /&gt;
   S = S + f(x)&lt;br /&gt;
EndDo&lt;br /&gt;
Print*, &amp;quot;Integral S=&amp;quot;, S*dx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os outros métodos se programam de maneira similar mudando limites (índice do laço)&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ou tratando de forma diferente os valores das pontas.&lt;br /&gt;
&lt;br /&gt;
== Erro associado ao método numérico ==&lt;br /&gt;
&lt;br /&gt;
O método de integração numérico não retorna o valor exato de uma função, visto que não podemos ter no computador &amp;lt;math&amp;gt;N\to\infty&amp;lt;/math&amp;gt;. O erro aqui discutido estará vinculado ao número de divisões &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; realizada na função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dentro do intervalo que se quer saber o valor da integral. Assim, o erro é definido como&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;erro=\frac{Int(N)-Int(N-1)}{Int(N)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
onde &amp;lt;math&amp;gt;Int(N)&amp;lt;/math&amp;gt; é o valor retornado pelo método numérico utilizado utilizando &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; divisões e &amp;lt;math&amp;gt;Int(N-1)&amp;lt;/math&amp;gt; utilizando &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; divisões. Note que um teste simples para verificar quando a resposta está convergindo é aumentar &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; e calcular o erro a cada incremento no seu valor.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=122</id>
		<title>Integração Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=122"/>
		<updated>2011-10-18T17:16:52Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:integral.jpg|thumb|right|A integração numérica consiste em achar a aproximação numérica para o valor de &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Integração numérica''' é um termo amplo que abrange até a integração de equações diferenciais como é discutido&lt;br /&gt;
em Métodos Computacionais B. Aqui nos referimos exclusivamente ao cálculo numérico da '''integral definida''':&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; S = \int_{a}^{b} f(x) dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O termo '''definida''', quer dizer que a integral se faz entre limites definidos, no caso '''a''' e '''b'''.&lt;br /&gt;
&lt;br /&gt;
O interesse de fazer esse cálculo numericamente se deve a:&lt;br /&gt;
&lt;br /&gt;
# existência de funções contínuas sem '''primitiva,''' o que inviabiliza a conta analítica.&lt;br /&gt;
# funções descontinuas ou definidas por trechos &lt;br /&gt;
# funções (ou tabelas) provenientes de experimentos&lt;br /&gt;
# funções continuas e com primitiva de representação simbólica, porem de difícil avaliação na prática (mais difícil que avaliar a própria função)&lt;br /&gt;
 &lt;br /&gt;
== Definição ==&lt;br /&gt;
&lt;br /&gt;
Revisemos o conceito de '''integral''' do cálculo:&lt;br /&gt;
A '''integral''' definida de uma função f(x) no intervalo [a, b] se define como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \int_a^b f(x)\, dx = \lim_{N\to\infty} \sum_{i=0}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A integral de f(x) pode ser entendida como a soma de pequenos retângulos de base dx e altura f(x), onde o produto f(x) dx é a área deste retângulo.&amp;lt;br&amp;gt;&lt;br /&gt;
A soma de todas estas pequenas áreas, ou áreas infinitesimais, fornece a área total abaixo da curva.&amp;lt;br&amp;gt;&lt;br /&gt;
Mais precisamente podemos dizer que a integral acima é o valor limite da soma:&lt;br /&gt;
: &amp;lt;math&amp;gt; \sum_{i=0}^{N} f(x_i) \Delta x. &amp;lt;/math&amp;gt; &lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;\Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
é o comprimento dos pequenos intervalos nos quais dividimos o intervalo (b-a), &amp;lt;math&amp;gt;f(x_i)&amp;lt;/math&amp;gt; &lt;br /&gt;
é o valor da função em algum ponto deste intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Quando &amp;lt;math&amp;gt;N \to \infty&amp;lt;/math&amp;gt; o valor da soma acima é igual a área abaixo da curva.&lt;br /&gt;
&lt;br /&gt;
A integral também é conhecida como antiderivada: &lt;br /&gt;
:&amp;lt;math&amp;gt; \int f(x)dx = F(x)  \Leftrightarrow \frac{dF(x)}{dx}= f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
Relembremos porque:&lt;br /&gt;
&lt;br /&gt;
== Teorema Fundamental do Cálculo ==&lt;br /&gt;
&lt;br /&gt;
Se resolvermos a integral acima entre os limites ''a'' e ''b'', o resultado pode ser escrito como dependendo só dos extremos:&lt;br /&gt;
 &lt;br /&gt;
:&amp;lt;math&amp;gt; S =  \int_{a}^{b} f(x) dx = F(b) - F(a) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos ver agora como se isso for válido, então F(x) é a primitiva procurada.&lt;br /&gt;
&lt;br /&gt;
Calculando a integral entre &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x + \Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pela definição da integral entre limites definidos podemos escrevê-la como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = f(x'') \Delta x = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; x''&amp;lt;/math&amp;gt; é um valor de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; entre os extremos do intervalo.&lt;br /&gt;
&lt;br /&gt;
Passando o &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; para a direita e tomando o limite quando ele vai para zero: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \lim_{\Delta x \to 0 } f(x'') = \lim_{\Delta x \to 0 } \frac{ F(x + \Delta x) - F(x) }{ \Delta x } \Rightarrow f(x) = \frac{d}{dx} F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstramos que a derivada de F(x) resulta ser a função f(x) que queremos integrar. Em outras palavras, o '''Teorema fundamental do Cálculo'''&lt;br /&gt;
diz que resolver uma integral se resume a achar a ''primitiva'', ou seja uma função cuja derivada seja o integrando.&lt;br /&gt;
&lt;br /&gt;
'''O problema prático é que não todas as funções tem primitiva.'''. &lt;br /&gt;
Vejamos então.&lt;br /&gt;
&lt;br /&gt;
== Cálculo Numérico ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Trapezio.png|right|frame|Ilustração da regra do retângulo.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:integrationtrapezio.png|right|frame|Ilustração da regra do trapézio.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Integrationsimpson.png|right|frame|Ilustração da regra de Simpson.]]&lt;br /&gt;
&lt;br /&gt;
O cálculo numérico de uma integral definida se baseia na própria definição acima.&lt;br /&gt;
Com a diferença que N é finito. Obviamente quanto maior, melhor.&amp;lt;br&amp;gt;&lt;br /&gt;
 -Temos que pelos retângulos definidos pelo extremo esquerdo de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_e = \sum_{i=0}^{N-1} f(x_i) \Delta x &amp;lt;/math&amp;gt; &lt;br /&gt;
 -E pelos retângulos definidos pelo extremo direito de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_d = \sum_{i=1}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
 Regra do Trapézio:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)dx \approx S_t = \sum_{i=0}^{N-1} \frac{f(x_i)+f(x_i+\Delta x)}{2}\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;x_i = a + i \Delta x,\;\;  \Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Esta última pode ser reescrita como:&lt;br /&gt;
:&amp;lt;math&amp;gt;\left(\frac{f(a)+f(b)}{2} + \sum_{i=1}^{N-1} f(x_i)\right)\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Também pode se verificar que a integral calculada com os trapézios é a média das integrais calculadas com retângulos:&lt;br /&gt;
:&amp;lt;math&amp;gt;S_t = (S_e + S_d)/2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Regra de Simpson:&lt;br /&gt;
&lt;br /&gt;
Notemos que o método do trapézio é baseado na ideia de passar uma reta por 2 pontos e aproximar a área da função f(x) pela área sob a curva definida pelo trapézio.&lt;br /&gt;
&lt;br /&gt;
A regra de Simpson é uma extensão disto: a ideia é  passar uma parábola por três pontos consecutivos e calcular a área definida por ela. Se tivermos apenas 3 pontos, a integral da parábola que passa entre &amp;lt;math&amp;gt; x_{1} , x_{3}&amp;lt;/math&amp;gt; é dada por:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S= \int_{x_1}^{x_3} f(x) \, dx \approx \frac{x_3-x_1}{6}\left[f(x_1) + 4f\left(\frac{x_1+x_3}{2}\right)+f(x_3)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No entanto, para integrarmos sobre toda o intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; com boa precisão, é necessário dividi-lo em N intervalos, com N grande (e par!). Assim,  é preciso traçar  uma parábola a cada  três pontos consecutivo e a expressão final da fórmula de Simpson é então a soma da área sob todas as parábolas do intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S=  \int_{x_1}^{x_n} f(x)dx \simeq \frac{h}{3}\left[f(x_1)+4f(x_2)+2f(x_3)+4f(x_4)+\ldots+4f(x_{n-1})+f(x_n)\right]&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; h =  (x_{n} - x_{1} )/N &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dedução da regra de Simpson pode ser encontrada por exemplo em [http://www.math.ist.utl.pt/~calves/courses/integra/capiii33.html].&lt;br /&gt;
&lt;br /&gt;
== Programação ==&lt;br /&gt;
A seguir um trecho do programa para cálculo da integral da função f(x) (''external function f(x)'')&amp;lt;br/&amp;gt;&lt;br /&gt;
entre a e b com N pontos, usando o método dos retângulos pela esquerda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Read*, a, b, N&lt;br /&gt;
dx = (b-a)/N;  S=0&lt;br /&gt;
&lt;br /&gt;
Do i = 0, N-1&lt;br /&gt;
   x = a + i*dx&lt;br /&gt;
   S = S + f(x)&lt;br /&gt;
EndDo&lt;br /&gt;
Print*, &amp;quot;Integral S=&amp;quot;, S*dx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os outros métodos se programam de maneira similar mudando limites (índice do laço)&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ou tratando de forma diferente os valores das pontas.&lt;br /&gt;
&lt;br /&gt;
== Erro associado ao método numérico ==&lt;br /&gt;
&lt;br /&gt;
O método de integração numérico não retorna o valor exato de uma função, visto que não podemos ter no computador &amp;lt;math&amp;gt;N\to\infty&amp;lt;/math&amp;gt;. O erro aqui discutido estará vinculado ao número de divisões &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; realizada na função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dentro do intervalo que se quer saber o valor da integral. Assim, o erro é definido como&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;erro=\frac{Int(N)-Int(N-1)}{Int(N)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
onde &amp;lt;math&amp;gt;Int(N)&amp;lt;/math&amp;gt; é o valor retornado pelo método numérico utilizado utilizando &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; divisões e &amp;lt;math&amp;gt;Int(N-1)&amp;lt;/math&amp;gt; utilizando &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; divisões. Note que um teste simples para verificar quando a resposta está convergindo é aumentar &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; e calcular o erro a cada incremento no seu valor.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
	<entry>
		<id>http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=121</id>
		<title>Integração Numérica</title>
		<link rel="alternate" type="text/html" href="http://fiscomp.if.ufrgs.br/index.php?title=Integra%C3%A7%C3%A3o_Num%C3%A9rica&amp;diff=121"/>
		<updated>2011-10-18T17:15:19Z</updated>

		<summary type="html">&lt;p&gt;Caca: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:integral.jpg|thumb|right|A integração numérica consiste em achar a aproximação numérica para o valor de &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
'''Integração numérica''' é um termo amplo que abrange até a integração de equações diferenciais como é discutido&lt;br /&gt;
em Métodos Computacionais B. Aqui nos referimos exclusivamente ao cálculo numérico da '''integral definida''':&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; S = \int_{a}^{b} f(x) dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O termo '''definida''', quer dizer que a integral se faz entre limites definidos, no caso '''a''' e '''b'''.&lt;br /&gt;
&lt;br /&gt;
O interesse de fazer esse cálculo numericamente se deve a:&lt;br /&gt;
&lt;br /&gt;
# existência de funções contínuas sem '''primitiva,''' o que inviabiliza a conta analítica.&lt;br /&gt;
# funções descontinuas ou definidas por trechos mas para as quais a integral não existe (no fundo é a falta de uma primitiva)&lt;br /&gt;
# funções (ou tabelas) provenientes de experimentos&lt;br /&gt;
# funções continuas e com primitiva de representação simbólica, porem de difícil avaliação na prática (mais difícil que avaliar a própria função)&lt;br /&gt;
 &lt;br /&gt;
== Definição ==&lt;br /&gt;
&lt;br /&gt;
Revisemos o conceito de '''integral''' do cálculo:&lt;br /&gt;
A '''integral''' definida de uma função f(x) no intervalo [a, b] se define como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S = \int_a^b f(x)\, dx = \lim_{N\to\infty} \sum_{i=0}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A integral de f(x) pode ser entendida como a soma de pequenos retângulos de base dx e altura f(x), onde o produto f(x) dx é a área deste retângulo.&amp;lt;br&amp;gt;&lt;br /&gt;
A soma de todas estas pequenas áreas, ou áreas infinitesimais, fornece a área total abaixo da curva.&amp;lt;br&amp;gt;&lt;br /&gt;
Mais precisamente podemos dizer que a integral acima é o valor limite da soma:&lt;br /&gt;
: &amp;lt;math&amp;gt; \sum_{i=0}^{N} f(x_i) \Delta x. &amp;lt;/math&amp;gt; &lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;\Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
é o comprimento dos pequenos intervalos nos quais dividimos o intervalo (b-a), &amp;lt;math&amp;gt;f(x_i)&amp;lt;/math&amp;gt; &lt;br /&gt;
é o valor da função em algum ponto deste intervalo.&amp;lt;br&amp;gt;&lt;br /&gt;
Quando &amp;lt;math&amp;gt;N \to \infty&amp;lt;/math&amp;gt; o valor da soma acima é igual a área abaixo da curva.&lt;br /&gt;
&lt;br /&gt;
A integral também é conhecida como antiderivada: &lt;br /&gt;
:&amp;lt;math&amp;gt; \int f(x)dx = F(x)  \Leftrightarrow \frac{dF(x)}{dx}= f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
Relembremos porque:&lt;br /&gt;
&lt;br /&gt;
== Teorema Fundamental do Cálculo ==&lt;br /&gt;
&lt;br /&gt;
Se resolvermos a integral acima entre os limites ''a'' e ''b'', o resultado pode ser escrito como dependendo só dos extremos:&lt;br /&gt;
 &lt;br /&gt;
:&amp;lt;math&amp;gt; S =  \int_{a}^{b} f(x) dx = F(b) - F(a) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vamos ver agora como se isso for válido, então F(x) é a primitiva procurada.&lt;br /&gt;
&lt;br /&gt;
Calculando a integral entre &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; e &amp;lt;math&amp;gt;x + \Delta x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pela definição da integral entre limites definidos podemos escrevê-la como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \int_{x}^{x+\Delta x} f(x') dx' = f(x'') \Delta x = F(x + \Delta x) - F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; x''&amp;lt;/math&amp;gt; é um valor de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; entre os extremos do intervalo.&lt;br /&gt;
&lt;br /&gt;
Passando o &amp;lt;math&amp;gt;\Delta x&amp;lt;/math&amp;gt; para a direita e tomando o limite quando ele vai para zero: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \lim_{\Delta x \to 0 } f(x'') = \lim_{\Delta x \to 0 } \frac{ F(x + \Delta x) - F(x) }{ \Delta x } \Rightarrow f(x) = \frac{d}{dx} F(x) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demonstramos que a derivada de F(x) resulta ser a função f(x) que queremos integrar. Em outras palavras, o '''Teorema fundamental do Cálculo'''&lt;br /&gt;
diz que resolver uma integral se resume a achar a ''primitiva'', ou seja uma função cuja derivada seja o integrando.&lt;br /&gt;
&lt;br /&gt;
'''O problema prático é que não todas as funções tem primitiva.'''. &lt;br /&gt;
Vejamos então.&lt;br /&gt;
&lt;br /&gt;
== Cálculo Numérico ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Trapezio.png|right|frame|Ilustração da regra do retângulo.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:integrationtrapezio.png|right|frame|Ilustração da regra do trapézio.]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Integrationsimpson.png|right|frame|Ilustração da regra de Simpson.]]&lt;br /&gt;
&lt;br /&gt;
O cálculo numérico de uma integral definida se baseia na própria definição acima.&lt;br /&gt;
Com a diferença que N é finito. Obviamente quanto maior, melhor.&amp;lt;br&amp;gt;&lt;br /&gt;
 -Temos que pelos retângulos definidos pelo extremo esquerdo de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_e = \sum_{i=0}^{N-1} f(x_i) \Delta x &amp;lt;/math&amp;gt; &lt;br /&gt;
 -E pelos retângulos definidos pelo extremo direito de cada subintervalo:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)\, dx \approx S_d = \sum_{i=1}^{N} f(x_i) \Delta x &amp;lt;/math&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
 Regra do Trapézio:&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x)dx \approx S_t = \sum_{i=0}^{N-1} \frac{f(x_i)+f(x_i+\Delta x)}{2}\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
onde:&lt;br /&gt;
:&amp;lt;math&amp;gt;x_i = a + i \Delta x,\;\;  \Delta x = \frac{b-a}{N}&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Esta última pode ser reescrita como:&lt;br /&gt;
:&amp;lt;math&amp;gt;\left(\frac{f(a)+f(b)}{2} + \sum_{i=1}^{N-1} f(x_i)\right)\Delta x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Também pode se verificar que a integral calculada com os trapézios é a média das integrais calculadas com retângulos:&lt;br /&gt;
:&amp;lt;math&amp;gt;S_t = (S_e + S_d)/2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 Regra de Simpson:&lt;br /&gt;
&lt;br /&gt;
Notemos que o método do trapézio é baseado na ideia de passar uma reta por 2 pontos e aproximar a área da função f(x) pela área sob a curva definida pelo trapézio.&lt;br /&gt;
&lt;br /&gt;
A regra de Simpson é uma extensão disto: a ideia é  passar uma parábola por três pontos consecutivos e calcular a área definida por ela. Se tivermos apenas 3 pontos, a integral da parábola que passa entre &amp;lt;math&amp;gt; x_{1} , x_{3}&amp;lt;/math&amp;gt; é dada por:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S= \int_{x_1}^{x_3} f(x) \, dx \approx \frac{x_3-x_1}{6}\left[f(x_1) + 4f\left(\frac{x_1+x_3}{2}\right)+f(x_3)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No entanto, para integrarmos sobre toda o intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; com boa precisão, é necessário dividi-lo em N intervalos, com N grande (e par!). Assim,  é preciso traçar  uma parábola a cada  três pontos consecutivo e a expressão final da fórmula de Simpson é então a soma da área sob todas as parábolas do intervalo &amp;lt;math&amp;gt;\left[ x_{1} ; x_{n}\right]&amp;lt;/math&amp;gt; : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;S=  \int_{x_1}^{x_n} f(x)dx \simeq \frac{h}{3}\left[f(x_1)+4f(x_2)+2f(x_3)+4f(x_4)+\ldots+4f(x_{n-1})+f(x_n)\right]&amp;lt;/math&amp;gt;,&lt;br /&gt;
&lt;br /&gt;
onde &amp;lt;math&amp;gt; h =  (x_{n} - x_{1} )/N &amp;lt;/math&amp;gt; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A dedução da regra de Simpson pode ser encontrada por exemplo em [http://www.math.ist.utl.pt/~calves/courses/integra/capiii33.html].&lt;br /&gt;
&lt;br /&gt;
== Programação ==&lt;br /&gt;
A seguir um trecho do programa para cálculo da integral da função f(x) (''external function f(x)'')&amp;lt;br/&amp;gt;&lt;br /&gt;
entre a e b com N pontos, usando o método dos retângulos pela esquerda:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
Read*, a, b, N&lt;br /&gt;
dx = (b-a)/N;  S=0&lt;br /&gt;
&lt;br /&gt;
Do i = 0, N-1&lt;br /&gt;
   x = a + i*dx&lt;br /&gt;
   S = S + f(x)&lt;br /&gt;
EndDo&lt;br /&gt;
Print*, &amp;quot;Integral S=&amp;quot;, S*dx&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Os outros métodos se programam de maneira similar mudando limites (índice do laço)&amp;lt;br /&amp;gt;&lt;br /&gt;
e/ou tratando de forma diferente os valores das pontas.&lt;br /&gt;
&lt;br /&gt;
== Erro associado ao método numérico ==&lt;br /&gt;
&lt;br /&gt;
O método de integração numérico não retorna o valor exato de uma função, visto que não podemos ter no computador &amp;lt;math&amp;gt;N\to\infty&amp;lt;/math&amp;gt;. O erro aqui discutido estará vinculado ao número de divisões &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; realizada na função &amp;lt;math&amp;gt;f(x)&amp;lt;/math&amp;gt; dentro do intervalo que se quer saber o valor da integral. Assim, o erro é definido como&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;erro=\frac{Int(N)-Int(N-1)}{Int(N)}&amp;lt;/math&amp;gt;,&lt;br /&gt;
onde &amp;lt;math&amp;gt;Int(N)&amp;lt;/math&amp;gt; é o valor retornado pelo método numérico utilizado utilizando &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; divisões e &amp;lt;math&amp;gt;Int(N-1)&amp;lt;/math&amp;gt; utilizando &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; divisões. Note que um teste simples para verificar quando a resposta está convergindo é aumentar &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; e calcular o erro a cada incremento no seu valor.&lt;/div&gt;</summary>
		<author><name>Caca</name></author>
	</entry>
</feed>