CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que...

113
C ´ ALCULO NUM ´ ERICO COMPUTACIONAL. Tarcisio Praciano-Pereira 1 Universidade Estadual Vale do Acara´ u Sobral, 3 de setembro de 2007 1 [email protected] Edi¸ c˜oes Lab. de Matem´ atica Computacional Universidade Estadual Vale do Acara´ u Sobral - Ce copyleft by Tarcisio Praciano Pereira Praciano-Pereira, Tarcisio P496c alculo Num´ erico Computacional. Sobral: UeVA, Sobral, 3 de setembro de 2007 133.p Bibliografia ISBN:85-87906-05-4 1 - Linguagem - Computa¸ ao - C/C++ 2 - C´ alculo Num´ erico. I. T´ ıtulo CDD 515.1

Transcript of CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que...

Page 1: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CALCULO NUMERICO

COMPUTACIONAL.

Tarcisio Praciano-Pereira1

Universidade Estadual Vale do Acarau

Sobral, 3 de setembro de 2007

[email protected]

Edicoes Lab. de Matematica ComputacionalUniversidade Estadual Vale do AcarauSobral - Ce

copyleft by Tarcisio Praciano Pereira

Praciano-Pereira, TarcisioP496c Calculo Numerico Computacional. Sobral: UeVA, Sobral, 3 de setembro de2007 133.p Bibliografia ISBN:85-87906-05-4 1 - Linguagem - Computacao -C/C++ 2 - Calculo Numerico. I. Tıtulo CDD515.1

Page 2: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

1 A derivada aproximada 11.1 derivada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Quocientes de diferencas

de ordem superior . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3 Polinomios de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . 151.4 Derivadas parciais . . . . . . . . . . . . . . . . . . . . . . . . . . 181.5 Vocabulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 Raızes aproximadas 252.1 Raızes de uma funcao por varredura . . . . . . . . . . . . . . . . 26

2.1.1 Um metodo computacional: varredura . . . . . . . . . . . 272.1.2 Procura de raızes por varredura . . . . . . . . . . . . . . . 34

2.2 A troca de sinal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.2.1 Analise do programa raizes01.c . . . . . . . . . . . . . . 41

2.3 secantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442.3.1 metodo da secante . . . . . . . . . . . . . . . . . . . . . . 46

2.4 derivada zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542.5 encontrar raızes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

2.5.1 Como funciona o metodo das tangentes . . . . . . . . . . 602.5.2 E quando o metodo nao funciona ? . . . . . . . . . . . . . 612.5.3 Funciona com precisao, se funcionar . . . . . . . . . . . . 62

2.6 encontrar raızes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662.7 encontrar raızes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.8 Intersecao de graficos . . . . . . . . . . . . . . . . . . . . . . . . . 742.9 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.10 Solucao de alguns exercicios . . . . . . . . . . . . . . . . . . . . 78

3 Recursividade 793.1 exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.1.1 raız quadrada . . . . . . . . . . . . . . . . . . . . . . . . . 853.2 Fundamentos da convergencia de iteradas . . . . . . . . . . . . . 863.3 O algoritmo babibilonio e convergente . . . . . . . . . . . . . . . 883.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.5 Solucao de alguns exercicios . . . . . . . . . . . . . . . . . . . . 90

4 Splines 984.1 Aproximacao polinomial classica . . . . . . . . . . . . . . . . . . 99

4.1.1 Analise de dois casos particulares . . . . . . . . . . . . . . 994.1.2 A solucao geral do problema . . . . . . . . . . . . . . . . 1084.1.3 Interpolacao polinomial de Langrange . . . . . . . . . . . 116

4.2 Funcoes polinomiais por pedacos . . . . . . . . . . . . . . . . . . 1184.2.1 sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.2.2 aproximacao . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.3 Quasi-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.3.1 polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . 127

4.4 Splines cubicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

ii

4.4.1 convolucao . . . . . . . . . . . . . . . . . . . . . . . . . . 1304.4.2 suporte compacto . . . . . . . . . . . . . . . . . . . . . . . 1404.4.3 Correcao da informacao . . . . . . . . . . . . . . . . . . . 146

4.5 Solucao de alguns exercicios . . . . . . . . . . . . . . . . . . . . 1484.6 Vocabulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

5 Integral aproximada 1575.1 soma de Riemann . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

5.1.1 Integracao geometrica. . . . . . . . . . . . . . . . . . . . . 1585.1.2 Somas de Riemann . . . . . . . . . . . . . . . . . . . . . . 159

5.2 Integral no sentido de Riemann . . . . . . . . . . . . . . . . . . . 1665.2.1 propriedades da integral . . . . . . . . . . . . . . . . . . . 1685.2.2 Calculo “numerico” da integral . . . . . . . . . . . . . . . 171

5.3 trapesio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1775.4 polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

5.4.1 Apresentacao do metodo . . . . . . . . . . . . . . . . . . . 1805.4.2 Integral num sub-intervalo . . . . . . . . . . . . . . . . . . 180

5.5 quasi-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

6 E.D.O. 1886.1 Metodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . 1916.2 Metodo de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

6.2.1 segundo grau . . . . . . . . . . . . . . . . . . . . . . . . . 1956.2.2 grau maior do que dois . . . . . . . . . . . . . . . . . . . . 196

Indice Remissivo Alfabetico 199

Bibliografia 199

iii

Page 3: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Lista de Figuras

1 Retangulos para aproximar uma integral . . . . . . . . . . . . . . . . . ix3 Uma aproximacao spline de uma curva. . . . . . . . . . . . . . . . . . xi

1.1 A pedra, quando o cordao se rompe . . . . . . . . . . . . . . . . . . . 21.2 Taxa de variacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Dados obtidos com um sensor . . . . . . . . . . . . . . . . . . . . . . 51.4 Dados obtidos por um sensor mais preciso . . . . . . . . . . . . . . . . 61.5 Curva que interpola os dados . . . . . . . . . . . . . . . . . . . . . . 71.6 interpolacao nao linear . . . . . . . . . . . . . . . . . . . . . . . . . 81.7 Qual pode ser o grafico de f ? . . . . . . . . . . . . . . . . . . . . . . 91.8 grafico de f analisando f ′ . . . . . . . . . . . . . . . . . . . . . . . . 171.9 Dados amostrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.10 Reta tangente ao grafico de f . . . . . . . . . . . . . . . . . . . . . . 20

2.1 Raızes de f no intervalo [α, β] . . . . . . . . . . . . . . . . . . . . . . 292.2 Particao do intervalo I . . . . . . . . . . . . . . . . . . . . . . . . . 322.3 Malha sobre uma regiao do plano . . . . . . . . . . . . . . . . . . . . 352.4 Varios representantes da unica raiz . . . . . . . . . . . . . . . . . . . 402.5 O metodo das secantes . . . . . . . . . . . . . . . . . . . . . . . . . 482.6 Fluxograma - metodo da secante . . . . . . . . . . . . . . . . . . . . . 542.7 Num ponto de tangencia, tipo parabolico . . . . . . . . . . . . . . . . . 602.8 Quando a derivada e zero . . . . . . . . . . . . . . . . . . . . . . . . 622.9 Uma sequencia de retas tangentes... . . . . . . . . . . . . . . . . . . . 632.10 Duas tangentes se reproduzindo indefinidamente . . . . . . . . . . . . . 652.11 Intersecao de curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.12 Regiao cuja area queremos calcular . . . . . . . . . . . . . . . . . . . 802.13 area limitada por duas parabolas . . . . . . . . . . . . . . . . . . . . 812.14 area limitada por duas curvas . . . . . . . . . . . . . . . . . . . . . . 81

3.1 Determinacao de√

10 . . . . . . . . . . . . . . . . . . . . . . . . . . 873.2 Ponto inicial menor do que

√a . . . . . . . . . . . . . . . . . . . . . 91

3.3 Ponto inicial maior do que√

a . . . . . . . . . . . . . . . . . . . . . . 92

4.1 Duas solucoes do problema homogeneo . . . . . . . . . . . . . . . . . . 1034.2 O teorema do modulo maximo . . . . . . . . . . . . . . . . . . . . . . 104

iv

4.3 Aproximacao linear por pedacos - 1-spline . . . . . . . . . . . . . . . . 1064.4 interpolacao polinomial dos pontos . . . . . . . . . . . . . . . . . . . . 1094.5 Polinomio de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . 1154.6 Aproximacao de uma funcao . . . . . . . . . . . . . . . . . . . . . . . 1264.7 Derivada, tangente e Teorema do Valor medio . . . . . . . . . . . . . . 1314.8 Uma funcao positiva cuja integral e 1 . . . . . . . . . . . . . . . . . . 1394.9 Definicao geometrica - produto de convolucao . . . . . . . . . . . . . . 1414.10 O significado geometrico de tres valores . . . . . . . . . . . . . . . . . 1434.11 Correcao pelo valor medio numa vizinhanca de c . . . . . . . . . . . . . 1444.12 Media viciada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1454.13 Nucleos ou pulsos unitarios . . . . . . . . . . . . . . . . . . . . . . . 1484.14 quadrado de convolucao da funcao caracterıstica . . . . . . . . . . . . . 1504.15 2-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1624.16 Comparacao: polinomio de Lagrange e splines . . . . . . . . . . . . . . 1634.17 Comparacao: polinomio de Lagrange e splines - quando os nos ficam unifor-

mente proximos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1644.18 Regularizacao por convolucao . . . . . . . . . . . . . . . . . . . . . . 164

5.1 Trapesios para aproximar area . . . . . . . . . . . . . . . . . . . . . . 1685.2 Soma de Riemann . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

5.3 retangulos da soma de Riemann para3R

−3

x2 + 2x + 1 . . . . . . . . . . . 181

5.4 area do trapesio e uma media aritmetica . . . . . . . . . . . . . . . . . 1865.5 Grafico do polinomio por pedacos . . . . . . . . . . . . . . . . . . . . 1935.6 Modelagem com polinomios por pedacos . . . . . . . . . . . . . . . . . 194

6.1 Uma poligonal-solucao aproximada . . . . . . . . . . . . . . . . . . . 1986.2 O metodo de Euler - uma poligonal . . . . . . . . . . . . . . . . . . . 2006.3 solucao aproximada de y′ = −x

y. . . . . . . . . . . . . . . . . . . . . 202

v

Page 4: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Introducao

Faca apenas uma leitura superficial desta introducao como primeira leitura.Volte a le-la depois mais algumas vezes ate que ela lhe pareca mais clara. Noinıcio sera difıcil entende-la por completo, porque ela fala de assuntos que seraoobjeto do trabalho do livro. Mas, ainda assim, o seu lugar e aqui mesmo, noinıcio....

O autor deste livro sente responsabilidade com @ leitor@ e quer disponibi-lizar material complementar que incluir no texto o deixaria demasiado longo.Para isto ha uma pagina na Internet em que o material complementar do livropode ser encontrado, entretanto os links para paginas na Internet podem mu-dar e o endereco do autor e mais estavel, havendo dificuldade com algum link,me envie um e-mail para [email protected], mas nao se esqueca de queeu nao posso lhe dar cursos particulares via e-mail, use este recurso de formacuidadosa.

Ha duas areas muito produtivas e com objetivos e metodos diferentes em quese utiliza o computador para fazer Matematica ou para aplicar Matematica:

• Matematica aplicada e computacional, e a terminologia brasileira, que aindase chama de computacao cientıfica; Um ramo da matematica aplicada ecomputacional e analise numerica que e onde se encontra a nossa disci-plina, o calculo numerico.

O nosso trabalho se enquadra, portanto, nesta area, computacao cientıficae neste caso os programas que usamos como auxiliares, neste livro saoscilab, gnuplot, calc, e algumas linguagens de programacao como C,

C++, Python. Todos estes itens podem ser, em geral, encontrados nasdistribuicoes Linux.

• Computacao algebrica que tenta, com razoavel sucesso, substituir o calculoaproximado pelo calculo formal. Representantes deste trabalho sao

– Maxima um pacote de computacao algebrica de domınio publico queem geral e encontrado nas distribuicoes de GNU/Linux ;

– Pari um pacote de computacao algebrica voltado para Algebra, dedomınio publico;

– MuPad um pacote de computacao algebrica publicado por um grupode matematicos da Universidade Paderborne (Alemanha) que e dis-tribuido com uma licenca amigavel para usuarios individuais, masnormalmente vendido;

– Maple um pacote de computacao algebrica publicado por um grupode universidades do Canada e Estados Unidos, que e vendido por umpreco nao muito acessıvel;

– Reduce que e semelhantes ao MuPad, do ponto de vista de distribuicao;

vi

e ha outros que sao francamente comerciais e nao vemos razao para cita-losaqui. A sintaxe usada no Maxima, MuPad, Maple e muito semelhantes,de modo que quem ja usou algum deles, facilmente migra para outro, enaturalmente, sugerimos que se migre para Maxima que e distribuido sobGPL.

Metodologia de comunicacaoO texto e completado com observacoes de dois tipos. Um dos tipos se chama

claramente “observacao”, o outro sao as notas de rodape.Voce deve ler as observacoes na ordem em que elas aparecerem, mas sem lhes

dar muita importancia numa primeira leitura. Em geral elas sao apresentadascom letra pequena, para salientar o fato de que voce lhe deve dar pouca atencao,numa primeira leitura.

Para lhe permitir uma busca mais acurada de informacoes, o livro tem umındice remissivo alfabetico, ao final, em que todos os conceitos que surgem nasobservacoes se encontram indexados, de forma que voce podera facilmente re-tornar a eles quando achar necessario. Tambem se encontram indexadas todasas palavras-chave do texto.

Quando falamos usamos encenacao para completar o sentido das palavrasusadas no discurso: mexemos as maos, o corpo e alteramos a entonacao davoz. Para suprir um pouco deste teatro usaremos uma convencao tipografica:texto em italico representa material que voce deve olhar com cuidado, possivel-mente nao esta definido ainda e estamos usando a concepcao intuitiva do termo.Quando usarmos texto tipografico estaremos fazendo referencia a um termotecnico ja definido anteriormente ou considerado bem conhecido como tal. Aspalavras da linguagem C serao escritas no estilo tipografico. Quan-do usar-mos letra pequena estamos lhe querendo dizer que o assunto e polemico e que hamuito mais coisa para ser dito do que estamos conseguindo dizer naquele mo-mento. Usamos texto sublinhado para chamar sua atencao de um detalhe quepoderia passar desapercebido, tem o mesmo sentido texto em negrito.

O que e Calculo NumericoAcima dissemos que este livro e sobre Calculo Numerico e queremos agora

dizer-lhe qual e o planejamento do nosso trabalho, porque ha muitas formas dedesenvolver esta disciplina e nos vamos escolher uma que nao precisa ser melhordo que qualquer outra, apenas traduz a nossa preferencia. Se voce gostar donosso trabalho, insistiremos em que leia outros autores para completar a suavisao.

• De uma forma simplificada e repetir o Calculo Diferencial e Integral cal-culando, aproximadamente, aquilo que e obtido formalmente na outradisciplina;

• Resolver, numericamente, algumas questoes que o Calculo consegue ape-nas mostrar que tem solucao; Por exemplo;

– determinacoes de valores, numeros, raizes de equacoes para os quaiso calculo formal pode ser longo ou muito complexo, isto e feito aquino capıtulo 0.

vii

Page 5: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

– criacao de modelos semi-formais para representar dados de um fenomeno,este e o objeto do capıtulo 0 mas o capıtulo 0 tambem representa esteitem.

– calculo de algumas integrais para as quais nao existem formulas, estee objeto do capıtulo 0.

– solucoes aproximadas de equacoes diferenciais, isto e feito aqui, muitomoderadamente, no capıtulo 0, e somente uma introducao.

• Associar uma linguagem de programacao, ou pacotes computacionais pararealizar o projeto acima descrito.

Vamos discutir detalhadamente cada um dos topicos que levantamos an-teriormente. E preciso lembrar que nao e facil explicar o desconhecido e atepoderiamos questionar a validade de uma introducao como esta.

A ideia de tentar explicar o que faremos tem sentido ainda assim, porqueem parte estamos falando de topicos que os leitores deste livro ja estudaram,no Calculo Diferencial e Integral e cujos aspectos esta disciplina ira desenvolvercom outro objetivo. Mas estamos nos referindo a itens novos tambem e a razaoe lhe oferecer um plano do trabalho.

Suas perguntas, entretanto, podem fornecer ao expositor “ganchos” valiososna tentativa de deixar as coisas mais claras. O autor tambem se sentira agra-decido se os leitores tiverem a bondade de lhe mostrar o que nao gostaram notexto.

Raızes de uma funcaoEste e o assunto do capıtulo 0.Para a determinacao das raızes de uma funcao vamos fazer uso de progra-

mas que apresentaremos resumidamente no texto. Os programas se encontramdisponıveis em endereco citado na biliografia.

A busca de raızes e um assunto que nao e diretamente discutido nos Cursosde Calculo.

Calculo de integraisO calculo de integrais e um dos itens mais importantes do Calculo Diferencial

e Integral. Sua importancia supera a propria conceituacao da integral, comocaculo de area ou volume.

A integral e um metodo que se insere em outras definicoes, um exemplo bemsimples disto sao os conceitos qualificados com “quantidade de”, como e o casode

• quantidade de movimento;

• quantidade de exposicao a irradiacao;

• numero de moleculas ou virus em determinado vetor.

Aqui ha duas versoes do problema:

• ha integrais que nao sabemos calcular formalmente,

viii

• ou, mesmo sabendo, o calculo formal e muito complexo ou longo paracertas aplicacoes, como nas telecomunicacoes, por exemplo.

e o resultado e que se torna mais pratico calcular estas integrais aproximada-mente.

Um dos instrumentos para o calculo aproximado de integrais e a Soma deRiemann. Como instrumento, esta longe de ser o melhor, mas os metodosmelhores usam-na como metodo auxiliar. Porisso comecaremos por discutı-la.

Veja na figura (fig. 1), o que e uma soma de Riemann.

-2

0

2

4

6

8

10

-3 -2 -1 0 1 2 3

Soma de Riemann para f; passo=0.2

’data’

Figura 1: Retangulos para aproximar uma integral

Nela voce pode ver o domınio de integracao subdividido em diversos inter-valos e um retangulo associado a cada um destes sub-intervalos.

A soma das areas dos retangulos e uma aproximacao para a integral desejada.Que precisamos para fazer este calculo ? Quais sao as tecnicas envolvidas nocalculo de uma integral usando Somas de Riemann ?

• Uma colecao de retangulos, devidamente dimensionados, representam umaarea que aproxima a area de uma determinada funcao.

• Um programa de computador permite o calculo rapido de somas e portantocria as condicoes para que usemos retangulos com bases ınfimas o que nosconduz a uma grande aproximacao.

Analise e controle de variacaoUm exemplo tıpico, e bem atual, e o da qualidade da corrente eletrica que

uma determinada instituicao, um hospital, por exemplo, recebe da rede publica(manipulada por empresas privadas...) Veja o grafico na figura (fig. ??),

Como se poderia tratar este problema ? Qual e o problema ? quais sao asferramentas ?

Surpreendemente, ha uma superposicao de tecnicas a serem usadas aqui eno problema que discutimos anteriormente. Mas ha tecnicas novas tambem.Vamos rapidamente analisar o que precisamos.

Deixando de lado a coleta de dados, que deveria ser feita por uma placaapropriada instalada em um computador, vamos resolver o problema a partir

ix

Page 6: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

dos dados colhidos. Estamos indicando ao lado de cada uma das etapas odepartamento cientıfico responsavel pela mesma. Chamamos isto de divisao dotrabalho.

1. Leitura e digitalizacao de dados analogicos recebidos da placa coletora dedados (a digitalizacao pode ser trabalho da placa); (Computacao, Enge-nharia Eletrica )

2. Calculo da variacao da tensao criando uma serie temporal com estes dados;(Calculo Numerico e Estatıstica)

3. Comparacao dos piques de tensao com valores maximais selecionados comosuportaveis. (Calculo Numerico Engenharia eletrica)

4. Decisao, em tempo real, sobre conexao ou desconexao de aparelhos, comdesvio para nobreakes ou outro tipo de alimentacao de seguranca. (Com-putacao e Engenharia Eletrica);

5. O calculo de uma integral faz o registro do consumo da energia eletricarecebida... (quantidade de energia que passou pela placa controladora),calcula medias, desvios. (Calculo Numerico

Tangente, derivadas.Para que servem.Examine a figura (fig. 1.1), pagina 2. Tangentes e derivada servem pelo

menos para colher mangas maduras de arvores. Mas podemos, partindo desteexemplo, atingir um uso mais sofisticado. Como poderiamos colher mangasmaduras usando derivada ? Indiretamente, e claro.

A figura (fig. 1.1) sugere alguma coisa. Queremos lancar uma pedra, amar-rada a um cordao, de modo que o cordao fique preso proximo a um conjuntode mangas. Rodamos a pedra preza ao cordao ate que ela atinja uma veloci-dade angular razoavel. Quando a pedra, em seu caminho sobre o “cırculo”seencontrar na posicao adequada, soltamos o cordao que ira acompanhar a pedrase alojando entre as mangas. Usamos o coeficiente angular instaneo da pedrapercorrendo o ‘cırculo”para escolher a direcao certa.

O mecanismo e o mesmo quando um computador vai dirigir a trajetoria deum foguete. Com as informacoes guardadas na memoria do computador sobre omapa da Terra em sua orbita, o computador calcula a cada milesimo de segundoqual deve ser o coeficiente angular relativo do eixo do foguete e desta forma vaicorrigindo a rota que levara a nave ao seu destino.

O piloto automatico dos grandes avioes comerciais fazem algo parecido. Aopartir o piloto humano coloca o aviao na direcao do aeroporto de destino. Opiloto automatico vai medindo o erros de rota impostos pelo fluxo do ar e cal-culando a direcao para corrigir o erro.

Aproximacao polinomial de curvasAs funcoes nos fornecem dados dinamicos sobre diversos fenomenos. Mas

nem sempre a natureza se conforma a matematica como nos gostariamos...

x

A solucao e fazermos aproximacoes para os fenomenos naturais. Ha diversostipos de aproximacoes vamos analisar uma delas aqui, splines.

Splines sao uma melhora consideravel dos polinomios de Taylor. Precisare-mos deste assunto de Calculo para desenvolver esta forma de aproximacao queuma aproximacao polinomial por pedacos. A figura (fig. 3) ilustra este tipo deaproximacao usando polinomios do primeiro grau o que resulta numa poligonal.

O objetivo do cursoDiscutir os problemas

-20

0

20

40

60

80

100

120

140

160

180

-20 -15 -10 -5 0 5 10 15 20

’data’

Figura 3: Uma aproximacao spline de uma curva.

do Calculo Diferencial eIntegral de modo a en-contrar solucoes aproxi-madas para este proble-mas.

Questionar a validadedestas aproximacoes.

Criar a sensacao deque a solucao exata podeser um mito.

Linguagem de programacaoVimos que metodos com-

putacionais sao essenci-ais para desenvolvermos as aproximacoes.

Os alunos, seja do curso de Computacao, ou do curso de Matematica oudas Engenharias, ja deveriam conhecer uma linguagem de programacao, a estaaltura.

Infelizmente isto raramente e verdade.Mas achamos que e preciso forcar a barra, como temos feito com os nossos

alunos de Calculo Numerico, com resultados positivos: ao final do segundo mesde aula a maioria deles ja sabe fazer programas e inclusive planejar um pequenopacote, claro, isto pressupoe que eles tenham acesso a computadores.

Na metologia que temos empregado os programas crescem de nıvel de modoque, se o aluno se empenhar em entende-los, ficara gradualmente no nıvel dosmesmos.

Nas duas ou tres primeiras semanas temos mantido a preocupacao de explicardetalhadamente os programas.

Mas aos poucos vamos deixando que o leitor comece a voar sozinho...obviamente,na companhia de um bom livro sobre uma linguagem de programacao, e tambemsob a hipotese de que ele ira encontrar sempre um “hacker”a sua volta no la-boratorio de computacao de modo a lhe tirar algumas duvidas (e lhe implantarmais uma dezena...).

Vamos adotar a linguagem C, mas ninguem deve se sentir obrigado a nosacompanhar nesta escolha. Use o que houver a sua mao, aquilo que ficar maisfacil, mas que os alunos aprendam a programar.

As linguagens de programacao de um certo tipo todas se parecem de for-mas que quando apresentarmos um programa em C facilmente ele podera sertransformado para a linguagem preferida do leitor.

xi

Page 7: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Como e que se aprende uma linguagem ?Primeiro que tudo metendo a cara, depois perguntando muito a quem ja sabe

um pouco mais, e sem dar muita importancia ao semblante de incomodado quealgumas pessoas possam fazer... quem sabe um pouco mais, aprendeu pergun-tando aos outros. Pergunte! incomode inclusive o professor! use o seu enderecoeletronico para tirar suas duvidas, mas nao se esqueca de que sera o seu esforcopessoal que sera decisivo.

Procure economizar a paciencia dos outros, tente descobrir voce sozinhocomo fazer as coisas. Este e seguramente o melhor aprendizado: quando vocemesmo descobre.

Estamos convencido de que o uso de computacao no ensino de Matematicaenriquece fortemente a experiencia do aluno porque permite introduzir umadinamica que giz e quadro na conseguem mais gerar ante uma nova mentalidadegrafica que esta presente em nos todos.

Isto vale para qualquer outra profissao e nos nao tentariamos convencer osalunos de computacao desta verdade.

Vamos listar algumas linguagens de programacao parecidas com C

1. Pascal, e voce certamente vai encontrar [18] na biblioteca que lhe podeconduzir a dominar esta linguagem.

2. Python, e uma linguagem de domınio publico que se encontra disponıvelem todo sistema Gnu/Linux. Nestes sistemas voce encontra um tutorialsobre esta linguagem no diretorio /usr/doc/python/tutorial.

3. Java, praticamente de domınio publico, se encontra disponıvel em todosistema Gnu/Linux

4. Computacao Algebrica.

• Domınio publico ou relativamente livres MuPad, Reduce, Maxima

• Comerciais - nao aconselhamos! Maple, Derive

5. Calculo Numerico, domınio publico SciLab Octave

6. Calculo Numerico, comercial MatLab. Scilab, Octave fazem tudo queMatLab faz.

Os programas distribuidos sob o GPL, General Public License, sao de exce-lente qualidade. Ninguem mais precisa, hoje, pagar, para ter um computadorfuncionando, alem do preco da maquina... Este livro, todos os programas que oacompanham, todo o trabalho de pesquisa do autor, se desenvolve inteiramentecom programas de domınio publico rodando em ambiente Linux.

xii

Capıtulo 1

A derivada aproximada

A taxa de variacao de f e uma das informacoes mais importantesque podemos ter sobre um fenomeno descrito por f . O CalculoDiferencial e Integral define a derivada, usando o limite da taxade variacao ou a taxa de variacao instantaneaA taxa de variacao e definida por um quociente de diferencas eesta e a definicao basica que iremos usar neste capıtulo.

1.1 Quociente de diferencas

Uma funcao f e diferenciavel se em cada ponto do domınio o graficograf(f) tiver uma reta tangenteA reta tangente no ponto (a, f(a) tem um coeficiente angular m e nos diremosque f ′(a) = m. A funcao derivada, f ′ e uma outra funcao que descreve asderivadas de f e portanto as taxas de variacao instantaneas de f . No Calculodizemos que a derivada define a reta tangente ao grafico, aqui preferimosinverter a forma de falar porque vamos criar modelos, funcoes, a partir dedados amostrais e a taxa de variacao sera frequentemente um desses dadosamostrais.

Este primeiro capıtulo e dedicado a uma revisao do Calculo Diferencial eIntegral e de programacao como um alerta daquilo que voce precisa saber para

o desenvolvimento dos demais capıtulos.

Observe a figura (fig. 1.1) em que estamos simulando o que acontece comuma pedra que alguem esteja rodando presa a um cordao e que, num certomomento, o cordao (provavelmente podre) se rompa. A pedra “memoriza” oultimo coeficiente angular que o seu movimento tinha sobre o cırculo e segueem movimento uniforme nao acelerado1 pela reta tangente.

Assim o coeficiente angular da reta tangente e o coeficiente angular ins-tantaneo da trajetoria da pedra no cırculo.

1falso, obviamente, porque a aceleracao da gravidade esta presente

1

Page 8: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 2

Aqui se quebrou o cordão

Ao se quebrar o cordão, a pedra sai pela tangente

Figura 1.1: A pedra, quando o cordao se rompe

Se f representar a parte da equacao do cırculo onde vemos a pedra aindapresa ao cordao, e t1 for o valor do parametro no ponto em que o cordao serompeu, entao

f ′(t1) e a derivada de f no ponto (t1, f(t1))) (1.1)

Para dizer o mesmo que dissemos acima, o professor de Calculo consideraa seguinte figura (fig. 1.2) em que podemos ver uma reta tangente e tres retas

a a+h

(f(a+h)−f(a))/h

Taxa de variação

Tangente e uma sucessão de secantes

Figura 1.2: Taxa de variacao

secantes. As retas secantes sao aproximacoes da tangente.Na figura (fig. 1.2) estao indicados apenas dois valores para o parametro

a, a + h mas temos alı as secantes correspondentes a tres valores: a1, a2, a3 e oo calculo do coeficiente angular, das secantes, e feito assim:

m1 = f(a1)−f(a)a1−a (1.2)

m2 = f(a2)−f(a)a2−a

(1.3)

CAPITULO 1. A DERIVADA APROXIMADA 3

m3 = f(a3)−f(a)a3−a

(1.4)

Quanto mais proximo estiver ai de a mas preciso sera o valor do coeficienteangular da secante, relativamente ao desejado coeficiente angular da tangente.

Veja mais abaixo onde estamos explicando um metodo pratico para cortarum cırculo em um folha de papel como um exemplo do que e aproximacao.

O coeficiente angular da tangente e o limite das taxas de variacao. Comonem sempre podemos calcular o limite, seja recortando cırculos em papel (oucolocando foguetes em orbita), muita vezes temos que nos contentar com o coefi-ciente angular de uma reta secante, tentando minimizar o erro disto decorrente,ou tentando corrigir o erro ao longo do processo.

Relembrando a equacao da reta tangente

f(x1)−f(a)x1−a ≈ f ′(a) (1.5)

f(x1)−f(a)x1−a = m = ∆f

∆x = ∆a(f) (1.6)

y1 − y0 = f(x1) − f(a) = m(x1 − a) (1.7)

f(x) − f(a) = f ′(a)(x − a) + o(x − a) (1.8)

f(x) − f(a) ≈ f ′(a)(x − a) (1.9)

y − f(a) = f ′(a)(x − a) (1.10)

Vamos parar um pouquinho nas ultimas equacoes.

• A equacao 7 representa a relacao entre os lados de um triangulo sobre areta secante que passa nos pontos (a, f(a)), (x1, y1).

• As equacoes 8 e 9 sao equivalentes, representam a aproximacao que areta tangente fornece para os valores de f . Na equacao 8 o erro estarepresentado com a notacao o(x − a), o “o pequeno de Landau”2

• Na equacao 8 estamos indicando com o termo corretor o(x − a) que aequacao da reta fornece o valor de f(x) com este erro: o(x − a)

• A ultima equacao, 10, e simplesmente a equacao da reta tangente:

y − b = m(x − a) ; b = f(a), m = f ′(a)

Escrevemos a equacao 8 com o termo corretor, o(x − a) porque a expressao

y − f(a) = f ′(a)(x − a) (1.11)

e a equacao de uma reta e o grafico da funcao nao precisa ser uma reta3entao aigualdade representada pela reta esta errada e e isto que estamos representandocom o termo de correcao o(x − a). E uma forma pratica de indicar que existeum erro sem precisar entrar no detalhe do valor do erro.

2A notacao dos “o s de Landau” nos ajudam a falar de aproximacao de uma forma praticaescondendo a precisao, veja mais a respeito no ındice remissivo

3compare as equacoes 8 e 10

Page 9: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 4

Observacao 1 Porque falar em “aproximacao”Falaremos seguidamente de “aproximacao”, neste livro. Podemos dizer que

Calculo Numerico faz de forma aproximada o que o Calculo Diferencial e Inte-gral diz que faz exatamente.

Porque falar que as secantes sao aproximacoes da tangente?Veja a seguinte experiencia que voce certamente ja fez4.Suponha que voce deseje recortar um cırculo em papel. A geometria nos

ensina que as tangentes a um cırculo sao perpendiculares ao raio. Assim, se

Posição da tesoura, perpendicularmente, ao raio do círculo

quisermos recortar um cırculo em papel, devemos marcar o centro e ir mantendoa tesoura a distancia constante do centro e sempre perpendicular a uma reta(imaginaria...) que parte do centro.

Mas, quando voce aciona a tesoura, voce corta um “pequeno” segmento dereta, que dizer que voce esta na verdade recortando um polıgono com um numerode lados tao grande que lhe parece que o resultado e um cırculo.

Voce nao esta “cortando” tangentes, mas sim secantes. Mas voce queria quefossem tangentes.

O resultado e uma aproximacao e voce, em geral, ficara satisfeito com ela.Mas nao e apenas uma situacao tao simples quanto recortar cırculos em papel

que nos interessam. Ha situacoes bem mais importantes, como como colocarum satelite em orbita para tornar possıvel as comunicacacoes. O metodo e bemparecido com o da construcao de cırculos em papel com tesoura. No capıtulofinal, quando discutirmos equacoes diferenciais, estaremos mostrando como eparecido, recortar cırculos em papel, e colocar um foquete em orbita em que umcomputador, substituindo a tesoura, estara corrigindo a trajetoria do foquetee fazendo-o percorrer “pequenos segmentos de reta” de algumas centenas dekilometros. Corrigindo assim a trajetoria para que o foguete atinja uma orbita(elıptica ) desejada. Portanto, para aprender a colocar foguetes em orbita noultimo capıtulo, va logo treinando com papel, tesoura e cırculos...

O Calculo Diferencial e Integral algumas vezes deixa uma sensacao de quederivadas e integrais podem ser sempre calculadas exatamente. O Calculo tem asua funcao e aqui nos temos a nossa de corrigir o otimismo do Calculo. Vejamos

4e se nao tiver feito, use a primeira oportunidade para executar a experiencia que estamosaqui relatando...

CAPITULO 1. A DERIVADA APROXIMADA 5

no seguinte exemplo como podemos usar “derivadas aproximadas” como a unicaopcao disponıvel.

Exemplo 1 Sensor e levantamento de dadosVeja na figura (fig. 1.3) pagina 5,

x xx x x 54321

Dados amostrais

Figura 1.3: Dados obtidos com um sensor

Lendo a figura podemos dizer, sobre o fenomeno descrito, que

• houve um descrescimento de x1 para x2;

• de x2 em diante o fenomeno apenas cresceu;

• houve um crescimento consideravel entre x3 para x4;

• o crescimento entre x4 para x5 foi relativamente reduzido.

Mas esta impresao visual poderia ser tornada efetiva se usassemos um sensorde geracao mais recente que fosse capaz de fazer micro medicoes ao redor de cadaponto, veja na figura (fig. 1.4) pagina 6,

Na figura (fig. 1.4) estamos indicando que, em cada um dos pontos que osensor mediu, ele tambem fez tres medicoes a pequenos intervalos de tempo.

Estas “micro-medicoes” nos permitem calcular a taxa de variacao do fenomenoem cada um dos pontos:

f(x12)−f(x11)x12−x11

; f(x13)−f(x12)x13−x12

(1.12)

f(x22)−f(x21)x22−x21

; f(x23)−f(x22)x23−x22

(1.13)

Page 10: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 6

x xx x x 54321

medidas em cada umdos pontos:

i1 i3x x x

x x x51 52 53

i2

foram tomadas três medidas

Dados amostrais refinados

Figura 1.4: Dados obtidos por um sensor mais preciso

f(x32)−f(x31)x32−x31

; f(x33)−f(x32)x33−x32

(1.14)

f(x42)−f(x41)x42−x41

; f(x43)−f(x42)x43−x42

(1.15)

f(x52)−f(x51)x52−x51

; f(x53)−f(x52)x53−x52

(1.16)

Alem de sabermos o valor no ponto, podemos calcular a “derivada aproximada”da funcao que descreve o fenomeno.

O Calculo nos ensina que tudo pode ser descrito por alguma funcao, e isto ecertıssimo, apenas nem sempre as funcoes tem equacoes algebricas que possamosderivar. Algumas vezes tudo que sabemos sobre estas funcoes sao valores colidospor um sistema de amostragem, como as figuras que acabamos de comentarindicam.

Para terminar o exemplo, vejamos mais duas figuras. A figura (fig. 1.5)pagina 7, nos apresenta uma interpolacao linear dos dados, quer dizer, tudoque sabiamos eram os valores obtidos em cada ponto, e os segmentos de retaalı desenhados nos sugerem qual poderia ser o valor do fenomeno em pontosintermediarios entre aqueles em que foram tomados medidas.

Veja agora na proxima figura, (fig. 1.6) pagina 8, em que, usando as ta-xas de variacao obtidas em cada um dos pontos, pudemos tracar uma curvanao poligonal5interpolante descrevendo melhor o que acontece nos pontos inter-mediarios.

5retas, sao curvas, poligonais, sao curvas, e tem curvas que nao retas...

CAPITULO 1. A DERIVADA APROXIMADA 7

x xx x x 54321

Interpolação linear dos dados

Figura 1.5: Curva que interpola os dados

Vamos ver como fazer isto no capıtulo 0, esta curvas interpolantes seraopedacos de polinomios.

Agora, com as taxas de variacao podemos descrever melhor o fenomeno me-dido. Lendo o grafico contido na figura (fig. 1.6), podemos dizer

• Ha um ponto de mınimo do fenomeno entre os pontos x1 e x2;

• o crescimento abrupto que parecia acontecer entre x3 e x4 de fato acontecenum pequeno pedaco deste intervalo, a partir do ponto medio.

• tambem houve um crescimento abrupto proximo do ponto x5.

Observe que a interpolacao linear nao nos permitia tecer nenhuma dessas consi-deracoes. Sem o conhecimento da taxa de variacao em cada um dos pontos, tudoque podemos fazer e uma interpolacao linear que descreve um comportamentouniforme entre os pontos em que as medicoes foram feitas.

Este exemplo nos mostra uma situacao bem concreta do dia-a-dia em que aderivada formal seria inutil6. A derivada tem que ser obtida aproximadamentea partir de algumas medicoes finas tomadas em alguns pontos escolhidos.

O exemplo tambem nos mostra a importancia da derivada como informacaocomplementar.

6mas se voce estiver deduzindo que o estudo do Calculo e inutil, engana-se. Precisamosde teorias formais, para produzir a tecnica e as aproximacoes, mas isto e uma historia maislonga, envolva o professor nesta discussao...

Page 11: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 8

x xx x x 54321

medidas em cada umdos pontos:

i1 i3x x x

i2

foram tomadas três

Interpolação não linear dos dados

Figura 1.6: interpolacao nao linear

E o qual seria a taxa de variacao a ser considerada em cada um dos pontos?Temos tres medidas, logo duas taxas de variacao.

Aqui entra em cena uma decisao tıpica de quem cria modelos para fenomenos.A media e uma melhor opcao, ela corrige possıveis erros de medidas. Umbom sensor tomaria nao tres medicoes mas certamente uma dezena de micro-medicoes o que permitiria uma boa media.

Voltaremos a discutir interpolacao mais a frente.Resumindo,

• ∆a(f) = ∆f∆x representa o coeficiente angular de uma reta secante que

desejamos que seja uma aproximacao da reta tangente;

• f ′(a) e o coeficiente angular da reta tangente ao grafico de f no ponto(a, f(a)).

• Usaremos, quando a tecnica nos permitir, o valor medio de uma colecaode taxas de variacao, obtidas com micro medicoes, para representar (apro-ximar) f ′(a).

Nos exercıcios seguintes, voce sera solicitado a calcular a derivada aproxi-mada de funcoes cuja derivada voce sabe calcular exatamente. Desta forma vocepodera comprender melhor a derivada aproximada, comparando-a em casos emque temos a derivada exata disponıvel.

CAPITULO 1. A DERIVADA APROXIMADA 9

Exercıcios 1 Derivada aproximada

Notacao ∆a(f) = f(a+∆x)−f(a)∆x

1. micro medicoes Considere a funcao f(x) = (x + 3) ∗ (x − 4) e no pontox = 3 considere as “micro-medicoes”

(3, f(3)), (3.01, f(3.01)), (3.02, f(3.02)).

Calcule ∆3(f) = f(3.01)−f(3)0.01

e ∆3.01(f) = f(3.02)−f(3.01)0.01

e a media aritmetica∆3(f)+∆3.01(f)

2 . Compare o resultado com f ′(3)

2. micro medicoes Repita a questao anterior com o ponto x = 4 com ∆x =0.001

3. Sabendo que f(−1) = 3, f ′(−1) = −1 qual dos graficos na figura (fig. 1.7)pagina 9, corresponde ao grafico de f . Justifique sua resposta.

−1

f

−1

f

Figura 1.7: Qual pode ser o grafico de f ?

4. Calcule ∆a(f) = ∆f∆x com f(x) = x2 + 3x + 2 no ponto x = a e com os

valores de ∆x indicados

x = a ∆x ∆x ∆x1 0.1 0.01 0.0012 0.1 0.01 0.0011.5 0.1 0.01 0.001

5. Complete a tabela, calculando a diferenca (o erro) D = |f ′(a)−∆a(f)| =|f ′(a) − ∆f

∆x |x=a| com f(x) = x2 + 3x + 2.

Page 12: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 10

x = a ∆x |f ′(a) − ∆a(f)|1 0.0012 0.0011.5 0.001

6. A seguinte listagem de valores foi obtido por um sensor para os valores de∆a(f) = ∆f

∆xna vizinhanca de um ponto. Calcule a derivada media.

0.99884447020655558927

0.99945892356272536761

0.99976592143543602562

0.99991936316018971376

7. Um sensor apresenta a seguinte saıda de dados em que o primeiro valore f(a) e os quatro seguintes sao ∆a(f) = ∆f

∆xna proximidades do ponto

x=a.

(a) Construa, grafica e algebricamente, a interpolacao linear dos dados.

(b) Construa, grafica e algebricamente, uma interpolacao nao linear daamostragem com quatro dados obtidos pelo sensor em cada ponto.

a ∆a(f)(1) ∆a(f)(2) ∆a(f)(3) ∆a(f)(4) f(a)−1 −0.667 −0.701 −0.719 −0.728 30 −0.002 −0.001 −0.000 −0.000 -51 −0.812 −0.774 −0.755 −0.746 -72 −2.926 −2.861 −2.828 −2.812 -143 −5.895 −5.816 −5.776 −5.756 -20

8. Faca um programa que liste os valores de ∆a(f) de de f ′(a) para algunsvalores de um um intervalo. Use um while() para controlar uma lista devalores.

solucao derivadas.c, [20].

1.2 Quocientes de diferencas

de ordem superior

Se calcularmos a diferenca entre dois quocientes de diferencas sucessivos

∆2a(f) =

∆a+∆x(f) − ∆a(f)

∆x

estaremos obtendo uma aproximacao da segunda derivada.Este e um quociente de diferencas de segunda ordem.

Como nao podemos calcular a derivada formal, em nossos programas decalculo numerico, resta-nos a tentativa com os quocientes de diferencas. Aqui

CAPITULO 1. A DERIVADA APROXIMADA 11

vamos discutir os quocientes de diferenca de segunda ordem

∆2a(f) = ∆a+∆x(f)−∆a(f)

∆x = (1.17)

(f(a+2∗∆x)−f(a+∆x)∆x − f(a+∆x)−f(a)

∆x =)/∆x (1.18)

= f(a+2∗∆x)−2∗f(a+∆x)+f(a)∆x2 (1.19)

Nao havendo duvida7nos usaremos uma notacao mais simples para os quocientesde diferenca de segunda ordem:

∆2(f) = ∆2a(f) (1.20)

Enquanto que os quocientes de diferencas de primeira ordem sao razoavel-mente precisos, quando passamos aos de segunda ordem, e preciso ter muitocuidado com os resultados porque a precisao cai.

Veja seguinte listagem obtida com a funcao:

f(x) = (1 − x2)sin(x/4)

Usamos um programa feito em calc que tem uma sintaxe semelhante a dalinguagem C, e o programa deriva02.calc que voce pode encontrar em [20,programas.tgz]. A listagem foi editada e resumida, voce pode rodar e alterar oprograma para ganhar mais experiencia. Nao tema extragar os programas, elesestarao na pagina a sua diposicao quando voce cometer erros e nao souber comocorrigı-los, aprenda, tranquilamente, a alterar os programas.

O programa derivada02.calc produz uma saıda de dados pronta para usarem um texto com LATEX. Experimente a versao derivada03.calc que produzo resultado no terminal.

As funcoes d2f() e ddf() sao idendticas.ddf() calcula o quociente de primeira ordem da funcao df(), que calcula o

quociente de primeira ordem de f(), corresponde a equacao (17), d2f() calculadiretamente o quociente de segunda ordem usando f(), corresponde a equacao(19).

Intervalo [0, 10], passo 1, Delta = 0.000001

x d2f ddf exata0 -0.000001520000 -0.000001520000 -0.51 -1.463721700812 -1.463721700812 -1.4637203402202 -2.624124797793 -2.624124797793 -2.1853326315563 -3.217524857357 -3.217524857357 -2.4858358777834 -3.055271491335 -3.055271491335 -2.2448186860295 -2.051102544324 -2.051102544324 -1.4204593968646 -0.237390644956 -0.237390644956 -0.0605498958497 2.231711106131 2.231711106131 1.6969701694728 5.090941230838 5.090941230838 3.6344245289379 7.987785378986 7.987785378986 5.475087704277

7∆(f), um quociente de diferencas, e ∆f = f(x2) − f(x1), uma diferenca, como ∆x =x2 − x1

Page 13: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 12

Podemos ver nesta listagem erros da ordem de 300% no calculo aproximadoda derivada segunda, e o caso quando x = 6 ou de 3289% quando x = 0 o quemostra que nao podemos confiar em calculos aproximados da segunda derivadausando quocientes de diferenca. Mas veremos no capıtulo 0 que conseguimosmodelar com boa precisao dados discretos (obtidos com sensores) usando ape-nas aproximacoes da primeira derivada, esta sim, calculada com quociente dediferencas.

No capıtulo 0 vamos usar do quociente de segunda ordem, apenas o nume-rador, quando estudarmos o problema,

f(x) = 0

veremos que assim e possıvel contornar o problema deste erro, ao evitar o quo-ciente, No momento certo voltaremos a discutir esta questao.

Exercıcios 2 Revisao de Calculo e computacaoobjetivo adquirir familiaridade com questoes de Calculo e de computacao,

necessarias ao Calculo Numerico Computacional. Conscientemente, ignore asquestoes que voce domina, o objetivo nao e perder tempo, mas ao mesmo tempo,aprofunde e procure outras questoes parecidas com as que voce nao dominar paraaumentar a sua pratica.

O programa gnuplot e um pacote computacional para fazer graficos, temtambem uma versao que roda em windows que pode ser encontrada aqui, [13].

Nas revisoes de programacao, voce pode usar em programas em Pascal, [18],mas os programas que associados a este livro, que estao aqui, [20], foram escritosem C ou em calc.

Voce quiser rodar programas em Pascal existe um compilador, gpc, paraLinux.

1. Equacao da reta que passa num ponto

(a) teorica Escreva a equacao da reta que passa no (a, b) e tem coeficienteangular m.

(b) aplicacao Escreva as equacoes das retas que passam no (a, b) como coeficiente angular indicado, em cada item abaixo. Faca graficosprocurando ser preciso. Voce pode usar gnuplot ou xfig para fazerestes graficos, mas deve indicar por escrito como fez.

no ponto coef. angular(a, b) m(−1, 3) −3(−1, 3) −1

no ponto coef. angular(a, b) m(−1, 3) 1(−1, 3) 2

(c) teorica Escreva a equacao da reta que passa nos pontos (a1, b1), (a2, b2).

(d) aplicacao Escreva as equacoes das retas que passam nos pontos in-dicados em cada um dos itens abaixo. Para cada caso faca graficosprecisos. Voce pode usar gnuplot ou xfig para fazer estes graficos,mas deve indicar por escrito como fez.

CAPITULO 1. A DERIVADA APROXIMADA 13

P1 P1

(a1, b1) (a2, b2)(−1, 3) (1,−3)(−1, 3) (3, 3)

P1 P1

(a1, b1) (a2, b2)(1,−3) (−3, 1)(1, 3) (−2, 5)

2. teoria Reta tangente ao grafico de uma funcao Formula de Taylor. A de-rivada de uma funcao nos fornece o coeficiente angular instantaneo damesma no ponto:

f ′(a) e o coeficiente angular instantaneo de f em (a, f(a))

(a) teorica Formula de Taylor - equacao da reta Escreva a equacao dareta que passa no (a, f(a)) e e tangente ao grafico da funcao nesteponto. Observe que voce deseja a equacao da reta que passa no ponto(a, f(a)), com coeficiente angular f ′(a). Faca um grafico genericomostrando o que acontece.

(b) Aplicacao - derivada algorıtmica Derivar algortmicamente significa, para

este exercıcio, evitar de fazer todas as contas, represente as contas, nao as faca

totalmente, deixe que a linguagem de programacao calcule por voce. Para cadaitem abaixo faca o grafico da funcao e da reta tangente no ponto(a, f(a)) indicado. Voce pode usar gnuplot ou xfig para fazer estesgraficos, mas deve indicar por escrito como fez.

f(x) = (x + 3)(x − 4) a = −3f(x) = (x + 3)(x − 4) a = 4f(x) = (x + 3)(x − 4) a = 0.5f(x) = sin(x)(x + 1) a = −4f(x) = sin(x)(x − 1)(x − 5) a = −2f(x) = cos(x)(x + 3)(x − 4) a = 0.5

3. Altere o programa ex01.c para imprimir alguns numeros. Voce encontraeste programa aqui, [20, programas.tgz].

4. Altere o programa ex01.c para que ele escreva quatro termos de umaprogressao artimetica cujo primeiro termo seja 3 a raao 4.

solucao: ex02.c

5. Faca um programa que escreva de 0 a 10, use um while().

solucao: ex03.c

6. Altere ex03.c para escrever os 10 termos de uma progressao aritmeticade razao 3.

solucao: ex04.c

7. Altere ex04.c para escrever os 10 termos de uma progressao geometricade razao 2.

solucao: ex05.c

Page 14: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 14

8. Altere ex05.c para escrever os 100 termos de uma progressao geometricade razao 1.0005, os “juros da simploria cadernete de poupanca”.

solucao: ex06.c

9. Altere o programa ex06.c colocando um if() dentro do while() controlandoum contador para permitir a visualizacao do sagrado capital sendo trans-formado na poupanca.

solucao: ex07.c

10. Escreva um programa que

(a) Produza uma progressao artimetica de razao 0.5, primeiro termo 3 eo numero de termos 10;

solucao: altere ex04.c

(b) Produza uma progressao artimetica de razao 5, primeiro termo -3 eo numero de termos 10;

solucao: altere ex04.c

(c) uma progressao geometrica de razao 7% com primeiro termo 1000e com 12 termos. Obtenha outra cuja razao seja 0.5%. Uma delas(qual ?) mostra como cresce sua dıvida se voce usar cheque especialou cartao de credito.

solucao: altere ex07.c

11. Derivada aproximada O quociente

∆f

∆x=

f(a + ∆x) − f(a)

∆x≈ f ′(a) (1.21)

e uma aproximacao do valor da derivada de f no ponto x = a quando∆x for pequeno. Os proximos itens servem para que voce desenvolva asua intuicao com respeito a esta aproximacao, faca graficos bem feitosque permitam voce se convencer do seu significado, a precisao com queos graficos serao feitos e parte essencial da questao, um grafico mal feitonao lhe indicara nada, use papel quadriculado (ou milimetrado). Se voceusar gnuplot, ele lhe permite um zoom usando o botao direito do ratinhoe voce podera ver assim o detalhe entre as duas retas.

(a) Considere f(x) = x2 − 2x − 3 e encontre a reta tangente ao graficode f no ponto (−1, f(−1)). Faca o grafico.

solucao: derivada02 01.gnuplot, [20].

(b) Use ∆x = 0.2, calcule o valor aproximado da derivada com este erro,e obtenha a equacao da reta “tangente” no ponto (−1, f(−1)). Facao grafico.

solucao: derivada02 02.gnuplot

CAPITULO 1. A DERIVADA APROXIMADA 15

(c) Use ∆x = 0.05, calcule o valor aproximado da derivada com esteerro, e obtenha a equacao da reta “tangente” no ponto (−1, f(−1)).Faca o grafico.

solucao: altere derivada02 02.gnuplot

(d) Com f(x) = x2 − 2x − 3 e encontre a reta tangente ao grafico de fno ponto (−3, f(−3)). Complete o grafico anterior.

solucao: altere derivada02 02.gnuplot

(e) Use ∆x = 0.2, calcule o valor aproximado da derivada com esteerro, e obtenha a equacao da reta “tangente” no ponto (−3, f(−3)).Complete os graficos anteriores.

solucao: altere derivada02 02.gnuplot

(f) Use ∆x = 0.05, calcule o valor aproximado da derivada com esteerro, e obtenha a equacao da reta “tangente” no ponto (−3, f(−3)).Complete os graficos anteriores.

solucao: altere derivada02 02.gnuplot

12. Faca um programa que imprima a derivada aproximada, por quociente dediferencas, do item anterior. Aprenda a usar funcao, em C,

solucao: derivadas.c

13. Para f(x) = x2 − 9

(a) Encontre as retas tangentes ao grafico de f nos pontos

(−4, f(−4)), (−3, f(−3)), (0, f(0))

Faca os graficos.

solucao: altere derivada02 02.gnuplot

(b) Use ∆x = 0.05, calcule o valor aproximado da derivada com esteerro, e obtenha a equacao da reta “tangente” nos pontos

(−4, f(−4)), (−3, f(−3)), (0, f(0))

Complete os graficos anteriores.

solucao: altere derivada02 02.gnuplot

14. Significado da derivada Considere a funcao f(x) = x3 − 3x2 − 9x + 2

(a) Calcule a derivada f ′.

(b) Encontre as raızes de f ′ e deduza os pontos extremos relativos f

(c) objetivo: Algumas vezes e mais facil fazer o grafico de f ′ que o graficode f . Deduza um esboco do grafico de f do grafico usando o graficoda derivada.

Page 15: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 16

Solucao 1 A derivada da funcao f(x) = x3−3x2−9x+2 e uma funcaodo segundo grau, cujos zeros sabemos calcular.

f(x) = x3 − 3x2 − 9x + 2 (1.22)

f ′(x) = 3x2 − 6x − 9 = 0 = x2 − 2x − 3 (1.23)

x = 2±√

4+122

(1.24)

x1 = 2+42 = 3 = (1.25)

x2 = −1 = (1.26)

As raızes, x1, x2 da derivada sao pontos de extremos de f , neste caso comcerteza porque sao zeros isolados de um polinomio.

Temos duas maneiras de determinar se sao maximo ou mınimos. Umaconsiste em calcular a segunda derivada e verificar o sinal. Outra consisteem verificar a variacao em volta do ponto.

Vamos usar o teste da segunda derivada. Lembrando a formula de Taylor,a segunda derivada representa a concavidade da funcao e portanto mos-tra uma parabola que lhe e semelhante no ponto. Se f ′(xi) for positiva,entao f neste ponto “lembra” uma parabola com com o vertice para baixo,passando por um mınimo. Se for negativa passara por um maximo.

ponto 2a. derivada no ponto diagnostico valor no pontof ′′(x1) 12 passa por um mınimo f(x1) = −25f ′′(x2) -12 passa por um maximo f(x2) = 7

O esboco grafico de f pode ser visto na figura (1.8) pagina 17,

Comandos do gnuplot usados na resolucao desta questao

f(x) = x**3 - 3*x**2 - 9*x + 2

df(x) = 3*x**2 - 6*x - 9 ## x**2 - 2*x - 3 = 0

a1 = (2 + sqrt(4+12))/2.0

a2 = (2 - sqrt(4+12))/2.0

print df(a1)

print df(a2)

plot df(x),0

ddf(x) = 6*x - 6

print ddf(a1)

print ddf(a2)

set xrange [a2-2:a1+2]

plot f(x),df(x),0

plot f(x),df(x),0

set terminal post enhanced portrait

set output ’derivada_funcao01.eps’

plot f(x),df(x),0

CAPITULO 1. A DERIVADA APROXIMADA 17

-30

-20

-10

0

10

20

30

40

-3 -2 -1 0 1 2 3 4 5

f(x)df(x)

0

Figura 1.8: grafico de f analisando f ′

15. Modelo Encontre a equacao de uma reta (um tipo de modelo) que melhorrepresente os dados da tabela na figura (1.9) pagina 18. Justifique suasolucao;

Calcule o valor deste modelo no ponto x = 2. Calcule o valor medioque estes dados representam usando a reta como modelo, e admita que ointervalo de observacoes e [−10, 10].

solucao: calcule o valor medio das taxas de variacao e use este valor paraa equacao da reta.

16. Teste do modelo Faca o grafico do conjunto de pontos da tabela (1.9) e dareta que voce encontrou para modelar os dados com gnuplot e verifiqueassim se o modelo esta adequado. Justifique a sua conclusao.

Page 16: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 18

−10 −28.6 −6 −15.4 −2 −2.2 0 4.4 3 11.7 7 22.5 9 27.9

Figura 1.9: Dados amostrais

1.3 Polinomios de Taylor

Estudamos a equacao da reta tangente ao grafico de f no ponto (a, f(a)) e naverdade quando comecamos a estudar esta questao o nosso exemplo, na figura(fig. 1.1), pagina 2, nos dizia que nao era a “reta tangente” que nos deveriainteressar e sim a parabola tangente. Vamos agora ver como podemos obteruma parabola tangente ao grafico graf(f) no ponto (a, f(a)).

O metodo se parece com o que ja usamos para a reta tangente, foi porissomesmo que comecamos com este caso mais simples. Revendo o caso da retatangente,

y − f(a) = f ′(a)(x − a) (1.27)

y = f(a) + f ′(a)(x − a) (1.28)

seriamos facilmente conduzidos ao erro de imaginar que a equacao da parabolatangente seria (esta errado)8

y − f(a) = f ′(a)(x − a) + f ′′(a)(x − a)2 (1.29)

y = f(a) + f ′(a)(x − a) + f ′′(a)(x − a)2 (1.30)

Para encontrar a formula correta, vamos inicialmente considerar um polinomiodo segundo grau

P (x) = a0 + a1(x − a) + a2(x − a)2 (1.31)

desenvolvido no ponto x = a e vamos impor as condicoes que nos interessam,para encontrar9 os coeficientes

a0, a1, a2 (1.32)

P (a) = f(a) ⇒ a0 = f(a) (1.33)

P ′(x) = a1 + 2a2(x − a) (1.34)

P ′(a) = f ′(a) ⇒ a1 = f ′(a) (1.35)

P ′′(x) = 2a2 (1.36)

P ′′(a) = f ′′(a) ⇒ a2 = f ′′(a)2 (1.37)

8esta formula esta errada!9os coeficientes e que sao as incognitas deste problema....

CAPITULO 1. A DERIVADA APROXIMADA 19

Na equacao (33) estamos impondo a condicao de que o polinomio P passeno ponto (a, f(a)). Na equacao (34) calculamos a derivada do polinomio Ppara impor a condicao, na equacao (35), que o polinomio P tivesse a mesmaderivada que f no ponto (a, f(a)). Derivamos, na equacao (36), o polinomio Ppara impor na equacao (37) que o polinomio tivesse a mesma derivada segunda(curvatura) que a funcao f tem no ponto (a, f(a)).

Vemos assim que a formula correta para a equacao da parabola tangente aografico graf(f) no ponto (a, f(a)) e

y = P (x) = f(a) + f ′(a)(x − a) +f ′′(a)

2(x − a)2 (1.38)

Compare a equacao errada 33 com a equacao correta 38 e veja que a diferencase encontra no metodo do calculo para o coeficiente do segundo grau:

a2 =f ′′(a)

2

Este exemplo tambem lhe mostra a razao pela qual a equacao do movimentoacelerado (caso da gravidade) e

v = s0 + v0(t − a) +g

2(t − a)2 (1.39)

em que t = a e o ponto considerado como inıcio do movimento.Nos cursos de Calculo este topico aparece sob o nome de formula de Taylor

e vai bem alem na construcao de um polinomio de grau n tangente ao graficode f no ponto (a, f(a)). A metodologia para obter esta formula e exatamente amesma que apresentamos acima, entretanto partindo do polinomio

P (x) = a0 + a1(x − a) + . . . + an(x − a)n (1.40)

ao qual se impoem, sucessivamente, as condicoes de tangencia. A conclusao eque

an =f (n)(a)

n!(1.41)

e aı voce deve observar que

2 = 2!, 1 = 1!, 1 = 0! (1.42)

sao os denominadores dos termos em x2, x, x0.Fizemos mencao ao erro existente entre a equacao da reta tangente ao

graf(f) e os valores de f numa vizinhanca do ponto de tangencia, chamando-ode o(x − a).

Aqui usaremos a mesma notacao, porem o erro e, teoricamente, menor.Infelizmente, quando passarmos aos calculos numericos este erro tende a

ser bem maior, desta maneira ha que ser prudente com o uso da aproximacaopolinomial do grau elevado. O fato e que em geral nos damos muito bem comas aproximacoes do primeiro grau. No capıtulo 0 vamos ver que o grau idealpara as aproximacoes polinomiais e o terceiro grau.

Page 17: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 20

Aqui voce pode observar a crıtica diferenca entre o calculo feito manual-mente (e formalmente) e os calculos automaticos. Podemos atingir precisoesmuito maiores com o calculo manual, mas possivelmente com um grande lapsode tempo, nao esquecendo que nele estamos sujeitos a erros diversos. No en-tanto, no calculo automatico os computadores incluem outros tipos de erroscom a inevitavel aproximacao com que tem que trabalhar. A conclusao, nosa repetiremos com frequencia, e temos que fazer os calculos com programas decomputador, mas temos que monitorar os resultados e saber analisa-los critica-mente para tirar o bom proveito que eles nos podem trazer.

No penultimo capıtulo 0 iremos estudar aproximacao polinomial quandonecessitaremos que voce tenha uma boa pratica com do uso do polinomio deTaylor e de programacao, eis uma boa razao para lhe oferecermos logo umalista de exercıcios.

Exercıcios 3 Polinomios de Taylor

1. Reta tangente ao grafico de uma funcao Formula de Taylor. A derivadade uma funcao nos fornece o coeficiente angular instantaneo da mesma noponto:

f ′(a) e o coeficiente angular instantaneo de f em (a, f(a))

Veja na figura (fig. 1.10),

−300

−200

−100

0

100

200

300

400

500

600

−4 −2 0 2 4

f(x)reta(x)

0

Figura 1.10: Reta tangente ao grafico de f

(a) Considere f(x) = x2−2x−3 calcule f ′(−2) e encontre a reta tangenteao grafico de f no ponto (−2, f(−2)).

solucao: altere derivada02.02.gnuplot, voce o encontra aqui, [?]

(b) Considere f(x) = x2 − 9 calcule f ′(−4) e encontre a reta tangenteao grafico de f no ponto (−4, f(−4)).

solucao: altere derivada02.02.gnuplot

CAPITULO 1. A DERIVADA APROXIMADA 21

(c) Escreva a expressao da reta tangente ao grafico de uma funcao qual-quer, f no ponto (a, f(a)). Observe que voce deseja a equacao dareta que passa no onto (a, f(a)), com coeficiente angular f ′(a).

solucao: altere derivada02.02.gnuplot

2. Analise do grafico de f

(a) parabola tangente Encontre a parabola tangente ao grafico de

f(x) = (1 − x2)sin(x/4)

no ponto (−4, f(−4)) e deduza como e o grafico de f nas vizinhancasdeste ponto.

solucao: altere derivada02.03.gnuplot

(b) parabola tangente Encontre a parabola tangente ao grafico de f noponto (−2, f(−2)) e deduza como e o grafico de f nas vizinhancasdeste ponto.

solucao: altere derivada02.03.gnuplot

(c) Deducao do grafico de f Com base nas duas informacoes10 obtidasanteriormente, simule o grafico de f numa vizinhanca do intervalo[−1, 1].

3. Polinomio desenvolvido em um ponto A expressao usual dos polinomios edesenvolvida no ponto x = 0

P (x) = a0 + a1x + a2x2 + a0x

3 + · · · + anxn (1.43)

Usando polinomio de Taylor podemos desenvolver um polinomio em qual-quer outro ponto.

Desenvolva o polinomio

P (x) = 3 − x + 2x2 − 3x3 + 5x4 (1.44)

no ponto x = −3 e faca os graficos dos dois polinomios com gnuplot.Comente o resultado obtido.

solucao:11num terminal, rode calc < poltay2.calc

1.4 Derivadas parciais

Vamos generalizar a formula de Taylor para o caso multivariado. Aqui a res-tricao sera mais forte, nao passaremos do primeiro grau e a consideracao feitaanteriormente sobre erros nas aproximacoes de derivadas de ordem maior se

10este exercıcio tem o defeito de sugerir que podemos fazer uma simulacao destas em qual-quer intervalo sabendo o que acontece nos extremos. Isto e falso!

11Todos os programas do livro se encontram aqui, [20]

Page 18: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 22

aplica, fora que a otencao de dados amostrais com taxas de variacao parcialmaior do que um e bem mais difıcil de ser obtida.

Se considerarmos uma expressao dependendo de varias variaveis

F (x, y, x) = d (1.45)

e lhe aplicarmos derivacao implıcita, vamos obter um modelo que nos permitirachegar a equacao de um objeto linear tangente:

dw = dF (x, y, z) =∂F

∂xdx +

∂F

∂ydy +

∂F

∂zdz = 0 (1.46)

Vamos agora admitir a hipotese de que conhecemos um ponto

P = (a, b, c)

onde passa a variedade12.

F (x, y, z) = d

Uma outra forma de dizermos a mesma coisa e

P = (a, b, c)

e uma solucao da equacao (45). Nesta forma de falar a hipotese e que existeuma solucao para esta equacao, que e P .

Se substituirmos, neste modelo,

dx := x − a ; dy := y − b ; dz := z − c (1.47)

vem a equacao da variedade13 linear tangente:

∂F

∂x(x − a) +

∂F

∂y(y − b) +

∂F

∂z(z − c) = 0 (1.48)

Podemos explicitar z nesta expressao

∂F∂x

(x − a) + ∂F∂y

(y − b) + ∂F∂z

(z − c) = 0 (1.49)

∂F∂z |(a, b, c) 6= 0 ⇒ z − c = −

∂F∂x∂F∂z

(x − a) −∂F∂y∂F∂z

(y − b) (1.50)

o que nos conduz, com auxılio do Teorema da Funcao Implıcita14 a garantir queexiste uma funcao

z = f(x, y) ; ∂f∂x

= −∂F∂x∂F∂z

; ∂f∂y

= −∂F∂y∂F∂z

(1.51)

z − c = ∂f∂x

(x − a) + ∂f∂y

(y − b) ; c = f(a, b) (1.52)

z = f(a, b) + ∂f∂x (x − a) + ∂f

∂y (y − b) ; c = f(a, b) (1.53)

12variedade e o conceito que nos livra da prisao tridimensional veja no ındice remissivo maisinformacoes a respeito neste caso esta e variedade de dimensao dois, uma superfıcie

13esta variedade tangente e um plano, planos sao variedades lineares de dimensao dois14voce encontra este teorema em qualquer bom livro de Calculo. Estamos tambem admi-

tindo a hipotese de a derivada parcial que aparece no denominador seja diferente de zero

CAPITULO 1. A DERIVADA APROXIMADA 23

e assim temos duas formulas que podemos adaptar para fazer aproximacoesde funcoes com duas ou tres variaveis sendo imediato (basta considerar maisderivadas parciais) estender estas formulas para um numero qualquer que seprecise de variaveis15

O sımbolo := que utilizamos, apareceu com a linguagem de programacaoPascal para evitar a confusao com a igualdade matematica. Queremos dizerque os dois objetos que se encontram de cada lado do sımbolo “:=” tem naturezadistinta, mas que e possıvel fazer uma deducao de um, a partir do outro.

Observe que a equacao (53 ) e a formula de Taylor multivariada, de grau 1para a funcao = f(x, y).

Existe tambem uma formula de Taylor multivariada de grau 2, de grau3, etc... mas em geral nao passamos da formula do primeiro grau, devido asimprecisoes que o calculo numerico joga nas derivadas de ordem superior.

Exercıcios 4 Polinomio de TaylorVoce deve usar gnuplot para obter todos os graficos, mas deve apresentar

toda a justificacao das equacoes que usar.O comando do gnuplot para fazer graficos de funcoes de duas variaveis e

splot f(x,y)

1. Teorica - polinomio do segundo grau tangente Expanda as equacoes (53),(44) para encontrar aw equacoes de uma parabola (polinomio do segundograu) tangente ao grafico de f memorizando tambem a curvatura (segundaderivada)

y = A + B(x − a) + C(x − a)2 (1.54)

Um polinomio desenvolvido16 no ponto x = a.

solucao: polinomio de Taylor do segundo grau no ponto x = a

2. Teorica - polinomio do terceiro grau tangente Expanda as equacoes (53),(44) para obter as condicoes que facam de

P (x) = A + B(x − a) + C(x − a)2 + D(x − a)3 (1.55)

um polinomio do terceiro grau, tangente ao grafico de f no ponto (a, f(a)).

Descreva as equacoes para determinarmos os coeficientes A, B, C, D.

solucao: polinomio de Taylor do terceiro grau no ponto x = a

3. Formula de Taylor

(a) Ache o desenvolvimento de Taylor para f(x) = sen(x) no ponto x = 0de ordem 7 (grau 7) (um polinomio de grau 7).

15os problemas economicos lidam com espacos de dimensao de alguns milhares, o que jus-tifica a grande dificuldade no planejamento economico, por outro lado justifica trabalharmoscom dimensoes altas.

16novamente, um polinomio desenvolvidono ponto x = a

Page 19: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 24

(b) Ache o desenvolvimento de Taylor para g(x) = cos(x) no ponto x = 0de ordem 8 (grau 8), (um polinomio de grau 8). Analise porque adiferenca de grau entre esta questao e anterior.

solucao: derivada02 ex02.calc

(c) Calcule a derivada de g(x) + if(x), com os polinomios encontradosno item anterior. Sera que o resultado poderia ser interpretado comosendo

(g(x) + if(x))′ = i(g(x) + if(x))

4. Aplicacoes

(a) Calcule o valor aproximado de sen(0.1) usando a formula de Taylorde ordem 7. Compare o resultado, indicando o erro ocorrido usandouma calculadora.

solucao: derivada02 ex02.calc

(b) Calcule o valor aproximado de cos(0.1). Compare o resultado, indi-cando o erro ocorrido usando uma calculadora.

solucao: derivada02 ex02.calc

5. Derivadas parciais introducao teorica A equacao de plano que passa noponto (a, b, c) e por comparacao com a equacao da reta

z − c + A(x − a) + B(y − b) = 0 (1.56)

z = c − A(x − a) − B(y − b) (1.57)

(a) Calcule as derivadas parciais de z = f(x, y) na equacao (57).

resposta: A, B

(b) Justifique a afirmacao seguinte usando os conceitos “tangente”, “co-eficiente angular” dentro de uma pequena redacao. Se o plano cujaequacao esta em (56), for tangente ao grafico de uma funcao no ponto(a, b, f(a, b)) entao a equacao do plano seria, atualizando os valoresde c, A, B na equacoes (56), (57):

z − f(a, b) + A(x − a) + B(y − b) = 0 (1.58)

z = f(a, b) + ∂f∂x

(x − a) + ∂f∂y

(y − b) (1.59)

(c) Considere uma funcaoz = f(x, y) (1.60)

que seja derivavel numa vizinhanca do ponto (a, b, f(a, b)). Entaoela tem um plano tangente no ponto (a, b, f(a, b)), semelhante aocaso da funcao univariada com a reta tangente. Identifique entre asequacoes abaixo a equacao do plano tangente ao grafico de f no ponto(a, b, f(a, b)) e justifique sua escolha.

CAPITULO 1. A DERIVADA APROXIMADA 25

z − a = f(a, b) ∗ (x − a) + ∂f∂y (y − b) (1.61)

∂f∂z z − a = f(a, b) ∗ (x − a) + ∂f

∂y (y − b) (1.62)

z − a = f(a, b) ∗ (x − a) + ∂f∂x (x − a) + ∂f

∂y (y − b) (1.63)

solucao: z = −5 + 2(x − 1) + 3(y − 2); f(1.1, 2.1)− 4.5

(d) Sabendo que as taxas de variacao parciais de z = f(x, y) no ponto(1, 2) sao

∂f

∂x= 2;

∂f

∂y= 3

e que f(1, 2) = −5

i. Escreva a equacao do plano tangente ao grafico de f no ponto(1, 2, f(1, 2))

ii. calcule aproximadamente

f(1.1, 2.1)

(e) Formula de Taylor multivariada de grau 1 Observe que a equacao doplano tangente pode ser escrita de forma semelhante a equacao dareta tangente. Encontre as semelhancas e escreva a formula de Taylormultivariada de grau 1. Voce vai precisar de um produto de matrizes(estas matrizes se chamam de gradiente ou Jacobiana).

6. Polinomio Esta e uma variante do metodo polinomio de Taylor. Podemosencontrar um polinomio que memoriza as informacoes de uma funcao deforma parecida com o polinomio de Taylor, mas usando informacoes emdois pontos. Encontre um polinomio P desenvolvido no ponto x = a talque

• P (a) = f(a); P ′(a) = f ′(a)

• P (b) = f(b); P ′(b) = f ′(b)

em que [a, b] e um intervalo em que f esta definida e e derivavel. Sugestao:escreva a expressao de um polinomio desenvolvido no ponto x = a.

7. Aplicacao Encontre um polinomio tal que

a) P (−3) = 3 P ′(−3) = −1P (3) = 1 P ′(3) = 1

b) P (−3) = −3 P ′(−3) = 1P (3) = −3 P ′(3) = 1

Faca os graficos destes polinomios usando gnuplot

Page 20: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 1. A DERIVADA APROXIMADA 26

1.5 Solucao de alguns exercicios

1.6 Vocabulario

gnuplot, Landau, variedade

Nesta secao vamos incluir alguns conceitos que epreciso discutir mas cujo desenvolvimento dentro dotexto seria prejudicial. Mesmo assim sera uma pe-quena amostra de cada assunto.

• gnuplot e um programa para fazer graficos, uma especie de maquinade calcular eletronica com capacidade para fazer graficos, que roda numterminal do computador, com alguma habilidade sintatica. Voce podeescrever pequenos algoritmos no terminal do gnuplot ou com um editorde textos e chamar gnuplot para ler e executar o algoritmo.

gnuplot pode ser chamado de dentro de um programa, logicamente fa-lando e o mesmo que ja dissemos acima a respeito de chamar gnuplot nalinha de comandos passando-lhe um arquivo: isto pode ser feito de dentrode um programa e inclusive o programa pode construir o arquivo de co-mandos do gnuplot, veja, por exemplo raizq graf.c, rode apenas, estee um programa relativamente avancado que sera discutido no capıtulo 0.O proprio programa lhe dira que construiu um arquivo de comandos dognuplot que voce podera ler como um exemplo.

• Landau Para representar que uma variavel tem uma relacao multiplica-tiva com outra, usamos uma das notacoes

x = O(y) ≡ limx=0

y

x= K 6= 0 (1.64)

x = o(y) ≡ limx=0

y

x= 0 (1.65)

No primeiro caso, equacao (64), o significado e que para valores cada vezmenores de x as variaveis x, y se encontram numa proporcao e podemosdizer que sao comparaveis.

Este e o caso∆f

∆x=

f(x) − f(a)

x − a(1.66)

quando a funcao for diferenciavel no ponto a com derivada diferente dezero. Neste ponto a funcao tem uma tangente paralela a reta

x 7→ Kx (1.67)

CAPITULO 1. A DERIVADA APROXIMADA 27

em que K e o que aparece na equacao (64).

No segundo caso, equacao (65), a variavel y e infinitamente menor do quea variavel x, e o caso em que a funcao derivavel f tangencia o eixo dos X,a derivada e nula, portanto ∆f e infinitamente pequeno relativamente a∆x.

Esta linguagem, infinitamente pequeno, traduzida com a palavra infi-nitesimo, gerou uma confusao e um mito grande durante toda a primeirametade do seculo 20 em que varios autores procuraram apresentar infi-nitesimos como um tipo de numero.

Observe o salto violento que existe entre as duas notacoes, nao ha nadaentre elas. A melhor forma de entender a notacao de Landau, que foi umatentativa de evitar os infinitesimos, e usa-la para aos poucos compreenderquando usar uma ou a outra, e talvez admitir o que Courant dizia, que olimite se encontra no limiar da Matematica superior. . .

Se voce quiser ver alguma coisa experimental nesta linha, considere y =f(x) e compare

– x com f(x) quando x ∈ V(0), uma vizinhanca de zero, e o casodo o pequeno de Landau, faca um programa que liste x, f(x) com xdecrescendo para zero.

– x−a com f(x)−f(a) quando x ∈ V(a), uma vizinhanca de um pontoa 6= zero, e o caso do O grande de Landau, faca um programa queliste x− a, f(x)− f(a) com x− a decrescendo para zero, voce vai verque neste caso K = f ′(a).

• Variedade e uma palavra que nos livra da prisao tridimensional em quea geometria do mundo fısica em que vivemos nos confina.

Diremos variedade de dimensao 1 para fazer referencia as curvas, umareta, um cırculo sao variedades de dimensao 1.

Diremos variedade de dimensao 0 para fazer referencia aos pontos.

As superfıcies sao as variedades de dimensao 2, como um plano que e umavariedade linear de dimensao 2.

Depois da dimensao 2 a geometria nao tem mais palavras e nos conti-nuamos a denominar os objetos de variedades lineares ou nao-linearesacrescentando a dimensao que eles tenham. Podemos entao falar de umavariedade linear de dimensao 4 que seria uma generalizacao dos planos oudas retas.

Enfim, agora nao temos mais as limitacoes da geometria.

Page 21: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Capıtulo 2

Raızes aproximadas de

funcoes contınuas

Neste capıtulo vou estudar o problema determinacao das raızes de uma funcao: queremosdescobrir quando f(x) = 0. Este e um velho problema e a justificacao de sua inclusao nocurrıculo se deve a que ele e ilustrativo de tecnicas importantes que tem valor por sı proprias,como o metodo da tangente, a procura binaria, e o metodo da secante e a recursividade.O problema e velho e atual, como veremos na discussao, e “atual” no sentido que nos naosabemos resolve-lo.Resolver esta equacao computacionalmente, e bastante difıcil, e iremos, no momento apropri-ado, indicar quais os problemas envolvidos. A saıda, computacional, e resolver a desigualdade

|f(x)| < ǫ

para um valor adequado para ǫ. Veremos que isto e insuficiente e irrealista, apesar de sernaturalmente a saıda matematica.Iremos salientar como os metodos computacionais, associados a estas antigas metodologias,as tornam mais ageis.

O plano do trabalho e:

• mostrar e exemplificar o problema;

• apresentar uma primeira solucao computacional, simples, ingenua mesmo,usando varredura eliminando parte do problema;

• mostrar uma solucao mais efetiva;

• apresentar os metodos, metodo da secante e o metodo da tangente e imergirestes metodos em metodos computacionais;

• vamos estudar dois metodos matematicos importantes, busca binaria esucessoes recursivas;

28

CAPITULO 2. RAIZES APROXIMADAS 29

• apresentar ao final o problema completo, mas, obviamente, nao, a solucao.

E interessante observar que a primeira parte, a solucao ingenua e simplesfara parte integrante da solucao final. Tambem faremos uma afirmacao: esteproblema, a determinacao das raızes, nos ensina uma licao, que os humanos saocompanheiros dos computadores na busca de solucoes. . .

2.1 Raızes de uma funcao por varredura

Queremos determinar todos os pontos a tal que

f(a) = 0 ; a ∈ [α, β]

isto e, todas as raızes de f no intervalo [α, β].Veja a figura (fig. 2.1) que mostra uma funcao que tem diversas raızes, mas

apenas uma no intervalo que nos interessa.

f

Estamos interessados nesta raíz

Figura 2.1: Raızes de f no intervalo [α, β]

Claro, e voce deveria comecar se perguntando: e porque nos interessaria umdeteminado intervalo, e nao o conjunto mais amplo em que uma funcao tivesseraızes ?

A resposta para esta pergunta, absolutamente logica, e que existem conjun-tos que sao os domınios naturais para uma funcao dentro de um problema emque ela aparece. Neste caso seria uma perda tempo procurarmos propriedadesdesta funcao num conjunto mais amplo.

Page 22: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 30

Uma outra forma de responder, seria, quando definimos uma funcao, ne-cessariamente estipulamos um domınio de validade para a mesma.

Sera neste domınio que iremos procurar as raızes da funcao.

2.1.1 Um metodo computacional: varredura

Um metodo computacional basico, para resolver esta questao, e varias outrasque voce vai encontrar neste livro, e varredura.

Existe um paradoxo muito conhecido, de Zenon, resolvido por Aristoteles,em que Aquiles persegue uma tartaruga. Aquiles corre a um metro por segundoenquanto que a tartaruga corre a 0.1 metro por segundo, mas a tartaruga partede um ponto mais avancado, a 0.9 m mais a frente.

O paradoxo estabelece que Aquiles somente pode atingir a tataruga depoisde percorrer o espaco percorrido por esta (e aqui esta o paradoxo):

• Aquiles parte do ponto 0 e a tartaruga parte do ponto 0.9;

• quando Achile atingir o ponto 0.9 a tartaruga ja nao esta mais la;

• nova corrida comeca, agora com Aquiles no ponto 0.9 e a tartaruga noponto 0.91 e quando ele atingir o ponto 0.91 a tartaruga ja nao esta maisla . . . e assim nova corrida comeca, [14, logica, Stanford].

Podemos inventar outra forma equivalente deste paradoxo com uma tarta-ruga que aos poucos fosse ficando cansada com a corrida.

A tartaruga comeca uma corrida e no primeiro dia corre a metade do per-curso oficial, no segundo dia corre a metade do que ficou faltando e assim,sucessivamente, segue correndo sempre a metade do que estiver faltando nosdias seguintes. Serve para ilustrar que nunca a tartaruga terminaria a corrida...

Aqui vamos usar a ideia para convence-lo de que por menor que for o passo,nao sera possıvel percorrer todos os pontos de um intervalo.

Em vez de falar em percorrer, coisa impossıvel, vamos falar em varrer. Aqui-les pode varrer o espaco a sua frente e passara pela tartaruga em algum ponto nocaminho, mas pode sempre acontecer, dependo do passo escolhido, que nuncaAquiles encontre a tartaruga.

E nao ha nenhum paradoxo nesta questao, assim como o paradoxo de Aquilesnada mais e do que uma forma enganosa de colocar a questao. Nao existenenhum paradoxo de Aquiles.

Problema 1 Nunca encontrar o zero de fEste e o problema basico, sem nenhum paradoxo, e simplesmente pouco

provavel que encontremos x tal que f(x) = 0.

Para fazer uma varredura de uma regiao vamos colocar uma malha de nossobre esta regiao.

Pense numa rede de pesca, mas nos interessam apenas os nos da rede . . .A regiao Ω (pode ser uma regiao da reta, do plano ou do espaco), e quere-

mos escolher um conjunto de nos, definindo a malha, associada a esta regiao.Existe um conceito vizinho a este denominado de particao.

CAPITULO 2. RAIZES APROXIMADAS 31

Malha associada a um intervalo

Vamos comecar com o caso unidimensional.Acompanhe a descricao do metodo com a figura (fig. 2.2) pagina 32.

1. Malha uniforme associada a um intervalo I = [α, β]

(a) A precisao da malha - a norma

Considere um intervalo I = [α, β]

A medida deste intervalo e

m([α, β]) = β − α

e a dividimos por um inteiro n que representa a precisao com quefaremos os calculos.

A norma da malha1 e

∆x =β − α

n. (2.1)

Quando a malha for uniforme este conceito perde sentido, e a me-dida de qualquer sub-intervalo. Ele e importante quando as malhasnao sao uniformes porque serve para controlar a distribuicao quase-uniforme dos nos, impedindo que uma grande de quantidade de nosse concentre em uma pequena sub-regiao.

(b) nos da malha Podemos agora definir os nos como os elementos deuma progressao aritmetica

α = x0, x1, · · · , xn = β (2.2)

x0 = α, (2.3)

x1 = α + ∆x, (2.4)

x2 = α + 2∆x, · · · , (2.5)

xk = α + k∆x, · · · , (2.6)

· · · , xn−1 = α + (n − 1)∆x, (2.7)

xn = α + n∆x = β (2.8)

Em geral desprezamos um dos extremos, deste conjunto de nos,

• desprezamos o ultimo no

(xk)n−1k=0 = x0, x1, · · · , xn−1 = β − ∆x (2.9)

x0 = α, x1 = α + ∆x, x2 = α + 2∆x, · · · , (2.10)

xk = α + k∆x, · · · , (2.11)

xn−1 = α + (n − 1)∆x (2.12)

ou

1ou norma da particao

Page 23: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 32

• desprezamos o primeiro no

(xk)nk=1 = x1 = α + ∆x, · · · , xn = β (2.13)

x1 = α + ∆x, x2 = α + 2∆x, · · · , (2.14)

xk = α + k∆x, · · · , xn−1 = α + (n − 1)∆x, (2.15)

xn = α + n∆x = β (2.16)

Veja na figura (fig. 2.2) pagina 32,

x

x

0

n

1x

Ik

intervalo I

Partição do

Figura 2.2: Particao do intervalo I

Algumas vezes preferimos salientar que este processo criou uma colecaode sub-intervalos

I0 = [x0, x1), (2.17)

I1 = [x1, x2), . . . , (2.18)

In−1 = [xn−1, xn] (2.19)

I0 ∪ I1 ∪ · · · ∪ In−1 = I (2.20)

cuja uni~ao e o intervalo I sendo estes sub-intervalo disjuntos. Estacolecao de sub-intervalos e o que chamamos uma partic~ao de I

Em Matematica gostamos de pensar que “escolhemos uma colecaoarbitraria de pontos”

x0, x1, x2, . . . , xn−1, xn ∈ I (2.21)

CAPITULO 2. RAIZES APROXIMADAS 33

mas, para tornar computacional uma particao e preciso estabeleceruma equacao, para o elemento generico coisa que os computadoresentendem.

Se a sucessao (xk)nk=1 formar uma progressao aritmetica, dizemos que

temos uma malha uniforme (ou uma particao uniforme). Esta sera anossa preferencia neste livro: particoes uniformes.

Usamos, entao, ∆x como a razao de uma progressao aritmetica cujoprimeiro termo e x0 = α

xk = α + k∆x (2.22)

como ja descrevemos.

Esta expressao aparecera com frequencia neste livro.

Observacao 2 Aprendendo a ler ou a programar

O programa raizes01.c, [20, programas.tgz], e um implementacao destemetodo, mas ele faz um pouco mais do que isto, procura algumas raızes.Leia o programa sem stress.

E lendo programas que a gente aprende a programar, assim como e lendoos autores classicos que a gente aprende a escrever.

Mas nem aprendemos a escrever apenas lendo como nao aprenderemosa programar apenas lendo programas. E preciso aprender a alterar osprogramas.

Nao tenha medo de faze-lo. Nao se preocupe com estragar o programa, ooriginal se encontrara, sempre, a sua disposicao na pagina ou no CD.

2. Malha nao uniforme Vamos descrever o que seria construir uma malhanao uniforme, mas nao faremos nenhum uso para este tipo de malha nestelivro, imediatamente.

A construcao de malhas uniformes conduz a selecao de uma razao comoa que se encontra na equacao (1), e de uma progressao aritmetica que seencontra na sucessao de equacoes que iniciando em (2), ou do conjunto deintervalos, todos com mesma medida que apresentamos nas equacoes quecomecam com (17).

No capıtulo 0 e no capıtulo 0 vamos usar malhas nao uniformes, elas apare-cerem naturalmente quando pensamos em aplicacoes do tipo coleta de da-dos feitas por sensores distribuidos ao longo do percurso de um fenomeno.Neste momento seria artificial dividir este percurso em partes iguais, es-tabelecendo um passo ∆x porque tais caminhos tem pontos crıticos quemerecem atencao especial onde havera uma concentracao de sensores. Umexemplo tıpico seria a analise do trafego numa rodovia em que eventoscomo curvas, cidades ou vilarejos, acidentes geograficos exigiriam um le-vantamento especial de dados.

Page 24: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 34

A resposta para este tipo de necessidade vem com um arquivo de dadosem que os nos estao definidos pela posicao dos sensores.

A esta altura do texto e tambem um pouco artificial esta discussao quepreferimos relegar para o momento certo, apenas declarando aqui teremosnecessidade de malhas nao uniformes. Se o leitor precisar de imediata-mente ver este ponto, recorra aos capıtulos 0 ou 0 ou procure no ındiceremissivo ao final do livro.

Descrevemos assim malhas unidimensionais. Vamos descrever, na proximaseccao, como construir malhas bidimensionais.

Malhas bidimensionais

1. Malha associada a uma regiao do plano Selecionar malhas para regioes dedimensao maior que 1 geralmente e mais trabalhoso. No caso unidimen-sional nao ha muitas escolhas mas nos casos pluridimensionais ha variosproblemas a serem considerados.

Analise um caso simples, representado pela figura (fig. 2.3) pagina 35, eacompanhe com a figura, as definicoes que faremos.

Comecaremos supondo que se trata de uma regiao Ω limitada.

Quer dizer que existem quatro numeros reais: α1, α2, β1, β2 tal que Ω eum subconjunto do produto cartesiano de dois intervalos:

Ω ⊂ [α1, β1] x [α1, β1] (2.23)

e entao criamos uma malha em cada um dos intervalos:

∆x =β1 − α1

n; ∆y =

β2 − α2

n(2.24)

• Agora o produto cartesiano dos dois conjuntos de nos em cada inter-valo, define um conjunto de nos no plano, uma malha no plano;

• temos que selecionar um sub-conjunto desta malha que fique no in-terior de Ω, veja a figura (fig. 2.3).

Se Ω for definido por uma expressao algebrica, pode ser simples a selecaoautomatica dos nos que esteja no seu interior.

Frequentemente este e um outro problema a ser resolvido, mas este livrovai lhe apresentar, no capıtulo 0 uma tecnica, aproximacao polinomial,que pode fornecer a equacao algebrica determinando o contorno de umafigura como (fig. 2.3) a partir de uma coleta de dados como uma fotografiaaerea, por exemplo, ou um conjunto de medicoes tomadas no proprio local.

Veja na figura (fig. 2.3), um domınio, Ω, do plano, em que colocamos umamalha e fizemos a selecao dos pontos da malha que se encontram dentrodo domınio.

CAPITULO 2. RAIZES APROXIMADAS 35

região do plano Malha sobre uma

α

α

1

2β1

Figura 2.3: Malha sobre uma regiao do plano

Um elemento generico da malha tem por equacao

xi,j = (xi, yj) ; i = 0, . . . , n − 1 ; j = 0, . . . , n − 1

em que estamos ignorando os pontos que se encontram na ultima linha damalha (tanto na horizontal como na vertical).

Se usarmos o mesmo metodo da progressao aritmetica, que ja usamos commalhas sobre um intervalo, (eq.1) teremos

xi,j = (α1 + i∆x1, α2 + j∆x2); (2.25)

∆x1 = β1−α1

n; (2.26)

∆x2 = β2−α1

n ; (2.27)

Tambem podiamos considerar numeros de pontos diferentes na horizontale na vertical, neste caso, usariamos as variaveis n, m para designar estasquantidade e nos denominadores, das fracoes nas equacoes (26), (27).

Estamos usando a hipotese de que e possıvel selecionar os pontos comuma decisao algebrica, realmente isto pode ser complicado de fazer e naoconhecemos um algoritmo generico para tratar deste caso, mas os metodosdo capıtulo 0 podem resolver esta questao.

Neste livro usaremos malhas em dimensao maior do que um apenas no calculode integrais multivariadas no capıtulo 0. E entretanto conveniente, pelo menos

Page 25: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 36

mostrar ao leitor, onde ele pode fazer uso de malhas multidimensionais e umapista de como encontrar a solucao para os problemas envolvidos.

Tais situacoes podem ser facilmente encontradas como aplicacoes do calculoaproximado de integrais.

Exemplo 2 Uso de malhas multidimensionais

1. Populacao de microrganismos numa lamina. Sabendo que os microrganis-mos a serem estudados sao capazes de um certo tipo de reacao, e possıvelpinta-los com uma solucao quımica que fara com que eles respondam areacao quımica com um comprimento de onda, que habitualmente chama-mos de cor. Cada um dos pontos da figura (2.3) pode ser descrito comoaquele que o sensor captou como estando na faixa de comprimento de ondaque identifique a presenca dos microrganismos que interessa.

Depois podemos contar a quantidade de microrganismos calculando a areada regiao que eles ocupam. O biologo deve, experimentalmente, descobriruma constante especıfica que permita transformar esta area na quantidademicrorganismos presentes na lamina.

2. Fotografia de satelite de regiao urbana. A figura (2.3) pode representaruma regiao fotografada por um satelite e novamente, via comprimento deonda, se pode detectar intensidade construcoes urbanas, florestas etc...Neste caso a fotografia pode ser feita sob emissao de uma onda com umacomprimento particular, ver [14, onda], objetivando obter um determinadoresultado: florestas, construcoes urbanas, determinados tipos de poluicao.

Novamente o calculo da area da regiao determinada vai permitir uma ava-liacao da regiao urbana, da floresta, ou da quantidade de poluicao que seestiver observando. Aqui tambem constantes especıficas permitem a trans-formacao da area nas quantidades que seja deseja determinar.

No capıtulo 0 vamos estudar o calculo aproximado das integrais.

Estes exemplos sao bastante genericos e mostram a amplitude do uso deintegrais multivariadas.

Estas aplicacoes fogem ao planejamento deste livro mas se o leitor preci-sar, encontrara aqui meios para fazer estas aplicacoes, se puder contar cominformacoes sobre as constantes mencionadas nos exemplos, na literatura espe-cializada.

Pelo menos um metodo para calculo de integrais multivariadas sera visto nocapıtulo 0.

Malhas num programa de computador

Dentro de um programa de computador, podemos implementar a progressaoaritmetica definida na (eq.1 )

CAPITULO 2. RAIZES APROXIMADAS 37

x = α // (1)enquanto (x < β) // (2)

x = x + ∆x // (3).

1. o ponto inicial

2. a logica que controla o laco

3. a progressao aritmetica que define os nos da malha

Este pequeno programa nao faz nada, visıvel ! Seria preciso um “comando”para guardar, num arquivo, no disco, os elementos da progressao aritmetica oufaze-los aparecer na tela do computador:

∆x = β−αn (1)

x = α // (1)enquanto (x < β) // (2)

x = x + ∆x // (3).imprima(x) // (4)

1. dando valores iniciais as variaveis

2. a logica que controla o laco

3. a progressao aritmetica que define os nos da malha

4. o comando para imprimir na tela os elementos da progressao aritmetica

O caso de malhas multidimensionais, num programa, consiste em encadeiarlacos semelhantes a estes que apresentamos acima para o caso unidimensional,nao tem segredo, outro, que dominar a definicao do domınio, e como ja dissemoseste pode ser um problema especial: considere um lado dentro de uma regiao,ele pode representar um buraco em que voce nao deseja ou nao podera obterinformacoes. Mas o tal lago pode representar informacoes preciosas num estudode reacoes climaticas da mesma regiao. . .

2.1.2 Procura de raızes por varredura

Temos as ferramentas para fazer a nossa primeira pesquisa de raızes de umafuncao. Vamos discutir uma solucao simples e intuitiva do problema.

Vamos varrer um intervalo [α, β] procurando quando os valores de f sejammenores que um erro escolhido. Pela discussao feita acima sobre o chamadoparadoxo de Aquiles, nao vale a pena procurar quando f(x) = 0, porque aprobabilidade de que Aquiles encontre a tartaruga, e a mesma de encontremosx tal que f(x) = 0, e muito pequena praticamente nula.

Page 26: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 38

Como no caso de Aquiles, e melhor procurar saber quando tivermos passadopela tartaruga:

|f(x)| > ǫ (2.28)

Um primeiro “programa” seria:

∆x = β−αn [1]

x = α [1]enquanto (x < β) [2]

se (|f(x)| < ǫ) escreva x, f(x); [3]x = x + ∆x [4]

Este livro nao pode oferecer-lhe tecnicas de programacao, sem fugir dos seusobjetivos, mas algumas sugestoes podem ser encontradas aqui. Uma delas ebasica: construa programas que executem tarefas especıficas e bem restritas,depois cole os programas para produzir um algorimo mais complexo, quandotiver certeza de que todas as etapas anteriores foram bem testadas.

Outra forma de fazer programas eficientes consiste em partir de um programacomo este que esta acima e ir acrescentando ao programas novas rotinas. Mesmoneste caso vale a observacao anterior: teste as rotinas separadamente antes deincluı-las no programa.

Esta metodologia se presta para o trabalho em equipe.Descricao das etapas do programa

1. valores iniciais para as variaveis

2. a logica que controla o laco

3. o teste para encontrar as raızes aproximadas

4. a progressao aritmetica que define os nos da malha

Exemplo 3 Procura de raızesTodos os exemplos apresentados aqui foram executados com programa

raizes01.c

que pode ser obtido aqui,[20, programas.tgz], ou no CD que acompanha estelivro. Em seguida lhe apresentamos uma lista de exercıcios em que voce seraconvidado a usar o programa para repetir estes exemplos e construir outros paramelhorar a sua compreensao do assunto.

1. Raiz de f(x) = x2 no intervalo [−1, 1]

Rodamos um programa que implementa o algoritmo acima. O programasolicita os pontos inicial e final do intervalo de busca, e pede a norma damalha, depois o programa usa a propria norma da malha no teste

|f(x)| < ǫ = ∆x

CAPITULO 2. RAIZES APROXIMADAS 39

> Forneca-me o intervalo [a,b] para busca de raizes:

a = -1 b = 1

> Sua busca de raizes no intervalo [ -1.000000 , 1.000000 ]

> Forneca-me o passo delta da malha para a busca:

> Sugestao 0.01 < delta < 0.5

delta = 0.1

> Precisao da malha 0.100000

=================================================

> Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[-0.100000,0.000000]

valor de f no ponto -0.100000 --> 0.010000

valor de f no ponto 0.000000 --> 0.000000

Raiz provavel da funcao no intervalo

[0.000000,0.100000]

valor de f no ponto 0.000000 --> 0.000000

valor de f no ponto 0.100000 --> 0.010000

O programa acha dois intervalos onde ha valores aproximados para a raizda funcao, e escreve o valor de f em cada extremo do intervalo:

• [−0.1, 0]

• [0, 0.1]

Aqui voce ja pode ver uma dificuldade na determinacao de raızes aproxi-madas, com programas de computador. O programa encontrou duas raizes,uma no intervalo [−0.1, 0] e outra no intervalo [0, 0.1] que representam,ambas, a mesma raız, x = 0.

Este e o problema intitulado separacao das raızes . O nome nao e dosmelhores porque, como voce ve, acima, nao ha duas raızes e sim uma unicaque foi apresentada como aparecendo em dois intervalos consecutivos.

A figura (fig. 2.4) pagina 40, pretende ilustrar o problema descrito noexemplo. Uma malha muito fina levara o programa a encontrar variospontos que satisfazem a desigualdade.

Este e um dos principais problemas em Calculo Numerico: nos nao sabe-mos fazer programas que possam funcionar sozinhos.

Temos que monitorar o resultado dos programas e selecionar, dentre aspossibilidades por eles encontradas, quais sao interessantes. Este mesmoprograma poderia nao encontrar nenhuma raız no intervalao indicado, seusarmos um valor muito pequeno para ǫ. Veja o resultado se modificarmoso programa com ∆x 6= ǫ

Forneca-me o intervalo [a,b] para busca de raizes:

a = -1 b = 1

Page 27: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 40

f

|y| < r

Figura 2.4: Varios representantes da unica raiz

Sua busca de raizes no intervalo [ -1.000000 , 1.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.3

Precisao da malha: 0.300000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.001

Erro : 0.001000

=================================================

Aperte <enter> para continuar

Nenhuma raiz foi encontrada no intervalo dado !

Rode, novamente, o programa, com passo mais fino...

Desta vez o programa nao conseguiu encontrar nenhuma raiz, observe por-que.

• Como escolhemos ∆x = 0.3 ele analisou os intervalos

[−1,−0, 7], [−0.7,−0.4], [−0.4,−0.1], [−0.1, 0.2], ...

• e em cada um deles verificou se nos extremos |f(x)| < ǫ;

• os testes falharam nos extremos em todos os casos porque somenteno interior do intervalo [−0.1, 0.2] e que poderia ter dado certo.

Veja o resultado se agora rodarmos o programa com ∆x = 0.1

Forneca-me o intervalo [a,b] para busca de raizes:

CAPITULO 2. RAIZES APROXIMADAS 41

a = -1 b = 1

Sua busca de raizes no intervalo [ -1.000000 , 1.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.1

Precisao da malha: 0.100000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.001

Erro : 0.001000

=================================================

Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[0.000000,0.100000]

valor de f no ponto 0.000000 --> 0.000000

valor de f no ponto 0.100000 --> 0.010000

O programa analisou os intervalos

[−1,−0.9], [−0.9,−0.8], . . . , [−0.1, 0], [0, 0.1]

e achou uma raiz no intervalo [0, 0.1]. Se o programa tivesse testado osdois extremos de cada intervalo, teria achado tambem uma raız no inter-valo [−0.1, 0].

2. raızes de f(x) = x5 + x4 + x3 + x2 + x + 1 em [−3, 3]

Forneca-me o intervalo [a,b] para busca de raizes:

a = -3 b = 3

Sua busca de raizes no intervalo [ -3.000000 , 3.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.01

Precisao da malha: 0.010000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.1

Erro : 0.100000

=================================================

Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[-1.030002,-1.020002]

valor de f no ponto -1.030002 --> -0.095599

valor de f no ponto -1.020002 --> -0.062463

Raiz provavel da funcao no intervalo

[-1.020002,-1.010002]

Page 28: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 42

valor de f no ponto -1.020002 --> -0.062463

valor de f no ponto -1.010002 --> -0.030613

Raiz provavel da funcao no intervalo

[-1.010002,-1.000002]

valor de f no ponto -1.010002 --> -0.030613

valor de f no ponto -1.000002 --> -0.000006

Raiz provavel da funcao no intervalo

[-1.000002,-0.990002]

valor de f no ponto -1.000002 --> -0.000006

valor de f no ponto -0.990002 --> 0.029401

Raiz provavel da funcao no intervalo

[-0.990002,-0.980002]

valor de f no ponto -0.990002 --> 0.029401

valor de f no ponto -0.980002 --> 0.057650

Raiz provavel da funcao no intervalo

[-0.980002,-0.970002]

valor de f no ponto -0.980002 --> 0.057650

valor de f no ponto -0.970002 --> 0.084781

Raiz provavel da funcao no intervalo

[-0.970002,-0.960002]

valor de f no ponto -0.970002 --> 0.084781

valor de f no ponto -0.960002 --> 0.110833

Esta funcao tem uma unica raız, no ponto x = −1 e o programa encontrouvarios intervalos em que o valor de |f(x)| < ǫ. Rodando o programanovamente, com o valor menor para ǫ temos

Forneca-me o intervalo [a,b] para busca de raizes:

a = -3

b = 3

Sua busca de raizes no intervalo [ -3.000000 , 3.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.01

Precisao da malha: 0.010000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.0001

Erro : 0.000100

=================================================

Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[-1.000002,-0.990002]

valor de f no ponto -1.000002 --> -0.000006

CAPITULO 2. RAIZES APROXIMADAS 43

valor de f no ponto -0.990002 --> 0.029401

O programa conseguiu isolar um unico intervalo com uma raız aproximada.

Os exemplos acima mostram as dificuldades que temos para resolver o pro-blema de encontrar as raızes de uma funcao usando varreduras. Depois veremosque, com tecnicas mais refinadas, poderemos evitar estes erros.

Porem os programas podem ainda, deixar de encontrar raızes, mesmo queelas existam o que nos obriga a monitorar o funcionamento dos programas paradirigir a busca a partir dos resultados indicados.

Exercıcios 5 Procurando raızes com varreduras

1. Leia o programa raizes01.c. Logo no inıcio o programa traz instrucoesde como compilar e rodar um programa.

2. Voce pode repetir as experiencias registradas aqui rodando o programaraizes01.c. A funcao cujas raızes estao sendo procuradas, esta definidadentro do programa, ao final. Troque a equacao para executar os seus ex-perimentos e depois compile e rode o programa. Dentro do programa, noinıcio ha instrucoes de como compilar e rodar o programa.

3. Rode raizes01.c com f(x) = x2 no intervalo [−3.2, 3] com passo 0.3e erro maximo 0.001. O programa vai dizer-lhe que nenhuma raiz foiencontrada. Analise por que ?

4. Rode raizes01.c com f(x) = x2 no intervalo [−3, 3] com passo 0.3 e erromaximo 0.001. Agora o programa vai encontrar um intervalo onde ha umaraiz.

5. Rode raizes01.c com f(x) = x no intervalo [−3.2, 3] com passo 0.3 e erromaximo 0.05. O programa vai dizer-lhe que nenhuma raiz foi encontrada.Analise por que ?

6. Rode raizes01.c com f(x) = x2 no intervalo [−3, 3] com passo 0.05 eerro maximo 0.01. O programa vai encontrar varios sub-intervalos ondeha raızes.

Nos exercıcios, a busca de raızes, com uma mesma funcao um programaproduz diversos resultados. A figura (2.4) oferece uma boa descricao geometricapara este problema:

• uma malha com passo muito fino e com erro (modulo maximo) relativa-mente muito grande, apresenta varios nos em que a desigualdade e verifi-cada;

• se o erro, (modulo maximo) for relativamente muito pequeno nenhum dosnos da malha vai satisfazer a desigualdade.

Page 29: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 44

Observe que usei o adverbio “relativamente” para qualificar os adjetivosgrande ou pequeno porque as grandezas sao relativas a algum referencial. Vocetalvez precise de fazer algumas experiencias com o programa raizes01.c paracompreender o problema descrito nesta secao.

Na proxima secao vamos encontrar uma saıda para esta dificuldade.

2.2 Raızes analisando a troca de sinal

Acima analisamos a busca de raızes apenas testando quando o valor de f(x)fosse pequeno:

|f(x)| < ǫ (2.29)

Vamos mostrar, como um exemplo, que isto pode ser insuficiente.

2.2.1 Analise do programa raizes01.c

Veja o que acontece com a funcao f(x) = x ao rodarmos o programa raizes01.c.

Forneca-me o intervalo [a,b] para busca de raizes:

a = -3.2

b = 3

Sua busca de raizes no intervalo [ -3.2.000000 , 3.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.3

Precisao da malha: 0.30000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.001

Erro : 0.001000

=================================================

Aperte <enter> para continuar

Nenhuma raiz foi encontrada no intervalo dado !

Rode, novamente, o programa, com passo mais fino...

O programa nao encontrou|f(x)| < 0.001

no intervalo considerado.Em vez de procurar por um valor pequeno de |f(x)| e portanto depender da

relatividade do tamanho que se vai procurar, vamos verificar quando a funcaotroca de sinal.

CAPITULO 2. RAIZES APROXIMADAS 45

Este metodo nos livra do relativismo2. Quando uma funcao contınua trocarde sinal em um intervalo, neste intervalo ha um ponto (pelo menos) em que afuncao vai se anular.

Se introduzirmos esta pequena melhora no programa ele ira encontrar umaraiz aproximada com os mesmo dados (∆x, ǫ).

Vamos incluir o teste

f(x) ∗ f(x + ∆x) ≤ 0

que descobre quando f troca de sinal dentro de um intervalo.O programa

∆x = β−αn [1]

x = α [1]enquanto (x < β) [2]

se (|f(x)| < ǫ) ou (f(x)f(x + ∆x) ≤ 0 )escreva x, f(x); [3]x = x + ∆x [4]

Comentando as etapas do programa

1. valores iniciais para as variaveis

2. a logica que controla o laco

3. o teste para encontrar as raızes aproximadas tanto a verifica se modulo def e pequeno:

|f(x)| < ǫ

como tambem verifica se f troca de sinal no intervalo:

f(x)f(x + ∆x) ≤ 0

O operador logico ou “pesca” se uma destas condicoes for satisfeita.

4. a progressao aritmetica que define os nos da malha

Veja o resultado deste programa “mais especializado”:

Forneca-me o intervalo [a,b] para busca de raizes:

a = -3 b = 3

Sua busca de raizes no intervalo [ -3.000000 , 3.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.15

Precisao da malha: 0.150000

2tamanho e um conceito relativo, depende de um referencial...

Page 30: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 46

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.001000

Erro : 0.001000

=================================================

Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[-0.150000,0.000000]

valor de f no ponto -0.150000 --> -0.150000

valor de f no ponto 0.000000 --> 0.000000

Raiz provavel da funcao no intervalo

[0.000000,0.150000]

valor de f no ponto 0.000000 --> 0.000000

valor de f no ponto 0.150000 --> 0.150000

O programa achou dois intervalos, num deles a funcao troca de sinal, no outroa funcao e pequena. Veja outro exemplo:

Forneca-me o intervalo [a,b] para busca de raizes:

a = -2

b = 2

Sua busca de raizes no intervalo [ -2.000000 , 2.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.15

Precisao da malha: 0.150000

Forneca-me o erro epsilon :

Sugestao 0.01 < epsilon < 0.5

0.01

Erro : 0.010000

=================================================

Aperte <enter> para continuar

Raiz provavel da funcao no intervalo

[-0.050000,0.100000]

valor de f no ponto -0.050000 --> -0.050000

valor de f no ponto 0.100000 --> 0.100000

Bastou que trocassemos os pontos inicial e final do intervalo de busca paraque o programa identificasse um unico intervalo onde ha raız da funcao. Moni-torando o programa conseguimos obter um resultado preciso.

Se voce nao souber programar, ou nao tiver acesso a um computador, setudo que voce tiver for uma maquina de calcular, o algoritmo analisando atroca de sinal e o ideal. Depois de verificar num intervalo “grande” que f troca

CAPITULO 2. RAIZES APROXIMADAS 47

de sinal, voce pode refinar sua pesquisa em sub-intervalos deste ate encontrarum pequeno intervalo onde se encontra a raız.

Exercıcios 6 Explorando raizes011.c

1. Leia o programa raizes011.c. Logo no inıcio o programa traz instrucoesde como compilar e rodar um programa.

2. Leia o programa raizes011.c. Leia o comentario (10) que lhe explica queo problema tem dados pre-definidos que voce pode aproveitar na primeiravez que rodar o programa.

3. Leia o comentario (30) e elimine o teste do modulo maximo. Verifiqueque alguma raiz pode ser perdida, dependendo da equacao que voce estiverusando. Experimente varios tipos de equacoes. Leia o comentario (50).

4. Altere o programa a vontade, deve haver uma copia em disco para voceretornar a versao original... faca suas experiencias.

2.3 Raiz do tipo secantes

Falamos na troca de sinal para encontrar raızes de funcoes. A forma classicae o metodo das secantes que vamos estudar mais a frente. Como preparacaopara os metodos classicos vou fazer uma analise dos tipos de raızes que ireiclassificar como do tipo secante e do tipo tangente. Primeiro vamos discutiras raızes do tipo secante.

Vamos nos aprofundar na analise de quando uma funcao se anula. Saodesafios interessantes que temos pela frente. Os graficos podem ter curvas eneste caso encontrar as raızes exige mais domınio do assunto.

Observe o que nos diz a figura (fig. 2.5) pagina 48,O grafico da funcao f “corta” o eixo OX em dois pontos.

• Raız por tangencia Uma desta raızes e do tipo “tangente”, veja o grafico,(fig. 2.5).

O grafico de f tangencia o eixo OX, no ponto x1 e corta o eixo OX noponto x2.

– x1 e um ponto de tangencia, uma raiz em que

f ′(x1) = 0. (2.30)

e nao seria possıvel obter esta raız pelo metodo das secantes nesteponto porque neste ponto (nesta raız) f nao troca de sinal. Aparen-temente a unica forma de encontrar esta raız e usando o teste

|f(x)| < ǫ (2.31)

Num ponto de tangencia, como x1, o grafico pode ser comparadocom o grafico de uma parabola em que ∆f << ∆x. O sımbolo <<

Page 31: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 48

f

Esta raíz é possívelde se determinar pelo

método das secantes raíz aproximada

obtida pelo método

das secantes

método das secantesde se obter peloraíz impossível

x1

x2

Figura 2.5: O metodo das secantes

se le “muito menor do que. A tal ponto ∆f << ∆x que o quociente∆x1

(f) = ∆f∆x

tem limite zero, quando ∆x representar o zero3. Aderivada e zero. Vou tratar deste caso na proxima secao. Vamosver que existe outra maneira de encontrar esta raiz sem ser com adesigualdade

|f(x)| < ǫ (2.32)

que ja sabemos que e problematica porque depende de valor “relati-vamente pequenos”, coisas com que programas nao podem lidar deforma efetiva.

– Raız por secancia o ponto x2 e um ponto de secancia do grafico como eixo OX e vou me especializar neste caso agora.

A outra raız e do tipo “secante”, o grafico graf(f) corta o eixo OX deforma semelhante a uma reta, neste ponto (nesta raız) f troca de sinal.Aqui o teste

|f(x)| < ǫ (2.33)

funciona mal porque e difıcil comparar o tamanho de |f(x)| com o tamanhode ∆x e desta forma fica difıcil definir um erro ǫ adequado.

3ou, como ainda se diz, “quando ∆x tender a zero”

CAPITULO 2. RAIZES APROXIMADAS 49

E hora de observar que igualdades e desigualdades sao sempre difıceis deserem obtidas com programas, e a razao esta descrita acima, a dificuldadede comparar tamanhos.

E mais simples e pratico usarmos o teste da troca de sinal

f(x)f(x + ∆x) ≤ 0 (2.34)

porque se o zero x2 ∈ [x, x+∆x] entao f tera sinais diferentes nos extremosdo intervalo.

2.3.1 Metodo da secante

O chamado metodo da secante consiste em substituir o grafico de f , num inter-valo em que haja troca de sinal, pela reta secante obtida com os valores de fnos extremos do intervalo.

Notacao: Vamos designar por [a, a + ∆x] um intervalo que descobrimos4 emque f troca de sinal.

Veja o grafico (fig. 2.5), pagina 48, e observe o ponto x2. Na figura estousalientando que a raiz da equacao do primeiro grau que representa a reta secante,e uma aproximacao da raiz de f .

Queremos obter a raiz da funcao do primeiro grau cujo grafico passa nopontos

(a, f(a)), (a + ∆x, f(a + ∆x)) (2.35)

entao precisamos da equacao da reta que passa por estes dois pontos. Relem-brando a equacao da reta que passa num ponto com coeficiente angular m dadochegamos a equacao que nos interessa:

m = f(a+∆x)−f(a)a+∆x−a = f(a+∆x)−f(a)

∆x = ∆af∆x (2.36)

y − f(a) = m(x − a) (2.37)

fazendo y = 0 em y − f(a) = m(x − a) (2.38)

y = 0 ⇒ x − a = −f(a)m (2.39)

s0 = a − f(a)m (2.40)

a raız aproximada que estamos procurando e

s0 = a − f(a)

m(2.41)

4Nao se esqueca de que chegamos ate aqui dentro de um programa que fez uma var-redura apenas testando troca de sinal e agora vamos entrar numa sub-rotina chamadaprocura raiz secante()

Page 32: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 50

Nao se perca com a mudanca de notacao.Chegamos aqui, olhe a figura (fig. 2.5), pagina 48, porque sabemos que existeum ponto designado por x2 que e a raiz exata que gostariamos de encontrar.Resolvemos uma equacao do primeiro grau para encontrar a raız da reta secantee estamos chamando s0 ao primeiro ponto de uma sucessao de pontos queesperamos que convirjam para a raız

sn → x2 (2.42)

x2 e o limite da sucessao sn

Ao iterarmos este processo vamos criar a sucessao (sn) referida acima. Pre-cisamos re-escrever as equacoes acima alterando a notacao de forma a sermosconduzidos a uma expressao (matematica) adequada. Depois vou transformaras equacoes matematicas no algoritmo computacional que e muito mais simples,e se voce preferir (nao deve) pode saltar direto para o algoritmo computacional.

Repetindo (e alterando a notacao) temos:

a0 = a; b0 = a0 + ∆x; m0 =f(b0) − f(a0)

b0 − a0(2.43)

y − f(a0) = m0(x − a0) (2.44)

y = f(a0) + m0(x − a0) (2.45)

y = 0 ⇒ s0 − a0 = −f(a0)m0

(2.46)

(2.47)

uma raız aproximada inicial

s0 = a0 −f(a0)

m0(2.48)

a unica modificacao foi que designamos por m0 o coeficiente angular da retasecante no intervalo onde (o programa) detectou a troca de sinal, e usamos a0, b0

para representar os extremos do intervalo inicial, porque isto vai uniformizar anotacao.

Leia com calma e vera que e verdade, nao foi para complicar, foi para tornarmais claro (padronizar).

Porque agora vamos considerar um segundo intervalo, um sub-intervalo desteprimeiro.

Veja a construcao do algoritmo.

• O ponto s0 associado ao coeficiente angular m0, divide o intervalo

[a0, b0]

em dois sub-intervalos[a0, s0] , [s0, b0] (2.49)

CAPITULO 2. RAIZES APROXIMADAS 51

• certamente ha uma troca de sinal em um destes intervalos porque haviatroca de sinal no intervalo primitivo

[a0, b0]; (2.50)

ProblemaPode haver mais de uma troca de sinal e isto pode representar um compli-cador para o algoritmo, o programa pode simplesmente se perder em buscasindefinidas... Logo diremos como podemos controlar este problema.Mas vamos supor a situacao mais benignaa e para depois procurar melhoresalgoritmos.

ae a tecnica que estamos utilizando, montamos a teoria usando os casos simples, depoisiremos testa-la e procurar algoritmos mais robustos

• Testamos a troca de sinal e no intervalo onde ela se verificar, tracamos5

nova reta secante usando os extremos para determinar agora o ponto s2

da sucessao:

a0 = a; b0 = b; (2.51)

Se f(a0)f(s0) ≤ 0 (2.52)

entao b1 = s0; a1 = a0; (2.53)

senao b1 = b0; a1 = s0; (2.54)

m1 = f(b1)−f(a1)b1−a1

(2.55)

y = r1(x) = f(a1) + m1(x − a1)y=0⇒ (2.56)

⇒ x = s1 = a1 − f(a1)m1

(2.57)

• iteramos este processo para encontrar

an, bn, mn = f(bn)−f(an)bn−an

(2.58)

y = rn(x) = f(an) + mn(x − an)y=0⇒ (2.59)

⇒ x = sn = an − f(an)mn

(2.60)

ate que o teste|f(sn)| < ǫ

em que ǫ e a precisao com que desejamos calcular a raız.

5nao “tracamos” nada, apenas calculamos a raız da equacao do primeiro grau

Page 33: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 52

Observacao 3 Voce pode fazer isto com calc

A linguagem de programacao calc e injustamente chamada de C interpre-tado, e uma outra linguagem de programacao que tem uma precisao infinita,coisa que C nao tem. Mas se parece com C e pode servir para fazer prototiposde programas em C.

Veja uma sessao para obter a sucessao de raızes de uma funcao. Depoisque voce rodar o script do calc, volte e releia as contas matematicas que vaoda equacao (51) ate a equacao (60) a respeito das quais voce, provavelmente,pensou que o autor estava complicando, para ver que e, exatamente, o que amaquina precisa para “pensar” corretamente e lhe dar os resultados certos.

define f(x) return sin(1 +x/4)*(x+1)

x = -10

delta = 0.7

while (f(x)*f(x+delta) >= 0)

x = x + delta;

print x,;

print x-delta, x ;

## o resultado e o intervalo [-5.1 ,-4.4]

a0 = -5.1;

b0 = -4.4;

m0 = (f(b0)-f(a0))/(b0 - a0);

s0 = a0 - f(a0)/m0;

print s0;

-4.09298252718108963004

if (f(a0)*f(s0) <= 0 ) b1 = s0; a1 = a0; else a1 = s0; b1 = b0;;

m1 = (f(b1)-f(a1))/(b1 - a1);

s1 = a1 - f(a1)/m1;

print s1;

-4.01048304495901701641

if (f(a1)*f(s1) <= 0 ) b2 = s1; a2 = a1; else a2 = s1; b2 = b1;;

m2 = (f(b2)-f(a2))/(b2 - a2);

s2 = a2 - f(a2)/m2;

print s2;

-4.00121371137763323854

if (f(a2)*f(s2) <= 0 ) b3 = s2; a3 = a2; else a3 = s2; b3 = b2;;

m3 = (f(b3)-f(a3))/(b3 - a3);

s3 = a3 - f(a3)/m3;

print s3;

-4.00014094678986900281

CAPITULO 2. RAIZES APROXIMADAS 53

if (f(a3)*f(s3) <= 0 ) b4 = s3; a4 = a3; else a4 = s3; b4 = b3;;

m4 = (f(b4)-f(a4))/(b4 - a4);

s4 = a4 - f(a4)/m4;

print s4;

-4.00001637370536391669

A notacao matematica tem que passar por pelas quatro sucessoes

(an)n, (bn)n, (mn)n, (sn)n

que irao definir os novos sub-intervalos que iremos encontrar.A notacao computacional nos permite calcular as raızes, com um programa,

e a notacao matematica nos permite provar que ela existe.Sao duas coisas distintas e somente podemos rodar programas se pudermos

provar que eles chegarao em algum resultado. O contrario e inocuo.No capıtulo 0 vamos discutir melhor os metodos matematicos que determi-

nam as raızes dentro de um quadro mais geral. Todos os metodos que estamosusando aqui sao recursivos e o o capıtulo 0 vai discutir recursividade. Claro,voce pode, e deve, chegar ate o o capıtulo 0 agora para entender melhor o queestamos fazendo e comecar a ler sobre este outro assunto. O livro esta departa-mentalizado por uma questao de organizacao, mas voce nao precisa ficar presoa estas paredes.

Vou transformar o metodo matematico no algoritmo computacional, atemesmo porque voce podera rodar o algoritmo e isto lhe servira de motivacaopara entender melhor o metodo matematico.

O algoritmo do metodo da secante

Comece analisando a figura (2.6) pagina 54, que e um fluxograma, um planeja-mento visual que fazemos antes de escrever um programa.

No centro da figura (2.6) voce pode observar um caminho, indicado pelasseta que sai do “diamante” que representa o teste de parada do programa

|f(a)| > epsilon (2.61)

que e uma mistura de Matematica e computacao.Numa linguagem de computacao deveria6 estar

(abs(f(a)) > epsilon)

Tambem nao aparecem sn porque numa linguagem de programacao os valoresse encontram em memorias cujos enderecos estao associados a variaveis, e e istoque o programador deve ver os nomes das variaveis (e nao o endereco onde osdados estao guardados).

6em Pascal a funcao valor absoluto e abs(), em C e fabsf()

Page 34: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 54

s é a raíz de r

[a,b]f troca de sinal em

| f(a) | > epsilon

VF

a é a raízaproximada

com erro epsilon

Método da secante

m = (f(b)−f(a))/(b−a)

r(x) = f(a) + m(x − a)

f(s)f(a)<=0V

F

b=s

a=s

Figura 2.6: Fluxograma - metodo da secante

• Entramos no algoritmo quando descobrimos que ha uma troca de sinal nointervalo [a, b] e calculamos, sucessivamente, m, r(x), s.

• Somos levados agora ao teste que vai decidir em que intervalo ha novatroca de sinal

f(s)f(a) <= 0 (2.62)

• Um novo intervalo, onde se verifica a troca de sinal, e calculado:

– O teste resultando em verdadeiro o programa vai colocar o valor sna memoria apontada pela variavel b.

– Se o teste resultar em falso o programa vai colocar o valor s namemoria apontada pela variavel a.

Neste escolha a variavel que nao foi usada fica com o seu valor primitivo.

• Este novo intervalo continua sendo designado por [a, b] e se o teste deparada do algoritmo, na equacao (62), resultar em verdadeiro novo ciclovai ser efetuado. Se for falso significa que a precisao esperada ja foiatingida e portanto o algoritmo para.

CAPITULO 2. RAIZES APROXIMADAS 55

• O programa escolhe quem vai ser indicada como raız aproximada, se e a,ou s ou b, ou como em alguns dos nossos programas

a + b

2

pura questao de gosto do programador. Se o programador for mais exi-gente aplicaria o teste da (62) a estes quatro candidatos para escolheraquele que ofereca uma precisao maior.

Matematica do Metodo da secante

Vamos repetir de forma suscinta, tanto os calculos matematicos como o algo-ritmo computacional nesta secao e na proxima.

Para construir a formulacao matematica do metodo, vou mais uma vez re-tomar a sequencia de equacoes em que calculei a raiz, alterando novamente anotacao. Repetindo (e alterando a notacao) temos:

[a, a + ∆x] = [a0, b0] (2.63)

∆x0 = b0 − a0 (2.64)

m0 = f(b0)−f(a0)∆x0

(2.65)

y − f(a0) = m0(x − a0) (2.66)

y = f(a0) + m0(x − a0) (2.67)

y = 0 ⇒ s0 = a0 − f(a0)m0

(2.68)

a primeira versao da raız aproximada que achamos foi

s0 = a0 −f(a0)

m0(2.69)

Agora determinamos em qual dos sub-intervalos ha troca de sinal (se houvernos dois7, o programa tera que se lembrar disto para fazer nova busca no outrointerval):

f(a0)f(s0) ≤ 0 ; f(s0)f(b0) ≤ 0 (2.70)

Vou simplificar a redacao sob a suposicao de que apenas um destes produtose negativo (mas fica claro que e uma simplificacao e que o programa tem que irem busca da outra possibilidade).

se (f(a0)f(s0) ≤ 0)[a1, b1] = [a0, s0] (2.71)

senao [a1, b1] = [s0, b0] (2.72)

7observe que isto significa que ha mais de uma raiz no intervalo

Page 35: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 56

o que nos levara a definir m1 e s1

[a1, b1] (2.73)

∆x1 = b1 − a1 (2.74)

m1 = f(b1)−f(a1)∆x1

(2.75)

y − f(a1) = m1(x − a1) (2.76)

−f(a1) = m1(x1 − a1) (2.77)

s1 = a1 − f(a1)m1

(2.78)

(2.79)

achamos assim a segunda versao da raız aproximada

s1 = a1 −f(a1)

m1(2.80)

Podemos provar, usando inducao finita, que

sn = an − f(an)

mn(2.81)

definindo as quatro sucessoes,

ak, bk, mk =f(bk) − f(ak)

bk − ak, sk = ak − f(ak)

mk(2.82)

Algoritmo do Metodo da secante

A notacao computacional e mais simples. Vamos usar a mesma tecnica, copiandoa equacao e alterando a notacao. Repetindo (e alterando a notacao) temos.

Simplesmente chamamos de [a, b] o intervalo onde foi detectada a troca desinal

[a, b] e o intervalo onde ha troca de sinal (2.83)

m = f(b)−f(a)b−a

(2.84)

y − f(a) = m(x − a) (2.85)

y = 0 ⇒ x − a = −f(a)m (2.86)

x = a − f(a)m (2.87)

a raız aproximada que estamos procurando, no primeiro passo e

x = a − f(a)

m(2.88)

e agora tomamos a decisao sobre a nova troca de sinal

CAPITULO 2. RAIZES APROXIMADAS 57

f(a)f(x) ≤ 0 ⇒ [a, b] = [a, x] (2.89)

f(x)f(b) ≤ 0 ⇒ [a, b] = [x, b] (2.90)

e seguimos no laco com as variaveis tendo assumido os novos valores. Serapreciso um condicional para que o processo pare. Isto pode ser feito de duasmaneiras:

• com um contador estipulando-se o numero maximo de iteracoes;

• testando em cada passo a precisao da raiz aproximada obtida.

O programas raizes013.c faz isto e mais a frente vamos oferecer-lhe umalista de exercıcios voltada para fazer experimentos com o programa.

2.4 A raiz num ponto de tangencia

Vamos agora estudar como podemos descobrir a raiz quando ela for um ponto em que afuncao tangencia o eixo OX. O metodo consiste em usar a troca de sinal da derivada. Voucomecar mostrando alguns exemplos graficos para ilustrar as dificuldades e como podemossair delas.

Para lhe dar uma visao da necessidade de um pouco mais de teoria, comeceresolvendo os exercıcios seguintes sobre os quais eu farei comentarios em seguida.

A figura (fig. 2.5) pagina 48 e a referencia para as experiencias que vamoscomecar fazendo, nela ha uma raiz num ponto de tangencia do grafico com oeixo OX e o objetivo e produzir um programa que consiga descobrir esta raiz.

Exercıcios 7 Usando raizes011.c

1. Edite o programa raizes011.c e escolha a funcao

f(x) = (x + 3)(x + 3)(x − 2)

que pode estar desligada (com o sımbolo de comentario) na versao quevoce tiver do programa. Depois compile e rode o programa com os valorespre-definidos que ele tem (de “enter” em todas as perguntas do programa).Analise o resultado.

2. Rode novamente o programa usando os valores pre-determinados, entre-tanto responda com o valor 0.1 para a precisao ǫ (quando o programasolicitar o valor da variavel epsilon). Observe que o resultado ficou di-ferente.

3. Rode novamente o programa usando os valores pre-determinados, mas es-colha um valor grande para a norma da particao. Sugestao ∆x = 1.

Page 36: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 58

Comentando os resultados do programa nas experiencias que voce fez usandoos valores pre-deteminados no programa.

• Quando ǫ = ∆x o programa encontrou diversas raızes que na verdade re-presentam a mesma raiz exata x = −3. Veja uma replica dos resultadosdo programa captados8 por um editor de textos:

Forneca-me o intervalo [a,b] para busca de raizes:

a =

b =

Forneca-me o passo delta da malha para a busca:

Sugest~ao 0.01 < delta < 0.5

delta =

Forneca-me o erro epsilon (modulo maximo) :

Sugest~ao 0.01 < epsilon < 0.5

epsilon =

Sua busca de raızes no intervalo [-5.000000 , 5.000000]

Precis~ao da malha: 0.100000

Erro (modulo maximo): 0.100000

=================================================

Aperte <enter> para continuar

Raız provavel da func~ao no intervalo

[-3.100002,-3.000002]

valor de f no ponto -3.100002 e 0.051002

valor de f no ponto -3.000002 e 0.000000

Raız provavel da func~ao no intervalo

[-3.000002,-2.900002]

valor de f no ponto -3.000002 e 0.000000

valor de f no ponto -2.900002 e 0.048998

Raız provavel da func~ao no intervalo

[-2.900002,-2.800002]

valor de f no ponto -2.900002 e 0.048998

valor de f no ponto -2.800002 e 0.191996

Estas raızes representam todas a raiz x = -3 - sao valores proximos de −3que o programa captou. Achou tambem a raiz x = 2

Raız provavel da func~ao no intervalo

[1.999998,2.099998]

valor de f no ponto 1.999998 e 0.000057

valor de f no ponto 2.099998 e -2.600939

• Quando ǫ << ∆x lhe sugeri no exercıcio que voce usasse 0.1 o programaachou uma representacao para cada uma das raızes existentes:

8o editor de textos joe, permite que voce rode programa dentro dele e consequentementepode captar os resultados do programa

CAPITULO 2. RAIZES APROXIMADAS 59

Forneca-me o intervalo [a,b] para busca de raizes:

a =

b =

Forneca-me o passo delta da malha para a busca:

Sugest~ao 0.01 < delta < 0.5

delta = 0.3

Forneca-me o erro epsilon (modulo maximo) :

Sugest~ao 0.01 < epsilon < 0.5

epsilon = 0.1

Sua busca de raızes no intervalo [-5.000000 , 5.000000]

Precis~ao da malha: 0.300000

Erro (modulo maximo): 0.100000

=================================================

Aperte <enter> para continuar

Raız provavel da func~ao no intervalo

[-2.900000,-2.600000]

valor de f no ponto -2.900000 e 0.049000

valor de f no ponto -2.600000 e 0.736001

Raız provavel da func~ao no intervalo

[1.900000,2.200000]

valor de f no ponto 1.900000 e 2.400998

valor de f no ponto 2.200000 e -5.408001

Vamos agora continuar as experiencias agora usando o programa raizes012.c

Exercıcios 8 Experiencias com raizes012.c

1. Leia o programa raizes012.c e verifique se a funcao escolhida e f(x) =(x + 3)(x + 3)(x − 2). Se nao for selecione9 esta funcao cujo grafico esemelhante ao da figura (fig. 2.5).

2. Leia o programa raizes012.c. Ele e uma alteracao de raizes011.c.Leia tambem os comentarios dentro do programa. Compile e rode o pro-grama usando os valores predefinidos no programa. O programa escolhe,ele mesmo, o valor da precisao ǫ, verifique isto. Veja o comentario (41)do programa, veja como foi calculado ǫ.

3. O programa, como os valores pre-definidos, encontrou as raızes −3, 2.Teste o programa com valores diferntes para a norma da malha.

4. Rode raizes012.c alterando a equacao de f para f(x) = (x − 1)2(1 +7(x + 1)2). Observe que esta equacao ja se encontra no programa, masdesligada por um comentario. Basta liga-la.

9voce pode “ligar ou desligar” uma expressao colocando ou apagando o sımbolo de co-mentario // na frente, nao precisa apagar

Page 37: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 60

5. Teste o programa com outras equacoes e nestes casos altere o intervalo debusca. Isto pode ser feito dentro do programa ou respondendo as perguntasque o programa fizer.

Vamos entender o metodo utilizado no programa raizes012.c. Num pontode tangencia com o eixo OX a derivada troca de sinal e podemos nos aproveitardisto para encontrar a raiz evitando a perigosa comparacao

|f(x)| < ǫ. (2.91)

Analise a figura (fig. 2.7), pagina 60. Vamos tirar algumas informacoes destafigura.

• No ponto a temos uma raız do tipo tangente,

• e marcamos dois pontos, a−, a+, anterior e posterior10, ao ponto a,

• fizemos os graficos das retas tangentes em (a−, f(a−)), e (a+, f(a+)).

f

a

a− a+

reta tangente é positivo

O coeficiente angular da reta tangente é negativo

O coeficiente angular da

Figura 2.7: Num ponto de tangencia, tipo parabolico

• Voce pode ver que antes e depois do ponto de tangencia, o coeficienteangular da reta tangente tem sinais diferentes:

sinal(∆a−(f)) 6= sinal(∆a+(f)) (2.92)

sinal(∆f∆x

|a−) 6= sinal(∆f∆x

|a+) (2.93)

10a−, a+ sao notacoes padrao em Matematica para representar pontos anterior e posteriorao ponto a

CAPITULO 2. RAIZES APROXIMADAS 61

• Como ∆x > 0 entao11 podemos comparar apenas os numeradores12. Ana-lisaremos apenas os produtos dos numeradores, o produto de dois valoressucessivos de f ao longo da varredura. Estamos evitando os quocientes:

f ′(a) ∗ f ′(a + ∆) < 0 (2.94)

para verificar se e um ponto de tangencia de tipo parabolico.

Se for uma tangencia do tipo “ponto de inflexao” o programa continuarafazendo o teste de troca de sinal de f .

Caracterizamos estes dois tipos de raızes, veja a figura (fig. 2.5), como

• raiz tangente, e o que acontece no ponto x1 em que o grafico da funcaotangencia o eixo OX;

• raiz secante, e o que acontece no ponto x2 em que o grafico da funcaocorta o eixo OX. Fica incluıda, aqui o caso de tangente com ponto deinflexao.

• raiz tangente - num ponto de inflexao vamos trata-lo como um ponto desecancia porque nele a funcao troca de sinal.

Vamos agora observar o que acontece no grafico representado na figura (fig.2.8) pagina 62,

Neste grafico a figura nos mostra dois pontos em que a derivada se anula,mas apenas o ponto x2 e o que nos interessa.

Entao foi preciso incluir no programa raizes012.c um teste complementarao teste de troca de sinal da derivada.

Tanto em x1, como em x2, na (fig. 2.8), a derivada troca de sinal. Masapenas em x2 a funcao e pequena.

Este e o resultado do exercıcio em que lhe foi pedido que rodasse o programacom a funcao

f(x) = (x − 1)2(1 + 7(x + 1)2).

O grafico desta funcao se assemelha ao grafico na figura (fig. 2.8). Voce podeobter este grafico usando Gnuplot, nao se esqueca de usar o comando

set xrange [-4:3]

para instruir Gnuplot a considerar o grafico sobre o intervalo [−4, 3] afim de quevoce consiga ver alguma coisa interessante. Se voce nao fizer isto ele vai usar ointervalo padrao, [−10, 10].

Vimos assim o metodo para “separar” estas duas situacoes dentro de umaanalise automatica (dentro de um programa). O algoritmo ira fazer os dois testesem cada ponto da varredura, ira aceitar o ponto x2 como uma raiz aproximadae descartar o ponto x1. Estamos nos referindo ainda a figura (fig. 2.8).

Observe que terminamos por voltar a usar a desigualdade, agora apenas emuma forma complementar. Assim ela funciona.

11∆x nao precisa ser positivo, mas tradicionalmente consideramos assim para que o seuvalor coıncida com o comprimento do intervalo considerado

12aqui voce tem a tecnica prometida no capıtulo das derivadas, em vez de usarmos derivada,estamos usando derivada aproximada

Page 38: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 62

x x1 2

A derivada se anulano ponto x mas ele não1é uma raiz

Aqui a derivada se anula

e é também uma raiz

Figura 2.8: Quando a derivada e zero

Exercıcios 9 1. Leia o programa raizes013.c e identifique onde o pro-grama verifica a troca de sinal de f e da derivada.

2. Rode o programa com cada uma das tres funcoes definidas no programa.Com os dados pre definidos os resultados nao sao muito bons, aumente aprecisao da malha em experiencias sucessivas.

3. Defina novas funcoes para testar o programa.

2.5 O metodo da tangente

Vamos estudar o metodo da tangente para determinacao aproximada da raız de uma funcao.Evite confundir-se, nas secoes anteriores falamos de “raiz (do tipo) tangente”, sao as raızesmultiplas, em que o graf(f) e tangente ao eixo OX. Agora vamos discutir o metodo datangente para determinar raızes.E natural observar, pese o trocadilho, que o metodo da tangente serve para encontrar raızes(do tipo) tangente. . .Sao duas coisas diferentes os tipos como classificamos as raizes, tangente, secantes e osmetodos classicos, com estes nomes, para determinar raızes, metodo da tangente, que vamosestudar agora e metodo da secante que usamos rapidamente na secao anterior. Comecaremospor mostrar as limitacoes do metodo. A crıtica se encontra no contexto, ao iniciarmos ocapıtulo chamamos sua atencao para a dificuldade de resolver o problema que nos ocupaaqui, estamos apenas ressaltando, em cada momento as dificuldades que aparecem.

O plano do trabalho:

CAPITULO 2. RAIZES APROXIMADAS 63

• Comecaremos mostrando um exemplo em que o metodo funciona,

• depois um exemplo em que ele nao pode funcionar.

• Vamos transformar o metodo em um programa de computador e encontraralgumas raızes. Voce podera rodar o programa e experimentar o resultado.

• Finalmente vamos discutir em que condicoes (hipoteses) o metodo da tan-gente pode ser aplicado e um programa de computador em que ele e usadointensivamente junto com o metodo da secante.

2.5.1 Como funciona o metodo das tangentes

Veja as figuras (fig. 2.9) pagina 63 que nos mostram como funciona o metodo.

f

raíz exata

raíz aproximada obtida por uma tangente

A raíz exata

é esta

Raízes aproximadaspor retas tangentes

f

Figura 2.9: Uma sequencia de retas tangentes...

Page 39: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 64

Com uma sequencia de retas tangentes vamos encontrar uma sequencia depontos x0, x1, . . . que se aproximam de uma raız, a sequencia converge para araız da funcao f .

Descricao do metodo:

• Ponto inicial Escolhemos um ponto inicial x0 e nele tracamos uma retatangente ao grafico de f ;

• Ponto inicial o metodo somente se aplica em raızes do tipo secante oudo tipo tangente portanto temos que encontrar um intervalo em que hajatroca de sinal de f ou de f ′. O ponto inicial a0 e um dos extremos desteintervalo de troca de sinal;

• Segundo ponto Escrevemos a equacao da reta tangente em (a0, f(a0)) ecuja raiz encontramos, este e o ponto s0 da sucessao;

• Iteramos o processo, tracando a reta tangente ao grafico de f no ponto(s0, f(s0)), resolvendo a nova equacao do primeiro grau correspondente aesta nova reta tangente encontrando assim s2, s3, . . . , sn

• A sucessao (sn)n>0 converge para uma raiz de f

sn → s a raız exata (2.95)

f(sn) → f(s) = 0 (2.96)

f(sn) ≈ 0 (2.97)

e sn e uma raiz aproximada de f .

No “algoritmo”, que acabamos de descrever, usamos a expressao “escolhemosum ponto inicial”. Estamos fazendo uso de uns do metodos mais “controversiais”da Matematica, a “escolha”. Controversial porque funciona e tambem porqueenvolve uma dos problemas abertos da Matematica, o axioma da escolha.

Como escolher um elemento proximo de um ponto desconhecido ? Em algu-mas circunstancias podemos provar que o metodo funciona.

2.5.2 E quando o metodo nao funciona ?

Mas vamos logo ver quando deixa de funcionar. Na figura (fig. 2.10) pagina 65,

• Consideramos a reta tangente no (A, f(A)); A raiz da reta tangente em Ae B;

• Esta reta tangente tem como raiz o ponto x = B

• Consideramos entao a reta tangente no ponto (B, f(B)) corta o eixo OXno ponto x = A e a raiz da reta tangente em B e A ...

CAPITULO 2. RAIZES APROXIMADAS 65

f

A B

A raiz da reta tangente em A é B

a raiz da reta tangente em B é A ...

Figura 2.10: Duas tangentes se reproduzindo indefinidamente

Vemos que caimos num circulo vicioso. O programa que fizermos caira emloop infinito.

Obviamente este e um exemplo raro de acontecer, ele apenas mostra queo risco existe e uma intervencao do usuario do programa pode prevenir contraeste acontecimento com uma troca do ponto inicial. No intervalo que a figura(2.10) exibe o problema, podemos escolher um ponto inicial diferente de A ouB para evitar o ciclo vicioso.

E preciso incluir no programa um teto de operacoes que ao ser atingido semsucesso o programa sugira ao usuario alterar um pouco um dos extremos dointervalo inicial. Voce pode ver na figura (fig. 2.10) pagina 65 que uma altercaono valor de A faz com que a sucessao dos zeros das retas tangentes convirja parauma das raızes.

2.5.3 Funciona com precisao, se funcionar

• Considere o ponto a escolhido para tracarmos a reta tangente por (a, f(a))

• A equacao da reta tangente sendo

a0 = a = s0 (2.98)

y − f(a0) = f ′(a0)(x − a0) (2.99)

y = 0 ⇒ s0 = a0 − f(a0)f ′(a0)

= T (a0) = T (s0) (2.100)

s1 = s0 − f(s0)f ′(s0)

= T (s0) s2 = s1 −f(s1)

f ′(s1)= T (s1) = T (T (s0))(2.101)

(2.102)

Page 40: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 66

• podemos ver que a lei de formacao dos elementos da sucessao e

sn = sn−1 −f(sn−1)

f ′(sn−1)= T n(s0) (2.103)

em que na equacao (103) a “potencia” aplicada no operador T representarepeticao do operador aplicado no ponto inicial. Seria interessante fazeruma primeira leitura do capıtulo 0, se voce ainda nao tiver feito isto, parareconhecer que estamos lidando com expressoes recursivas.

Assim,

– cada nova raız da funcao do primeiro grau tangente, se expressa sem-pre da mesma maneira usando a anterior,

– a “potencia” da “transformacao” T , indica o numero de vezes queela foi aplicada ao ponto inicial a, funcao de funcao.

– E o que chamamos de iteracoes de T . Na equacao (eq. 103) se estaindicando que calculamos a terceira iterada de T .

• Falta-nos provar que a sucessao assim obtida se aproxima da raız exata,ou tem algum limite.

Este e um exemplo de recursividade, semelhante ao que vamos usar no calculode raızes, na busca binaria. .

Vamos discutir recursividade no capıtulo 0.O metodo Matematico para obter demonstracoes passa pela abstracao das

expressoes. Suponhamos que a sucessao produzida pelas iteradas de T sejaconvergente (tenha limite) e chamemos este limite de b.

Como T e uma funcao contınua em qualquer intervalo em que a derivada def nao se anule, (vamos admitir esta hipotese) temos

xn+1 = T (xn) −→ b (2.104)

como T e contınua T (b) = b = b − f(b)f ′(b)

(2.105)

b = b − f(b)f ′(b)

⇒ f(b)f ′(b)

= 0 (2.106)

como por hipotese f ′(b) 6= 0 entao f(b) = 0 (2.107)

ou seja, a hipotese de que a sucessao seja convergente nos conduz a que o limiteseja uma raız de f .

Uma consequencia dos calculos acima e que

T (b) = b. (2.108)

Quando isto acontece dizemos que o ponto b e um ponto fixo da funcao TVamos obter uma condicao suficiente para que T tenha um ponto fixo.

Comecando por relembrar a aproximacao linear dada pela derivada, da qualextrairemos a condicao que desejamos.

CAPITULO 2. RAIZES APROXIMADAS 67

T (b) − T (a) = T ′(a)(b − a) + o(b − a) (2.109)

|x2 − x1| = |T (x1) − T (x0)| = |T ′(x0)||x1 − x0| + o(|x1 − x0|) (2.110)

|x3 − x2| = |T (x2) − T (x1)| = |T ′(x1)||x2 − x1| + o(|x2 − x1|) (2.111)

· · · (2.112)

|xn − xn−1| = |T (xn−1) − T (xn−2)| = (2.113)

= |T ′(xn−2)||xn−1 − xn−2| + o(|xn−1 − xn−2|) (2.114)

Na (eq. 109) aplicamos a formula de aproximacao linear pela derivada.Na (eq. 110) voltamos a usar a mesma aproximacao, mas agora, e sucessiva-

mente, nas seguintes, estamos aplicando aos elementos que foram sendo obtidospela iteracao do metodo das tangentes.

Como queremos que a sucessao seja convergente, e portanto que a distanciaentre dois novos pontos seja cada vez menor, vamos impor uma semelhanca comas series geometricas.

Vemos que a cada dois novos pares de pontos da sucessao surge como multi-plicador T ′(a) em que a e um dos pontos anteriores. Basta-nos que a derivadade T seja menor do que 1 para a comparacao com as series geometricas tenhasucesso.

Esta e a hipotese que precisamos.Derivando T quando f for um polinomio de grau maior do que 2, temos

T (x) = x − f(x)f ′(x)

(2.115)

|T ′(x)| = | f(x)f ′′(x)f ′(x)2 | (2.116)

(2.117)

A fracao racional que aparece como derivada de T tem polinomios de mesmograu no denominador e no denominador: 2n − 2 em que n e o grau de f comtermos lider igual

n(n − 1)a2nx2n−2 ; n2a2

nx2n−2 (2.118)

respectivamente, no numerador e no denominador. Portanto, exceto no pontosem que o denominador se anule e numa vizinhanca destes pontos, a derivadae menor do que 1 em modulo o que fara que com que o metodo da tangenteproduza iteradas que convirjam para uma raız, se alguma houver.

Demonstramos assim

Teorema 1 Metodo da tangenteSe f for uma funcao polinomial de grau maior do que 2, as iteradas de

T (x) = x − f(x)f ′(x) convergem para uma raız de f

Infelizmente nao podemos aplicar o metodo arbitrariamente. Ele tem que sermonitorado, ja vimos um exemplo grafico mostrando que nem sempre o metodofunciona.

Page 41: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 68

Exemplo 4 Iteradas do metodo da tangenteDentro do Gnuplot voce pode executar a sequencia de comandos abaixo. O

resultado sera o grafico das sucessivas retas tangentes cujas raızes se aproximamda raız x = −1 de

f(x) = x3 + x2 + x + 1

set xrange [-3:3]

f(x) = x**3 + x**2 + x + 1

df(x) = 3*x**2 + 2*x + 1

a = -2.0

reta(x) = f(a) + df(a)*(x-a)

plot reta(x),f(x),0

pause -2

a = a - f(a)/df(a) // calculo de novo valor para a

plot reta(x),f(x),0

pause -2

a = a - f(a)/df(a) // calculo de novo valor para a

plot reta(x),f(x),0

pause -2

a = a - f(a)/df(a) // calculo de novo valor para a

plot reta(x),f(x),0

pause -2

a = a - f(a)/df(a) // calculo de novo valor para a

plot reta(x),f(x),0

pause -2

a = a - f(a)/df(a) // calculo de novo valor para a

plot reta(x),f(x),0

pause -2

Os valores de a para seis iteracoes, sao:

-2

-1.44444444444444444444

-1.13057124921531701193

-1.01497995228090965490

-1.00022106301976068486

-1.00000004885805680258

onde vemos o valor −1.00000004885805680258 para raız aproximada de

f(x) = x3 + x2 + x + 1; f(−1) = 0 (2.119)

Veja outra iteracao, em que usamos como ponto inicial x = −20

CAPITULO 2. RAIZES APROXIMADAS 69

-20

-13.43755383290267011197

-9.05962558919570544190

-6.13716679398553077204

-4.18447916859825334681

-2.87926553135386543847

-2.01119102134060700997

-1.45135929223981982374

-1.13389377376757093773

-1.01570113608729869728

-1.00024268578025712329

-1.00000005888209635796

e vemos que novamente o algoritmo produz uma sucessao convergindo para araiz x = −1. Estas duas sequencias foram obtidas com calc e o programae o seguinte em que uma funcao recursiva, principal() esta se chamando asi propria enquanto o parametro p for estritamente positivo. Quando p = 0 oprocesso para. Copie esta sequencia em um arquivo, por exemplo, raizes.calce depois chame

calc < raizes.calc

e voce podera repetir a experiencia feita acima. Troque a equacao da funcaopara calcular raızes de outras funcoes.

define principal(a,p)

if (p) printf("%f \n",a);principal(T(a),p-1);

define f(x)return x**3 +x**2 +x +1;

define df(x)return 3*x**2 + 2*x + 1;

define T(x) return x - f(x)/df(x);

principal(-2,10);

quit;

Na penultima linha se encontra o comando que bota o programa para rodar:principal(-2,10). O primeiro parametro, “a = −2” e o ponto inicial, e osegundo parametro, “p = 10” e o numero de iteracoes que desejarmos.

Troque a equacao de f e de sua derivada df e repita a experiencia com outrafuncao. Logo no primeiro passo voce vera se o processo conduz, ou nao a algumaraız.

Experimentef(x) = x2 + 1

Page 42: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 70

que nao tem raızes reais. Use um numero de pequeno de iteracoes, 10 nomaximo.

2.6 Busca binaria

Vamos estudar aqui o metodo busca binaria para determinacao de raızes.

A busca binaria e um metodo matematico antigo, o matematico Dedekindo utilizou para definir numeros reais, os chamados cortes de Dedekind, queconsistem em dividir a reta racional em duas semi-retas, numa “se encontra oponto”13 (numero real desejado) e assim sucessivamente vai sendo dividido oconjunto Q dos numero racionais ate se obter uma aproximacao desejada de umnumero real (ou uma sucessao convergente).

Vamos usar esta ideia para produzir uma sucessao de raızes aproximadasconvergindo para uma raiz de f .

Precisamos encontrar um intervalo em que f troque sinal e o processo emuito semelhante ao do metodo da reta secante.

Descricao matematica do metodo:

• Suponha que que no intervalo [a, b] = [a0, b0]

Hipotese 1 Existencia de raız em um subintervalo

– f troque de sinal,

– ou f ′ troque de sinal, e f seja pequena.

Este intervalo pode ser obtido com uma varredura que pare quando umadestas duas condicoes for satisfeita.

• Selecione o ponto medio do intervalo

s0 =b0 − a0

2(2.120)

e repita o teste 1 para descobrir em qual das duas metades esta a raızprocurada e defina

[a0, s0] = [a1, b1] se hipotese for verdadeira[s0, b0] = [a1, b1] se hipotese for verdadeira

(2.121)

s1 = b1−a1

2 (2.122)

13eta erro logico... se o ponto estivesse aı nao seria uma reta racional...

CAPITULO 2. RAIZES APROXIMADAS 71

• Itere o processo para obter o proximo intervalo;

O resultado deste processo e uma sucessao de intervalos cuja medida serasempre a metade do anterior, tendo partido de um intervalo de medida

r = b − a = b0 − a0

b − a = b0 − a0 = r (2.123)

m([a0, b0]) = r (2.124)

m([a1, b1]) = r2 (2.125)

... (2.126)

m([an, bn]) = r2n → 0 (2.127)

sendo esta uma convergencia muito rapida porque e dominada por progressaogeometrica de razao 1

2 . Veja abaixo o poder decrescente de uma progressaogeometrica num calculo executado por calc

C-style arbitrary precision calculator (version 2.11.10.1)

Calc is open software. For license details type: help copyright

[Type "exit" to exit, or "help" for help.]

; define f(n,r) return r*power(1/2, n);

f(n,r) defined

; r = 3

; k = 10

; for(n=0; n<= k; n++) printf("%d --> %f \n", n, f(n,r));

0 --> 3

1 --> 1.5

2 --> 0.75

3 --> 0.375

4 --> 0.1875

5 --> 0.09375

6 --> 0.046875

7 --> 0.0234375

8 --> 0.01171875

9 --> 0.005859375

10 --> 0.0029296875

;

na decima iterada, partindo de um intervalo de medida tres ja estamos comum intervalo de medida 0.0029296875 e portanto ja teriamos uma aproximacaoda raiz com esta precisao. Como em geral vamos procurar mudancas de sinalusando intervalos de medida 0.1 na decima iterada ja teriamos um intervalo me-dindo 0.00009765625 consequentemente nos oferecendo a raiz com esta precisao.

Page 43: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 72

Exemplo 5 Calculo de uma raizConsidere a funcao

f(x) = x3 + x2 + x + 1 (2.128)

que tem uma unica raiz no ponto x = 1, veja isto fazendo o grafico desta funcaocom Gnuplot. Coloque set xrange [-2:2] para obter um grafico mais nıtido.

Vou chamar Calc

C-style arbitrary precision calculator (version 2.11.10.1)

Calc is open software. For license details type: help copyright

[Type "exit" to exit, or "help" for help.]

define f(x) return power(x,3) + power(x,2) + x + 1

f(x) defined

define busca_binaria(a,b,n)

local x = (a+b)/2;

if (n==0) printf("%f \n",x); return x;

else

if (f(a)*f(x) ==0) return x;

else if (f(a)*f(x) < 0) busca_binaria(a,(a+b)/2,n-1);

else busca_binaria((a+b)/2,b,n-1);

busca_binaria(a,b,n) defined

; busca_binaria(-3,3,10);

-0.9990234375

; busca_binaria(-3,3,20);

-0.99999904632568359375

busca_binaria(-1.1,-0.9,3)

-1

quit;

observe que no ultimo calculo usamos um intervalo de medida 0.2 e a buscabinaria encontrou a raiz com 3 iteracoes. Nao acredite que buscas binariasencontrem raızes exatas... este e um resultado muito bom. Use as definicoesexpostas acima, em Calc para construir outros exemplos.

Exemplo 6 As raızes de (x − 3)2(x + 3)sin( xx2+1

)O programa raizes014.c procura raızes usando busca binaria nos pontos de

secancia e analisa a troca de sinal da derivada nos pontos de tangencia. Veja oresultado do programa procurando as raızes de

f(x) = (x − 3)2(x + 3)sin(x

x2 + 1) (2.129)

no intervalo [−10, 10] em que ha tres raızes:

Raizes aproximadas - metodos da secante e tangente

CAPITULO 2. RAIZES APROXIMADAS 73

Forneca-me o intervalo [a,b] para busca de raizes:

a = -10.000000

b = 10.000000

Forneca-me o passo da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.050000

busca de raizes no intervalo [-10.000000, 10.000000]

Precisao da malha 0.050000

=================================================

Aperte <enter> para continuar

Raiz, por busca binaria, provavel, da func~ao no intervalo

[-3.049978, -2.999978]

valor de f no ponto -10.728836 --> 134.416962

Raiz, por busca binaria, provavel, da func~ao no intervalo

[-0.049980, 0.000020]

valor de f no ponto 27.644634 --> 672.242493

Raiz, por tangencia, provavel, da func~ao no intervalo

[2.950018, 3.000018]

valor de f no ponto 2.975019 --> 0.001109

Encontrei 3 intervalos onde h’a raizes

este resultados foram captados pelo editor Joe dentro do qual eu rodei umaversao compilada do programa raizes014.c.

Observacao 4 Ponto fixo e busca binariaNeste capıtulo estudamos o problema

f(x) = 0 (2.130)

“resolver uma equacoes”.Fomos omissos em nao dizer que tudo que fizemos vale para funcoes polino-

miais. Na verdade sabemos que vale para funcoes nao polinomiais tambem, mascom algumas restricoes. Por exemplo, a demonstracao que fizemos do metododas tangentes usou que a funcao, cujas raızes procuravamos, era polinomial.

Sem duvida sabemos um pouco mais sobre o assunto do que antes de iniciaro capıtulo, sobre tudo sabemos que nao e facil resolver-se uma equacao. Alge-bricamente, as equacoes polinomiais somente podem ser resolvidas com radicaisate o grau quatro. Mesmo as equacoes do grau tres e quatro oferecem razoaveisdificuldade para que as resolvamos usando as formulas algebricas. Com um pro-grama de computador, e com um monitoramento adequado do mesmo podemosir bem mais longe.

Como dissemos no inıcio do capıtulo, o nosso objetivo era tomar o problemade resolucao de equacoes como motivacao para o estudo de algumas tecnicasmatematicas e seus correspondentes algoritmos computacionais.

Estudamos assim os metodos classicos para determinacao de raızes,

Page 44: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 74

1. o metodo da secante;

2. o metodo da tangente;

aos quais associamos a tecnica computacional varredura.Tambem estudamos dois metodos matematicos (e a correspondente imple-

mentacao computacional)

1. busca binaria;

2. sucessoes recursivas;

3. ponto fixo.

O metodo do ponto fixo e muito mais profundo do que nos foi possıvel dis-cutir aqui. Tudo que fizemos foi partir da hipotese de convergencia e usando acontinuuidade de uma funcao fomos conduzidos a que o limite satisfaz a equacao

T (b) = b (2.131)

Um ponto de T satisfazendo esta equacao, se chama ponto fixo .Os pontos fixos sempre aparecem nas iteradas de uma funcao e sempre usa-

mos esta propriedade para resolver equacoes. Relembre aqui o que ja dissemosno inıcio do capıtulo, estamos usando o problema para estudarmos tecnicas quetem valor por si propria.

Esta e uma delas, construir iteradas para encontrar pontos fixos que saosolucoes de equacoes.

Esta tecnica e usada largamente na construcao de solucoes aproximadas deequacoes diferenciais. Nos dedicaremos, ao final do livro, um capıtulo a in-troducao deste assunto, onde voltaremos a usar o metodo do ponto fixo pararesolver estas equacoes.

2.7 O problema completo

O tıtulo e audacioso, problemas completos dificilmente existem. O que vou fazere juntar os pedacos, as discussoes feitas nas secoes anteriores, numa discussaofinal e apresentar-lhe um programa que faz todas estas analises conjuntamente.

O problema de busca de raızes, na forma como o estudamos aqui, separa asraızes em dois tipos,

• raızes do tipo tangente, que na verdade se classificam algebricamente comoraızes multiplas porque, numa vizinhanca da raiz a funcao pode ser fato-rada como

f(x) = (x − a)ng(x) ; g(a) 6= 0 (2.132)

CAPITULO 2. RAIZES APROXIMADAS 75

em que n e o ındice de multiplicidade da raiz e um numero par. Se n forpar serao estas raızes que estou classificando aqui como do tipo tangente,nao ha troca de sinal em alguma vizinhanca da raiz;

• raızes do tipo secante podemos usar a notacao do item anterior e dizer que

f(x) = (x − a)ng(x) ; g(a) 6= 0 (2.133)

com n impar. Neste caso ha troca de sinal da funcao em alguma vizinhancada raiz e podemos usar os metodos classicos:

– busca de raızes pelo metodo da secante;

– busca de raızes pelo metodo da tangente;

– busca binaria. Este metodo, a busca binaria, pode ser usado quandoa multiplicadade da raiz for par, mas eu nao usei este metodo noprograma.

O programa raizes015.c faz isto salientando qual foi o metodo que eleescolheu em cada raiz.

Testamos o programa com diversas funcoes com bons resultados, mas lheentregamos tambem o codigo fonte no modo habitual de programacao aberta.Se voce melhorar o programa, distribua a melhor versao nao se esquecendo denos enviar uma copia, poruqe o conhecimento e universal, e de todos.

Veja o resultado do programa captado pelo editor Joe com pequenas al-teracoes feitas por mim. Leia e rode o programa para fazer suas experiencias.A funcao selecionada dentro do programa e

f(x) = (x + 3.4)4(x + 3)2(x + 2)3(x − 1)2(x − 3)sen(x

x2 + 1(2.134)

que nao chega a ser uma funcao realmente maldosa. Bastaria acrescentar umtermo como sen(3x) para deixar o programa instavel. Esta instabilidade podeser resolvida com uma mudanca de variaveis, entretanto, como eu ja disse di-versas vezes, nao ha programa que possa funcionar sozinho, eles tem que sermonitorados.

O programa conseguiu encontrar todas as raızes quando usei o passo 0.0001com passo maior ele perde alguma das raızes.

Raizes aproximadas - metodos da secante e tangente

Forneca-me o intervalo [a,b] para busca de raizes:

a = -10.000000

b = 10.000000

Forneca-me o passo da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.050000 0.0001

busca de raizes no intervalo [-10.000000, 10.000000]

Page 45: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 76

Precisao da malha 0.000100

=================================================

==== Quando a derivada troca de sinal - tangencia =====

Raiz, por tangencia, provavel, da func~ao no intervalo

[-3.400079, -3.399979]

valor de f no ponto -3.400029 --> -0.000000

==== fim do caso troca de sinal da derivada =====

==== Quando a derivada troca de sinal - tangencia =====

Raiz, por tangencia, provavel, da func~ao no intervalo

[-3.000090, -2.999990]

valor de f no ponto -3.000040 --> -0.000000

==== fim do caso troca de sinal da derivada =====

============= Tres metodos ===========

Raiz provavel da func~ao no intervalo [-2.000017, -1.999917]

========1o metodo: por busca binaria =======

valor de f no ponto -2.000000 --> 0.000000

========2o metodo: pelo metodo da secante =========

valor de f no ponto -2.000012 --> -0.000000

========3o metodo: pelo metodo da tangente ========

valor de f no ponto -1.999998 --> 0.000000

======== fim do caso troca de sinal ========

============= Tres metodos ===========

Raiz provavel da func~ao no intervalo [-0.000097, 0.000003]

========1o metodo: por busca binaria =======

valor de f no ponto -0.000000 --> 0.000984

========2o metodo: pelo metodo da secante =========

valor de f no ponto -0.000000 --> 0.000000

========3o metodo: pelo metodo da tangente ========

valor de f no ponto 0.000000 --> -0.000250

======== fim do caso troca de sinal ========

==== Quando a derivada troca de sinal - tangencia =====

Raiz, por tangencia, provavel, da func~ao no intervalo

[0.999956, 1.000056]

valor de f no ponto 1.000006 --> -0.000006

==== fim do caso troca de sinal da derivada =====

CAPITULO 2. RAIZES APROXIMADAS 77

============= Tres metodos ===========

Raiz provavel da func~ao no intervalo [2.999995, 3.000095]

========1o metodo: por busca binaria =======

valor de f no ponto 3.000000 --> 0.000000

========2o metodo: pelo metodo da secante =========

valor de f no ponto 3.000000 --> 0.000000

========3o metodo: pelo metodo da tangente ========

valor de f no ponto 3.000000 --> 0.000000

======== fim do caso troca de sinal ========

Encontrei 6 intervalos onde h’a raizes

2.8 Intersecao de graficos

Discutimos ate agora a solucao do problema

f(x) = 0

mas e muito mais frequente precisarmos de resolver o problema

f(x) = g(x)

em que f, g sao duas funcoes dadas. Evidentemente que este problema sereduz ao anterior, entretanto ha tecnicas especıficas para resolver o segundoproblema que vamos discutir nesta secao.

Uma expressao da forma f(x) = g(x) pode ser escrita como

h(x) = f(x) − g(x) = 0 ≡ h(x) = 0

e portanto podemos dizer que este nao e um novo problema que estamos estu-dando.

Mas as peculiaridades em que o problema f(x) = g(x) se encontra, ou asaplicacoes que podem ser modeladas por este problema justificam que nos lhedemos uma atencao diferenciada como logo voce ira ver.

Vamos comecar lendo o grafico na figura (fig. 2.11) pagina 78.Este e um caso interessante que descreve uma gama de problemas do tipo

f(x) = g(x) ou f(x) ≥ g(x) (2.135)

Analisando o grafico vemos:

• Temos um intervalo [a, b]

• f(a) = g(a) e f(b) = g(b)

• f ′(a) > g′(a) e f ′(b) < g′(b)

• ∃ c ; c ∈ (a, b) ; f ′(c) = g′(c)

Page 46: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 78

f

g

f´(a) > g´(a)

f´(a) < g´(a)

f´(c) < g´(c)

a

c

b

Figura 2.11: Intersecao de curvas

ou seja, temos duas funcoes e algum ponto do domınio as derivadas delas sealternam em tamanho.

Se por um momento aceitarmos a linguagem mecanica14diremos que podehaver um momento em que o grafico de g passe o grafico de f porque a derivadarepresenta a taxa de crescimento.

Pelo teorema do valor medio tem que haver um ponto no interior do intervalo,c ∈ (a, b), tal que neste ponto as derivadas se igualem.

Vejamos uma classe de problemas que podemos resolver com estes dados.

Exemplo 7 Conhecemos tudo sobre um dos pontosSabemos que

• f(a) = g(a)

• f ′(a) > g′(a)

e podemos provar que a partir de um certo valor x = b

f ′(x) < g′(x) (2.136)

entao e possıvel encontrar outra solucao b > a para o problema f(x) = g(x)Cosidere

g(x) = x (2.137)

f(x) = 2(1 − e−x) ; f ′(x) = 2e−x −→ 0 quando x cresce (2.138)

f(0) = g(0) = 0 ; f ′(0) = 2 > g′(0) = 1 (2.139)

Como f ′ decresce muito rapidamente, e possıvel que haja outra solucao para oproblema f(x) = g(x) quando x > 0.

14que usualmente rejeitamos, tal como “tende” para limite

CAPITULO 2. RAIZES APROXIMADAS 79

Vamos analisar o que nos diz o Teorema do Valor medio para derivadas, seem algum ponto f ′(x) = 1

f ′(x) = 2e−x = 1 ⇒ e−x = 12 ⇒ (2.140)

⇒ ex = 2 ⇒ x = ln(2) (2.141)

(2.142)

Temos que procurar uma raız a a partir de x = ln(2) ≈ 0.69314718 o quefaremos usando um dos nossos programas:

a = 0.69314718

b = 10

Sua busca de raizes no intervalo [ 0.693147 , 10.000000 ]

Forneca-me o passo delta da malha para a busca:

Sugestao 0.01 < delta < 0.5

delta = 0.001

Precisao da malha 0.001000

=================================================

Aperte <enter> para continuar

Procurando raizes do tipo secante

Raiz, por secancia, provavel, da funcao no intervalo

[1.593147,1.594147]

valor de f no ponto 1.593647 com 13 iteracoes --> 0.000014

Observe somente o detalhe que ponto medio do Teorema do Valor medio nao e amedia aritmetica entre os pontos a, b que resolvem o problema, mas se encontrarazoavelmente proximo do ponto medio.

Em outras palavras, 2ln(2) e uma aproximacao da raız.

Uma aplicacao desta questao a determinacao da area entre duas curvas.Neste caso nao queremos encontrar todas as solucoes do problema f(x) = g(x).Desejamos encontrar aquelas que ficam nos extremos de um intervalo que e aprojecao, no eixo OX da regiao cuja area desejamos calcular.

Um caso comum e que voce pode ver no grafico (fig. 2.12)

graf(f) ∩ graf(g) = (a, f(a)), (b, f(b))as duas curvas se cortam em exatamente dois pontos. O valor da area da regiaolimitada por elas e

|b∫

a

(f(x) − g(x))dx|

e temos que encontrar as duas raızes do problema f(x) = g(x).O calculo, com grande acuracidade de raızes somente pode ser feito com

auxılio de programas de computador, entretanto, a determinacao “grosseira”

Page 47: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 2. RAIZES APROXIMADAS 80

f

g

ab

Figura 2.12: Regiao cuja area queremos calcular

de um intervalo onde haja raız15pode ser feito com auxılio de uma maquinade calcular eletronica e isto e o que se espera na lista de exercıcios a seguirproposta.

Exercıcios 10 Raizes de funcoes

1. Considere f(x) = x5 + x2 − 4

(a) Mostre que f ′ tem apenas duas raızes, x0 < x1.

(b) Prove, sem fazer calculos numricos que f(x0) > f(x1)

(c) Prove fazendo algum calculo numrico que 0 > f(x0) > f(x1)

(d) Prove que f tem uma unica raız real e determine um intervalo ondeesta raız se encontra Resposta f(0) < 0, f(2) > 0

2. Encontre um intervalo contendo exatamente uma raız de

f(x) = x − 10000sen(x)

3. Calcule a area da regiao limitada pelos graficos das parabolas, figura

y = x2 − x − 12 ; y = −x2 − x + 12

(fig. 2.13) pagina 81,

4. As curvas

g(x) = (x2 + x − 12)cos(x

2π) ; f(x) = (x2 − x − 12) ∗ sin(

x

2π)

se cortam segundo tres pontos no intervalo [−7, 7], veja a figura

y = x2 − x − 12 ; y = −x2 − x + 12

(fig. 2.14) pagina 81,

Encontre os dois pontos mais distantes (ignore o ponto medio) e calcule aarea indicada na figura.

15ou no plural, a determinacao dos intervalos onde haja raızes

CAPITULO 2. RAIZES APROXIMADAS 81

−15

−10

−5

0

5

10

15

−4 −3 −2 −1 0 1 2 3 4

f(x)g(x)

0

Figura 2.13: area limitada por duas parabolas

−100

−80

−60

−40

−20

0

20

40

60

80

100

−10 −5 0 5 10

f(x)g(x)

0

Figura 2.14: area limitada por duas curvas

Page 48: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Capıtulo 3

Sucessoes recursivas

Os babilonios conheciam um metodo pratico, ver [?], para calcular raızesquadradadas, que vamos usar como introducao para o assunto deste capıtuloporque e um algoritmo recursivo.

Recursividade e um metodo em que uma funcao f “chama” a si propria.

A recursividade e conhecida e usada em Matematica ha milenios, como o

algoritmo do calculo de razes quadradas, mas recentemente (desde 1970), com

LISP, vem sendo usada em programas de computador produzindo algoritmos

bastante otimizados.

3.1 Babilonios e raız quadrada

Vamos usar o algoritmo dos babilonios para calcular raızes qua-dradas como motivacao para o assunto deste capıtulo.Uma sequencia e recursiva se for definida em funcao dos seusproprios termos: xn = f(xn−1, . . . , x1) em que f e uma expressaolegal (computacional ou matematica).

Escolhemos o algoritmo dos babilonios para servir de introducao (e mo-tivacao) para o assunto deste capıtulo por duas razoes:

• pela sua antiguidade provavel de mais de 4.000 anos e assim nos educamosno respeito dos antigos e do antigo contra o mito de que o moderno e quebom;

• pela sua alta precisao, com auxılio de uma maquina de calcular commemoria, com algumas iteradas, quatro ou cinco, voce obtem uma raizquadrado com boa precisao.

Uma primeira aproximacao para√

a vem da desigualdade entre a mediaaritmetica e a media geometrica:

82

CAPITULO 3. RECURSIVIDADE 83

Teorema 2 Desigualdade aritmetico-geometrica Se a, b > 0 temos

√ab ≤ a + b

2(3.1)

Dem :√

ab ≤ a+b2

(3.2)

ab ≤ (a+b2

)2 = a2+2ab+b2

4(3.3)

4ab ≤ a2 + 2ab + b2 (3.4)

0 ≤ a2 − 2ab + b2 = (a − b)2 (3.5)

e como a ultima equacao e verdadeira e as anteriores sao equivalentes algebricas dela, entao

a primeira e verdadeira. q.e.d .

Este teorema vale para um numero qualquer de termos, ver [26], mas aquie suficiente o caso da media entre dois numero positivos, mais exatamente 1, aem que a e o numero positivo cuja raız quadrada desejamos.

• Se a > 1 entao 1 <√

a < a e 1 < a+12 < a;

• Se 0 < a < 1 entao 1 >√

a > a e 1 > a+12 > a;

portanto os numeros1 + a

2,√

a

se encontram ambos entre 1 e a ate porque ambos sao a media entre 1, a, um amedia aritmetica, o outro a media geometica, pelo teorema (2).

Assim temos uma estimativa inicial, e de muito baixa precisao, para√

acomo consequencia da desigualdade aritmetico-geometrica

√a =

√1 · a ≤ a + 1

2(3.6)

assim√

a ≈ a+12

Exemplo 8 Raiz quadrada de 10

√10 ≤ 10 + 1

2= 5.5

Podemos ver neste exemplo como a estimativa fornecida pela desigualdadearitmetico-geometrica e de baixa classe. Mas os babilonios ha mais de 4.000anos souberam iterar esta estimativa obtendo um algoritmo que fornece a raızquadrada com grande precisao depois de alguns passos.

Uma observacao simples conduz ao algoritmo dos babilonios.Se tivermos1 uma estimativa inicial, digamos, x, para a raız quadrada

√a

entao, ax

e outra aproximacao:

a

x≈ a√

a=

√a (3.7)

1e temos, que e a media com a unidade

Page 49: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 84

• Se x for maior do que√

a entao ax sera menor do

√a.

• Se x for menor do que√

a entao ax sera maior do

√a.

• Quer dizer que temos duas aproximacoes, (no segundo caso)

x,a

x; x <

√a <

a

x

uma menor e outra maior do que√

a logo a media das duas que vai ser,melhor do que uma delas.

Definimos (definiram os babilonios)

g(x) =x + a

x

2=

a + x2

2x(3.8)

cuja derivada e

g′(x) = x2−a2x2 ; g′(

√a) = 0 (3.9)

g′(x) > 0 ⇐ x >√

a (3.10)

g e crescente x >√

a (3.11)

g(√

a) =√

ax>

√a⇒ g(x) >

√a (3.12)

x >√

a ⇒ g(x) = x+a/x2 < x (3.13)

x >√

a ⇒ g(g(x)) < g(x) (3.14)

Com estas propriedades podemos deduzir (possivelmente nao foi assim queos babilonios provaram)

uma primeira aproximacao s0 = x >√

x (3.15)√

a < s1 = g(s0) < s0 (3.16)

g(√

a) =√

a < g(s1) = s2 < s1 (3.17)√

a < g(s1) = s2 < s1 < s0 (3.18)

... (3.19)

hipotese:√

a < sn = g(sn−1) < sn−1 (3.20)

g(√

a) =√

a < g(sn) = sn+1 < sn (3.21)

(3.22)

e assim provamos por inducao parte do Teorema

Teorema 3 algoritmo dos babilonios

CAPITULO 3. RECURSIVIDADE 85

A sucessao (sn)n definida recursivamente por

x e uma aproximacao de√

ax >

√a

s0 = g(x)sn = g(sn−1)

(3.23)

e decrescente e limitada por√

a logo converge para um limite

sn → l =√

a (3.24)

Dem :Falta prova apenas a ultima afirmacao do teorema, que o limite e exatamente

√a.

Para isto observemos que g e contınua, portanto preserva limite o que significa que

limn

g(sn) = g(limn

sn) (3.25)

A direita na equacao (25) temos

limn

sn+1 = l (3.26)

e a esquerda na equacao (25) temos

g(limn

sn) = g(l) (3.27)

o que nos leva

g(l) = l (3.28)

Substituindo na equacao de g, (8), temos

g(l) =l2 + a

2l= l ⇒ l2 + a = 2l2 ⇒ l =

√a (3.29)

q.e.d .

Definicao 1 Ponto fixoQuando uma funcao g satisfizer a equacao (28), dizemos que o valor l e um

ponto fixo de g.

A sucessao seguinte de equacoes mostra como eles faziam:

x0 = 1 x1 = x0+10/x0

2 x1 = 5.5

x1 = 5.5 x2 = x1+10/x1

2 x2 = 3.6590909

x2 = 3.6590909 x3 = x2+10/x2

2 x3 = 3.196005

x3 = 3.196005 x4 = x3+10/x3

2x4 = 3.162455

x4 = 3.162455 x5 = x4+10/x4

2x5 = 3.1622776

e usando x5 como aproximacao de√

10 temos

x25 = (3.1622776)2 = 9.999999

︸ ︷︷ ︸61946176 (3.30)

que nos da 10 − x25 < 0.0000004 = 4

107

Page 50: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 86

Vejamos mais um exemplo, calculando a raız√

1000.

Exemplo 9 A raız de 1000

x0 = 1 x1 = x0+1000/x0

2 x1 = 500.5

x1 = 500.5 x2 = x1+1000/x1

2x2 = 251.249

x2 = 251.249 x3 = x2+1000/x2

2x3 = 127.6145

x3 = 127.6145 x4 = x3+1000/x3

2 x4 = 67.7253273

x4 = 67.7253273 x5 = x4+1000/x4

2 x5 = 41.2454260

x5 = 41.2454260 x6 = x5+1000/x5

2 x6 = 32.74526

x6 = 41.2454260 x7 = x6+1000/x6

2 x7 = 32.74526

x7 = 32.74526 x8 = x7+1000/x7

2 x8 = 31.62278

x28 = (31.62278)2 = 1000.000

︸ ︷︷ ︸2149284 (3.31)

Os exemplos sao eloquentes, mostram que um “povo primitivo”, como osbabilonios, usavam um metodo ha mais de 4.000 anos que continua hoje im-batıvel...

Nos nao temos nada melhor, para calcular raızes quadradas, a nao sermaquinas com recursos formais. Por exemplo, o calculo acima, feito em Calc

tem o seguinte aspecto:

; y=1

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y=(y+1000/y)/2

; y

~31.62277660168433424334

; y**2

~1000.00000000003421099649

em que, tudo que precisamos, fazer foi apertar a “seta para cima” no tecladodo micro, oito vezes. E tudo que podemos fazer para melhorar o algoritmo dosbabilonios.

Resta-nos agora entender o que se encontra por tras do metodo, e o quepassaremos a fazer.

Exercıcios 11 Medias e raızes

1. Calcule as medias aritmeticas e geometricas dos pares de numeros

CAPITULO 3. RECURSIVIDADE 87

Raíz aproximadade 10

0

2

4

6

8

10

12

1 2 3 4 5 6 7 8

f(x)x0

"data"

Figura 3.1: Determinacao de√

10

a b a+b2

√ab

1 22 40.2 0.40.2 1

2. Calcule a media aritmetica ponderada dos objetos dados considerando ospesos indicados

a1, a2, a3 p1, p2, p3

3∑

i=1piai

1, 2, 3 0.1, 0.2, 0.71, 2, 3 0.4, 0.3, 0.31, 2, 3 1

3 , 13 , 1

3

1, 2, 3 16 , 1

3 , 12

(1, 2), (2, 1), (1, 1) 16 , 1

3 , 12

3. Calcule, aproximadamente, as raızes quadradas dos numeros indicados,usando o metodo dos babilonios, ate a quarta iterada, e indique o errocometido:

a x4

√a

1220200

O grafico (fig. 3.1), mostra a realizacao do algoritmo dos babilonios (pararaız quadrada de 10). Nele podemos ver a funcao identidade e grafico de

g(x) =x + 10/x

2

Page 51: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 88

com a sucessao de pontos que vai sendo obtida com a iteradas de g para obtera sucessao recursiva (xn)n cujo limite e o ponto fixo

(√

10, g(√

10)).

Voce pode repetir este processo inclusive com outras raızes quadradas usandoo programa em C que apresentamos logo a seguir.

Exercıcios 12 Sequencias recursivas

1. Matematica Social Escolha uma funcao f (sem combinar com seus colegasde trabalho) tal que graf(f) e o o grafico da primeira bissetriz y = x secortem no primeiro quadrante e que2 hipergraf(f) seja convexo.

Considere x0 > 0 escolhido arbitrariamente (sem combinar com seus co-legas de trabalho) e construa graficamente a sucessao de pontos no plano(n nao menor do que 4)

(x0, x0) (x0, f(x0)) ; x1 = f(x0)(x1, x1) (x1, f(x1)) ; x2 = f(x1)

· · · · · ·(xn, xn) (xn, f(xn)) ; xn+1 = f(xn)

(3.32)

e agora compare o seu resultado com o dos seus colegas de trabalho paratirar uma conclusao.

2. Verifique (geometricamente) que a funcao f(x) = ln(x) nao pode definiruma sucessao recursiva xn+1 = f(xn) convergente. Justifique.

3. Verifique quais das funcoes seguintes produz uma sucessao recursiva con-vergente, e em que regiao isto se da (se der). Sugestao faca um graficocontendo graf(f), graf(y = x).

f [a, b] .a)f(x) = x + 3c)f(x) = x2

e)f(x) = x2 − 9

Os exercıos acima estao longe de esclarecer a importancia ou os metodoscomo tratar sucessoes recursivas que e um vasto topico dentro do qual se en-contra o algoritmo dos babilonios.

3.1.1 Um programa em C

O programa se chama raizq graf.c e voce pode encontra-lo em [20].

2o hipergrafico de f e o conjunto dos pontos (x, y) tal que y ≥ f(x) - e o conjunto limitadoinferiormente pelo graf(f)

CAPITULO 3. RECURSIVIDADE 89

Os modulos do programa sao, a funcao

g(x, a) =x + a/x

2

em que deixamos a como parametro de formas que uma pequena alteracao noprograma permite que ele rode na linha de comandos.

A funcao principal, main(), que e obrigatoria em todo programa em C ouC + + e que puxa o script do teatro.

Alguns comandos colocados na funcao principal para criar o arquivo “data”onde se encontram as linhas que Gnuplot ira tracar.

Um arquivo que chamamos “transfere” e que contem os comando de Gnuplote que serao chamados internamente pelo programa uma vez que quem vai fazertudo e o programa em C.

O programa contem comentarios para ajuda-lo a compreender o que ele, faz,mas voce deve ler os arquivos “data” e “transfere” que o programa cria, paracompreende-lo melhor. E, finalmente, escreva um e-mail ao autor, com suasduvidas, ou consulte um hacker em computacao a sua volta, eles sao, em geral,benignos.

O comando para compilar o programa egcc -Wall -oprog -lm programa.c

em que programa.c e o nome do arquivo onde voce guardou o texto acima, e gcce o nome do compilador C que acompanha qualquer distribuicao Linux. Com-pilado o programa voce o pode rodar (executar) o executavel, prog, digitandonuma shell do Linux

./progno diretorio onde se encontra o programa gravado.

O programa descrito acima constroi qualquer exemplo de raız quadrada quevoce desejar, implementando o metodo dos babilonios. Ele cria dois arqui-vos: data e transfere. Se voce apenas quiser rever3o grafico, digite numa shell(Linux) gnuplot transfere

e voce voltara a ver o grafico recem feito com o programa. Ou, simplesmente,rode novamente4o programa com os mesmos dados. O programa fara, automa-ticamente, o caso

√2 se voce apenas der, “enter”, como resposta a todas as

perguntas. Movendo o cursor, sobre a tela grafica do Gnuplot, voce pode vero valor aproximado da raız escolhida. Nao espere conseguir grande precisao,nesta visualizacao.

3.2 Fundamentos da convergencia de iteradas

Exemplificamos, com o algoritmo dos babilonios da raız quadrada, que um tipode sucessao, que designamos por recursivas eram convergentes. Tambem javimos que o metodo das tangentes e gerado por uma funcao recursiva:

3enquanto voce nao der “enter”, o grafico ficara presente na tela4se voce tiver problemas com o programa, ou nao rodar Linux em seu computador, solicite

uma versao do programa, ao autor, indicando qual o sistema que roda em seu computador

Page 52: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 90

g(x) = x − f(x)

f ′(x); xn+1 = g(xn) (3.33)

Desejamos agora demonstrar os fatos, descobrir em que condicoes podemosgarantir que uma sucessao

xn+1 = g(xn) (3.34)

seja convergente. Vamos usar a aproximacao linear

g(b) − g(a) = g′(a)(x − a) + o(|x − a|) (3.35)

x2 − x1 = g(x1) − g(x0) = g′(x0)(x1 − x0) + o(|x1 − x0|) (3.36)

|x2 − x1| = |g(x1) − g(x0)| ≤ |g′(x0)| · |x1 − x0| (3.37)

· · · (3.38)

|xn+1 − xn| = |g(xn) − g(xn−1)| ≤ |g′(xn−1)| · |xn − xn−1| (3.39)

Estes calculos nos mostram que precisamos da hipotese de que g seja dife-renciavel e que em uma vizinhanca do ponto inicial x0 o modulo da derivadaseja menor do que 1. Se isto acontecer podemos deduzir das equacoes acima:

|x2 − x1| = |g(x1) − g(x0)| ≤ |g′(x0)| · |x1 − x0| (3.40)

|x3 − x2| =≤ |g′(x1)| · |x2 − x1| ≤ |g′(x1)||g′(x0)| · |x1 − x0| (3.41)

· · · (3.42)

|xn+1 − xn| ≤n−1∏

k=0

|g′(xk)||x1 − x0| (3.43)

Considerando os fatores na equacao (eq. 43) seja

r = max(|g′(x0)|, . . . , |g′(xk)|, . . . , |g′(xn−1)|) < 1 (3.44)

podemos deduzir da (eq. 43)

|xn+1 − xn| ≤ rn|x1 − x0| (3.45)

e assim comparar a sucessao (xn) com uma sucessao geometrica convergente.Demonstramos assim o Teorema

Teorema 4 Teorema do ponto fixoSe uma sucessao recursiva xn+1 = g(xn) em que g e uma funcao diferenciavel

e tal que exista um domınio [a, b] a cujo interior pertenca o ponto x0 e que|g′| < r < 1 em [a, b] entao a sucessao recursiva xn+1 = g(xn) converge paraum ponto a de forma mais rapida que uma sucessao geometrica de razao r e oponto a = lim

nxn e um ponto fixo de g

A ultima parte da tese do Teorema e o resultado das contas que fizemos nasecao anterior, com o algoritmo dos babilonios para a raız quadrada. Embora

CAPITULO 3. RECURSIVIDADE 91

o ponto fixo no caso daquele algoritmo tenha sido obtido num caso especial defuncao contınua, o arqumento aqui seria o mesmo.

Ha varios teoremas do ponto fixo, nos demonstramos acima um caso parti-cular e bem simples que atende as nossas necessidades aqui. Mas o estudiosode analise ira encontrar mais a frente outras formulacoes deste teorema quandovera, entretanto, que a questao gira em torno das mesma ideias, poder garantirque a funcao g que define uma certa sucessao recursiva funcione como um freiointerno da sucessao. Tais funcao satisfazem a desigualdade

|g(a) − g(b)| < |a − b|

portanto elas contraem a imagem e poristo se chamam de contracoes. Quandoa derivada for menor do que 1 em modulo temos uma contracao, e foi isto queusamos na demonstracao do teorema-4.

3.3 O algoritmo babibilonio e convergente

Para terminar o projeto, queremos mostrar que o algoritmo babibilonio pararaızes quadradas satisfaz as hipotses do teorema do ponto fixo, e portanto con-verge.

Vimos que o algoritmo depende da funcao

g(x) = (x +a

x)/2 =

x + ax

2(3.46)

cuja derivada e g′(x) = 12− a

2x2 .

g′(x) = 0 =⇒ 1 − a

x2= 0 =⇒ x = ±

√a (3.47)

quer dizer que, para x > 0 o grafico conjunto de g e da primeira bissetriz e daforma (fig. 3.2) ou da forma (fig. 3.3)

a

x 0

g

Figura 3.2: Ponto inicial menor do que√

a

Page 53: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 92

a

g

x o

Figura 3.3: Ponto inicial maior do que√

a

Nos dois tipos de graficos, (fig. 3.2) ou (fig. 3.3), vemos que o grafico de gcorta a primeira bissetriz na imagem do ponto fixo sobre o graf(g), (

√a,√

a).Como g e assıntota a funcao

y =x

2

e no ponto (√

a,√

a) a derivada de g e zero, entao se x0 for “grande”, quer dizer“maior do que

√a”, entao |g′(x0)| < 1.

Consideremos entao o intervalo I = [√

a,∞). Sobre I a hipotese do (Teorema4) e atendida porque como g(x) < x entao g(g(x)) < g(x) e portanto xn ∈ I, oque termina a demonstracao se escolhermos x0 >

√a.

Mas podemos considerar um ponto inicial x0 “pequeno”, isto e, menor doque

√a. Mas neste caso

x1 = g(x0) = x0 + ax0

(3.48)

x0 + ax0

>√

a (3.49)

(x0 + ax0

)2 > a (3.50)

x20 + 2a + ( a

x0)2 > a (3.51)

x20 + a + ( a

x0)2 > 0 (3.52)

provando que x1 ∈ I portanto, se escolhermos um ponto inicial “pequeno” o se-gundo ponto da sucessao obtida pelas iteracoes de g sera “grande”, pertenteceraao intervalo I e portanto a sucessao

(xn)n≥1 ⊂ I (3.53)

satisfaz ao (Teorema 4).Provamos assim que o algoritmo dos babilonios para razız quadrada converge

e muito rapido.

Teorema 5 Algoritmo babilonio para raız quadrada

A funcao g(x) = x+a/x2 define uma sucessao recursiva a partir de um ponto

qualquer x0 >√

a3 sendo o seu ponto fixo

√a.

CAPITULO 3. RECURSIVIDADE 93

3.4 Exercıcios

1. Escreva os 5 primeiros termos das seguintes sucessoes definidas recursiva-mente

a)sn = sn−1 + sn−2 s0 = 0; s1 = 1c)sn = 1 + sn−1 s0 = 1e)sn = nsn−1 s0 = 2; s1 = 1

b)sn = sn−1 + sn−2 s0 = 1; s1 = 1d)sn = 1 + sn−1 s0 = −1f)sn = nsn−1 s0 = 3; s1 = 1

2. Escreva o loop em pseudo linguagem de programacao5que calcula cadauma das sucessoes

a)sn+1 = sn + sn−1 s0 = 1; s1 = 1c)sn+1 = snsn−1 s0 = 1; s1 = 2e)sn+1 = snsn−1 s0 = 2;

b)sn+1 = sn/sn−1 s0 = 1; s1 = 1d)sn+1 = (n + 1)sn s0 = 1; s1 = 1f)sn+1 = nsn s0 = 3;

3. serie, termos geral Escreva a equacao de Sn sabendo que

Sn+1 − Sn = an; S0 = 0 (3.54)

em que a sucessao a = (an)n∈N e dada.

4. Escreva a equacao de Sn sabendo que

Sn+1 − Sn = an; S0 = 0 (3.55)

em que a sucessao a = (an)n∈N e dada

Sn+1 an

a)Sn+1 1c)Sn+1 ne)Sn+1 n2

Sn+1 an

b) Sn+11n

d) Sn+11

n2

f) Sn+1 n3

5. Sequencia de Fibonacci6

A sequencia de Fibonacci e definida, recursivamente, como

s0 = 1 (3.56)

s1 = 1 (3.57)

n > 1sn = sn−1 + sn−2 (3.58)

Calcule alguns termos de s e escreva o loop que calcule s Resposta eexatamente um dos exercıcios anteriores.

5chamamos de pseudo linguagem de programacao uma sequencia de “comandos” que po-deriam pertencer a uma determinada linguagem de programacao, aquilo que e habitual fazerem cursos introdutorios de programacao com o nome de “algoritmo”

Page 54: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 94

3.5 Solucao de alguns exercicios

1. (ex. 1) pagina 93

(a)

sn = sn−1 + sn−2 ; s0 = 0; s1 = 1 (3.59)

s2 = 1; s3 = 2; s4 = 3; s5 = 5; (3.60)

(b)

sn = sn−1 + sn−2; s0 = 1; s1 = 1 (3.61)

s2 = 2; s3 = 3; s4 = 5; s5 = 8 (3.62)

(c)

sn = 1 + sn−1; s0 = 1 (3.63)

s1 = 2; s2 = 3; s3 = 4; s4 = 5; s5 = 6 (3.64)

(d)

sn = 1 + sn−1; s0 = −1 (3.65)

s1 = 0; s2 = 1; s3 = 2; s4 = 3; s5 = 4 (3.66)

(e)

sn = nsn−1; s0 = 2; s1 = 1 (3.67)

s2 = 2; s3 = 6; s4 = 24; s5 = 120 (3.68)

(f)

sn = nsn−1; s0 = 3; s1 = 1 (3.69)

s2 = 2; s3 = 6; s4 = 24; s5 = 120; (3.70)

2. (ex. 2) pagina 93

(a) entrada de dados: n;

int S=0, a0=1, a1=1,contador=2;

if (n ==0 ) return(a0);

if (n == 1) return(a1);

while(contador <=n)

S = a0 + a1;

a0 = a1;

a1 = S;

contador++; // contador = contador + 1

CAPITULO 3. RECURSIVIDADE 95

return(S); // saida de dados do programa

0 1

1 1

2 2

3 3

4 5

5 8

6 13

7 21

8 34

9 55

10 89

(b) float S=1; // produto e divisoes, inicio 1

float a0=2.0, a1=1.0;

int contador=2;

printf("%d %f \n %d %f \n",0,a0,1, a1);

if (n == 0 ) return(a0);

if (n == 1 ) return(a1);

while(contador <=n)

S = a1/a0; // s(n+1)

printf("%d %f \n",contador, S);

a0 = a1; // s(n-1)

a1 = S; // s(n)

contador++;

0 2.000000

1 1.000000

2 0.500000

3 0.500000

4 1.000000

5 2.000000

6 2.000000

7 1.000000

8 0.500000

9 0.500000

10 1.000000

(c) float S=1; // produto e divisoes, inicio 1

float a0=1.0, a1=2.0;

int contador=2;

printf("%d %f \n %d %f ",0,a0,1,a1);

if (n == 0 )printf("%d %f \n ",0,a0); return(a0);

if (n == 1 )printf("%d %f \n ",1,a1); return(a1);

while(contador <=n)

Page 55: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 96

S = a1*a0; // s(n+1)

printf("%d %f \n",contador, S);

a0 = a1; // s(n-1)

a1 = S; // s(n)

contador++;

0 1.000000

1 2.000000 2 2.000000

3 4.000000

4 8.000000

5 32.000000

6 256.000000

7 8192.000000

8 2097152.000000

9 17179869184.000000

10 36028797018963968.000000

(d) float S=1; // produto e divisoes, inicio 1

float a0=1.0, a1=1.0;

int contador=2;

printf("%d %f \n %d %f \n ",0,a0,1,a1);

if (n == 0 )printf("%d %f \n ",0,a0); return(a0);

if (n == 1 )printf("%d %f \n ",1,a1); return(a1);

while(contador <=n)

S = contador*a1; // s(n+1)

printf("%d %f \n",contador, S);

a1 = S; // s(n)

contador++;

0 1.000000

1 1.000000

2 2.000000

3 6.000000

4 24.000000

5 120.000000

6 720.000000

7 5040.000000

8 40320.000000

9 362880.000000

10 3628800.000000

(e) float S=1; // produto e divisoes, inicio 1

float a0=2.0;

int contador=1;

CAPITULO 3. RECURSIVIDADE 97

printf("%d %f \n ",0,a0);

if (n == 0 )printf("%d %f \n ",0,a0); return(a0);

while(contador <=n)

S = contador*a0; // s(n+1)

printf("%d %f \n",contador, S);

a0 = S; // s(n)

contador++;

0 2.000000

1 2.000000

2 4.000000

3 12.000000

4 48.000000

5 240.000000

6 1440.000000

7 10080.000000

8 80640.000000

9 725760.000000

10 7257600.000000

(f) float S=1; // produto e divisoes, inicio 1

float a0=3.0;

int contador=1;

printf("%d %f \n ",0,a0);

if (n == 0 )printf("%d %f \n ",0,a0); return(a0);

while(contador <=n)

S = (contador-1)*a0; // s(n+1)

printf("%d %f \n",contador, S);

a0 = S; // s(n)

contador++;

0 3.000000

1 0.000000

2 0.000000

3 0.000000

4 0.000000

5 0.000000

6 0.000000

7 0.000000

8 0.000000

9 0.000000

10 0.000000

Page 56: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 98

3. (ex. 3) pagina 93

S0 = 0 =⇒ S1 = S0 + a0 = a0 (3.71)

S2 = S1 + a1 = S0 + a0 + a1 (3.72)

S2 = a0 + a1 (3.73)

S3 = S2 + a2 = a0 + a1 + a2 (3.74)

· · · (3.75)

Sn+1 = Sn + an = a0 + a1 + a2 + · · · + an (3.76)

Sn+1 =n∑

k=0

ak (3.77)

4. (ex. 4) pagina 93

(a) Sn+1 =n∑

k=0

1 = n + 1

(b) Sn+1 =n∑

k=1

1k

1 1.000000

2 1.500000

3 1.833333

4 2.083333

5 2.283334

6 2.450000

7 2.592857

8 2.717857

9 2.828969

10 2.928968

Sn+1 ≈ ln(n) para grandes valores de n.

ln(100000) ≈ 11.51292546497022842009;100000∑

k=1

1k ≈ 12.090851

(c)n∑

k=1

k = (1+n)n2

1 1.0000000000000

2 1.2500000000000

3 1.3611111111111

4 1.4236111111111

5 1.4636111111111

6 1.4913888888889

7 1.5117970521542

8 1.5274220521542

9 1.5397677311665

CAPITULO 3. RECURSIVIDADE 99

10 1.5497677311665

double S=0; // inicilizando soma

double a0=1.0;

int contador=1;

printf("%d %lf \n ",0,a0);

if (n == 0 )printf("%d %lf \n ",0,a0); return(a0);

while(contador <=n)

S = S + a0; // s(n+1)

printf("%d %2.13lf \n",contador, S);

contador++; // contador = contador + 1

a0 = (double) 1/(contador*contador); // s(n-1)

n∑

1

1

k2≈ π2

6

para grandes valores de n. Com n = 35000S35000 = 1.6449054958278

e π2

6 ≈ 1.64493406684822643649

(d) 1 1.000000

2 5.000000

3 14.000000

4 30.000000

5 55.000000

6 91.000000

7 140.000000

8 204.000000

9 285.000000

10 385.000000

float S=0; // inicializa uma soma

float a1=1.0;

int contador=1;

printf("%d %f \n",1, a1);

if (n == 1 ) return(a1);

while(contador <=n)

S = S + a1; // s(n+1)

printf("%d %f \n",contador, S);

contador++; // contador = contador + 1

a1 = contador*contador;

As somas do tipon∑

k=0

P (k) em que P e um polinomio a coeficientes

inteiros, podem ser calculadas exatamente usando-se um polinomio Qde grau uma unidade superior ao de P porque estas somas se reduzem

Page 57: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 3. RECURSIVIDADE 100

a uma expressao da forma Q(n + 1) − Q(0), ver [27, inducao finita].

neste caso a formula exata en∑

k=1

k2 = n(n+1)(2n+1)6

= Q(n); Q(10) =

385

5. 1 1.000000

2 9.000000

3 36.000000

4 100.000000

5 225.000000

6 441.000000

7 784.000000

8 1296.000000

9 2025.000000

10 3025.000000

float S=0; // inicializa uma soma

float a1=1.0;

int contador=1;

printf("%d %f \n",1, a1);

if (n == 1 ) return(a1);

while(contador <=n)

S = S + a1; // s(n+1)

printf("%d %f \n",contador, S);

contador++; // contador = contador + 1

a1 = contador*contador*contador;

Como foi dito no item anterior, esta soma pode ser calculada exatamente,n∑

k=1

k2 = (1 + 2 · · ·n)2 = (n(n+1)2 )2

Capıtulo 4

Aproximacao polinomial de

funcoes

Este capıtulo vai lhe apresentar o objetivo deste livro: a modela-gem matematica usando aproximacao polinomial.Primeiro consideraremos o metodo intuitivo, um polinomio degrau n interpolando n pontos do plano, depois vamos otimizareste metodo o que nos vai conduzir ao chamado metodo de La-grange. E o que chamamos de metodo classico e que foi utilizadoate 1950.Com o metodo classico, que consiste em fazer passar um po-linomio pelos pontos conhecidos de uma funcao, para obter-se umaboa aproximacao e preciso que a densidade da malha seja muitogrande e consequentemente o grau do polinomio muito alto. Asconsequencias computacionais sao graves com esta metologia, maso metodo e excelente para epoca em que foi construidoa,como oprograma que acompanha o livro bem o mostra.Aos poucos, a partir dos anos 50, no seculo passado, foi surgindoum metodo sugerido por autores da decada de 40 que se constitueem considerar varios polinomios, um para cada intervalo da malha.E o que chamamos polinomios por pedacos, ou uma polinomial efinalmente vieram os splines, e os metodos finitos que muito separecem: ambos sao polinomiais.A parte final deste capıtulo faz a construcao dos splines por con-volucao.

aLagrange, (1736-1813)

101

Page 58: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 102

4.1 Aproximacao polinomial classica

Comecaremos pela aproximacao polinomial classica, na verdade com um unicoobjetivo em mente, mostrar que ela exige uma amostragem muito grande dofenomeno para que se possa obter uma boa aproximacao e, consequentemente,nao e pratica (computacional). Ela servira como motivacao para o assuntodas ultimas secoes, aproximacao polinomial por pedacos e finalmente para ossplines.

A ideia intuitiva, e ingenua1, para aproximacao polinomial ou interpolacaopolinomial de n + 1 pontos

(x0, y0) · · · (xn, yn) (4.1)

consiste em encontrar-se um polinomio

P (x) = a0 + a1x + · · · + amxm

tal queP (xk) = yk; k ∈ 0, · · ·n (4.2)

Como as incognitas do problema sao os coeficientes de P e como temos n+1condicoes, vemos que P deve ter no mınimo n + 1 coeficientes: um polinomiode grau n.

Uma solucao para este problema pode ser obtida com um sistema de n + 1equacoes nas n + 1 incognıtas representadas pelos coeficientes de P

P (x) = a0 + a1x + · · · + anxn (4.3)

Vamos comecar brincando um pouco com varias interpolacoes polinomiaistendo como objetivo mostrar-lhe que gnuplot e um excelente instrumento paratestes porque lhe permite somar polinomios ou multiplica-los por constantes eportanto pesquisar saıdas para um problema para o qual voce nao tiver aindaum modelo de solucao.

gnuplot e uma maquina de calcular com potencialidades bem elevadas e eisto que lhe queremos mostrar, inicialmente.

4.1.1 Analise de dois casos particulares

Interpolando pontos sobre o eixo OX

Considerarmos o caso em que yk = 0 para todo k, podemos facilmente ver queha muitas solucoes para este problema e assim discutir a existencia de umasolucao otima. Veja na figura (fig. 4.1) pagina 103, as multiplas solucoes, para

1veremos mais adiante que existe uma solucao, de Lagrange, que nao e nem ingenua e nemintuitiva

CAPITULO 4. SPLINES 103

−1.5

−1

−0.5

0

0.5

1

1.5

2

2.5

3

3.5

−4 −2 0 2 4 6

P(x)g(x)

0

Figura 4.1: Duas solucoes do problema homogeneo

o problema particular, construidas com gnuplot

Esta modelagem com gnuplot foi produzida com o seguinte script que podeser encontrado aqui, [20, programas.tgz].

## splines01.01.gnuplot e o nome do arquivo

a0=5;a1=2;a2=-2;a3=-4

p(x) = (x - a0)*(x-a1)*(x-a2)*(x-a3)

dp(x) = (x-a0)*(x-a1)*(x-a2) + (x-a0)*(x-a1)*(x-a3) +\

(x -a0)*(x-a2)*(x-a3) + (x-a1)*(x-a2)*(x-a3)

set xrange [a3-1:a0+1]

plot p(x),dp(x),0

pause -2

M = 470.0 ## modulo maximo da derivada (visualmente)

P(x) = (1/M)*p(x)

dP(x)=(1/M)*dp(x)

plot P(x), dP(x),0

pause -2

plot P(x),dP(x),0,p(x),dp(x)

pause -2

g1(x) = 2*P(x)

g2(x) = 3*P(x)

plot P(x), g1(x), g2(x),0

pause -2

#set terminal fig color big portrait

#set output "splines01.01.fig

Neste caso particular, quando estivermos interpolando pontos de um inter-valo contido em R, qualquer multiplo de uma solucao e tambem uma solucao,e a soma de duas solucoes e tambem uma solucao produzindo um espaco ve-

Page 59: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 104

torial de solucoes e voce pode se divertir procurando a dimensao deste espacovetorial. . .

Ao construir a solucao do problema:

• fizemos o grafico de p, p′ = dp

• modulo maximo calculamos, visualmente, o modulo maximo de p′. Existeum teorema que garante que o modulo maximo de um polinomio ocorre nafronteira de um disco que contem este intervalo considerado. E o teoremado modulo maximo e a figura (fig. 4.2) pagina 104, e uma ilustracao doteorema do modulo maximo estudado em variaveis complexas. A figurajustifica porque preferimos calcular visualmente o maximo da derivada;

• usamos como coeficiente

1

M; M = 470.0 ; M = max(|p′(x)|)

que e o valor do modulo maximo da derivada de p no intervalo I = [a3 −1, a0 + 1];

• redefinimos o polinomio, P (x) = 1M p(x), portanto reduzimos a oscilacao2

do polinomio P no intervalo I.

• Se yk = r uma constante r ∈ R, qualquer solucao P do problema ho-mogeneo, somada de r, e uma solucao deste problema nao homogeneo.Lembra a solucao de um sistema linear e de fato e uma questao de AlgebraLinear. Veja que nao e possıvel obter todas as solucoes do problema naohomogeneo sem considerar o caso homogeneo.

Módulo máximo

O módulo máximo

no plano complexo

pré imagem doponto de módulo

máximo

Figura 4.2: O teorema do modulo maximo

Esta analise sugere a existencia de uma solucao otima. Vamos ver que existeuma solucao unica para o problema que e tambem, em um certo sentido, otima.

Os exercıcios seguintes devem conduzı-lo a uma compreensao da oscilacaodos polinomios interpolantes associada a densidade da malha representada pelos

2Observe que para reduzir a oscilacao do polinomio fomos buscar o modulo maximo daderivada

CAPITULO 4. SPLINES 105

pontos a serem interpolados. Quanto mais densa a malha, menor a oscilacaono interior do intervalo em que se encontram os pontos (nos) da malha. Osexercıcios tambem lhe apresentam scilab que e um pacote para fazer AlgebraLinear, [23].

Exercıcios 13 Interpolacao e oscilacao de um polinomio

1. O grafico na figura (fig. 4.1) foi produzido com o scriptsplines01.01.gnuplot

que se encontra aqui [20, programas.tgz]. Edite este script e faca algunsexperimentos com polinomios. Eis algumas sugestoes:

• encontre uma famılia de polinomios que que interpolem os pontos

(a0, r), (a1, r), (a2, r), (a3, r), (a4, r) (4.4)

escolha os valores de ai diretamente dentro do script do gnuplot;

• Construa um polinomio que passa em dois pontos escolhidos com umaoscilacao especificada.

solucao: splines01.02.gnuplot, [20, programas.tgz].

• Mais difıcil: construa um polinomio com oscilacao especificada quepasse em alguns pontos escolhidos. Voce vai precisar de resolver umsistema de equacoes. . .

2. interpolacao linear Tudo que sabemos sobre um fenomeno f medido sobreo intervalo [a, b] sao os valores do fenomeno nos pontos a, b, c:

[a, b] = [−3, 5] ; f(−3) = 7; c = 0f(c) = −2; f(5) = 1 (4.5)

Interpole,linearmente, estas informacoes estimando qual poderia ser ovalor de f nos pontos

−2, 0, 2 (4.6)

Faca um grafico ilustrativo.

Solucao 2 Veja o grafico na figura (fig. 4.3) pagina 106,

Esta funcao esta definida por dois sementos de reta, um quando x < 0 eoutro quando x ≥ 0.

x = −2 ⇒ (x < 0)f(x) = 7 − (9/3)(x + 3); f(−2) = 4 (4.7)

x = 0 ⇒ (x ≥ 0)f(x) = −2 + (3/5) ∗ x; f(0) = −2 (4.8)

x = 2 ⇒ (x ≥ 0)f(x) = −2 + (3/5) ∗ x; f(2) = −0.8 (4.9)

————————————————

Page 60: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 106

-2

-1

0

1

2

3

4

5

6

7

-3 -2 -1 0 1 2 3 4 5

f(x)0

Figura 4.3: Aproximacao linear por pedacos - 1-spline

3. interpolacao n~ao linear Temos as informacoes f(xk) sobre f definida nointervalo [a, b]:

[a, b] = [−3, 5]; x0 = −3; x1 = −2; x2 = 0; x3 = 2; x4 = 5 (4.10)

f(−3) = 7; f(−2) = 3; f(0) = −3; f(2) = 0; f(5) = 1 (4.11)

Encontre um polinomio do quarto grau

P (x) = a0 + a1x + a2x2 + a3x

3 + a4x4 (4.12)

tal queP (xk) = f(xk) (4.13)

interpolando nao linearmente as informacoes contidas na (eq. 11). Useesta interpolacao para obter uma estimativa dos valores de f nos pontos

−1, 1, 3 (4.14)

Faca um grafico ilustrativo.

Solucao 3 As informacoes que temos nos permitem montar a tabela

xk -3 -2 0 2 5yk 7 3 -3 0 1

P (−3) = a0 − 3a1 + 9a2 − 27a3 + 81a4 = 7 (4.15)

P (−2) = a0 − 2a1 + 4a2 − 8a3 + 16a4 = 3 (4.16)

CAPITULO 4. SPLINES 107

P (−2) = a0 = −3 (4.17)

P (2) = a0 + 2a1 + 4a2 + 8a3 + 16a4 = 0 (4.18)

P (5) = a0 + 5a1 + 25a2 + 125a3 + 625a4 = 1 (4.19)

−3a1 + 9a2 − 27a3 + 81a4 = 11 (4.20)

−2a1 + 4a2 − 8a3 + 16a4 = 6 (4.21)

2a1 + 4a2 + 8a3 + 16a4 = 3 (4.22)

5a1 + 25a2 + 125a3 + 625a4 = 4 (4.23)

−3 9 −27 81−2 4 −8 162 4 8 165 25 125 625

a1

a2

a3

a4

=

11634

(4.24)

Vamos primeiro usar scilab para resolver o sistema de equacoes depoisvamos mostrar uma outra forma de resolver o problema associado com oque fizemos no capıtulo 1, usando a ideia (nao o conceito) de polinomiode Taylor. Com scilab resolvemos qualquer sistema de equacoes portantonao precisamos de tecnicas mais avancadas de calculos manuais (que mos-traremos depois).

a = [-3 , 9 , -27 , 81 ;

-2 , 4 , -8, 16 ;

2 , 4 , 8 , 16 ;

5 , 25 , 125 , 625]

a =

! - 3. 9. - 27. 81. !

! - 2. 4. - 8. 16. !

! 2. 4. 8. 16. !

! 5. 25. 125. 625. !

-->b=[11 ; 6 ;3 ;4]

b =

! 11. !

! 6. !

! 3. !

! 4. !

-->a\b

ans =

! - 0.6880952 !

! 1.2678571 !

! - 0.0154762 !

Page 61: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 108

! - 0.0357143 !

-->function y = f(x)

-->y =-3 -0.6880952*x + 1.2678571*x*x - 0.0154762*x*x*x - 0.0357143*x*x*x*x

-->endfunction

-->f(0) = - 3.

-->f(-3) = 7.9999986

-->f(-2) = 2.9999996

-->f(2) = - 0.0000004

-->f(5) = 0.999989

a0 = −3; a1 = −0.6880952; a2 = 1.2678571; (4.25)

a3 = −0.0154762; a4 = −0.0357143 (4.26)

Observe o erro apreciavel no calculo de f(−3) = 7.9999986 cometidousando scilab. O erro nao e do scilab mas do metodo, uma interpolacaopolinomial de grau 4 das quatro informacoes obtidas de uma tabela.

Devemos ainda calcular, usando a interpolacao polinomial, os valores def(−1), f(1), f(3), com scilab

-->f(-1) = - 1.0642858

-->f(1) = - 2.4714286

-->f(3) = 3.0357126

Veja o grafico deste polinomio, feito com scilab na figura (fig. 4.4) pagina109,

————————————————

Outra solucao, de acordo com o que desenvolvemos no capıtulo 1, vamosdesenvolver o polinomio no ponto x = −3

f(x) = a0 + a1(x + 3) + a2(x + 3)2 + a3(x + 3)3 (4.27)

a0 = −7 (4.28)

CAPITULO 4. SPLINES 109

−4

−2

0

2

4

6

8

−3 −2 −1 0 1 2 3 4 5

f(x)0

Figura 4.4: interpolacao polinomial dos pontos

f(−2) = −7 + a1 + a2 + a3 = 3f(0) = −7 + 3a1 + 9a2 + 27a3 = −3f(2) = −7 + 5a1 + 25a2 + 125a3 = 0f(5) = −7 + 8a1 + 64a2 + 512a3 = 1

(4.29)

a1 + a2 + a3 = 103a1 + 9a2 + 27a3 = 4

5a1 + 25a2 + 125a3 = 78a1 + 64a2 + 512a3 = 8

(4.30)

Resolvendo este sistema de equacoes com scilab temos

a = [1 , 1 , 1 ; 3, 9, 27; 5, 25, 125; 8, 64, 512]

Page 62: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 110

b = [10; 4; 7; 8]

c = a\b

function y = f(x)

y = -7 + c(1)*(x+3) + c(2)*(x+3)**2 + c(3)*(x+3)**3;

return y;

endfunction

-->f(-3)

ans =

- 7.

-->f(-2)

ans =

- 1.2993631

-->f(0)

ans =

1.0127389

-->f(2)

ans =

- 2.0063694

-->f(5)

ans =

1.2866242

em que obtivemos precisao apenas para f(−3).

Este dois exemplos nos mostram as dificuldades de obter uma interpolacaoconfiavel com polinomios de grau alto determinado pelo numero de in-formacoes. Aqui foram polinomios de grau pequeno porque tambem temospoucas informacoes.

4. Faca uma pequena dissertacao descrevendo quem e f e P na questao(ex.3). Use em sua redacao algumas das palavras: interpolacao, linear,estimativa, aproximacao, modelo.

5. interpolacao nao linear Calcule o polinomio monico3 p que interpola ospontos

(−7.5, 0), (−2.5, 0), (2.5, 0), (7.5, 0)

6. Calcule o modulo maximo M de p no intervalo [−3, 4] e defina P (x) =p(x)M . Calcule Maxx∈[−3,4]P (x) resposta oscilacao = 0.6

7. interpolacao nao linear Refaca a questao considerando os pontos

(−7.5, 0), (−1, 0), (1, 0), (7.5, 0)

.3se chama polinomio monico aquele cujo coeficiente do termos de maior grau e 1

CAPITULO 4. SPLINES 111

x0 = -7.5; x1=-2.5; x2=2.5; x3=7.5;

p(x)=(x-x0)*(x-x1)*(x-x2)*(x-x3)

dp(x)=(x-x0)*(x-x1)*(x-x2)+(x-x0)*(x-x1)*(x-x3)+(x-x0)*(x-x2)*(x-x3)+\

(x-x1)*(x-x2)*(x-x3)

set xrange [x0:x3]

## quando a particao nao for uniforme altere a etiqueta

set title "uniforme" ## altere esta etiqueta para "nao uniforme"

plot p(x),dp(x),0

pause -2

M=1/1470.0 ## calcule este valor e substitua aqui

P(x) = M*(x-x0)*(x-x1)*(x-x2)*(x-x3)

dP(x) = M*((x-x0)*(x-x1)*(x-x2)+(x-x0)*(x-x1)*(x-x3)+(x-x0)*(x-x2)*(x-x3)+\

(x-x1)*(x-x2)*(x-x3))

plot P(x),dP(x),0

pause -2

8. Comparando as questoes (ex. 5) e (ex. 7), verifique que, se os nos for-marem uma particao uniforme, a oscilacao de P e da derivada P ′ dopolinomio que interpola os pontos e diferente. Identifique em que caso aoscilacao e menor, sobre o intervalo determinado pelos pontos a sereminterpolados.

resposta oscilacoes 0.6 e 1

Interpolando pontos do plano

Nos exemplos desenvolvidos, mostramos como interpolar n + 1 pontos selecio-nados num intervalo [a, b] contido em R. Tambem mostramos a baixa precisaoque existe neste metodo ingenuo de interpolar justificando assim que devemosprocurar metodos mais eficientes.

O nosso objetivo entretanto e, considerada uma colecao de nos sobre umintervalo [a, b]

a = x0 < x1 < · · · < xn−1 < xn = b (4.31)

e um correspondente conjunto de valores

y0, y1, . . . , yn−1, yn (4.32)

como poderiamos interpolar, polinomialmente, os pontos

(x0, y0), (x1, y1), . . . , (xn, yn) (4.33)

ou ainda, encontrar um polinomio P cujo grafico passe por estes pontos. Noexemplo anterior fizemos isto quando yk = 0 para todo k.

Da mesma forma como

• dois pontos determinam uma reta, um polinomio de grau 1, porque os doispontos determinam os dois coeficientes da reta que passa por estes pontos,

Page 63: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 112

• tambem n + 1 pontos determinam um polinomio de grau n, os n + 1coeficientes do polinomio, que os interpola.

Um segmento de reta, um polinomio de grau 1, e a forma de interpolar dois pontos.A forma eficiente de interpolar n + 1 pontos deve ser um polinomio de grau n.

4.1.2 A solucao geral do problema

Resolver o problema geral de interpolacao polinomial classica

(x0, y0) · · · (xn, yn) (4.34)

consiste em encontrar um polinomio P de grau n tal que

P (xk) = yk; k ∈ 0, · · ·n. (4.35)

seremos conduzidos a resolver um sistema de n + 1 equacoes cujas incognitassao os coeficientes de um polinomio do grau n + 1

a0, a1, · · · , an (4.36)

P (x) = a0 + a1x + · · · + anxn (4.37)

P (x0)...

P (xn)

=

y0

...yn

= (4.38)

P (x0) = y0

P (x1) = y1

......

P (xn) = yn

=

a0 + a0x0 + · · · + anxn0 = y0

a0 + a0x1 + · · · + anxn1 = y1

......

a0 + a0xn + · · · + anxnn = yn

(4.39)

P (x0)...

P (xn)

=

1 x0 x20 · · · xn

0

1 x1 x21 · · · xn

1...

......

...1 xn x2

n · · · xnn

a0

a1

...an

=

y0

y1

...yn

(4.40)

A

a0

a1

...an

=

y0

y1

...yn

(4.41)

Este e um sistema muito especial cuja matriz A e uma matriz de Vandermonde4esabemos, da Algebra Linear que o valor do seu determinante e obtido peloproduto das diferencas entre os seus elementos caracterısticos

x0, x1, x2, · · · , xn (4.42)

4Alexandre Vandermonde, matematico frances (1735-1796).

CAPITULO 4. SPLINES 113

(x0 − x1) · · · (x0 − xn)(x1 − x2) · · · (x1 − xn) · · · (4.43)

· · · (xk − xk+1) · · · (xk − xn) · · · (xn−1 − xn) = (4.44)

= Πi>j(xi − xj) = V an((xi)ni=0) = D (4.45)

em que V an((xi)ni=0) representa o determinante da matriz de Vandermonde,

de ordem n + 1, ver [12, pagina 301] ou [29, Vandermonde], cujos elementoscaracterısticos estao listados entre parenteses como parametros.

Este produto e diferente de zero, porque os nos 5 sao todos diferentes (naoteria sentido haver nos repetidos). Consequentemente a solucao do sistemaexiste e unica. Isto demonstra o teorema

Teorema 6 da interpolacao polinomial de LagrangeDada uma particao de um intervalo [a, b] com n + 1 nos,

a = x0, . . . , xn = b (4.46)

existe um unico polinomio de grau menor ou igual a n passando pelos pontos

(x0, y0) · · · (xn, yn) (4.47)

O unico polinomio identificado no (teorema 6) pode ser calculado a partir dosistema de equacoes descrito acima, mas este metodo conduz a formulas muitodifıceis de expressar. Em vez disto vamos usar um metodo algorıtmico que vaiconduzir a uma formula mais simples para encontrar este polinomio.

Os exercıcios seguintes sao um tutorial para conduzı-l@ a 6 entender o cha-mado metodo de Lagrange para determinacao deste unico polinomio de grau nque interpola os pontos

(x0, y0), (x1, y1), . . . , (xn, yn) (4.48)

associados a malhaa = x0 < x1 < · · · < xn = b (4.49)

sobre o intervalo [a, b].

Exercıcios 14 Tutorial sobre polinomio de LagrangeEstes exercıcios vao conduzı-lo a entender o que e um polinomio de inter-

polacao de Lagrange. Os exercıcios marcados com asterisco podem ser ignora-dos, porque nao serao usados em nenhum local do livro.

1. derivada algoritmica Considere

P (x) = (x − x1)(x − x2)(x − x3) (4.50)

Verifique que

P ′(x) = (x − x1)(x − x2) + (x − x1)(x − x3) + (x − x2)(x − x3) =(4.51)

P ′(x) = P1(x) + P2(x) + P3(x) (4.52)

5pontos da malha de precisao6mas descoberto por Edward Waring (1736-1798) e por Leonard Euler (1707-1783)

Page 64: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 114

em que (notacao)

P1(x) =P (x)

x − x1; P2(x) =

P (x)

x − x2; P3(x) =

P (x)

x − x3(4.53)

Solucao 4 Usando a derivada do produto: (uv)′ = u′v + uv′ que podeser usada com um produto de qualquer quantidade termos, e observandoque a derivada de que cada fator e 1, temos

P ′(x) = (x − x2)(x − x3) + (x − x1)(x − x3) + (x − x1)(x − x2)

uma soma de produtos em que, sucessivamente, cada um dos fatores ori-ginais foi eliminado (trocado por 1). E razoavel designarmos

P1(x) = (x − x2)(x − x3) = P (x)x−x1

; (4.54)

P2(x) = (x − x1)(x − x3) = P (x)x−x2

; (4.55)

P3(x) = (x − x1)(x − x2) = P (x)x−x3

(4.56)

e desta formaP ′(x) = P1(x) + P2(x) + P3(x) (4.57)

em que Pk e o polinomio sem o fator (x − xk) ou ainda e o quocienteP (x)x−xk

.

Vamos usar esta notacao no proximo exercıcio.————————————————

2. Verifique que se

P (x) = (x − x1)(x − x2)(x − x3) (4.58)

entao

(a) Pj(xk) = 0 se j 6= k

(b) Pk(xk) 6= 0

(c) Para todo k P ′(xk) 6= 0

Esboce o grafico de P e tente uma justificativa geometrica para o fato deque a derivada de P e diferente de zero se as raızes forem distintas.

Solucao 5 (a) Pj tem todos os fatores (x − xk) exceto (x − xj) logoPj(xk) = 0 se j 6= k.

Como (x−xj) nao e fator de Pj entao Pj(xj) 6= 0. Vemos assim queo valor de Pj(xk) e

Pj(xk) = 0 ⇐ j 6= kPj(xk) 6= 0 ⇐ j = k

(4.59)

CAPITULO 4. SPLINES 115

(b) O calculo da derivada P ′(xk):

P ′(x) =3∑

k=1

Pk(x) (4.60)

dado k P ′(xk)3∑

j=1

Pj(xk) (4.61)

P ′(xk) = Pk(xk) 6= 0 (4.62)

porque todos os termos em que j 6= k se tem Pk(xj) = 0. PortantoP ′ e diferente de zero em todos os nos e o seu valor e Pk(xk) em xk.

Veja o esboco grafico de P na figura (fig. 4.5) pagina 115, As retas

x1 x2

x3

P

Figura 4.5: Polinomio de Lagrange

tangentes tem por coeficiente angular o valor da derivada de P noponto

m1 = P ′(x1) e coeficiente angular em x1 (4.63)

m2 = P ′(x2) e coeficiente angular em x2 (4.64)

m3 = P ′(x3) e coeficiente angular em x3 (4.65)

(4.66)

————————————————

3. Verifique que se

P (x) = (x − x1)2(x − x2)(x − x3) (4.67)

entao P ′(x1) = 0.

Verifique que definindo

P1(x) =2P (x)

x − x1; P2(x) =

P (x)

x − x2; P3(x) =

P (x)

x − x3

Page 65: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 116

entao P ′ =3∑

k=1

Pk.

Esboce o grafico de P e tente uma justificativa geometrica do valor zeroou diferente de zero das derivadas. Tente elaborar uma uma teoria geralsobre o assunto, comparando este caso com o anterior.

4. derivada algoritmica Considere o polinomio de grau n

P (x) = Πnk=1(x − xk) (4.68)

(a) Verifique que

P ′(x) =n∑

k=1

Pk(x) (4.69)

em que, para cada k, Pk(x) = P (x)x−xk

.

(b) Encontre uma lei que descreva os valores Pk(xj)

(c) Prove que se P for um polinomio definido pela equacao (eq. 68) e asraizes xk todas distintas, entao P ′(xk) 6= 0 para todo k = 1 . . . n, ovalor da derivada, em todos os nos, e diferente de zero.

(d) Faca um esboco grafico de P e escreva uma pequena redacao justifi-cando, com uma argumentacao geometrica, porque P ′(xk) 6= 0.

Solucao 6 (a) E uma generalizacao dos exercıcios anteriores, agora te-mos um produto de n monomios, todos tendo por derivada 1. Quandoaplicarmos a derivada do produto teremos uma soma de n novos pro-dutos, cada com n − 1 termos em cada um dos quais aparentementedividimos P por cada um dos fatores, sucessivamente:

P1 = P (x)x−x1

(4.70)

P2 = P (x)x−x2

(4.71)

... (4.72)

Pn = P (x)x−xn

(4.73)

P ′(x) = P1(x) + P2(x) + · · · + Pn(x) (4.74)

P ′(x) =n∑

k=1

Pk(x) (4.75)

(b) Valor de Pk(xj).

Para cada k, o polinomio Pk(x) e um produto de n − 1 termos emque o fator (x − xk) nao esta presente, logo

Pk(xk) 6= 0.

CAPITULO 4. SPLINES 117

Por outro lado todos os fatores (x − xj) com j 6= k estao presentesem Pk(x) e assim

Pk(xj) = 0 ⇐ j 6= k.

(c) Calculo de P ′(xj)

P ′(xj) =n∑

k=1

Pk(xj) = Pj(xj) 6= 0 (4.76)

O grafico de P corta o eixo OX em todos os nos se alternando com maximoou mınimos locais entre as raızes. E um grafico semelhante ao que vocepode ver na figura (fig. 4.5) pagina 115.

————————————————

5. * Verifique (tente uma demonstracao) se P for dado pela equacao (eq. 68)com todos os xk distintos, entao as raizes de P e P ′ “se entrelacam” (temuma) raız de P ′ entre duas raizes de P . Escreva um teorema descrevendointeiramente esta situacao.

Solucao 7 Como as raızes sao todas distintas, (nao ha raızes multiplas)entao as raızes de P ′ sao todas distintas das raızes de P .

Como entre duas raızes de P este polinomio tera um maximo ou ummınimo7 local, entao P ′ tem uma raız entre duas raızes de P .

————————————————

6. * Por que a teoria do item anterior falha se houver raizes multiplas em(eq. 68) ?

Solucao 8 Porque quando houver uma raız multipla, ela tambem seraraiz da derivada. Suponhamos que x = a seja uma raız com multiplicidaden > 1 entao

f(x) = (x − a)ng(x) (4.77)

f ′(x) = n(x − a)n−1g(x) + (x − a)ng′(x) = (4.78)

f ′(x) = (x − a)[n(x − a)n−2g(x) + (x − a)n−1g′(x)] (4.79)

f ′(a) = 0 (4.80)

entao x = a tambem e raız de f ′.

————————————————

7quem garante isto e a continuidade

Page 66: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 118

7. * A hipotese essencial na teoria do exercıcio (exer. 5) e que P e umafuncao contınua e P ′ tambem e contınua. Generalize o (exer. 5 ) comestas duas hipoteses, para uma funcao f que e contınua e continuamentediferenciavel.

8. *oscilacao da derivada(1) Considere P (x) = x2−a2. Encontre uma condicao

para que o maximo da derivada P ′ seja maior do que o maximo de P nointervalo que contem as raızes8[−a, a]; a > 0 Prove que se |b−a| ≤ 4 entao

|(x − a)(x − b)| ≤ |2x − a − b| =⇒ x ∈ [a, b]

Sugestao: nada muda no tamanho (desigualdades) quando os graficos fo-rem transladados...

9. *oscilacao da derivada(2) Verifique que para P (x) = x(x2 − 1) o maximo

da derivada P ′ e maior do que o maximo de P no intervalo que contemas raızes [−1, 1]

10. Polinomio interpolando pontos no plano

(a) Considere a sequencia de nos

−2.5,−1.5, 0.5, 2, 3 ⊂ [−3, 3]

e encontre P com estas raızes e calculo o modulo maximo, M , de P ′.

(b) Solucao otima Calcule os coeficientes de Q = P/M

(c) Considere os pontos do plano

(−2.5, 0), (−1.5, 2), (−0.5, 3), (0.5, 3), (1.5, 1), (2.5,−2)

e calcule um polinomio que interpole este pontos usando o polinomioQ. Faca os graficos.

11. polinomio de Lagrange Considere a sequencia de nos

xk ∈ −2.5,−1.5, 0.5, 2, 3 ⊂ [−3, 3]

do intervalo [−3, 3]. Seja P o polinomio monico9que tem estes nos como

raızes. E defina Pk(x) = P (x)x−xk

.

(a) Calcule P ′.

(b) Mostre que

P ′ =5∑

k=1

Pk.

8a condicao a > 0 nao e essencial, apenas facilita a apresentacao do problema.9aquele cujo coeficiente do termo de maior grau e 1, obtido com os produtos

(x − x1) · · · (x − x5).

CAPITULO 4. SPLINES 119

(c) Mostre quePj(xk) = 0 =⇒ j 6= k

(d) Mostre queP ′(xj) = Pj(xj)

(e) Defina

f(x) =5∑

k=1

Pk(x)

P ′(xk)

Verifique que f e um polinomio de grau no maximo 5. Calculandoseus valores sobre os nos, verifique sua equacao.

(f) Considere a seguinte sucessao de dados yk ∈ 4, 1,−2,−5, 7 e re-

defina f(x) =5∑

k=1

ykPk(x)P ′(xk) . Mostre que f(yk) = yk e que, portanto, o

polinomio f interpola os pontos

(−2.5, 4), (−1.5, 1), (0.5,−2)(2,−5), (3, 7)

do plano.

(g) polinomio de Lagrange Considere uma sequencia de nos

(xk)nk=0 ⊂ [α, β]

Seja P o polinomio monico10que tem estes nos como raızes. E defina

Pk(x) = P (x)x−xk

.

i. Calcule P ′.

ii. Mostre que

P ′ =n∑

k=0

Pk.

iii. Mostre quePj(xk) = 0 =⇒ j 6= k

iv. Mostre queP ′(xj) = Pj(xj)

v. Defina

f(x) =n∑

k=0

Pk(x)

P ′(xk)

Verifique que f e um polinomio de grau no maximo n. Calcu-lando seus valores sobre os nos, verifique sua equacao.

10aquele cujo coeficiente do termo de maior grau e 1, obtido com os produtos

(x − x1) · · · (x − x8).

Page 67: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 120

vi. Considere uma sucessao de dados (yk)nk=0 e redefina f(x) =

n∑

k=0

ykPk(x)P ′(xk) . Mostre que f(yk) = yk e que, portanto, o polinomio

f interpola os pontos

((xk, yk)nk=0)

do plano.

(h) Considere uma sucessao (crescente) de nos (xk)nk=0 de um intervalo

[a, b]. Seja P o polinomio monico11que tem estes nos como raızes. E

defina Pk(x) = P (x)x−xk

. Verifique que

i.

P ′ =n∑

k=0

Pk

ii.Pj(xk) = 0 =⇒ j 6= k

iii.Pj(xj) = P ′(xj)

iv. f(x) =n∑

k=0

Pk(x)P ′(xk) e um polinomio de grau no maximo n. Calcu-

lando seus valores sobre os nos, verifique sua equacao.

v. Polinomio de Lagrange Considere uma sucessao de dados (yk)nk=0

e redefina f(x) =n∑

k=0

ykPk(x)P ′(xk)

. Mostre que f(yk) = yk

4.1.3 Interpolacao polinomial de Lagrange

Se voce tiver feito o tutorial sobre polinomio de Lagrange esta secao representaapenas um resumo do que foi feito no tutorial e possivelmente pode ser pulada.

Considere dois pontos no plano, eles determinam uma reta que e o grafico deum polinomio de grau menor12 ou igual a 1. Isto e dois pontos sao interpoladospor um polinomio de grau menor que dois. Tres pontos sao interpolados poruma parabola ou uma reta, novamente o grau e menor do que a quantidade depontos.

Assim, se quisermos interpolar n+1 pontos, deveremos obter um polinomiode grau no maximo n cujos n + 1 coeficientes ficam unicamente determinadospelos n + 1 pontos dados. Alias, o fato de havermos encontrado uma multitudede solucoes e um indicativo da fraqueza do metodo. Por outro lado, observeque o adjetivo “fraqueza” e enganoso uma vez que na verdade a nossa conclusao

11aquele cujo coeficiente do termo de maior grau e 1, obtido com os produtos

(x − x0) · · · (x − xn).

12salvo no caso em que os pontos estejam sobre uma paralela ao eixo OY ...

CAPITULO 4. SPLINES 121

deveria ser a de que existe excesso de informacoes e este excesso de informacoespode ser algumas vezes usado para obter melhor solucao em outro contexto.Guarde este comentario para uso posterior.

Vamos fazer um resumo do metodo, devido a Lagrange13 para construir umpolinomio de grau menor ou igual a n interpolando n + 1 pontos

(x0, y0), · · · (xn, yn) ; x0 < x1 < · · · < xn

dados.O metodo de Lagrange representa uma alternativa, usando a derivada, para

limitar a oscilacao do polinomio de interpolacao.Como habitual, chamamos os pontos x0, . . . , xn ∈ I = [a, b] de nos de uma

malha que consideramos no intervalo I. Como sempre,

a = x0, b = xn

sao os extremos do intervalo considerado.Estes nos que definem uma particao do intervalo I sao chamados de pon-

tos de precisao porque neles conhecemos exatamente a funcao que esta sendoestudada, por exemplo, eles sao os pontos em que estao colocados os sensoresque mediram algum fenomeno. Se estivermos aproximando alguma funcao g, afuncao aproximante f que sera construida por algum dos metodos que estuda-remos neste capıtulo, conıncidira com g nestes pontos: f(xk) = g(xk).

A particao nao precisa ser uniforme, embora seja pratico, nas implementacoescomputacionais, considerar particoes uniformes porque simplifica a construcaodo algoritmo. Voce ira encontrar, entre os nossos programas, um meio para tra-balhar com particoes nao uniformes, que podem ser uteis em alguns contextos,como na analise de de fenomenos com alta oscilacao, ou piques.

Portanto a medida dos intervalos Ik = [xk, xk+1] nao precisa ser a mesma.Comecamos considerando o polinomio

Q(x) = (x − x0) · · · (x − xn) (4.81)

de grau n + 1 cuja derivada e obtida pela regra do produto, acompanhe asequencia de operacoes que lhe devem ser familiares, como consequencia deexercıcios anteriores:

Pk(x) = P (x)x−xk

um polinomio de grau n (4.82)

P ′(x) =n∑

k=0

Pk(x) (4.83)

Pk(xk) = P ′(xk) (4.84)

Pk(xj) = 0 ⇐==⇒ j 6= k (4.85)

f(x) =n∑

k=0

Pk(x)P ′(xk) (4.86)

f(xk) =n∑

k=0

Pk(xk)P ′(xk) = Pk(xk)

P ′(xk) = P ′(xk)P ′(xk) = 1 (4.87)

13mas descoberto por Edward Waring (1736-1798) e por Leonard Euler (1707-1783)

Page 68: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 122

como f e uma combinacao de polinomios de grau n entao e um polinomio cujograu e no maximo n. Como os valores deste polinomio nos n + 1 nos sao aunidade, podemos concluir que f e constante igual a 1. As experiencias feitascom gnuplot na lista de exercıcios acima ja evidenciou estes fatos.

Quer dizer que a expressaon∑

k=0

Pk(xk)P ′(xk) e uma combinacao linear convexa

(uma soma de pesos), para todos os valores de x no intervalo [a, b]. Se portantoescolhermos uma colecao de n + 1 valores, cada um deles associados a um dosnos podemos definir:

g(x) =n∑

k=0

ykPk(x)

P ′(xk)(4.88)

e como o valor da soma, em cada no era 1, agora

g(xk) = yk

o que nos da um polinomio de grau n passando por n + 1 pontos escolhidos nointervalo [a, b].

O polinomio de grau n, equacao (88), e o polinomio de interpolacao deLagrange.

4.2 Funcoes polinomiais por pedacos

A forma mais simples de interpolar uma colecao de pontos do plano consiste em liga-los porsegmentos de reta: a poligonal cujos vertices sao os pontos dados. Aqui vamos considerarum caso particular em que os pontos dados representam valores de uma funcao hipoteticadefina em um intervalo [α, β], os valores obtidos pelas medicoes de um sensor ao longo de umintervalo do tempo. Nestas condicoes as abcissas destes pontos sao uma sequencia crescentede pontos do intervalo [α, β],

α = a0 < a1 < · · · < an = β

e a poligonal mencionada acima e uma funcao linear por pedacos, caso particular do nossoobjetivo. Vamos generalizar o caso das poligonais nesta secao construindo os quase-splines,que sao funcoes polinomiais por pedacos do terceiro grau cuja derivada e contınua.

Nesta secao vamos fazer a construcao teorica das funcoes polinomiais porpedacos que ja aparecerem em varios exercıcios e que portanto voce ja estapraticamente familiarizado com este instrumento. Aqui a linguagem sera maisformal apenas.

Alguns itens da lista de exercıcios seguinte servem apenas para relembra-lode algumas tecnicas, do Calculo Diferencial e Integral e da Geometria Analıticaque precisaremos na continuacao. Aquilo que lhe parecer trivial voce deve,simplesmente, saltar.

Exercıcios 15 Polinomios por pedacos

CAPITULO 4. SPLINES 123

1. Funcao linear por pedacos

(a) Considere a sequencia de nos

xk ∈ −3,−2.5,−1.5,−0.5, 0.5, 1.5, 2.5, 3 ⊂ [−3, 3]

e a sequencia de valores correspondente

yk ∈ 0, 1,−1,−2,−3,−1, 2, 0

Construa, (faca o grafico) da poligonal que interpola os pontos (xk, yk).

(b) Chame f a funcao cujo grafico foi feito no item anterior e calcule osseus valores nos pontos inteiros do intervalo [−3, 3].

2. Considere a seguinte melhoria nos dados do item anterior: para cada noda malha, o sensor calculou a taxa de variacao

dk ∈ 1, 0,−2,−1, 0, 1, 0,−1

e consequentemente, em cada intervalo Ik = [ak, ak+1] temos quatro in-formacoes:

Ik =

no valor taxa de variacao

xk yk dk

xk+1 yk+1 dk+1

Encontre, para cada intervalo Ik, o polinomio

Pk(x) = ak,0 + ak,0(x − xk) + ak,0(x − xk)2 + ak,0(x − xk)3

que14 pode ser obtido considerando os valores nos extremos de Ik, yk, yk+1

e as taxas de variacao nestes pontos, dk, dk+1, quer dizer que

Pk(xk) = yk P ′k(xk) = dk

Pk(xk+1) = yk+1 P ′k(xk+1) = dk+1

3. Calcule a quantidade do fenomeno descrito no exercıcio (ex. 2 ), pordefinicao a quantidade de um fenomeno e a integral da funcao que o des-creve.

4. Considere a seguinte tabela de dados (obtidos por um sensor)

xk yk dk

−5 7 −31 3 17 5 −2

14dizemos que este polinomio esta desenvolvido no ponto xk

Page 69: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 124

em que xk sao os nos da malha e yk, dk sao, respectivamente o valor me-dido e a taxa de variacao calculada em cada no. Encontre um polinomiopor pedacos do15 terceiro grau, P , que represesente o fenomeno no inter-valo [−3, 3] e faca o grafico.

4.2.1 Um sensor mais inteligente

Retomando a linguagem e a notacao que usamos na discussao do polinomio deLagrange, quando tivermos uma malha

a = x0, . . . , xn = b (4.89)

definindo uma particao de um intervalo [a, b], o problema tıpico que desejamosresolver consiste em criar um modelo para um fenomeno cujos valores

y0, . . . , yn (4.90)

sao conhecidos (medidos) sobre os nos. Anteriormente usamos a linguagem“desejamos encontrar um polinomio que passe pelos n + 1 pontos”

(x0, y0) · · · (xn, yn) (4.91)

agora diremos que desejamos encontrar uma polinomial, uma funcao polinomialpor pedacos que passe pelos pontos na equacao (91).

Uma situacao pratica que este problema descreve, consiste de uma serie desensores colocados ao longo de uma via por onde passe o fenomeno que desejamosmedir, como um oleoduto e a pressao arterial do fluido que nele passe, ou avelocidade e a intensidade do trafego em uma estrada, enfim, qualquer eventoque possa ser medido controlado por um parametro que pertence a um intervalo.

Este e o significado de yk, a medida tomada no no xk, examine os exercicios(ex. 2) e (ex. 3), pagina 123.

Vamos considerar um sensor de melhor qualidade, capaz de nao somentemedir a intensidade do fenomenos em cada no xk mas tambem calcular-lhe ataxa de variacao neste ponto. Assim a base de dados que temos e

(x0, y0, d0) · · · (xn, yn, dn) (4.92)

em que yk e a intensidade do fenomeno em cada no xk e dn e a taxa de variacaoem cada no.

Exemplo 10 SensorVamos mostrar com um pequeno exemplo que a situacao descrita acima e

explorada no exercıcio 1, do sensor que tambem mede taxas de variacao, erealista.

Considere um sensor colocado em uma local estrategico para medir um fenome-no que executa as medicoes a intervalos determinados, a cada minuto, por exem-plo. Mas, ao “disparar o medidor, em vez de fazer uma unica medida, faz tresmedicoes, por exemplo, a cada mili-segundo.

15chamos este tipo de funcao de “uma polinomial do terceiro grau”

CAPITULO 4. SPLINES 125

**aqui pagina 24A base de dados assim levantada fica descrita pela matriz

x0 y0,1 y0,2 y0,3 d0 =y0,2−y0,1

∆t1+

y0,3−y0,2∆t2

2=

∆y0,1∆t1

+∆y0,2∆t2

2...

......

......

xn yn,1 yn,2 yn,3 dn =yn,2−yn,1

∆t1+

yn,3−yn,2∆t2

2=

∆yn,1∆t1

+∆yn,2∆t2

2

(4.93)

em que dk e o valor medio das duas taxas de variacao que pudemos calcularusando as tres medidas finas obtidas em cada no.

Simplificando, desta matriz de dados vamos fazer uso apenas da submatriz

x0 y0,1 d0

......

...xn yn,1 dn

(4.94)

e vamos simplificar a notacao

x0 y0 d0

......

...xn yn dn

(4.95)

“esquecendo” o metodo como obtivemos as derivadas aproximadas e mesmo ig-noraremos na continuacao que se tratam de “derivadas aproximadas”. Diremosque dk e a derivada no ponto xn quer dizer que temos 2(n + 1)informacoesprocessadas16 pelo sensor:

• Quatro informacoes em cada sub-intervalo [xk, xk+1]. Temos

no no xk : yk, dk (4.96)

no no xk+1 : yk+1, dk+1; (4.97)

• Polinomios por pedacos. Em cada sub-intervalo podemos calcular umpolinomio de grau tres que modela o fenomeno no intervalo [xk, xk+1];

Pk(x) = ak,0 + ak,0(x − xk) + ak,0(x − xk)2 + ak,0(x − xk)3

Examine, novamente, os exercicios (ex. 2) e (ex. 3), pagina 123.

• Malha com n + 1 nos, com os n + 1 pontos, incluindo os extremos do in-tervalo, determinammos n subintervalos, temos n polinomios de grau tresque irao modelar o fenomeno no intervalo [a, b];

16Houve uma quantidade bem maior de informacoes coletadas, depois de coletadas foramprocessadas, ou pelo sensor ou por um programa num computador resultando em 2(n + 1)informacoes.

Page 70: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 126

• Polinomial de grau tres e esta funcao que estamos chamando de uma po-linomial de grau tres que usaremos como modelo para os fenomenos queestamos estudando. A polinomial tambem chamada de funcao polinomialpor pedacos.

Podemos resumir estes dados na tabela:

x0 y0 d0 P0(x) = a0,0 + a0,1(x − x0) + a0,2(x − x0)2 + a0,3(x − x0)

3

......

......

xn yn dn Pn(x) = an,0 + an,1(x − xn) + an,2(x − xn)2 + an,3(x − xn)3

(4.98)Ha varias formas de resolver o exercıcio 1. Leia a solucao dos exercıcios ao

final do capıtulo, nos vamos usa-la como metodo de trabalho. Rode os nossosprogramas usando-os como exemplos dinamicos17 do texto.

4.2.2 Aproximacao de funcoes

Analise o grafico (fig. 4.6) pagina 126,

gráfico da função

gráfico da aproximação

−60

−40

−20

0

20

40

60

−10 −5 0 5 10

Aproximação de uma função

"polped""precisao"

"XOY"

Figura 4.6: Aproximacao de uma funcao

Este grafico (fig. 4.6), pode ser reproduzido e inclusive impresso em papel,usando o programa18 aproximacao que pode ser encontrado em [20, progra-mas.tgz] No grafico voce pode ver uma funcao do tipo

f(x) = P (x)sen(ax + b) (4.99)

obtida pelo produto de uma funcao polinomial por uma senoide. Tais funcoessao bons exemplos de modelos com grandes oscilacoes e portanto que oferecem

17simplesmente rodar os programas nao o vai levar a adquirir conhecimento...18escolha, no programa, a opcao (3)

CAPITULO 4. SPLINES 127

dificuldades para serem aproximadas. Rodando o programa com intervalos gran-des, por exemplo [−30, 30] voce podera ver os defeitos da aproximacao. Usandoo intervalo default do programa, voce tera uma visao enganosa de perfeicao, mase este o objetivo do programa, permitir que voce manipule o exemplo o que naoe possıvel fazer com uma figura como (fig. 4.6).

Observacao 5 Simulacao da realidadePrimeiro que tudo e preciso observar que nao temos nenhuma funcao para

aproximar. O nosso objetivo e o de resolver problemas do tipo exemplificadopelo (ex. 3), pagina 123 em que uma massa de dados e obtida, de algumaforma19, representando um certo fenomeno que desejamos estudar. No casodos programas educacionais que fizemos, e interessante supor que exista umafuncao f dada, por uma equacao “algebrica”20, como

f(x) = P (x)sen(ax + b),

porque podemos exibir graficos que mostrem as perfeicoes ou as fraquezas dometodo. Nada poderiamos ilustrar apenas apresentando o modelo.

Falaremos com frequencia de uma funcao hipotetica que estamos tentandoaproximar, e essa funcao seria a equacao do fenomeno. Ora, a Natureza e muitorebelde para ser equacionada e e porisso que precisamos de modelos matematicospara simular a Natureza, e, naturalmente, sempre estar conscientes de que umaparte, possivelmente significativa, da realidade se perdeu em sua idealizacao pelomodelo.

A unica forma de ter seguranca com simulacoes e

• Rodar diversas vezes o modelo. Rode o programa aproximacao com inter-valos bem diferentes, para entender o que estamos dizendo;

• cada vez que o modelo for rodado, fazer uma nova entrada de dados expe-rimentais;

• acompanhar estatisticamente a dispersao entre os dados obtidos com omodelo e os levantamentos de dados do fenomenos estudado;

• somente aceitar o modelo quando resultados independentes tiverem umadispersao estatıstica baixa.

Modelos sao aproximacoes da realidade construidas por seres humanos quepodem perder de vista um aspecto muito importante do problema no qual voceestiver aplicando o modelo. Eis a razao da importancia de entendamos os mo-delos por dentro e os possamos modificar, este e um ponto central na questaosoftware aberto.

Obviamente que existe um custo a ser considerado e, infelizmente, este custopode ser alguma vezes sobreposto a questoes como seguranca, aqui entra a etica...

19em geral com auxılio de sensores20estamos usando “algebrico” de forma larga, seno nao e evidentemente uma funcao

algebrica

Page 71: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 128

Base teorica dos modelos

Ha varios tipos de modelos e este assunto sozinho ocupa varios volumes naliteratura, portanto o leitor deve ficar consciente de que aqui seguiremos porum atalho em busca de um tipo de modelo de nossa escolha. Na bibligrafia vocepodera encontrar mais dados para prosseguir num aprofundamento, se este foro seu desejo.

Numa classificacao um pouco simples consideraremos dois tipos de modelos:

• discretos em que o conjunto sobre os quais as funcoes estiverem defini-das tenha um numero finito de valores. Teoria dos jogos por exemplousa este tipo de modelos, a analise combinatoria, ou mais amplamente acombinatoria, e uma base teorica para tais modelos;

• contınuos em que as funcoes envolvidas tem como domınios subconjuntosdos numeros reais. As funcoes contınuas e diferenciaveis sao a peca centralnestes modelos com todas as tecnicas, integral e derivada, do CalculoDiferencial e Integral.

Os modelos de que trataremos neste livro sao do segundo tipo, os contınuos.

Observacao 6 Contradicao dos modelos contınuosMelhor do que contradicao seria possivelmente usar a palavra paradoxo. Aqui

e preciso chamar sua atencao para uma contradicao com a qual e preciso con-viver.

Todo o nosso trabalho se encontra intimamente ligado com programas decomputador, enfim com computadores. Ora, tudo em um computador e finito,quer dizer que estaremos modelando o infinito (contınuo)21com um modelo dis-creto, o computador.

Uma das consequencias mais funestas desta contradicao e que surge um itemomnipresente em nossos trabalhos, o erro, que temos que, permanentemente,levar em conta. Aqui e preciso ter uma atitude sempre realista de verificacaosistematica dos modelos em suas aplicacoes. Mas o objetivo desta observacaonao e o de sugerir o receio e sim o de observar que o cuidado sempre deveestar presente e um metodo pratico para enfrentar esta questao e o trabalho emequipes.

Os elementos da teoria sao os seguintes:

• da computacao vem uma tecnica que estamos usando deste o primeirocapıtulo, varredura;

• na Matematica, esta tecnica computacional de varreduras, assume o as-pecto de malha, ou particao de um determinado conjunto. Estes doisconceitos matematicos sao equivalentes, malha,particao, embora algumasvezes nao seja trivial a passagem de um para o outro. Neste livro sem-pre usaremos malhas associadas a um conjunto de pontos que determinam

21com frequencia a palavra contınuo e tomada como sinonimo de infınito mas os dois con-ceitos sao distintos

CAPITULO 4. SPLINES 129

“retangulos” (nos casos multidimensionais) ou “sub-intervalos” (nos casosunidimensionais). Veja as figuras (fig. 2.2), pagina 32 e (fig. 2.3), pagina35.

Um exemplo, no caso unidimensional e o que voce tem no (ex. 3), pagina123, em um conjunto de nos escolhidos em um intervalo determina amalha. Associada a esta malha temos uma famılia de polinomios do grautres, uma polinomial do grau tres e assim escapamos do alto custo com-putacional que e trabalhar com polinomios de grau elevado;

• convergencia do algoritmo Os algoritmos definem sucessoes. Estudamossucessoes no capıtulo tres. Uma sucessao e uma funcao definida no con-junto dos numeros naturais e tomando valores em um outro conjunto. Estesegundo conjunto determina a natureza das sucessoes. Com frquencia,neste livro, as sucessoes tem valores reais, e o que chamamos de sucessoesde numeros reais22. Sucessoes deste tipo definem numeros quando foremconvergentes, e o limite da sucessao. Entretanto, nao daremos enfase aconvergencia de algoritmos neste livro, e isto e um defeito do livro, procurecompensar este defeito com literatura complementar.

• o conceito de continuidade e utilizado seguidamente. No Calculo voce es-sencialmente estudou que se a diferenca

|∆x| = |x2 − x1|

for pequena, entao a diferenca

∆f = f(x2) − f(x1)

tambem sera pequena quando a funcao f for contınua. Este e um pontoessencial e que se encontrara em jogo a todo momento. Vamos sempresupor que os fenomenos sao contınuos. Lavoisier dizia, veja [11], que “naNatureza nada se cria e nada se perde, tudo se transforma que se podetraduzir grosseiramente por a Natureza nao da saltos, modificado pelaCiencia Quantica para “a natureza da saltos, porem pequenos.

E a continuidade que usamos quando afirmamos que ao refinarmos umamalha reduzimos o erro cometido.

As funcoes diferenciaveis sao apenas funcoes mais profundamente contınuas.A derivada e uma ordem superior de continuidade.

E com base nestes tres conceitos

• malha ou particao e sua realizacao computacional, a varredura;

• convergencia de sucessoes;

22em geral numeros racionais, sobretudo porque os nossos programas de computador so-mente podem lidar com numeros racionais

Page 72: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 130

• continuidade dos fenomenos a hipotetica equacao que governaria um feno-meno das ciencias naturais ou humanas, e uma funcao contınua e mesmodiferenciavel,

que vamos construir os modelos e provar que eles conseguem nos dar uma apro-ximacao satisfatoria da realidade.

A proxima lista de exercıcios tem por objetivo recıclar os seus conhecimentosde Calculo dentro do nosso objetivo.

Observacao 7 A admiravel eficiencia dos modelos matematicosOu, em outras palavras, modelos contınuos para um Universo esponjoso.Os saltos quanticos nao alteram ou impedem o uso da continuidade nos mo-

delos embora eles tenham que ser levados em conta num momento apropriado...Na verdade o Universo e esponjoso e nao existe, na vida real, a continui-

dade dos modelos matematicos. Mas os modelos, mesmo sendo, como sao, umarealidade virtual, nos permitem analisar a realidade fısica muito bem, desde quesaibamos usa-los adequadamente. O nosso objetivo e mostrar-lhe isto aqui.

Exercıcios 16 Continuidade e diferenciabilidadeSe um exercıcio lhe parecer obvio, nao o faca, nao perca tempo, mas seja

honesto consigo proprio: se um exercıcio lhe parecer pouco claro, crie umavariante do mesmo e faca os dois, o exercıcio e a variante.

1. continuidade Construa uma polinomial do terceiro grau P usando os dadosda tabela abaixo. Prove, usando P0(x1) = P1(x1), que P e continua. Proveque P tambem e diferenciavel.

xk yk dk

x0 = −5 1 0x1 = 0 0 −1x2 = 6 2 1

2. Considere a figura (fig. 4.7) pagina 131. Justifique a existencia de pontos

no intervalo de definicao nos quais f ′(ζ) = f(b)−f(a)b−a . Identifique ζ, a, b e

o teorema do Calculo que governa esta afirmacao.

3. Considere uma funcao contınua e diferenciavel, f , definida no intervalo[−5, 6] e a poligonal do terceiro grau P definida pela tabela seguinte:

xk yk dk

x0 = −5 f(−5) f ′(−5)x1 = 0 f(0) f ′(0)x2 = 6 f(6) f ′(6)

Mostre que existe um ponto x0,1 ∈ [x0, x1] tal que P ′(x0,1) = f(x1)−f(x0)x1−x0

e um ponto x1,1 ∈ [x1, x2] tal que P ′(x1,1) = f(x2)−f(x1)x2−x1

indicando qual eo Teorema do Calculo que garante isto.

CAPITULO 4. SPLINES 131

a b

f

1

Figura 4.7: Derivada, tangente e Teorema do Valor medio

4.3 Quase-splines

Como anunciamos no inıcio, a partir dos anos 1950, comecamos adescobrir que havia um metodo polinomial mais inteligente. Emvez de procurarmos um polinomio de grau elevado, n passandopor n + 1 pontos dados, poderiamos procurar varios polinomiosde grau mais baixo. Isto e o que chamamos de polinomios porpedacos, uma polinomial. . Estas polinomiais sao quase-splines.Vamos construtivamente mostrar que uma polinomial de grau trese a solucao otima e depois vamos definir o que sao splines.

4.3.1 Polinomiais de grau tres

Queremos resolver o problema de interpolar n + 1 pontos com a informacaoextra da taxa de variacao em cada um dos nos. Isto corresponde a um conjuntode quatro informacoes sobre cada sub-intervalo considerado o que nos permitedeterminar, associado a cada um dos intervalos, um polinomio de grau tres.

A solucao vai ser obtida iterativamente percorrendo o conjunto dos interva-los, vamos entao simplificar a notacao, considerando [a, b] um intervalo generico:

c1 = P (a), d1 = P (a)′ (4.100)

c2 = P (b), d2 = P (b)′ (4.101)

no intervalo [a, b] e sabemos, da aproximacao polinomial classica que estudamosinicialmente, que estas quatro informacoes nos permitem determinar de formaunica um polinomio do grau tres.

Page 73: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 132

Temos as equacoes, (desenvolvendo o polinomio no ponto a)

P (x) = m0 + m1(x − a) + m2(x − a)2 + m3(x − a)3

P (a) = m0 = c1

P ′(x) = m1 + 2m2(x − a) + 3m3(x − a)2

P ′(a) = m1 = d1

P (b) = m0 + m1(b − a) + m2(b − a)2 + m3(b − a)3 = c2

P ′(b) = m1 + 2m2(b − a) + 3m3(b − a)2 = d2

(4.102)

que se reduz assim a duas equacoes nas incognitas ainda restantes m2, m3 ob-servando que sao conhecidos:

m0 = c1, m1 = d1, b − a, c2, d2 (4.103)

c1 + d1(b − a) + m2(b − a)2 + m3(b − a)3 = c2

d1 + 2m2(b − a) + 3m3(b − a)2 = d2(4.104)

3c1 + 3d1(b − a) + 3m2(b − a)2 + 3m3(b − a)3 = 3c2

d1(b − a) + 2m2(b − a)2 + 3m3(b − a)3 = d2(b − a)(4.105)

3c1 + 2d1(b − a) + m2(b − a)2 = 3c2 − d2(b − a) (4.106)

m2 = 3c2−d2(b−a)−(3c1+2d1(b−a))(b−a)2 (4.107)

Nas (eq.105 ) igualamos os coeficientes de m3 depois subtraimos as duas equacoespara obter a (eq.106) de onde tiramos o valor de m2.

Esta solucao e possıvel porque os nos a, b sao diferentes e assim, calculado ovalor de m2, ele pode ser substituido numa das equacoes (eq.105 ), por exemploem,

c1 + d1(b − a) + m2(b − a)2 + m3(b − a)3 = c2

o que vai nos permitir o calculo de m3:

m3 =c2 − (c1 + d1(b − a) + m2(b − a)2)

(b − a)3(4.108)

que tambem e possıvel porque a 6= b. Observe que nao nos preocupamos emexplicitar os valores porque estas contas devem ser feitas dentro de um programaque ira fazer os calculos finais.

Como esta solucao e unica, achamos assim o unico polinomio P do terceirograu que satisfaz as quatro condicoes no intervalo [a, b].

Demonstramos assim:

Teorema 7 Existencia e unicidade da poligonal de grau tresDada uma particao

a = x0 < . . . < xn = b (4.109)

de um intervalo [a, b] e uma lista de pares de valores

y0, d0, . . . , yk, dk, . . . , yn, dn (4.110)

CAPITULO 4. SPLINES 133

interpretados como valor no ponto, yk, e taxa de variacao no ponto, dk, existeuma unica poligonal P = (P0, . . . , Pk, . . . , Pn) do terceiro grau tal que

P (xk) = yk P ′(xk) = dk

P (xk+1) = yk+1 P ′(xk+1) = dk+1(4.111)

com (desenvolvendo o polinomio Pk no ponto xk)

Pk(x) = mk,0 + mk,1(x − xk) + mk,2(x − xk)2 + mk,3(x − xk)3 (4.112)

mk,0 = Pk(xk) = yk (4.113)

mk,1 = P ′k(xk) = dk (4.114)

sk = xk+1 − xk 6= 0 (4.115)

mk,2 = 3yk+1−skdk+1−3yk−2dksk

s2k

(4.116)

mk,3 =yk+1−(yk+dksk+mk,2s2

k)

s3k

(4.117)

O programa “aproximacao” calcula os coeficientes da poligonal em cadaum dos intervalos lancando os resultados no arquivo “dados” que voce pode lercom um editor de textos. O programa lhe dira isto. Escolha a opcao (5) noprograma, mas antes edite o arquivo leitura onde os dados do sensor devemestar gravados. O programa tem um pequeno texto explicativo em que estasinformacoes lhe serao apresentadas. Use a opcao (7) para isto, ou responda quedeseja ler a teoria, ao iniciar o programa.

Como a polinomial P coıncide com o polinomio Pk no intervalo [xk, xk+1],entao P e contınua e diferenciavel em cada sub-intervalo. Como Pk+1(xk+1) =Pk(xk+1) e P ′

k+1(xk+1) = P ′k(xk+1) entao P e contınua e diferenciavel no inter-

valo [a, b]

Pk(xk+1)′′ = 2mk,2 (4.118)

Pk+1(xk+1)′′ = 2mk+1,2 (4.119)

(4.120)

4.4 Valor medio integral

O tamanho da letra indica que o assunto desta secao e mais difıcil. Voce pode optar porsalta-lo se achar que a discussao anterior sobre valor medio @ deixou convencid@.

Vamos precisar do valor medio integral em nossa construcao dos splines e como este tipode valor medio e muito importante e sera usado muito no capıtulo 0, vamos fazer aqui umarevisao deste assunto de Calculo.

Definimos:

Definicao 2 (Valor medio integral) Valor medio integral Se f for integravel no intervalo[a, b] entao

V almed(f)[a,b] =1

b − a

bZ

a

f(x)dx

Page 74: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 134

Os probabilistas fazem uso de um outro tipo de valor medio integral que e uma genera-lizacao deste que acabamos de definir e para definir os splines vamos precisar desta genera-lizacao.

Considere uma funcao positiva cuja integral seja 1. Um exemplo bem simples e umafuncao como

χ[−0.5,0.5] (4.121)

a funcao caracterıstica do intervalo [−0.5, 0.5], exatamente porque a medida do suporte,[−0.5, 0.5], e 1. Demos um exemplo, mas vamos continuar pensando numa funcao qualquerpositiva cuja integral seja 1.

Esta questao do valor medio esta longe de ser obvia. Temos que demonstra-la, provar quee verdade.

Vale a pena discutir um topico muito importante que e Valor medio integral.Vamos comecar analisando qual e o significado da integral

βZ

α

g = 1 (4.122)

quando g for uma funcao positiva23, definida em um intervalo limitado [α, β].Integral no sentido24 de Riemann e area! quer dizer que podemos calcular aproximada-

menteβR

α

g se colocarmos uma malha fina no intervalo [α, β] e considerarmos os sub-retangulos

que os sub-intervalos vao gerar no grafico de g. Assim produzimos a soma que chamamos desoma de Riemann, e que voce deve ter visto no curso de Calculo25, veja o grafico na figura(fig. 1), na pagina ix. Uma soma de Riemann tem o seguinte aspecto:

nX

i=0

g(xi)∆xi (4.123)

e no caso de g, como sua integral vale 1, temos

nX

i=0

g(xi)∆xi ≈ 1 (4.124)

em que26 todos os numeros que aparecem na soma sao positivos.

Definicao 3 PesosUma colecao de numeros positivos, cuja soma e 1 se chama uma colecao de pesos, ou

simplesmente pesos.

Famılias de pesos sao usadas para calcular medias aritmeticas ponderadas, por exemplo,a inflacao27 e uma media aritmetica ponderada.

No caso da funcao g = χ[−0.5,0.5] esta soma e exatamente 1, mas observe que estamosfazendo uma demonstracao e assim g e uma funcao qualquer satisfazendo duas propriedades:

• e positiva;

• sua integral e 1.

23um nucleo, ou um pulso unitario24usamos apenas integrais no sentido de Riemann, neste livro! e tem integral num sentido

diferente?25O capıtulo 0 faz uma revisao rapida deste assunto, visite-o agora se achar que precisa.26aproximadamente 1 porque e uma aproximacao da integral que supusemos ser 127Em que os governos colocam pesos onde lhe interessam para produzir os ındices inflacio-

narios com que nos enganam

CAPITULO 4. SPLINES 135

Se agora colocarmos a funcao f na soma de Riemann, teremos:

nX

i=0

f(xi)g(xi)∆xi (4.125)

e podemos interpretar esta soma como uma quase28 media aritmetica dos valores de f nointervalo [α, β] porque

xi ∈ [α, β]

onde estamos calculando a integral.Veja esta afirmacao de outra maneira: os valores

f(xi); xi ∈ [α, β]

podem ser interpretados como amostragem de f neste intervalo e a equacao (eq. 125) e ovalor medio desta amostragem por que a soma dos numeros g(xi)∆xi e quase 1.

Quanto mais fina for a malha, mas proximo de 1 estara a soma na equacao (eq.124 )29,portanto e este o valor da integral, “o valor medio de f no intervalo [α, β], relativamente afuncao g”.

Aqui temos dois fatores de precisao com que lidar:

• a densidade dos pontos da malha, quanto mais pontos forem tomados na amostragem,mais preciso fica o levantamento de dados, mas tambem fica mais caro;

• a medida da regiao de correcao que e o tamanho do intervalo [α, β], a “base” da funcao-peso com que estamos fazendo a media. Veja a ilustracao da regiao de correcao nafigura (fig. 4.11) pagina 144. Quanto menor for a medida desta regiao, mais exato ficaa correcao do erro na funcao,

a “ciencia” vai consistir em obter o maximo de precisao com o mınimo de custo.A funcao utilizada para calcular o valor medio, influencia este valor medio. Como em

qualquer media aritmetica ponderada30 , a escolha dos pesos influencia o valor da media, querdizer que tais medias sao viciadas31, nao podemos ter uma resposta padrao sobre o valormedio integral

βZ

α

f(x)g(x)dx = V alMedg,[α,β](f) (4.126)

que chamamos de Valor medio integral de f relativo a g, no intervalo [α, β].Em geral as funcoes usadas para calcular valor medio, sao funcoes equilibradas em torno do

zero, o ponto central do grafico, e sao translatadas para uma certa posicao, para alı fazer o valormedio da funcao que interessa, como e o caso de χ[−0.5,0.5] , que alem do mais e uniforme aolongo do intervalo [−0.5, 0.5] e consequentemente ela produz uma autentica media aritmeticade f no intervalo.

Quando a medida da regiao de correcao diminue, esta media tende para o valor de f , noponto central da regiao de correcao, se ele existir.

Quando a funcao f for contınua, este valor coıncide com algum valor de f no intervalo emque a media esta sendo calculada32. Se a funcao for descontınua ele representa uma propostade correcao da funcao. Esta ideia e essencial em diversas areas hoje, sob a rubrica correcaoda informacao.

Veja na figura (fig. 4.11) pagina 144, a ilustracao da regiao de correcao.Esta questao da media, a sua dependencia de uma funcao-peso, esta longe de ser obvia.

Mas se voce raciocinar um pouco, chegara a conclusao que deve ser assim. Por exemplo,

28quase, porque a soma de Riemann,(eq. 124), nao e 1, ela e aproximadamente 129e mais preciso o calculo da media aritmetica30e o valor medio integral e uma media ponderada31o adjetivo vicidadas tem sentido tecnico, aqui, mas voce pode facilmente extrapolar o

sentido da frase para outros contextos menos tecnicos...como no calculo da inflacao. A inflacaoe polıtica! os precos sao polıticos! os juros sao polıticos!

32esta e uma propriedade das funcoes contınuas

Page 75: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 136

• considere g, a funcao relativamente a qual se quer calcular a media, como tendo maisarea a esquerda do ponto central a do intervalo. Tendenciosa a esquerda. Entao amedia estara mais influenciada pelos valores a esquerda; Veja a (fig. 4.13) pagina 148.

• considere agora g, a funcao relativamente a qual se quer calcular a media, como tendomais area a direita do ponto central a do intervalo. Tendenciosa a direita. Entao amedia estara mais influenciada pelos valores a direita; Veja a (fig. 4.13) pagina 148.

• mas se agora, g for equilibrada, tiver areas iguais a direita e a esquerda do ponto central,vamos encontrar a media aritmetica, o valor de f neste ponto central a, se ele existir;

• e fica uma pergunta nao respondida, porque usamos uma variedade grande de funcoes-peso, porque nao usamos sempre a mesma, uma funcao equilibrada em torno de umponto central ? guarde esta pergunta no bolso...

este raciocınio deve conduzı-l@ a aceitar que se g nao tiver inclinacoes nem a direita, nem aesquerda, entao a media calculada com ela correspondera ao valor f(a)33 em que a e o pontocentral do intervalo.

Conseguimos assim “demonstrar” o teorema:

Teorema 8 do valor medio integralSe g for uma funcao positiva tal que

βZ

α

g = 1 (4.127)

entao

V alMedg,[α,β] =

βZ

α

f(x)g(x)dx (4.128)

e o valor medio integral de f relativamente a g no intervalo [α, β]. E se g for equilibrada nointervalo [α, β] no sentido de que tenha a mesma area a esquerda e a direita do ponto centrala deste intervalo, entao

a ∈ [α, β] ; V alMedg,[α,β] =

βZ

α

f(x)g(x)dx = f(a) (4.129)

Observacao 8 Um erro no teorema do valor medioO teorema 8 tem um erro que e preciso corrigir. Observe o grafico na figura (fig. 4.9).

A funcao f nao esta definida no ponto c

Quer dizer que nao podemos escrever

c ∈ [α, β] ; V alMedg,[α,β] =

βZ

α

f(x)g(x)dx = f(c) (4.130)

como esta no teorema, mas sim

V alMedg,[α,β] =

βZ

α

f(x)g(x)dx (4.131)

ou seja, apenas dizer que e o valor medio. E o acontece, no grafico (fig. 4.9), pagina 141 emrelacao ao ponto c em que a funcao pode nem siquer estar definida.

Aproveitemos para ver que o valor medio serve para definir o valor f(c) que faltava paraf ou que tinha sido calculado de forma errada.

Este e um metodo que os estatısticos usam frequentemente, e tambem muito usado nastelecomunicacoes, restauracoes de arquivos, recuperacao de dados.

33aqui tem um erro, veja observacao mais a frente

CAPITULO 4. SPLINES 137

Observacao 9 Evolucao e correcao de um teoremaQuando redigimos o teorema 8 cometemos o erro de escrever o valor de f no ponto a

a volta do qual o valor medio esta sendo calculado. Depois nos apercebemos do erro, masresolvemos deixa-lo assim, com a correcao posterior, para que voce veja que os teoremas asvezes nascem errados. Em geral eles sempre sao corrigidos, depois, mas por outra pessoa quele o trabalho, nao pelo proprio autor.

Acho que este erro torna mais facil a compreensao do teorema.

Exercıcios 17 (Valor medio) Valor medio

1. Considere a funcao f = χ[−0.5,0.5], a funcao caracterıstica do intervalo[−0.5, 0.5]. Prove que gα(x) = αf(αx) tambem tem integral 1. Produzaalguns exemplos usando gnuplot.

2. Construa uma funcao que seja contınua e positiva cuja integral seja 1.

Solucao 9 Se uma funcao positiva for contınua e diferenciavel, digamosf , e definida e integravel no intervalo [a, b] entao podemos calcular

A =b∫

a

f(x)dx (4.132)

g(x) = 1Af(x) (4.133)

o que resulta numa funcao positiva, contınua, diferenciavel cuja integralsobre o intervalo [a, b] e 1.

Basta-nos, portanto construir uma funcao qualquer e poderia ser

f(x) = 4 − x2 ; x ∈ [−2, 2] (4.134)

A =2∫

−2

f(x)dx (4.135)

g(x) =

|x| > 2 ⇒ 0|x| ≤ 2 1

Af(x)(4.136)

3. Construa uma funcao formada de tres segmentos de parabola, que sejacontınua, diferenciavel e positiva cuja integral seja 1.

Solucao 10 Considere a funcao f(x) = 4 − x2 cuja derivada nos extre-mos do intervalo [−2, 2] sao, respectivamente, 4,−4. Podemos construirum parabola que tenha derivada no ponto −4 o valor -2, por exemplo

f1(x) = (x + 4)2 ; f′

1(x) = 2(x + 4); f1(−2) = 4

portanto se somarmos:

h(x) = f(x) + 4

teremosh(−2) = f1(−2); h′(−2) = f

1(−2)

Page 76: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 138

Defina

g(x) =

x ≤ −4 0x ≤ −2 f1(x)x ≤ 2 f(x) + 4x ≤ 4 f2(x) = (x − 4)2

x > 4 0

(4.137)

Esta funcao se anula fora do intervalo [−4, 4], por contrucao e diferenciavele sua integral vale

4∫

−4

g(x)dx = (4.138)

=−2∫

−4

f1(x)dx + (4.139)

+2∫

−2

(f(x) + 4)dx + (4.140)

+4∫

2

f2(x)dx (4.141)

−2∫

−4

f1(x)dx =2∫

0

x2dx = 83 (4.142)

2∫

−2

(f(x) + 4)dx = 16 − 163

= 323

(4.143)

4∫

2

f2(x)dx = 83 (4.144)

∞∫

−∞g(x) = 48

3(4.145)

Defina entao F (x) = 348

g(x) e temos assim uma funcao cuja integral e 1sendo diferenciavel na reta. O grafico de F pode ser vista na figura (4.8)pagina 139,

4. estoque de nucleos Mostre que se uma funcao f tiver integral 1 entaog(x) = αf(αx) tambem tem integral 1.

CAPITULO 4. SPLINES 139

-10

-5

0

5

10

-15 -10 -5 0 5 10 15

F(x)0

g(x)

Figura 4.8: Uma funcao positiva cuja integral e 1

4.5 Splines cubicos

Em muitas aplicacoes os quase-splines construidos na secao ante-rios sao suficientes oferecendo boa aproximacao. Mas em outras,como exemplo em computacao grafica, em que e necessario maisdinamica, os algoritmo tem que ser mais otimizado e o metodo deaproximacao mais preciso. Para isto temos os splines cubicos queconstruiremos aqui.

O nome do jogo! E spline ou splines. Se voce consultar [28, Spline], vocelogo vai ver a indecisao sobre o nome, hora e usado spline e logo em seguida

Page 77: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 140

splines. Vamos preferir a segunda forma que nos parece mais eufonica, mas naotemos nenhuma razao especial pela preferencia a nao ser porque os splines saoformados sempre de varios pedacos e talvez porisso devessemos usar o “s” aofinal.

Ha varios metodos para construir splines. O que vamos adotar e muitopoderoso, embora exija um pouco mais de base teorica. Ao mesmo tempo suaaplicabilidade pode ser bastante simplificado, ao ponto de voce poder carregaro “motor” dos splines num pen-drive, ou mesmo num disquete de 1.44 Mb, faleinum pen-drive porque os disquetes em geral representam mais trabalho do queutilidade. Ate o final deste capıtulo esta questao ficara clara.

Definicao 4 SplinesUm n-splines e uma polinomial34 de grau n que e de classe Cn−1, quer dizer

que tem n − 1 derivadas contınuas.

Voce esta vendo a razao porque criamos um o conceito de polinomial quechamamos de quase-splines. Elas serviram para antecipar os splines e em al-guns casos substituı-los porque dependem de menos teoria. As polinomiais queconstruimos ate agora sao de grau tres e de classe C1, poristo nao sao splines, asegunda derivada pode ser descontınua.

Exemplo 11 SplinesUma poligonal contınua, isto e uma sucessao de segmentos de linha reta que

interligue n pontos, e uma polinomial de grau 1 e de classe C0, portanto um1-splines

E difıcil construir manualmente um 2-splines, uma polinomial do segundograu que seja de classe C1. Voce pode e deve tentar construir usando os metodosque apresentamos para construir os quase-splines afim de se convencer da difi-culdade e melhor avaliar a pequena complicacao onde vamos mete-l@ agora.

4.5.1 Produto de convolucao

Vamos definir uma operacao que ficou na geladeira por anos ate que os metodoscomputacionais a viessem resgatar, a convolucao, ou melhor dizendo, o produtode convolucao que e o seu nome original.

Vamos comecar com uma “definicao geometrica” errada, ilustrada35 na fi-gura (fig. 4.9) pagina 141.

No proximo paragrafo corrigiremos a definicao usando uma motivacao algebri-ca para adotar uma forma mais adequada de definir a operacao.

Voce pode identificar, na figura (fig. 4.9), o grafico da funcao descontınua fe varias copias do mesmo36 retangulo que sao translacoes do grafico da funcaocaracterıstica, χ[−0.5,0.5], do intervalo [−0.5, 0.5].

34Nao precisa ser “polinomial”, no momento certo faremos esta observacao novamente. Hasplines nao polinomiais.

35Voce deve ter compreendido o poder do erro que aparece no coeficiente do segundo graudo Polinomio de Taylor no capıtulo 1

36Duas das copias estao superpostas dando a impressao de que voce dois retangulos combases menores, mas e uma ilusao de otica.

CAPITULO 4. SPLINES 141

f

móvelretângulo posição

originaldo retângulo

0

Figura 4.9: Definicao geometrica - produto de convolucao

E esta a forma de fazermos produto de convolucao entre duas funcoes.

• Uma delas fica com o grafico fixo, a outra, tem seu grafico translatadopara um ponto a, Shapiro,[6], chama isto de media volante e logo voce vaiver porque.

• Neste ponto calculamos a integral do produto das duas funcoes, o resultadoe f ∗χ[−0.5,0.5](a), o valor do produto de convolucao no ponto a. Exercıcio(resolvido em seguida) escreva a equacao da translacao χ[−0.5,0.5]a dafuncao χ[−0.5,0.5] para o ponto a.

• A cada novo deslocamento (translacao) do grafico de χ[−0.5,0.5], o peso sedeslocando novamente, para um ponto b e nova integral corresponde aocalculo de f ∗ χ[−0.5,0.5](b), o valor do produto de convolucao no ponto b.

• Leitura “produto de convolucao de f por χ[−0.5,0.5] no ponto b”, a ex-pressao formal37 seria (errada, como ja @ advertimos)

∞∫

−∞

f(x)χb(x)dx =

∞∫

−∞

f(x)χ(x − b)dx (4.146)

Na expressao da integral o exercıcio proposto linhas acima ficou resolvido.

Sem duvida e difıcil38 calcularmos f ∗ χ[−0.5,0.5](x) num ponto x qualquerou mesmo obtermos uma formula para este resultado.

37O autor escreveu os limites ±∞, propositadamente, para que voce se intimidasse, verifiqueesta integral se limita ao intervalo [−0.5 + b, 0.5 + b]

38nao ha porque escondermos a dificuldade, o “difıcil” e apenas difıcil, nao impossıvel, eapenas exige mais trabalho para dominar, somente isto. Como escalar um morro e difıcil, e osegredo e saber e ter os meios...

Page 78: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 142

Nosso objetivo e mostrar-lhe alguns exemplos do que significa f ∗g para con-vence-l@ do valor do investimento pesado que vai fazer. Depois voce vera queum programa de computador sera o encarregado de fazer o trabalho pesado,nao se esqueca de que voce esta lendo um livro de Calculo Numerico Com-putacional. . . e que voce deve apresnder a escrever expressoes formais que umcomputador possa ler e calcular.

E, finalmente, deixe-me dizer-lhe, nos avioes comerciais, a fuselagem, e feitacom este instrumento, e quase que todos os jogos eletronicos tem splines portras, portanto estamos diante de uma ferramenta que vale a pena ser entendidae dominada.

Depois, passado o susto com a definicao geometrica, voce vera que o trabalhoficara com os programas...mas, temos que entender como fazer, para podermosescrever os programas.

Vamos calcular o resultado da convolucao esbocada na figura (fig. 4.9),geometricamente. A sucessao de figuras (fig. 4.10) pagina 143, (um filme...)lhe mostra o significado do produto de convolucao calculado em tres pontosdiferentes.

Observe que escolhemos uma funcao muito particular: χ[−0.5,0.5]

Esta funcao tem integral 1 e temos a tendencia de chamar tais funcoes desinal, impulso unitario, nucleo. Vamos usar a palavra nucleo porque considera-mos sinal outra coisa que nao ira aparecer neste livro. As funcoes deste tipo,os nucleos, serao o instrumento que precisaremos quando fizermos produtos deconvolucao.

O produto das duas funcoes no ponto a e no ponto b vai produzir resultadossemelhantes. O quadradinho que representa a translacao de χ[−0.5,0.5] para estespontos, fica inteiramente imerso dentro do grafico de f . E como o quadradinhotem area 1, a integral do produto vai nos dar o valor medio da integral de f nointervalo de medida 1 (por causa da base do quadradinho) tendo como pontomedio a translacao. Estamos discutindo:

a < b < c ; (4.147)

f ∗ χ[−0.5,0.5](a), f ∗ χ[−0.5,0.5](b), f ∗ χ[−0.5,0.5](c) (4.148)

• [−0.5 + a, 0.5 + a] no caso de a

• [−0.5 + b, 0.5 + b] no caso de b

• [−0.5 + c, 0.5 + c] no caso de c

isto e, em qualquer caso, f ∗ χ[−0.5,0.5](x) e o valor medio de f no intervalo[−0.5 + x, 0.5 + x] porque a funcao caracterıstica, χ[−0.5,0.5], e positiva e temintegral 1.

Retornando a f ∗ χ[−0.5,0.5], como χ[−0.5,0.5] e uma funcao equilibrada emtorno do ponto central do intervalo [−0.5, 0.5] entao

f ∗ χ[−0.5,0.5](x) = f(x) (4.149)

CAPITULO 4. SPLINES 143

f

0

posição inicial

do retângulof*X(a)cálculo de

a

−0.5 +a0.5+a

f

0

posição inicial

do retângulo

cálculo de

f*X(b)

b > a

b

−0.5+b

0.5+b

f

0

posição inicial

do retângulo

cálculo de

f*X(c)

c > b > a

c

−0.5+c

0.5+c

Figura 4.10: O significado geometrico de tres valores

quando este valor existir, e no caso do ponto c e um valor que fica entre osextremos do salto que a funcao da no ponto c. Veja o grafico da convolucao nafigura (fig. 4.11) pagina 144,

A figura (fig. 4.11) chama sua atencao para uma regiao do grafico em que afuncao f esta sendo corrigida. Isto ocorre num intervalo de medida 1, (devido abase do quadradinho utilizado). Nesta figura voce ve os graficos de duas funcoes,a funcao f descontınua no ponto c e uma outra funcao f , contınua, que e iguala f fora do intervalo de correcao.

Esta, f , e a proposta de correcao da funcao descontınua, de que ja falamosacima.

Podemos corrigir a equacao (eq. 149) escrevendo:

f ∗ χ[−0.5,0.5](x) = f(x) (4.150)

Page 79: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 144

f

0c

Região de

correção

Figura 4.11: Correcao pelo valor medio numa vizinhanca de c

A regiao de correcao pode ter medida menor e alguns dos exercıcios da listaque segue vao lhe mostrar isto: a regiao de correcao pode ser arbitrariamentecorrigida de modo que a funcao f seja uma melhor aproximacao para f .

Exercıcios 18 Media e nucleo

1. nucleos Faca os graficos das funcoes abaixo e descubra o que ha de comumentre elas do ponto de vista da integral. Voce nao precisa fazer todos osgraficos se descobrir a regra do jogo...

χ[−0.5,0.5] 2χ[−0.25,0.25]32χ[− 1

3, 13] 5χ[−0.1,0.1]

12χ[−1,1]

14χ[−2,2]

110χ[−5,5]

120χ[−10,10]

χ[0,1] 2χ[0,0.5]32χ[0, 2

3]

120

χ[0,20]

χ[−1,0] 2χ[0.5,0]32χ[− 2

3,0]

120χ[−20,0]

2. Podemos classificar os nucleos definidos na questao anterior como (1)com tendencia a esquerda, (2) com tendencia a direita ou (3)equilibrados.Descubra quais ficam em cada uma dessas classes.

3. Para cada um dos nucleos apresentados no primeiro exercıcio, indique amedida da respectiva regiao de correcao que lhe esta associada.

4. media viciada O grafico seguinte representa f, f ∗g em que g e um nucleo

tendencioso (a direita, ou a esquerda). Decida qual e a tendencia de g,analisando o grafico Veja na figura (fig. 4.12) pagina 145,

Definicao correta da convolucao

Esta e uma secao difıcil, o que nao significa que nao seja para os comuns mortais.Aquilo que e difıcil apenas exige mais esforco para ser adquirido. E preciso,

CAPITULO 4. SPLINES 145

f

0c

Cálculo de média

com sinal tendencioso

f*g

Figura 4.12: Media viciada

entretanto, salientar que, na pratica do dia-a-dia, nao sera preciso estar comtodas estas contas presentes. Ao final voce vai encontrar a equacao de umnucleo-splines cubico que podera registrar num arquivo, num pen-drive, e saircom ele por aı para usar quando precisar fazer convolucoes, e uma contribuicaodeste livro para sua vida pratica.

¡- forca uma parada do LaTeXVamos definir o produto de convolucao, e inicialmente escreveremos uma

definicao errada, acompanhando as ideias geometricas que desenvolvemos ante-riormente. Logo veremos, com um calculo algebrico, porque esta definicao naoserve e assim chegaremos a definicao adequada da convolucao.

Na introducao geometrica que fizemos acima dissemos que o valor de f ∗ gno ponto a era obtido

• translatando a funcao g de a e

• calculando a integral do produto de f por esta translatada

Precisamos de uma notacao adequada para escrever tudo isto:

• a translatada de g por a vamos chamar de ga e assim

• a “transformacao” translacao tem uma equacao curiosa:

x 7→ ga(x) = g(x − a) (4.151)

de modo que se voce quiser translatar para direita, no sentido positivo doeixo OX entao a > 0, por exemplo, g3(x) = g(x − 3) translata a funcao gde tres no sentido positivo de OX. Se g(0) = 0 entao g3(3) = 0. Faca ascontas.

• definicao errada da convolucao no ponto a e

a 7→ f ∗ g(a) =

∞∫

−∞

f(x)ga(x)dx (4.152)

Observe que estamos calculando a integral sobre o conjunto mais amploem que f esteja definida, a reta R. E possıvel que esta equacao nao tenha

Page 80: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 146

sentido portanto se impoe uma verificacao sobre quais as funcoes para asquais podemos calcular f ∗ g.

Vamos logo responder parcialmente esta questao: para que funcoes vale aexpressao (eq. 5 ) da convolucao. Veja que, se a integral

∞∫

−∞

f(x)dx (4.153)

existir, e se g for a funcao caracterıstica de um intervalo fechado, [α, β],entao

f ∗ g(a) =∞∫

−∞f(x)ga(x)dx = (4.154)

=∞∫

−∞f(x)g(x− a)dx = (4.155)

=∞∫

−∞f(y + a)g(y)dy = (4.156)

=β∫

α

f(y + a)g(y)dy (4.157)

e se f tiver integral finita sobre R entao qualquer translacao39 de f teraintegral finita sobre qualquer intervalo da reta. Isto mostra a ultima eintegral e finita para qualquer valor de a portanto f ∗ g esta bem definidapara qualquer que seja a ∈ R, quando g for uma funcao caracterıstica deintervalo limitado.

• Crıtica da sucessao de equacoes Observe que a equacao (eq. 157 ) sugereque a convolucao nao e comutativa. Aqueles que trabalharam com estaoperacao, anos atras, observaram que uma pequena modificacao definiriauma operacao comutativa:

(f ∗ g)(a) =∞∫

−∞f(x) g(a − x)

︸ ︷︷ ︸

troca de sinal

dx = (4.158)

y = a − x =⇒ x = a − y =⇒ dx = −dy (4.159)

−−∞∫

∞f(a − y)g(y)dy = (4.160)

∞∫

−∞f(a − y)g(y)dy = (4.161)

∞∫

−∞g(y)f(a − y)dy = (g ∗ f)(a) (4.162)

39uma propriedade da integral de Riemann, translacao nao alteram o valor da integral

CAPITULO 4. SPLINES 147

Isto nos leva a definicao adequada da convlucao

Definicao 5 Convolucao

f ∗ g(a) =

∞∫

−∞

f(x)g(a − x)dx (4.163)

quando esta integral existir.

• Analise do domınio de f ∗ g

Vamos retomar a sequencia de equacoes acima, agora com a definicaocorreta da convolucao em que g e a funcao caracterıstica do intervalo[α, β]

f ∗ g(a) =

∞∫

−∞

f(x)g(a − x)dx (4.164)

se uma das funcoes for integravel na reta e a outra for limitada, estaintegral existe. Isto mostra que esta operacao tem sentido, e logo veremosque ha uma infinidade de funcoes que podem ser os operandos do produtode convolucao.

Demonstramos assim o teorema

Teorema 9 Domınio de validade da convolucao

A convolucao f ∗ g esta bem definida se g for uma funcao caracterısticade um intervalo fechado e f tiver integral em qualquer intervalo fechado.

Exemplo 12 Domınio da convolucao

Exemplos de funcoes para as quais podemos calcular f ∗ g sao qualquerfuncao contınua f se g for uma funcao caracterıstica de um intervalofechado.

Podemos calcular a convolucao de duas funcoes caracterıstica de intervalosfechados.

Nos voltaremos logo a esta questao, ampliando o conjunto de pares defuncoes para os quais podemos calcular a convolucao.

A convolucao define uma nova funcao que nos estamos sugerindo que sejauma aproximacao de f o que e inteiramente errado. Isto somente vai ser verda-deiro se a funcao g for um nucleo40. Vamos discutir este detalhe logo a frente.

40ou equivalente, um pulso unitario

Page 81: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 148

4.5.2 Funcoes a suporte compacto

Vamos aqui entender o que controla a regiao de correcao, ja algumas vezesmencionada, e que estivemos todo tempo associando a base do quadradinho quefica deslizando sobre o grafico da funcao.

Voce ja deve ter percebido que esta funcao que usamos para calcular mediasdeve ter um aspecto do tipo que aparece na figura (fig. 4.13) pagina 148. Nos

núcleo equilibrado

núcleo tendencioso à esquerda

núcleo tendencioso à direita

Figura 4.13: Nucleos ou pulsos unitarios

casos destes exemplos graficos, existe um intervalo 0 ∈ [c, d] tal que, fora dointervalo [c, d] a funcao e nula. Este intervalo se chama de suporte do nucleo.

Nao e preciso que o suporte seja um intervalo limitado.

Exemplo 13 Nucleo tendo como suporte a retaA funcao f(x) = e−x2

, chamada de gaussiana tem integral finita

∞∫

−∞e−x2

dx =√

2 (4.165)

g(x) = 1√2f(x) (4.166)

∞∫

−∞g(x)dx = 1 (4.167)

e assim a funcao g(x) = 1√2f(x) e um nucleo tendo por suporte a reta R.

Quer dizer que se usarmos g como nucleo para calcular uma convolucao f ∗ g

CAPITULO 4. SPLINES 149

o resultado seria uma funcao muito semelhante a f mas a regiao de correcaoseria a reta inteira. Mesmo com este defeito, f ∗ g e uma boa aproximacao def .

Usar um nucleo cuja regiao de correcao se extenda ao espaco inteiro temsignificado: se dilue o erro ao longo do espaco todo.

Mas em geral nao usamos a gaussiana para fazer aproximacoes porque elaintroduziria outra complicacao. Procuramos nucleos parecidos com os graficosda figura (fig. 4.13) pagina 148, e vamos aqui ver como podemos construir taisnucleos. Os intervalos fechados e limitados sao chamados intervalos compactosdaı o tıtulo desta secao, queremos nucleos com suporte compacto.

Observacao 10 Domınio da convolucaoPodemos ampliar um pouco a resposta da questao do domınio de definicao

da convolucao, ou, para que tipos de funcoes podemos calcular a convolucao.Onde acima usamos funcao caracterstica, agora podemos dizer funcoes a suportecompacto.

Notacao o suporte de f e designado41 por supp(f).Um exemplo simples mostra como podemos construir nucleos com suporte

compacto:

Exemplo 14 Um nucleo com suporte compactoConsidere f = χ[−0.5,0.5] e vamos calcular f ∗ f .Geometricamente podemos ver que se a translacao for maior do que 1 em

modulo, a convolucao se anula, porque os dois retangulos nao mais terao su-perposicao, serao disjuntos. Faca um grafico para se verificar isto. Como con-sequencia temos

x /∈ [−1, 1] =⇒ f ∗ f(x) = 0

e portanto o supp(f ∗f) ⊂ [−1, 1]. Por outro lado, para qualquer translacao cujomodulo seja menor do que 1, os dois retangulos terao superposicao e assim aintegral sera diferente de zero. Verifique isto geometricamente, faca um grafico.Consequentemente supp(f ∗ f) = [−1, 1].

Vamos agora calcular f ∗ f , determinar sua equacao.Prosseguiremos com o metodo geometrico. Observe que o parametro da

funcao f ∗ g e a translacao aplicada a funcao g

x 7→ f ∗ f(x) =∞∫

−∞f(t)f(x − t)dt (4.168)

f ∗ f(x) =0.5∫

−0.5

f(t)f(x − t)dt (4.169)

=0.5∫

−0.5

f(x − t)dt (4.170)

y = x − t; dy = −dt; t = −0.5 =⇒ y = x + 0.5; t = 1 =⇒ y = x − 0.5(4.171)

41duas razoes para usar “pp”, sup e para supremo, em ingles usamos supp para o suporte

Page 82: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 150

f ∗ f(x) = −x−0.5∫

x+0.5

f(y)dy =x+0.5∫

x−0.5

f(y)dy (4.172)

chegamos a equacao (eq. 169) porque f e a funcao caracterıstica do intervalo[−0.5, 0.5], logo, fora dele e nula, a equacao (eq. 170) porque f e 1 sobre ointervalo [−0.5, 0.5], na equacao (eq. 171) estamos preparando a “mudanca devariavel” que ira na simplificar a analise na equacao (eq. 172). As hipoteses,que temos que fazer para calcular a integral na equacao (eq. 172) sao

x + 0.5 < −0.5 f ∗ f(x) = 0

x + 0.5 ∈ [−0.5, 0.5] f ∗ f(x) =x+0.5∫

−0.5

dy

x − 0.5 ∈ [−0.5, 0.5] f ∗ f(x) =0.5∫

x−0.5

dy

x − 0.5 > 0.5 f ∗ f(x) = 0

(4.173)

Podemos melhorar as premissas no conjunto de equacoes re-escrevendo-as como

x < −1 f ∗ f(x) = 0x ∈ [−1, 0] f ∗ f(x) = x + 0.5− (−0.5) = x + 1x ∈ [0, 1] f ∗ f(x) = 0.5 − (x − 0.5) = 1 − x

x > 1 f ∗ f(x) = 0

(4.174)

e voce pode ver o grafico da convolucao na figura (fig. 4.14) pagina 150.

0−1 1

Figura 4.14: quadrado de convolucao da funcao caracterıstica

Observe! A convolucao de duas funcoes descontınuas, resultou numa funcaocontınua, f ∗ f . A convolucao nao existe para ser calculada a mao, e o calculoacima mostra que ele pode ser bastante complicado, em geral, com muitas equacoese hipoteses. Vamos ver isto no proximo exemplo.

Mas o principal resultado deste exemplo e f ∗ f e um 1-splines. Estamosassim nos aproximando do objetivo do capıtulo... e para melhorar o animo,no meio de tantas contas, vamos calcular f ∗ f ∗ f que podemos antecipar quesera um 2-splines coisa que anteriormente dissemos que seria difıcil de calcularmanualmente.

Exemplo 15 2-splines por convolucaoQueremos calcular f ∗ f ∗ f , e como o produto de convolucao e associativo,

temos f ∗ f ∗ f = f ∗ (f ∗ f) = (f ∗ f) ∗ f o que nos diz que vamos aproveitar oresultado do exemplo anterior.

CAPITULO 4. SPLINES 151

Preparando os calculos, temos

f ∗ (f ∗ f)(x) =∞∫

−∞f(t)f ∗ f(x − t)dt (4.175)

=0.5∫

−0.5

f(t)(f ∗ f)(x − t)dt (4.176)

y = x − t; dy = −dt; t = −0.5 =⇒ y = x + 0.5; t = 0.5 =⇒ y = x − 0.5(4.177)

f ∗ (f ∗ f)(x) = −x−0.5∫

x+0.5

f ∗ f(y)dy =x+0.5∫

x−0.5

f ∗ f(y)dy (4.178)

A razao da equacao (eq. 176 ) e que o suporte de f e o intervalo [−0.5, 0.5],na equacao (eq. 177 ) estamos fazendo os calculos para mudanca de variavel, efinamente, como x−0.5 < x+0.5 invertemos os limites de integracao e trocamoso sinal na equacao (eq. 178 ).

Agora recorremos a intuicao grafica para agilizar o metodo. A funcao f ∗ ftem quatro fases (quatro equacoes) e seu suporte e o intervalo [−1, 1]

• antes de −1;

• no intervalo [−1, 0]

• no intervalo [0, 1]

• depois de 1

que sao os intervalos em que a equacao de f ∗ f muda, e temos que interpretara ultima integral em cada um desses casos, esta e a primeira analise

x + 0.5 < −1 f ∗ f ∗ f(x) = 0

x + 0.5 ∈ [−1, 0]x+0.5∫

−1

f ∗ f(y)dy

x + 0.5 ∈ [0, 1]; x− 0.5 ∈ [−1, 0]0∫

x−0.5

f ∗ f(y)dy +x+0.5∫

0

f ∗ f(y)dy

x − 0.5 ∈ [0, 1]1∫

x−0.5

f ∗ f(y)dy

x − 0.5 > 1 f ∗ f ∗ f(x) = 0(4.179)

Re-escrevendo as equacoes, temos:

x < −1.5 f ∗ f ∗ f(x) = 0

x ∈ [−1.5,−0.5]x+0.5∫

−1

(y + 1)dy

x ∈ [−0.5, 0.5]; x− 0.5 ∈ [−1, 0]0∫

x−0.5

(y + 1)dy +x+0.5∫

0

(1 − y)dy

x ∈ [0.5, 1.5]1∫

x−0.5

(1 − y)dy

x > 1.5 f ∗ f ∗ f(x) = 0

(4.180)

Page 83: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 152

com a devida interpretacao de f ∗ f . Calculando as integrais temos:

x < −1.5 f ∗ f ∗ f(x) = 0

x ∈ [−1.5,−0.5](x+ 3

2)

2x ∈ [−0.5, 0.5] 3

4 − x2

x ∈ [0.5, 1.5](x− 3

2)

2x > 1.5 f ∗ f ∗ f(x) = 0

(4.181)

Para simplificar a notacao, vamos chamar g = f ∗ f ∗ f . Queremos verificar seg e contınuamente derivavel, de clase C1: uma polinomial de grau 2 de classeC1.

• Primeiro a continuidade, o que basta verificar os valores de cada uma dasequacoes nos extremos dos intervalos onde elas estao definidas.

– g(−1.5) = 0 a direita e a esquerda !

– g(−0.5)− =(−0.5+ 3

2)2

2 = 0.5 a esquerda, e a direita g(−0.5)+ =34−(−0.5)2 = 0.5 e as duas equacoes coıncidem a direita e a esquerda!

– g(0.5)− = 34−(0.5)2 = 0.5 a esquerda, e a direita g(0.5)+ =

(0.5− 32)2

2=

0.5 as duas equacoes coıncidem a direita e a esquerda !

– g(1.5) = 0 a direita e a esquerda !

e provamos que g e contınua.

Verificando que a derivada e contınua.

• g′(−1.5)+ = 2x+32

|−1.5 = 0 coıncidindo a direita e a esquerda !

• g′(−0.5)− = 2x+32

|−0.5 = 1 g′(−0.5)+ = −2x|−0.5 = 1 coıncidindo adireita e a esquerda !

• g′(0.5)− = −2x|0.5 = −1 g′(0.5)+ = 2x−32 |0.5 = −1 coıncidindo a direita

e a esquerda !

• g′(1)− = 2x−32 |1.5 = 0 coıncidindo a direita e a esquerda !

Verificamos assim que g e contınua e que g′ e tambem contınua, portanto ge de classe C1 sendo uma polinomial do segundo grau, portanto um 2− splines.

O grafico de g = f ∗ f ∗ f e formado de tres segmentos de parbola tangentesduas a duas no ponto (−0.5, g(−0.5)) e no ponto (0.5, g(0.5)). As parabolasexternas sao tangentes ao eixo OX e voce pode ver o grafico de g, feito a mao,na figura (fig. 4.15) pagina 162. Na mesma figura voce pode ver o grafico, feitocom Gnuplot, das tres parabolas, e usando os comandos do Gnuplot g(x)=

(x<-1.5)?0:x<-0.5?0.5*(x+3.0/2.0)**2:

x<0.5?0.75-x**2:x<1.5?0.5*(x-3.0/2.0)**2:0

set xrange [-1.5:1.5] plot g(x),0 voce pode obter o terceiro graficoque tambem aparece na referida figura. Observe a “barra invertida” na linha em

CAPITULO 4. SPLINES 153

que se inicia a definicao de g(x) dentro do Gnuplot. Ela serve para lhe permitirescrever uma formula que se expanda por mais de uma linha. Terminando alinha com a “barra invertida”, evita que Gnuplot leia um fim de linha e assimuma formula pode ser escrita em diversas linhas.

Observando, dos exemplos que duramente desenvolvemos, que ao fazer umaconvolucao a polinomial aumenta de um grau assim como a classe de continui-dade.

Isto e verdade mas a demonstracao e muito difıcil e vamos apenas enunciaro resultado sem demonstra-lo, para uma demonstracao leia o artigo [21].

Teorema 10 Nucleos n-splinesA enesima potencia de convolucao da funcao caracterıstica do intervalo

[−0.5, 0.5] e um (n-1)-splines a suporte compacto, positivo, com area 1. Por-tanto um nucleo (n-1)-splines.

Nas aplicacoes nos contentamos com 3-splines, os splines cubicos, que daotıtulo a esta secao.

Exercıcios 19 Splines a suporte compacto

1. splines cubico Partindo do exemplo do nucleo 2-splines, construa um nucleo3-splines (splines cubico).

2. escala e nucleo

(a) Chame g ao 2-splines construido no exemplo (ex. 15). Considere aseguinte operacao:

ga(x) = ag(ax)

e verifique a identidade

∞∫

−∞

ga(x)dx =

∞∫

−∞

g(x)dx = 1

para todo numero real a 6= 0.

(b) Faca o grafico de g2, g3, g4, g 13

sugestao use gnuplot para fazer estesgraficos.

3. splines cubico - formato arbitrario

(a) Faca o grafico da funcao

x < −4 x + 8x ∈ [−4,−1] −2

x ∈ [−1,−0.5] 1x ∈ [−0.5, 1] |2x|

x ∈ [1, 4] 2

(b) Amacie a funcao cujo grafico foi feito no item anterior, multiplicando-a por convolucao, sucessivamente, pelos nucleos g2, g3, g4 e faca umlaudo do resultado.

Page 84: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 154

4.6 Solucao de alguns exercicios

1. (ex. 8) pagina 118

Analisando o maximo de |P | e de |P ′| no intervalo [−a, a]; a > 0 em quese encontram as raızes, temos

|P ′(x)| = |x + a + x − a| = 2|x| ≤ 2|a| (4.182)

Max(|P ′|) = 2|a| (4.183)

Max|P | = a2 ≤ 2|a| =⇒⇐= |a| ≤ 2 (4.184)

Se fizermos uma translacao neste grafico42a equacao de P sera

P (x) = (x − a)(x − b)

em que a, b sao as duas raizes do polinomio. Da parte anterior do pro-blema deduzimos que a distancia entre as raızes e no maximo 4 para quea desigualdade se de, portanto se |a − b| ≤ 4

2. (ex. 9) pagina 118

O maximo modulo de P ′ se da no ponto medio das raızes ou nos extremosdo intervalo [−1, 1]. Calculando estes tres valores encontramos

|P ′(−1)| = 2 = |P ′(1)|; |P ′(0)| = 1

logo o modulo maximo de P ′ e 2.

O modulo maximo da funcao do terceiro grau P , sobre o intervalo em que

ela tem raızes, se da nas raızes da derivada: ±√

13 e vale, em modulo

1

3(1

3− 1) =

1

3

2

3< 2

demonstrando o que desejavamos.

3. (ex. 10) pagina 118

4. Polinomio interpolando pontos no plano

5. (ex. 11g) pagina 119

P(x) = (x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)

P1(x)= (x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)

P2(x)= (x+3)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)

P3(x)= (x+3)*(x+2.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)

P4(x)= (x+3)*(x+2.5)*(x+1.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)

P5(x)= (x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-1.5)*(x-2.5)*(x-3)

42movimento rıgido, nao altera as proporcoes no grafico

CAPITULO 4. SPLINES 155

P6(x)= (x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-2.5)*(x-3)

P7(x)= (x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-3)

P8(x)= (x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)

dP(x)= P1(x)+ P2(x)+ P3(x)+ P4(x)+ P5(x)+ P6(x)+ P7(x)+ P8(x)

set xrange [-3:3]

plot P(x),dP(x),0

f(x) = P1(x)/dP(-3) + P2(x)/dP(-2.5) + P3(x)/dP(-1.5)+\

P4(x)/dP(-0.5)+P5(x)/dP(0.5) + P6(x)/dP(1.5) + P7(x)/dP(2.5)+\

P8(x)/dP(3)

plot f(x),0

g(x) = (x**2 - 9)*sin(2*x)

h(x) = g(-3)*P1(x)/dP(-3) + g(-2.5)*P2(x)/dP(-2.5)+\

g(-1.5)*P3(x)/dP(-1.5) + g(-0.5)*P4(x)/dP(-0.5)+\

g(0.5)*P5(x)/dP(0.5) + g(1.5)* P6(x)/dP(1.5)+\

g(2.5)*P7(x)/dP(2.5) + g(3)*P8(x)/dP(3)

plot h(x),g(x),0

P(x) = (x+7)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-7)

P1(x)= (x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-7)

P2(x)= (x+7)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-7)

P3(x)= (x+7)*(x+2.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-7)

P4(x)= (x+7)*(x+2.5)*(x+1.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-7)

P5(x)= (x+7)*(x+2.5)*(x+1.5)*(x+0.5)*(x-1.5)*(x-2.5)*(x-7)

P6(x)= (x+7)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-2.5)*(x-7)

P7(x)= (x+7)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-7)

P8(x)= (x+7)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)

dP(x)= P1(x)+ P2(x)+ P3(x)+ P4(x)+ P5(x)+ P6(x)+ P7(x)+ P8(x)

set xrange [-7:7]

plot P(x),dP(x),0

f(x) = P1(x)/dP(-7) + P2(x)/dP(-2.5) + P3(x)/dP(-1.5)+\

P4(x)/dP(-0.5)+P5(x)/dP(0.5) + P6(x)/dP(1.5) + P7(x)/dP(2.5) +\

P8(x)/dP(7)

plot f(x),0

g(x) = (x**2 - 9)*sin(2*x)

h(x) = g(-7)*P1(x)/dP(-7) + g(-2.5)*P2(x)/dP(-2.5)+\

g(-1.5)*P3(x)/dP(-1.5) + g(-0.5)*P4(x)/dP(-0.5)+\

g(0.5)*P5(x)/dP(0.5) + g(1.5)* P6(x)/dP(1.5)+\

g(2.5)*P7(x)/dP(2.5) + g(7)*P8(x)/dP(7)

plot h(x),g(x),0

6. (ex. 1) pagina 123

(a) Coloque no arquivo “dados” os pares de pontos (xk, yk).

-3 0

-2.5 1

Page 85: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 156

-1.5 -1

-0.5 -2

0.5 -3

1.5 -1

2.5 2

3 0

observe que xk e yk ficam separados por espaco, e cada par fica emuma unica linha. Depois, chame Gnuplot e execute

set pointsize 0.1 ## definir a expessura da linha

plot 0, "dados" with lines ## o nome do arquivo entre aspas

Se voce estiver lendo este arquivo eletronicamente (em pdf), “cortare colar” funciona com Gnuplot.

(b) Em cada intervalo a funcao f esta definida por uma equacao doprimeiro grau fk

y = b + m(x − a) equacao da reta por (a, b); (4.185)

fk(x) = yk + mk(x − xk); (4.186)

mk = ∆k =yk+1−yk

xk+1−xk; x ∈ [xk, xk+1] (4.187)

(4.188)

Basta agora, para cada inteiro n, encontrar n ∈ [xk, xk+1]. Porexemplo

n ∈ [xk, xk+1] (4.189)

1 ∈ [0.5, 1.5] = [x4, x5] (4.190)

f4(x) = y4 + m4(x − x4) (4.191)

f4(x) = −3 + 2(x − 0.5) ; f(1) = −3 + 2(1 − 0.5) = −2(4.192)

A definicao de f num algoritmo de computador e

float fl(float x)

float m,a1,b1,a2,b2;

if (x < -2.5)

a1= -3; b1=0; a2=-2.5; b2=1;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < -1.5)

a1= -2.5; b1=1; a2=-1.5; b2=-1;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < -0.5)

CAPITULO 4. SPLINES 157

a1= -1.5; b1=-1; a2=-0.5; b2=-2;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < 0.5)

a1= -0.5; b1=-2; a2=0.5; b2=-3;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < 1.5)

a1= 0.5; b1=-3; a2=1.5; b2=-1;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < 2.5)

a1= 1.5; b1=-1; a2=2.5; b2=2;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

if (x < 3)

a1= 2.5; b1=2; a2=3; b2=0;

m = (b2 - b1)/(a2 -a1);

return m*(x - a1) + b1;

else

return(0.0);

7. (ex. 1) pagina 123

Sera possıvel encontrar polinomios do terceiro grau em cada intervalo Ik =[ak, ak+1] porque temos quatro dados em cada um deles:

fk(x) = a1,k + a2,k(x − xk) + a3,k(x − xk)2 + a4,k(x − xk)3

fk(xk) = yk = a1,k

a1,k + a2,k(x − xk) + a3,k(x − xk)2 + a

f′

k(xk) = dk

fk(xk+1) = yk+1

f′

k(xk+1) = dk+1

8. (ex. 2) pagina 123

A figura (fig. 4.16) pagina 163, mostra, comparativamente, a aproximacaopolinomial classica, de Lagrange com a aproximacao polinomial por pedacos.

Page 86: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 158

Neste exemplo escolhemos os pontos de precisao

x1 = −7, x2 = −5, x3 = −3.0, x4 = −1, x5 = 1, x6 = 3, x7 = 5, x8 = 7;

e estamos aproximando a funcao

h(x) = (x ∗ x − 9) ∗ sin(x)

no intervalo [−7, 7]. A escolha dos nos foi feita de forma a salientar a fra-gilidade da aproximacao polinomial de Lagrange uma vez que a distanciaentre os dois primeiros nos e os dois ultimos nos e grande. Se a distanciaentre os nos for pequena, e uniforme, a aproximacao polinomial de La-grange tem um desempenho melhor, como se pode Veja na figura (fig.4.17) pagina 164. em que usamos os nos

x1 = −3.0, x2 = −2.0, x3 = −1.0, x4 = 0.0, x5 = 1.0, x6 = 2.0, x7 = 3.0, x8 = 4.0

e estamos aproximando a funcao

h(x) = (x ∗ x − 9) ∗ sin(x)

no intervalo [−3, 4].

A aproximacao melhora na medida em que a malha ficar mais fina, econsquentemete o polinomio de mais alto grau o que torna o metodo,computacionalmente, ineficiente.

9. (ex. 2) pagina 153

(a)

∞∫

−∞ga(x)dx = (4.199)

∞∫

−∞ag(ax)dx = (4.200)

1a

∞∫

−∞ag(ax)d(ax) = (4.201)

aa

∞∫

−∞g(ax)d(ax) = (4.202)

aa

∞∫

−∞g(y)d(y) = (4.203)

∞∫

−∞g(y)d(y) (4.204)

(b) Com Gnuplot defina

g(x)= (x<-1.5)?0:x<-0.5?0.5*(x+3.0/2.0)**2:

x<0.5?0.75-x**2:x<1.5?0.5*(x-3.0/2.0)**2:0

CAPITULO 4. SPLINES 159

a=2;b=3;c=4;

h1(x)=a*g(a*x);

h2(x)=b*g(b*x);

h3(x)=c*g(c*x);

plot g(x), h1(x),h2(x),h3(x),0

10. (ex. 3) pagina 153 Figura (fig. 4.18) pagina 164,

(a) Faca o grafico da funcao

x < −4 x + 8x ∈ [−4,−1] −2

x ∈ [−1,−0.5] 1x ∈ [−0.5, 1] |2x|

x ∈ [1, 4] 2

(b) Amacie a funcao cujo grafico foi feito no item anterior, multiplicando-a por convolucao, sucessivamente, pelos nucleos g2, g3, g4 e faca umlaudo do resultado.

4.7 Vocabulario

correc~ao da informac~ao, scilab

• correcao da informacao

Vamos dar aqui um exemplo ilustrativo sobre a correcao da informacao.

Observe o seguinte texto:

Mituo isneterasstneDe aorcdo com uma pqsieusa de uma uinrvesriddae ignlsea, naoipomtra em qaul odrem as lrteas de uma plravaa etaso, a unciacsioa iprotmatne e que a piremria e utmlia lrteas etejasm no lgaurcrteo. O rseto pdoe ser uma bcguana ttaol que vcoe pdoe anidaler sem pobrlmea. Itso e poqrue nos nao lmeos cdaa lrtea isladoa,mas a plravaa cmoo um tdoo.Mutitu isneterasstenDe aorcod com uma pqsieuas de uma uinrvesriddea ignlsae, naoipomtar em qaul odrem as lrtesa de uma plravaa etaso, a uncaicsioa iprotmaten e que a piremrai e utmlai lrtesa etejams no lgarucrtoe. O rseto pdoe ser uma bcguaan ttalo que vcoe pdoe anidaler sem pobrlmae. Itso e poqreu nos nao lmeos cdaa lrtea isladoa,mas a plravaa cmoo um tdoo.

O texto explicou mal. A razao e outra, e um caso de correcao da in-formacao que vou agora explicar.

Page 87: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 160

E que ao lermos, nao lemos! Comparamos as palavras com as que temos emnosso banco de dados e compomos a informacao usando uma amostragemda informacao. Quem le devagar, de fato le. Quem le rapido, faz estaamostragem e compoe a informacao.

Quem le rapido, nem siquer le palavras, le frases inteiras, e novamente,nao le, analisa o conjunto das palavras, seleciona no banco de dados o queda certo para colocar naquele conjunto, e percebe a informacao.

Claro, esta rapidez pode ter seus contra-pontos, e possıvel rapidamenteadquirir o centro da ideia, porem perder detalhes. O leitor rapido podenum relance compreender, do texto, que “brigaram o homem e a mulher”,mas pode nao perceber que foi o “seu irmao com a mulher dele”... sealguem lhe perguntar depois pelo conteudo do texto, responderia:

- Brigaram!

e se o interlocutor insistisse na pergunta:

- Quem brigou, com quem?

responderia:

- Sei la!

A inmaforcao foi rbidecea, mas ptare dela se pdeeru pquore o ltoeir anapesabvsoreu patre do prcaedido e paert do pratiedicvo na oracao. Se o astsuno defato lhe chssamae atcaeno, voriltaa e se ceicartifria de pater dos dados pedordis.Qudano, num tetxo, a infaormcao for retipeda e abdaunnte, etsa leuitra radpiae saftisatoria pourqe, com a amraostgem, o leoitr abrsove toda a inmaforcaoimtapornte. Qunado o tetxo e coincso, sorbio, teicnco, a letiura temrina sednomias letna poqrue a amotsragem se reevla impfereita, o letior obesrva que naoesta cogunseindo coeemprnder e, natlmuraente, psasa a faezr uma amraostgemmais fina, teirmna ledno. . .

A informacao foi recebida, mas parte dela se perdeu porque o leitor apenasabsorveu parte do predicado e parte do predicativo na oracao. Se oassunto de fato lhe chamasse atencao, voltaria e se certificaria de partedos dados perdidos.

Quando, num texto, a informacao for repetida e abundante, esta leiturarapida e satisfatoria porque, com a amostragem, o leitor absorve todaa informacao importante. Quando o texto e conciso, sobrio, tecnico, aleitura termina sendo mais lenta porque a amostragem se revela imperfeita,o leitor observa que nao esta conseguindo compreender e, naturalmente,passa a fazer uma amostragem mais fina, termina lendo. . .

• scilab e um programa para resolver questoes de Algebra Linear, computa-cionalmente, distribuido sob GPL. E semelhante a um programa comercialtambem dedicado a Algebra Linear. Pode ser obtido na internet, [23].

CAPITULO 4. SPLINES 161

Page 88: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 162

0−1 1

−2

−1

0

1

2

3

4

5

−1.5 −1 −0.5 0 0.5 1 1.5

f1(x)f2(x)f3(x)

0

2−spline a suporte compacto

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

−1.5 −1 −0.5 0 0.5 1 1.5

g(x)0

Figura 4.15: 2-splines

CAPITULO 4. SPLINES 163

-40

-30

-20

-10

0

10

20

30

40

-8 -6 -4 -2 0 2 4 6 8

"polped""lagrange""precisao"

"XOY"

Figura 4.16: Comparacao: polinomio de Lagrange e splines

Page 89: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 4. SPLINES 164

-8

-6

-4

-2

0

2

4

6

8

-3 -2 -1 0 1 2 3 4

"polped""lagrange""precisao"

"XOY"

Figura 4.17: Comparacao: polinomio de Lagrange e splines - quando os nos ficam unifor-mente proximos.

−2

−1

0

1

2

3

4

−6 −4 −2 0 2 4 6

’data1’’data2’

Figura 4.18: Regularizacao por convolucao

Capıtulo 5

Integracao aproximada

O objetivo deste capıtulo e o de apresentar-lhe dois metodos parao calculo aproximado da integral

b∫

a

f(x)dx

Vou comecar com as somas de Riemann que, embora nao seja ometodo conduzindo a melhor aproximacao, e o mais simples e eusado em diversas situacoes em que se deseje rapidamente avaliara integral. Depois vou discutir uma variante da soma de Riemann- regra do trapesio.Embora o metodo nao seja eficiente e nos lhe vamos mostrar nasegunda parte do capıtulo um que e eficiente, as ideias basicas dassomas de Riemann estarao presentes posteriormente: particao,varredura, malha.Finalmente vou mostrar como podemos aplicar o assunto docapıtulo 4 no calculo aproximado de integrais. Este metodo, sim,e de alta precisao e muito otimizado.

E possıvel que o leitor, ou o professor, sinta a falta do metodo Simpsonentre os processos para o calculo aproximada da integral. De fato ele esta sendoomitido aqui uma vez que podemos mostrar coisa melhor que e o uso dos splines,afinal nao seria somente o metodo de Simpson que estaria faltando, num livrocomo este temos que escolher, selecionar material para que nao transforma-lonum tratado enciclopedico, alguns destes tratados estao na bibliografia. Se vocefez um bom curso de Calculo, estudou integral no sentido de Riemann e portantoas somas de Riemann. Parte do material deste capıtulo sera uma amena revisaopara voce, esperamos.

165

Page 90: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 166

5.1 Integral no sentido de Riemann

Neste capıtulo discutimos a integral de forma intuitiva e geometrica fazendo,inicialmente, uma revisao concentrada daquilo que se faz em Calculo Diferen-cial e Integral mas voltados para o nosso objetivo que e o calculo numericode integrais.

Comecamos por descrever, com alguma simplicidade, o metodo de integracao,

atribuido ao matematico alemao, Bernard Riemann, as somas de Riemann,

como aproximacao para o calculo da integral e daı derivaremos os metodos

tıpicos desta disciplina que logo o leitor vera que e uma aplicacao da apro-

ximacao polinomial.

5.1.1 Integracao geometrica.

Vamos comecar calculando aproximadamente varias integrais para tornar “mecanico” o usoda “soma de Riemann” como metodo de aproximacao de integrais.

Neste livro a integral representa a area algebrica delimitada pelo grafico de uma funcao f

entre dois pontos dados de seu domınio. Veja a interpretacao geometrica na figura (fig. 5.1)pagina 168.

Esta e a forma de se interpretar a integral no Calculo: o sımbolob

R

a

f representa esta area

limitada pelo grafico de f e o eixo OX desde x = a ate x = b.

A lista de exercıcios deve ser entendida como um laboratorio para relembrarconhecimentos que o aluno deveria ter, o que nem sempre e verdadeiro. Umaluno que considere um exercıcio trivial, simplesmente deve ignora-lo e passarpara o seguinte, apenas tendo o cuidado de ter a certeza de que nao fez umjulgamento apressado.

Exercıcios 20 Calculo aproximado da integral

1. Represente geometricamente as seguintes integrais:

a)3∫

−3

4 b)3∫

0

4 c)0∫

3

4

d)3∫

−3

2x e)3∫

−2

2x f)3∫

0

2x

g)10∫

−3

2x + 3 h)10∫

−1

2x− 3 i)−3∫

3

3 − 2x

j)3∫

−3

x + 4 k)3∫

0

x − 4 l)0∫

−3

4 − x

m)3∫

−3

x2 + 2x + 1 n)3∫

0

1 − x2 o)0∫

3

x2 − 4

2. Calcule as integrais, que voce souber calcular, dentre as indicadas naquestao anterior.

3. Calcule aproximadamente as integrais.

a)3∫

−3

x2 + 2x + 1 b)3∫

0

1 − x2 c)3∫

−3

4 − x2

CAPITULO 5. INTEGRAL APROXIMADA 167

Sugestao aproxime por falta ou por excesso as areas com retangulos, triangulosou trapesios, conforme for conveniente, e aumente a precisao dos resulta-dos usando uma maquina de calcular ou um programa de computador.

5.1.2 Expressao formal do calculo da integral

Nos ainda nao sabemos calcular as integrais:

3∫

−3

x2 + 2x + 1 (5.1)

3∫

0

1 − x2 (5.2)

3∫

−3

x2 − 4 (5.3)

e agora vamos ver como isto se faz, aproximadamente.

Area aproximada usando retangulos

As integrais, (eq. 1), (eq. 2) e (eq. 3), representam as areas de regioes limitadaspor contornos nao retilıneos.

Voce ja foi convidado, em exercıcio anterior, a representar geometricamenteestas integrais.

Neste momento tudo que podemos fazer e calcular estas areas aproxima-damente, este metodo esta representado na figura (fig. 5.1) pagina 168 e seradiscutido em detalhe mais abaixo, mas e assunto que voce pode encontrar dis-cutido em profundidade nos cursos de Calculo.

Uma saıda, para obter uma aproximacao de integrais como

3∫

−3

x2 + 2x + 1 (5.4)

representando a area de regioes com contornos curvilıneos, consiste em subdi-vidir a regiao que elas representam com retangulos, triangulos ou trapesios ecalcular a soma das areas destas figuras:

Veja na figura (fig. 5.1) pagina 168,Voce logo deve se convencer de que nao ha ganho especial em trabalhar com

tantas figuras. Usando apenas retangulos podemos obter alta precisao, desdeque a base dos retangulos seja pequena, e este objetivo podera ser alcancadocom um programa de computador, nao com calculos manuais.

Veja, por exemplo, a area de um trapesio e a media aritmetica entre as areasde dois retangulos, um com a altura maxima do trapesio, e o outro com a alturamınima do trapesio, supondo que o trapesio tenha duas alturas. Analise asfiguras (fig. 5.4), pagina 186.

Page 91: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 168

f

a b

Figura 5.1: Trapesios para aproximar area

Isto mostra que o calculo da area usando trapesio pode ser obtido com amedia aritmetica dos calculos feitos usando, retangulos por excesso e retangulospor falta.

Depois, um triangulo e apenas um tipo particular de trapesio...Entao vamos nos concentrar no calculo com retangulos, para encontrar a

area aproximada das integrais e nos preocupar em obter este resultado comprecisao maxima diminuindo a base dos retangulos.

Se convenca do que foi dito fazendo alguns graficos.

Somas de Riemann

Para calcular aproximadamenteb∫

a

f podemos subdividir a regiao em triangulos,

retangulos ou trapesios, conforme a conveniencia ou de acordo com as possibi-lidades geometricas da figura. Mas ja observamos que nao se ganha muito comeste detalhe, muito mais se ganha na quantidade de subdivisoes1, e, natural-mente com o uso de um programa de computador.

Mas a principal razao de usarmos retangulos e a de que podemos obteruma expressao algebrica simples para a soma das area dos retangulos e depoisaplica-la num programa de computador.

A expressao algebrica que se presta, facilmente, para utilizar num programae uma soma de Riemann.

As somas de Riemann usam exclusivamente retangulos. Para obter os retangulos,se subdivide o intervalo [a, b] em n sub-intervalos, veja na figura (fig. 5.2) pagina169, a sugestao grafica de como fazer isto. as subdivisoes nao precisam ser ir-regulares, como e o caso da (fig. 5.2), elas podem ser os nos de uma particaouniforme e assim satisfazer a uma progressao aritmetica de razao ∆x = b−a

n .

1em outras palavras, ao usarmos subintervalos cada vez menores

CAPITULO 5. INTEGRAL APROXIMADA 169

a

b

[a,b]

f

Figura 5.2: Soma de Riemann

Este valor ∆x e tambem o tamanho, (medida), da base de cada um dos subin-tervalos.

Vamos adotar este caso particular de particao, chamada de particao uni-forme, e o leitor pode consultar um livro de Calculo para verificar que se aintegral existir, o valor dela independe do tipo de particao que se escolher parao Calculo das somas de Riemann.

Os nos da particao (malha) sao:

a, a + ∆x, a + 2∆x, a + 3∆x, · · ·a + k∆x, · · · , a + (n − 1)∆x = b − ∆x (5.5)

Aqui faremos mais uma simplificacao no metodo. Falamos anteriormente dearea por excesso e area por falta. Mas queremos calcular integrais automatica-mente e assim nao desejamos analisar o grafico para escolher a area por excessoou por falta. Seguiremos assim o exemplo da figura (fig. 5.2) na qual voce podever que alguns retangulos representam a area por excesso e outros por falta.

Page 92: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 170

Convidamos a que voce faca um exercıcio:

Exercıcio 1 Area por falta ou por excesso

1. Verificar que os quatro primeiros retangulos na (fig. 5.2) representam umaaproximacao por excesso.

2. Verificar que os retangulos quinto e sexto na (fig. 5.2) representam umaaproximacao por falta da area.

3. Verificar que os retangulos, setimo, oitavo e nono, na (fig. 5.2) represen-tam uma aproximacao por falta e que o decimo aproxima por excesso aarea.

Se voce nao concordou com a veracidade das afirmacoes contidas nos exercıciosacima, e porque, talvez, voce nao tenha observado que ha alguns retanguloscom area nula (altura nula), volte a analisar os exercıcios munido desta novainformacao.

Vamos agora passar a expressao formal da soma de Riemann.

Soma de Riemann

Considere agora a figura (fig. 5.2) pagina 169. Estipulamos um tamanho ∆xpara a base dos retangulos e cobrimos a area algumas vezes por excesso, outrasvezes por falta. Para isto consideramos a progressao aritmetica

a + k∆x; k = 0, 1, ... (5.6)

e o ultimo retangulo ficou extrapolando o intervalo de integracao [a, b].Para evitar que isto aconteca temos que

• calcular ∆x usando a medida do intervalo [a, b] e

• um numero de divisoes, um numero inteiro escolhido:

∆x =b − a

n

A progressao aritmetica obtida com esta razao ∆x vai fazer de

b = a + n∆x,

o ultimo termo da p.a. de modo que o ultimo retangulo escolhido correspondeao subintervalo

[a + (n − 1)∆x, a + n∆x] = [b − ∆x, b] (5.7)

Existe uma notacao pratica que esconde a expressao dos termos da pro-gressao aritmetica, mas que sabemos qual e, de forma implıcita. Usamos

x0 = a = a + 0∆x; (5.8)

xk = a + k∆x; (5.9)

xn = b = a + n∆x; (5.10)

CAPITULO 5. INTEGRAL APROXIMADA 171

Agora podemos escrever a expressao da soma dos retangulos:

b∫

a

f ≈n−1∑

k=0

f(xk)∆x =

n−1∑

k=0

f(a + k∆x)∆x (5.11)

a segunda formulacao e apropriada para programas de computacao, a primeirae mais resumida e propria para escrever em textos de Matematica. Com estecalculo do ∆x evitamos que haja um retangulo a mais ou a menos na coberturada area representada pela integral que e o defeito apresentado na (fig. 5.2).

Observe que o ultimo “no” nao e b, mas sim ‘b − ∆x”.Para cada um dos subintervalos, consideraremos a altura

f(a + k∆x) = f(xk)

em que k varia desde 0 ate n − 1 :

f(a), f(a + ∆x), f(a + 2∆x), · · ·f(a + k∆x), · · · , f(a + (n − 1)∆x). (5.12)

Quer dizer que os retangulos tem por area:

f(a)∆x, f(a + ∆x)∆x, f(a + 2∆x)∆x, · · ·f(a + (n − 1)∆x)∆x (5.13)

A soma destas areas e o valor aproximado da integral, agora nao sabemos see por falta ou por execesso, mas, com certeza e um valor medio, entre o calculopor excesso e o calculo por falta.

Experimente as funcoesriemann(), riemann grafun()

no arquivo riemann.py. Digitepython riemann.py

depois de editar o arquivo. Vejas as ultimas linhas do arquivo riemann.py quetrazem instrucoes de como usar o programa. Nao se preocupe em entendero programa, agora. Volte a ler o programa em outras ocasioes, ao longo docapıtulo.

Definicao 6 Soma de RiemannConsidere o intervalo [a, b] e uma funcao que seja integravel neste intervalo.Definimos uma soma de Riemann, de ordem n2, associada a uma particao

uniforme3

x0 = a (5.14)

... (5.15)

xk = a + k∆x (5.16)

... (5.17)

xn−1 = a + (n − 1)∆x = b − ∆x (5.18)

b = a + n∆x (5.19)

2ordem n porque representa a soma de n parcelas3Ja dissemos que as particoes nao precisam ser uniforme, estamos fazendo uma escolha.

Page 93: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 172

como

Sn(f) =n−1∑

k=0

f(a + k∆x)∆x. (5.20)

Observe que em todos os retangulos consideramos a altura dada pelo pri-meiro extremo do correspondente subintervalo. Quer dizer que, no intervalo

[xk, xk+1] = [a + k∆x, a + (k + 1)∆x]

a altura considerada e f(xk).Poderiamos ter usado o segundo extremo obtendo a formula

Sn(f) =

n∑

k=1

f(a + k∆x)∆x. (5.21)

que voce deve se convencer de que representa uma aproximacao equivalente daintegral . Dissemos equivalente, os valores nao sao iguais, faca as contas e veja.Mas o erro entre as duas expressoes e pequeno, ou tende a ser pequeno, quandoa medida dos subintervalos decresce.

Exercıcios 21 Soma de Riemann superior ou inferiorObjetivo: adquirir uma visao intuitiva das integrais superior e inferior e

compreender a relacaoSn(f) ≥ Sn(f)

para uma mesma particao do intervalo [a, b] quando f for positiva.Se os exercıcios lhe parecerem claros, nao perca o seu tempo fazendo-os.

1. Divida o intervalo [−3, 3] em 10 subintervalos iguais, represente geome-tricamente a aproximacao da area

3∫

−3

f(x) =

3∫

−3

x2

usando sempre o maximo de f em cada sub-intervalo. Esta soma de Rie-mann assim obtida se chama soma superior de Riemann

S10(f)

e vale a desigualdade3∫

−3

f(x) ≤ S10(f)

Observe que escrevemos ‘menor ou igual” porque, por uma casualidade, sepode obter uma igualdade. Se f for constante vale a igualdade.

CAPITULO 5. INTEGRAL APROXIMADA 173

2. Divida o intervalo [−3, 3] em 20 subintervalos iguais, represente geome-tricamente a aproximacao da area

3∫

−3

f(x) =

3∫

−3

x2

usando sempre o maximo de f em cada sub-intervalo. Esta soma de Rie-mann assim obtida se chama soma superior de Riemann

S20(f)

e valem as desigualdades

3∫

−3

f(x) ≤ S20(f) ≤ S10(f)

3. Tente uma demonstracao para a afirmacao: “ se duplicarmos a quantidadede intervalos, usando particoes uniformes, se tem

≤ S2n(f) ≤ Sn(f)

em outras palavras, as somas superiores obtidas por subdivisao sucessivados subintervalos, forma uma sucessao decrescente. Ela decresce para ovalor da integral

b∫

a

f(x)

sobre o intervalo [a, b].

4. Prove que, se f for uma funcao crescente,

Sn(f) =

n−1∑

k=0

f(a + k∆x)∆x. (5.22)

e uma aproximacao por falta da integralb∫

a

f e

Sn(f) =

n∑

k=1

f(a + k∆x)∆x. (5.23)

e uma aproximacao por excesso da integral. Faca um grafico ilustrativo.

5. Prove que, se f for uma funcao decrescente,

Sn(f) =n−1∑

k=0

f(a + k∆x)∆x. (5.24)

Page 94: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 174

e uma aproximacao por excesso da integralb∫

a

f e

Sn(f) =n∑

k=1

f(a + k∆x)∆x. (5.25)

e uma aproximacao por falta da integral. Faca um grafico ilustrativo.

6. Use o programa riemann() para calcular, aproximadamdente, as integrais

a)3∫

−3

2x + 3 b)3∫

0

3 − 2x

c)0∫

3

5 − 2x d)3∫

−3

2x − x2

e)3∫

−2

x2 − 2x + 3 f)3∫

0

2 − 2x2

g)10∫

−3

4xsen(x) + 3x2 h)10∫

−1

x2cos(x) − 2x − 3

i)−3∫

3

3x2 − 2x j)3∫

−3

(x3 − x2 − x + 4)sen(x)

k)3∫

0

sen(x) l)0∫

−3

cos(x)

m)3∫

−3

x2cos(x) − 2xsen(x)− cos(x) n)3∫

0

1 + x2cos(x)

e compare o resultado usando o Teorema Fundamental do Calculo, (emalguns casos voce vai ter que usar integracao por partes).

Na proxima secao alguns calculos feitos com um programa em Python vaoilustrar numericamente e graficamente o significado da soma de Riemann.

5.2 Integral no sentido de Riemann

Falamos diversas que as somas de Riemann eram aproximacoes da integral evamos agora ver como. A teoria que vamos apresentar e um pouco simplificada,deixamos que voce leia uma teoria mais completa num livro de Calculo. Umdos itens de nossa simplificacao reside em que vamos considerar apenas malhasuniformes, este defeito e importante!

O metodo algorıtmico para calcular integrais e

• Temos uma funcao

[a, b]f→ R

que desejamos “provar que e integravel”;

CAPITULO 5. INTEGRAL APROXIMADA 175

• Determinamos uma sucessao de malhas4 (particoes), Πk, no intervalo [a, b]de modo que a sucessora de cada malha seja um refinamento5 da anterior

Πk+1 << Πk; (5.26)

• a cada malha desta sucessao associamos uma soma de Riemann para fobtendo assim uma sucessao de somas de Riemann

Πk 7→ Sk(f); (5.27)

• Se qualquer sucessao de somas de Riemann, assim construıda, tiver omesmo limite, este limite comum e

b∫

a

f (5.28)

este e um dos metodos para definir numeros reais, um numero real e o limitecomum de uma classe de equivalencia de sucessoes convergentes de numerosracionais.

Podemos escrever uma definicao para funcao integravel a Riemann:

Definicao 7 integral no sentido de Riemann Seja

[a, b]f→ R.

f e integravel no sentido de Riemann se qualquer sucessao de somas de Riemannobtida por refinamentos arbitrarios de uma particao de modo que a medida dossubintervalos tendam a zero, definir um mesmo numero real.

Este unico numero real eb∫

a

f.

Observacao 11 Particoes uniformesObserve que na definicao nao fizemos mencao as particoes uniformes. Para

definir a integral precisamos de famılias arbitrarias de particoes.Mas neste texto somente faremos uso de particoes uniformes. Para que voce

fique alerta, a funcao

[−1, 1]f→ R; x 7→ 1

x(5.29)

seria integravel se usarmos apenas particoes uniformes e na verdade esta funcaonao e integravel.

4que na linguagem da estatıstica representa uma amostragem5na linguagem da estatıstica seria uma amostragem compatıvel, ou comparavel, com a

anterior

Page 95: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 176

Entretanto, se a funcao for integravel, usando apenas particoes uniformespodemos calcular a sua integral, este e o atalho que estamos usando aqui. Estee um livro de Calculo Numerico, em que calculamos numericamente aquilo quevoce aprendeu a calcular exatamente no curso de Calculo Diferencial e Integral.

Exemplo 16 Programa riemann.py

Rode e leia o programa riemann.py. Ele produz alguns refinamentos de umaparticao inicial criando uma sucessao que converge para o valor da integral, seeste valor existir.

Experimente o programa com algumas das funcoes que estao definidas nele,por exemplo inv(x) que igual a 1

x quando x 6= 0. Experimente calcular suaintegral no intervalo [−1, 1] para ver alguns elementos de uma sucessao que nao‘parece” ser convergente. Os numeros que surgem nao formam uma sucessaoque pareca ter limite.

Observe que um programa deste tipo nao prova nada! ele apenas serve comoexemplo e deve ser usado com este cuidado.

Para usar o programa, troque o nome da funcao cuja integral voce desejadentro de uma das ultimas linhas do programa. Veja a observacao que indicaisto no proprio programa. Use o programa para definir outras funcoes cujasintegrais voce deseja, observe a sintaxe da linguagem Python ao definir novasfuncoes.

5.2.1 Duas propriedades da integral

Nao vamos desenvolver aqui a teoria de integracao, ela e privativa do cursode Calculo! Mostraremos entretanto uma propriedade da integral de Riemannpara ilustrar como as somas de Riemann sao um metodo efetivo de aproximacao.Depois veremos que combinando as somas de Riemann com aproximacao poli-nomial, teremos algoritmos muito possantes para calcular integrais aproxima-damente.

A propriedade: se f = h + g entao

b∫

a

f =

b∫

a

(h + g) =

b∫

a

h +

b∫

a

g

e de grande uso. Vamos ver sua demonstracao.Suponhamos que f, g, h sejam funcoes integraveis e que f = h + g.Para cada particao do intervalo [a, b] podemos escrever

f(xk) = g(xk) + h(xk); (5.30)

Sn(f) =n∑

k=0

f(xk)∆xn; (5.31)

Sn(h) =n∑

k=0

h(xk)∆xn; (5.32)

CAPITULO 5. INTEGRAL APROXIMADA 177

Sn(g) =n∑

k=0

g(xk)∆xn; (5.33)

Sn(h + g) =n∑

k=0

(h(xk) + g(xk))∆xn = (5.34)

n∑

k=0

f(xk)∆xn = Sn(f) (5.35)

o que nos mostra que os numeros

b∫

a

f ;

b∫

a

h + g (5.36)

sao iguais, porque

• As equacoes (30)-(35) valem para qualquer que sejam as particoes esco-lhidas no intervalo de integracao;

• Logo a a soma dos limites e igual ao limite da soma, e provamos assimque a soma das integrais e igual a integral das somas.

E facil usar uma pequena alteracao desta demonstracao para provar outrapropriedade tambem muito util:

b∫

a

Kf = K

b∫

a

f (5.37)

se f for uma funcao integravel e K for uma constante qualquer.Temos assim o exemplo

3∫

−3

10x2 + 2x + 7 = 10

3∫

−3

x2 + 2

3∫

−3

x +

3∫

−3

7. (5.38)

Exercıcios 22 Expressao formal do calculo da integral

1. Escreva somas de Riemann, com 10 sub-intervalos, para aproximar cadauma das integrais abaixo:

a)3∫

1

1x b)

3∫

−3

11+x2 c)

3∫

−3

2x+34+x2

2. Re-escreva as somas de Riemann aumentando a precisao, de modo queos sub-intervalos tenha medida 0.1 Use uma calculadora ou computador ecalcule estas integrais.

Page 96: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 178

3. O numero de Napier Descubra experimentalmente um ponto e ∈ R tal que

e∫

1

1

x= 1 (5.39)

Sugestao, use o programa riemann.py e calcule as integrais

a∫

1

1

x

ate obter (uma aproximacao do) numero desejado.

4. Verifique que, das duas somas de Riemann abaixo, uma fornece uma apro-ximacao por falta e a outra por excesso da integral

1∫

0

x2 ;

n−1∑

0

k2

n2

1

n;

n∑

1

k2

n2

1

n(5.40)

identifique quem e quem. Use riemann() in riemann.py.

5. Verifique que, das duas somas de Riemann abaixo, uma fornece uma apro-ximacao por falta e a outra por excesso da integral

1∫

0

xp ; p ∈ N ; p > 1 ;n−1∑

0

kp

np

1

n;

n∑

1

kp

np

1

n(5.41)

identifique quem e quem . Use riemann() in riemann.py.

6. Verifique experimentalmente (somas de Riemann) que1∫

0

x2 = 13 . Use

riemann() in riemann.py.

7. soma de RiemannProve a desigualdade:

n−1∑

k=0

k2 < n3

1∫

0

x2 <n∑

k=1

k2 (5.42)

8. soma de RiemannProve a desigualdade:

n−1∑

k=0

k3 < n4

1∫

0

x3 <n∑

k=1

k3 (5.43)

CAPITULO 5. INTEGRAL APROXIMADA 179

9. soma de RiemannProve a desigualdade:

a3

n4

n−1∑

k=0

k3 <

a∫

0

x3 <a3

n4

n∑

k=1

k3 (5.44)

10. soma de RiemannProve a desigualdade:

n−1∑

k=0

kp < np+1

1∫

0

xp <n∑

k=1

kp (5.45)

11. soma de RiemannProve a desigualdade:

a4

n4

n−1∑

k=0

k3 <

a∫

0

x3 <a4

n4

n∑

k=1

k3 (5.46)

12. soma de RiemannProve a desigualdade:

ap+1

np+1

n−1∑

k=0

kp <

a∫

0

xp <ap+1

np+1

n∑

k=1

k3 (5.47)

13. Expresse como uma soma de areas de triangulos isosceles, (ou de retangulos0uma aproximacao para a area do cırculo de raio 1.

5.2.2 Calculo “numerico” da integral

Vamos calcular as areas dos retangulos limitados pelo grafico de

f(x) = x2 + 2x + 1

ao longo de uma particao do intervalo [−3, 3].Os dados contidos na tabela 5.1 na pagina 180, mostram a saıda de dados

de um programa em Python para o calculo da integral do exercıcio 3, com∆x = 0.2.

O grafico 5.3, pagina 181, mostra os retangulos cujas areas se encontramcalculadas abaixo. O grafico foi feito com auxılio do Gnuplot.

A tabela 5.1 mostra os valores da integral ao longo dos sub-intervalos daparticao.

deltax = 0.2Valor aproximado da integral 24.104801.Repetindo os calculos com valores menores para o ∆x temos o seguinte:

Page 97: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 180

x= -3 Sn(-3) = 0.7262867x= -2.8 Sn(-2.8) = 1.3078534x= -2.6 Sn(-2.6) = 1.7607801x= -2.4 Sn(-2.4) = 2.1011468x= -2.2 Sn(-2.2) = 2.3450335x= -2.0 Sn(-2.0) = 2.5085202x= -1.8 Sn(-1.8) = 2.6076869x= -1.6 Sn(-1.6) = 2.6586136x= -1.4 Sn(-1.4) = 2.6773803x= -1.2 Sn(-1.2) = 2.680067x= -1.0 Sn(-1.0) = 2.6827137x= -0.8 Sn(-0.8) = 2.7013204x= -0.6 Sn(-0.6) = 2.7518871x= -0.4 Sn(-0.4) = 2.8504138x= -0.2 Sn(-0.2) = 3.0129005x= 0 Sn(0) = 3.2553472x= 0.2 Sn(0.2) = 3.5937539x= 0.4 Sn(0.4) = 4.0441206x= 0.6 Sn(0.6) = 4.6224473x= 0.8 Sn(0.8) = 5.344734x= 1.0 Sn(1.0) = 6.2318207x= 1.2 Sn(1.2) = 7.2957874x= 1.4 Sn(1.4) = 8.5527141x= 1.6 Sn(1.6) = 10.0186808x= 1.8 Sn(1.8) = 11.7097675x= 2.0 Sn(2.0) = 13.6420542x= 2.2 Sn(2.2) = 15.8316209x= 2.4 Sn(2.4) = 18.2945476x= 2.6 Sn(2.6) = 21.0469143x= 2.8 Sn(2.8) = 24.104801

Tabela 5.1: Tabela de valores da integral de f(x) = x2 + 2x + 1

a base de cada retangulo eh deltax = 0.12

o valor da integral aproximado eh = 23.2944

a base de cada retangulo eh deltax = 0.06

o valor da integral aproximado eh = 23.6436

a base de cada retangulo eh deltax = 0.006

o valor da integral aproximado eh = 24.060036

O valor exato desta integral e:

3∫

−3

x2 + 2x + 1 = 24

CAPITULO 5. INTEGRAL APROXIMADA 181

e um programa em Python para calcula-la, aproximadamente, e:

Exemplo 17 Um programa em Python para calcular integrais## inicio do arquivo integral.py

def f(x):return x*x ## funcao f a ser integrada.

def integral(f,inicio,fim):inicio = input(‘inicio do intervalo [a, b] −− > a =”)fim = input(‘fim do intervalo [a, b] −− > b =”)soma = 0deltax = 0.0000001 ## a precisao do calculo.while (inicio < fim):

soma = soma + f(inicio)inicio = inicio + deltax

soma = soma*deltaxreturn soma

inicio = 0fim = 1print integral(f,inicio,fim)## fim do arquivo integral.py

Rode este programa assim. Na linha de comandos do LinuX digite:$ python integral.py

Voce pode alterar na definicao de f , veja no programa onde esta “def f(x)”, a equacao eassim calcular outras integrais.

O programa pede os extremos do intervalo de integracao.

0

2

4

6

8

10

12

14

16

-3 -2 -1 0 1 2 3 4

’data’

Figura 5.3: retangulos da soma de Riemann para3R

−3

x2 + 2x + 1

Observacao 12 Comentando o programa

Page 98: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 182

Nao considere como ponto de honra entender um programa de computacao agora. Oautor deste livro levou quase 15 anos para conseguir entender os programas de computacao...Use os programas, e aos poucos eles passarao a fazer parte de sua vida.

Existe uma regra com algumas excecoes, em Unix (LinuX e Unix). O sımbolo # repre-senta comentario e o programa ignora o que vier depois deste sinal ate o final da linha.

Assim podemos inserir nos programas comentarios para o outros que forem usar os pro-gramas. No programa voce pode encontrar o comentario “a precisao do calculo”ao lado davariavel “deltax”. Esta e medida da base dos retangulos com a integral esta sendo calculada.Troque por valor menor se quiser ter mais precisao, mas vera que logo deixa de valer a pena,porque a precisao maxima da maquina sera atingida.

Entretanto se voce iniciar os caculos com valores maiores para “deltax”, ao substituirvalores menores, vera que calculo se torna mais preciso. Experimente iniciar com

deltax = 0.1 (5.48)

e depois o substitua sucessivamente por 0.01, 0.001, 0.0001 · · · .Se voce tiver executado a experiencia, lhe tera aparecido ante os olhos a sucessao:

0.385, 0.32835, 0.3328335, 0.333383335, 0.333338333349, 0.333332833334 (5.49)

correspondentes a1R

0

x2 calculada com este programa em que usamos

deltax ∈ 0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001 (5.50)

Se voce for alem mais um pouquinho tera a desgradavel surpreza de ver que a maquinacomeca se perder... mas e bom que isto aconteca para que voce desmistifique a maquina.Nos, e nao as maquinas, sabemos com contornar esta dificuldade para obter precisoes aindamaiores, mais isto nao cabe ser discutido aqui.

Na proxima lista de exercıcios vamos usar o que o programa nos ofereceu, (supondo quevoce tenha usado o programa, naturalmente).

Observe que a sucessao das somas de Riemann parece produzir uma sucessao de numeroscom um comportamento assintotico previsıvel.

Para uso no exercıcio abaixo, use a seguinte versao do programa6 integral.py

Mais adiante vamos lhe apresentar uma outra alternativa computacionalusando uma “maquina de calcular” bem poderosa que pode estar instalada noscomputadores a que voce tiver acesso.

Observe que o programa abaixo nao se encontra no arquivo riemann.py.Voce devera digita-lo e grava-lo em sua area de trabalho.

## inicio do arquivo integral.py

def f(x):return x*x ## funcao f a ser integrada.

def integral(f,inicio,fim):fim = 1soma = 0deltax = 0.1; ## precisao incial do calculo.while deltax > 0.0000001:

soma = 0

6Os programas usados neste livro podem ser conseguidos via e-mail com o autor.

CAPITULO 5. INTEGRAL APROXIMADA 183

x = deltaxwhile (x < fim):

soma = soma + f(x)x = x + deltax

soma = soma*deltaxprint somadeltax = deltax/2

return soma

print integral(f,inicio,fim)## fim do arquivo integral.py

Esta versao difere da anterior nos seguintes pontos, agora ‘inicio”vale “del-tax”e “fim=1”, quer dizer que ele calcula

1∫

0

f(x). (5.51)

Alem disto, o proprio programa sai dividindo sucessivamente ‘deltax”por dois,voce tem apenas que sentar-se e olhar o resultado...

Para rodar este programa faca o seguinte:

• Primeiro copie o texto do programa para um arquivo chamado integral.py.Alternativa, arrume um disco com os programas com o autor do livro.

• Digite, numa “shell” do LinuX,‘python /home/seu-nome/calculo/integral.py”

porque estamos supondo que voce esta trabalhando num diretorio cha-mado “calculo” em sua area de trabalho.

• Qualquer duvida, contacte tarcisiomember.ams.org descrevendo cuidado-samente a dificuldade encontrada. Junte copia de eventuais mensagens deerro.

Observacao 13 Calcular integrais aproximadamenteQual pode ser o sentido de que eu o esteja conduzindo ao calculo aproximado

de integrais que voce sabe calcular exatamente?Na verdade eu nao deveria estar me concentrando no calculo aproximado de

integrais que nao sabemos calcular exatamente?A resposta para esta pergunta e simples: como voce sabe calcular exatamente

as integrais voce tambem pode comparar os resultados do calculo aproximadocom o calculo exata e assim ganhar seguranca sobre a precisao do calculo apro-ximado.

Inclusive os exercıcios salientam este ponto ao pedir que voce calcule usandoo Teorema Fundamental do Calculo as integrais calculadas aproximadamente.

Page 99: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 184

Exercıcios 23 Calculo “numerico” da integral

Objetivo

1. Rode o programa integral.py com as integrais abaixo e decida em quecasos parece haver um comportamento assintotico previsıvel (limite).

a)1R

0

x3 b)1∫

0

1x c)

1∫

0

x + 3 d)1∫

0

1x2

e)1∫

0

x4 f)1∫

0

x+1x g)

1∫

0

xx+1 h)

1∫

0

x+1x+2

2. Existem exatamente tres casos em que o comportamento assintotico dasucessao de Somas de Riemann fica indefinido. Tente encontrar uma ex-plicacao.

3. Verifique que se, numa soma de Riemann parab∫

a

f , os sub-intervalos tive-

rem todos o mesmo tamanho b−an

entao a soma de Riemann e um multiplode b − a por uma media de valores de f , indique que media e esta: (1)aritmetica, (2) geometrica ou (3) aritmetica ponderada.

4. Usando o resultado do exercıcio anterior, conclua que seb∫

a

f existir, entao

1

b − a

b∫

a

f = M (5.52)

e um valor medio de f . Tente justificar a razao do “artigo indefinido”.

5. particao do intervalo A metodologia usada pelo programa integral.py

consiste em, sucessivamente, dividir os intervalos na metade para obteruma nova colecao de sub-intervalos para a soma de Riemann seguinte.Considere a soma de Riemann

n∑

k=1

f(a + k∆x)∆x (5.53)

e escreva a expressao da soma de Riemann em que ∆x′ e a metade de∆x = b−a

n .

6. Suponha que os valoresV0, V1, · · · , Vn−1 (5.54)

sao os resultados das medidas da velocidade de um carro tomadas a inter-valos regulares (iguais) do tempo t ∈ [a, b].

(a) Qual a velocidade media Vm ?

CAPITULO 5. INTEGRAL APROXIMADA 185

(b) Qual distancia percorrida pelo veıculo?

(c) Expresse este valores numa formula usando a expressao da integral.

7. Descubra, geometricamente, as solucoes da equacao:

x∫

0

3 − t =

x∫

6

t − 3 (5.55)

8. Transforme numa equacao algebrica a equacao:

x∫

0

3 − t =

x∫

6

t − 3 (5.56)

9. Verifique quais das integrais abaixo e positiva:

a)2π∫

0

x + sen(x) b)2∫

0

x − cos(x)

10. Faca tabelas de valores semelhantes a tabela 5.1 na pagina 180, para asintegrais das funcoes

f(x) = 1x; ; x ∈ [1, 10] (5.57)

g(x) = e−x2

; ; x ∈ [−3, 3] (5.58)

No ultimo exercıcio voce solicitado a fazer tabelas de valores para o calculodas integrais para as quais nao ha forma de calculo exato.

• A integral da funcao f(x) = 1x no intervalo [1, R] fornece os valores do

logaritmo natural.

• A integral da funcao g(x) = e−x2

no intervalo [−a, a] fornece os valoresda gaussiana.

Sao duas funcoes de grande importancia em aplicacoes e voce foi conduzido,neste capıtulo, a saber fazer as tabelas das integrais destas funcoes.

5.3 Regra do trapesio

Vamos fazer referencia a este metodo apenas para nao deixa-lo de fora, seu valore historico. Foi um metodo que teve importancia quando calculavamos apro-ximacoes manualmente. Ao mesmo tempo ele serve de exemplo de formulas quese escrevem facilmente com Matematica e que e difıcil traduzir num programade computador.

Fizemos um comentario, paginas acima, dizendo que a area de um trapesio(ou de um triangulo) e a media aritmetica das areas de dois retangulos:

Page 100: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 186

1. um cuja altura e a altura maior do trapesio;

2. outro cuja altura e a altura menor do trapesio;

Veja isto na figura (fig. 5.4) pagina 186,

Figura 5.4: area do trapesio e uma media aritmetica

Para demonstrar esta afirmacao, considere um trapesio com base B e alturasH1 < H2. Como e sabido, a area de um trapesio e B(H1+H2

2 )

B(H1+H2

2 ) = BH1+BH2

2 = (5.59)

BH1 e a area do retangulo de menor altura (5.60)

(5.61)

BH2 e a area do retangulo de maior altura (5.62)

CAPITULO 5. INTEGRAL APROXIMADA 187

e a figura (fig. 5.4) lhe mostra como, geometricamente, voce pode obter umtrapesio, a partir do retangulo menor, cortando um triangulo.

Em Matematica e facil escrever a soma de Riemann superior que fornece aarea por excesso associada a uma particao Π([a, b]):

Sn(f) =n−1∑

k=0

fk∆x (5.63)

em que fk representa o supremo de f no intervalo [xk, xk+1]. Mas nao haprogramas de computador que consigam calcular supremos facilmente. De formaanaloga a soma de Riemann inferior se escreve

Sn(f) =n−1∑

k=0

fk∆x (5.64)

em que fk

representa o ınfimo de f no intervalo [xk, xk+1]. A mesma observacaose pode fazer sobre ınfimos e programas de computador. A formula matematica

para calcular uma aproximacao, usando trapesios, deb∫

a

f sera a media aritmetica

de Sn(f), Sn(f) que e

Sn(f) + Sn(f)

2=

n−1∑

k=0

fk + fk

2∆x (5.65)

que nao e nada facil de produzir com um programa de computador. Esta formulafoi muito utilizada nos tempos que em que calculavamos aproximacoes de in-tegrais manualmente. Hoje perdeu o sentido porque uma soma de Riemanncalculada com um programa com valor muito pequeno para ∆x nos dara apro-ximacoes que dificilmente conseguiriamos com a regra do trapesio.

5.4 Integral de funcoes polinomiais

Nos cursos de Calculo mostramos que

b∫

a

f(x)dx =

b∫

a

xndx =xn+1

n + 1|ba =

bn+1

n + 1− an+1

n + 1= F (b) − F (a)

que e a expressao do Teorema Fundamental do Calculo para as funcoes polino-miais. Vou agora usar este teorema para o calculo da integral das aproximacoesquase-splines de dados.

Page 101: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 188

5.4.1 Apresentacao do metodo

No capıtulo 4 vimos que num levantamento de dados, por exemplo, com auxıliode sensores, podemos recuperar de forma muito precisa a distribuicao de um de-terminado fenomeno usando apenas as informacoes obtidas sobre este fenomenoem pequena quantidade de nos de uma malha.

Na primeira parte deste capıtulo fiz uso de malhas, que chamei de particoesde um intervalo, sobre cujos nos calculei os valores de uma funcao, portantotambem um levantamento de dados, concluindo na construcao de somas deRiemann como aproximacoes para a integral das funcoes.

Agora vou substituir a utilizacao dos sub-intervalos das particoes para nelessimular os valores de uma funcao usando um quase-spline e calcular a integral decada um desses pedacos de polinomio em cima de cada sub-intervalo da particao,substituindo estes valores na expressao das somas de Riemann. Estarei assimre-utilizando o conceito de soma de Riemann para obter uma nova forma deaproximacao da integral de uma funcao.

Veremos, na comparacao com casos particulares, em que sabemos calcular aintegral com precisao, que o resultado da aproximacao da integral usando estemetodo fornece uma grande aproximacao do valor da integral, validando, assimo metodo.

Finalmente vou mostrar que os bons resultados nao correspondem a conınci-dencias obtidas com casos bem comportados, mas que a integral dos quase-splines correspondem a uma forma excelente de aproximacao quando a funcaotiver alguma classe de regularidade (ser contınua, por exemplo).

A conclusao sendo, portanto, que, como os dados amostrais sao supostos se-rem o resultado de medicoes de fenomenos regulares, em geral mais do que ape-nas contınuos, diferenciaveis tambem, entao a a modelagem com quase-splinesdos mesmo nos permite uma quantificacao muito boa dos dados no calculo daquantidade total (integral), taxas de variacao (derivadas), valor medio (inte-gral).

5.4.2 Integral de quase-splines

Vou usar, neste secao, o calculo da integral de uma funcao polinomial, automa-tizada, com um programa de computador.

Os quase-splines com que trabalhamos sao funcoes polinomiais por pedacos,de grau menor ou igual a tres. Simplificando inicialmente a notacao, vou desig-nar por [a, b] um sub-intervalo tıpico de uma malha considerarada num intervaloI.

Entao o pedaco de polinomio, P , associado a este sub-intervalo tem porequacao

P (x) = a0 + a0(x − a) + a2(x − a)2 + a3(x − a)3 (5.66)

e sua integral no intervalo [a, b] sera

CAPITULO 5. INTEGRAL APROXIMADA 189

A =b∫

a

P (x)dx = (5.67)

A =b−a∫

0

P (x + a)d(x + a) (5.68)

A =3∑

k=0

b−a∫

0

akxkdx (5.69)

A =3∑

k=0

akxk+1

k+1|b−a0 (5.70)

A =3∑

k=0

ak(b−a)k+1

k+1(5.71)

em que

• na equacao (68) fiz a chamada mudanca de variavel para transformar ointervalo de integracao de [a, b] para [0, b− a];

• na equacao (69) estou trocando a ordem dos sımbolos de soma e integral(distributividade da integral relativamente a soma);

• na equacao (70) apliquei o Teorema Fundamental do Calculo a cada umdos monomios;

• e na equacao (71) fiz a substituicao final usando a expressao simples obtidaem consequencia da mudanca de variavel.

Agora, se substituirmos a notacao do intervalo [a, b] por um sub-intervalotıpico da malha, com as correspondentes expressoes para os pedacos de po-linomio, teremos

[a, b] := [xi, xi+1] (5.72)

A := Ai =3∑

k=0

ai,kxk+1

k+1 |xi+1−xi

0 (5.73)

b∫

a

f(x)dx ≈n−1∑

i=0

Ai (5.74)

b∫

a

f(x)dx ≈n−1∑

i=0

3∑

k=0

ai,k(xi+1−xi)

k+1

k+1 (5.75)

em que

• na equacao (72) substitui o intervalo [a, b] por um intervalo generico [xi, xi+1]da particao (malha);

• na equacao (73) escrevi a expressao da integral pedacao de polinomio Pi

no subintervalo [xi, xi+1];

Page 102: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 190

• na equacao (74) escrevi a aproximacao da integral de f como a soma dasintegrais de cada um dos pedacos de polinomio Pi ;

• e, finalmente, na equacao (75) escrevi a expressao da soma final que daaproximacao da integral de f no intervalo [a, b].

Vemos assim que a integral de um quase-spline depende apenas da expressaoda matriz dos coeficientes

ai,k (5.76)

e das medidas∆i,k = xi+1 − xi (5.77)

de cada um dos sub-intervalos da malha considerada. A informacao sobre ofenomenos esta guardada nos coeficientes da matriz dos splines e em algumaforma tambem na medida dos intervalos. Quando as malhas forem informesesta medidas serao todas iguais a ∆ e ja vimos nas discussoes anteriores queesta simplificacao em geral nao traz nenhuma distorcao significativa na analisedos fenomenos. Vou sintetizar estes resultados em alguns teoremas para tornarfacil a referencia.

Teorema 11 Integral de quase-splines - particao nao uniformeConsidere uma aproximacao quase-spline de

f : [a, b] −→ R (5.78)

determinada pela matriz

(ai,k) i = 0 . . . n − 1 ; k = 0 . . . 3 (5.79)

e pela matriz

(∆i) i = 0 . . . n − 1 (5.80)

das medidas dos sub-intervalos de [a, b].

b∫

a

f(x)dx ≈n−1∑

i=0

3∑

k=0

ai,k(∆i)

k+1

k + 1(5.81)

se a particao for uniforme temos um resultado um pouco simplificado

Teorema 12 Integral de quase-splines - particao uniformeConsidere uma aproximacao quase-spline de

f : [a, b] −→ R (5.82)

determinada pela matriz

CAPITULO 5. INTEGRAL APROXIMADA 191

(ai,k) i = 0 . . . n − 1 ; k = 0 . . . 3 (5.83)

b∫

a

f(x)dx ≈n−1∑

i=0

3∑

k=0

ai,k(∆)k+1

k + 1(5.84)

em que ∆ e a medida comum a todos os sub-intervalos da malha consideradaem [a, b].

E interessante registrar tambem com uma formula o valor medio de f evamos faze-lo nos dois casos.

Teorema 13 Valor medio aproximado de f - particao nao uniformeConsidere uma aproximacao quase-spline de

f : [a, b] −→ R (5.85)

determinada pela matriz

(ai,k) i = 0 . . . n − 1 ; k = 0 . . . 3 (5.86)

e pela matriz

(∆i) i = 0 . . . n − 1 (5.87)

das medidas dos sub-intervalos de [a, b]. O valor medio aproximado de f e

1

b − a

n−1∑

i=0

3∑

k=0

ai,k(∆i)

k+1

k + 1(5.88)

e quando a particao for uniforme temos a seguinte aproximacao do valor medio

Teorema 14 Valor medio aproximado de f - particao uniformeConsidere uma aproximacao quase-spline de

f : [a, b] −→ R (5.89)

determinada pela matriz

(ai,k) i = 0 . . . n − 1 ; k = 0 . . . 3 (5.90)

O valor medio aproximado de f e

1

b − a

n−1∑

i=0

3∑

k=0

ai,k(∆)k+1

k + 1(5.91)

em que ∆ e a medida comum a todos os sub-intervalos da malha consideradaem [a, b].

Page 103: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 192

Exercıcios 24 Integral de funcoes polinomiais

1. Considere a seguinte tabela de dados

xk f(xk) f ′(xk)−4 3 −1−1 0 −22 −7 06 5 6

Calcule a area da funcao polinomial por pedacos, f , de grau 3 que eladetermina.

Solucao 11 Os coeficientes dos polinomios7 sao

P1 [−4.00,−1.00] a0, a1, a2, a3 3.0,−1.0, 0.33,−0.11P2 [−1.00, 2.00] a0, a1, a2, a3 0.0,−2.0− 1.0, 0.296296P3 [2.00, 6.00] a0, a1, a2, a3 −7.0, 0.0, 0.75, 0.0

As integrais destes polinomios sao (nos respectivos intervalos)

−1∫

−4

P1 = 5.24999925 (5.92)

2∫

−1

P2 = −12.000006 (5.93)

6∫

2

P3 = −12 (5.94)

6∫

−4

f = −18.75 (5.95)

Veja o grafico da funcao polinomial por pedacos, na figura (fig. 5.5) pagina193.

2. Calcule a quantidade do fenomeno descrito pelos dados

xk f(xk) f ′(xk)−4 3 −1−1 0 −22 −7 06 5 6

usando a regra do trapesio e compare com o resultado obtido usando apro-ximacao polinomial do terceiro grau.

7os coeficientes foram calculados com o programa ex0732.c

CAPITULO 5. INTEGRAL APROXIMADA 193

-8

-6

-4

-2

0

2

4

6

-4 -3 -2 -1 0 1 2 3 4 5 6

"dados"

Figura 5.5: Grafico do polinomio por pedacos

3. Um sensor obteve as seguintes medidas a intervalos iguais de tempo

3 3.2 3.5 4 4.7 5 5.1 5.2 5.21 5.22 5.223 5.2231 5.2232

Encontre um polinomio por pedacos que descreva este fenomeno e calculea quantidade total do fenomeno (integral) e o valor medio do mesmo.

Solucao 12 Como temos medidas igualmente espacadas, (uma particaouniforme) vamos selecionar um subconjunto destas medidas guardandodois valores seguidos e desprezando tres valores seguidos. Com os valoresseguidos calcularemos a taxa de varicao. De acordo com esta decisao, atabela de valores que temos e

Page 104: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 5. INTEGRAL APROXIMADA 194

xk f(xk) f ′(xk)0 3 3.2−3

1

5 5 5.1−51

10 5.2231 5.2232−5.2231

Como selecionamos dois pontos seguidos e desprezamos os tres seguintes, erazoavel considerar que a distancia entre os nos seja 5 e assim escolhemos0, 5, 10 como o conjunto de nos. Usando o programa ex0732.c paracalcular os coeficientes dos polinomios, temos

P1(x) = 3.0 + 0.2x + 0.14x2 − 0.02x3 (5.96)

P2(x) = 5.0 + 0.1x− 0.013248x2 + 0.000434x3 (5.97)

As integrais, em cada subintervalo, sao

5∫

0

P1 = 20.208334 (5.98)

10∫

5

P2 = 25.765875 (5.99)

e a quantidade do fenomeno e 45.974209. O valor medio e 4.59742

A representacao grafica da modelagem deste fenomeno pode ser vista nafigura (fig. 5.6) pagina 194,

0

1

2

3

4

5

6

0 1 2 3 4 5 6 7 8 9 10

"dados"

Figura 5.6: Modelagem com polinomios por pedacos

CAPITULO 5. INTEGRAL APROXIMADA 195

Voce logo ira perceber que o calculo aproximado da integral usando splines euma generalizacao da soma de Riemann o que justifica que tenhamos comecadoo capıtulo usando um metodo atrazado e ineficiente.

5.5 Integral de quasi-splines

Um n-spline e uma funcao polinomial por pedacos, de grau n que e de classe8

Cn−1.Em outras palavras, se

[a, b]f−→ R (5.100)

for um n-spline, entao

• existe uma particao Π([a, b]), uma famılia de subintervalos, (Ik)n−1k=0 e

• uma famılia de polinomios (Pk)n−1k=0 de grau menor ou igual a n de tal

modo quef |[xk,xk+1] = Pk

f coıncide com o polinomio Pk sobre o intervalo [xk, [xk+1];

• e f e de classe n − 1.

Consequentemente a integral de um spline e uma soma de integrais de po-linomios sobre o ındice que descreve a famılia de sub-intervalos associados aospline:

b∫

a

f =n−1∑

k=0

xk+1∫

xk

Pk (5.101)

Ha varias formas de apresentarmos splines, e um pouco disto foi visto nocapıtulo 4 quando tambem chamamos sua atencao de que aqui estamos usandouma versao fraca de splines que chamamos de quasi-splines porque apenas exigi-mos a continuidade da derivada das funcoes polinomiais por pedacos. Os nossosquasi-splines sao de classe C1.

Exercıcios 25 Integral aproximada

1. Considere

2.

3.

8que tem n − 1 derivadas contınuas

Page 105: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Capıtulo 6

Equacoes diferenciais

ordinarias

Vou apresentar alguns metodos que permitem, sobretudo, uma visualizacao da solucao aproximadas deequacoes diferenciais de primeira ordem da forma

dy

dx= f(x, y)

considerada uma condicao inicial (x0, y0) e umaregiao retangular da qual esta condicao inicial e umponto interior.

Resolver exatamente uma equacao diferencial e uma tarefa difıcil mesmo noscasos em que sabemos tudo1, equacoes diferenciais lineares.

Durante a segunda metade do seculo 20 foram desenvolvidos complemen-tos computacionais para metodos desenvolvidos ja no seculo 19. E desta fusaodos metodos antigos, com os avancos computacionais que trataremos aqui paramostrar como podemos resolver aproximadamente uma equacao diferencial or-dinaria.

As equacoes diferenciais de ordem superior a um podem ser reduzidas, atravesde sistema de equacoes as equacoes de primeira ordem, e na parte final docapıtulo mostrarei alguns exemplos desta tecnica. Entretanto o leitor nao deveperder de vista uma verdade crucial, cada equacao diferencial e um novo pro-blema, nao temos uma teoria universal para resolver estas equacoes e nem talvezisto venha a existir no futuro. Por outro lado os metodos computacionais vemse revelando cada vez mais eficazes em nos ajudar na construcao das solucoes

1teoricamente sabemos tudo, mas sabemos que nem sempre conseguiremos encontrar assolucoes....

196

CAPITULO 6. E.D.O. 197

aproximadas mas continua sendo verdadeiro que os programas nao podem rodarsozinhos, eles tem que ser monitorados, e o homem que resolve as equacoes comauxılio da maquina.

Uma equacao diferencial ordinaria e uma expressao da forma

F (x, y, y′, . . . , y(n)) = 0 (6.1)

em que as “potencias” da variavel y representam as sucessivas de y em relacao aunica variavel livre x sendo porisso que estas equacoes se denominam ordinarias,o adjetivo indicando o caso univariado.

A variavel nesta equacao diferencial de fato e y, que e a incognita mas ohabito de chamar os parametros livres de variaveis persiste sendo um defeito quenao nos incomoda e naturalmente vou continuar usando esta terminologia. Se aincognita, numa equacao diferencial, tiver varias variaveis, a equacao se chamaequacao diferencial parcial e na expressao da equacao intervem as derivadasparciais da incognita relativamente as variaveis.

Neste livro vou tratar apenas de equacoes diferenciais ordinarias. A maiorordem de derivacao e a ordem da equacao.

Como ja observei, as equacoes de ordem superior a um podem ser transforma-das num sistema de equacoes de primeira ordem por meios bastante engenhosose que dependem de cada equacao, esta e a razao pela qual se estuda de formaintensiva as equacoes de primeira ordem. Outra razao importante e a de que,se interpretada de forma aproximada, derivadas de ordem superior a 1 indu-zem nos calculo erros signficativos que e difıcil de controlar. Isto se pode verfacilmente numa listagem de quociente de diferencas de ordem 2, numa malhasuficientemente fina, em volta de pontos em que a funcao tenha uma oscilacaomuito intensa, como apresentei no primeiro capıtulo.

Entao vou me restringir nesta exposicao as equacoes diferenciais do tipo daequacao (1) de ordem 1

F (x, y, y′) = 0 (6.2)

Esta equacao, desde que satisfeitas as condicoes do Teorema da FuncaoImplıcita pode ser escrita na forma

y′ = f(x, y) = 0 (6.3)

exceto possivelmente em cima de algumas curvas onde a derivada parcial de Frelativamente a terceira variavel se anulasse portanto esta nova expressao e emgeral facil de ser deduzida a partir da equacao (2) o que justifica que a grandemaioria dos textos parte diretamente de uma equacao na forma (3) deixando asexpressoes das equacoes (1), (2) no preambulo como uma forma adequada deiniciar falando de equacoes diferenciais.

Entao sera a equacao (3) que eu vou tomar como modelo para uma equacaodiferencial ordinaria de primeira ordem neste capıtulo sendo esta uma expressaobastante geral como acabei de expor.

O meu objetivo aqui e apresentar metodos para resolver de forma aproxi-mada as equacoes diferenciais e sobretudo apresentar este metodos no contextoatual em que a computacao nos permite trabalhar.

Page 106: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 6. E.D.O. 198

Resolver uma equacao diferencial significa para nos encontrar uma solucaoaproximada para um problema de valor inicial

y′ = f(x, y) ; y′(x0) = f(x0, y0) (6.4)

o ponto (x0, y0) e comumente denominado condicao inicial.Por exemplo, certos autores ainda fazem referencia ao metodo passo a passo

em que podemos obter um sucessao de valores yk quando hoje podemos en-contrar uma poligonal com um numero grande de lados sendo estes lados ar-bitrariamente pequenos representando uma aproximacao de alta precisao paraum problema de valor inicial. A mencao anterior e apenas aos vertices destapoligonal.

Aqui vamos melhorar, como apoio computacional, os metodos tradicionaisde uma forma que logo vamos descrever.

Com frequencia a variavel livre usada e t quando se quer fazer referenciaa problemas dinamicos. Como esta notacao e puramente psicologica, eu voucontinuar usando x como parametro, mas vou me permitir a usar a linguagemde equacoes dinamicas quando me parecer interessante.

Queremos obter uma poligonal a partir da condicao inicial (x0, y0) parafrente, ou para tras, quando x ∈ I, um intervalo aberto I contendo x0 como oindica a figura (fig. 6.1) pagina 198, em que uma curva, a solucao “exata” apa-

Figura 6.1: Uma poligonal-solucao aproximada

rece passando por um ponto, a condicao inicial, onde tambem se origina umapoligonal, a solucao aproximada que nos interessa. A figura tambem ilustra umitem importante neste problema que o domınio Ω de validade da solucao. A de-terminacao desta domınio e consequencia dos coeficientes variaveis da equacaoou da propria funcao f(x, y). Por exemplo, a equacao

y′ = −x

y(6.5)

CAPITULO 6. E.D.O. 199

que logo iremos usar como um exemplo, estabelece como domınio

Ω = R2 − (x, y) ∈ R2 ; y = 0 (6.6)

o que justifica plenamente um problema de instabilidade do algorıtmo de quevamos tratar mais a frente.

Entretanto nos sabemos que esta restricao nao precisa existir, em particularesta equacao e uma das equacoes mais elementares para ser resolvida conduzindopelo metodo das “variaveis” separaveis a equacao de uma famılia de cırculos decentro na origem com validade em todo R2.

Infelizmente nem sempre podemos fazer uma discussao simples assim numproblema particular.

O plano do trabalho que vamos desenvolver aqui e

• O metodo de Euler que produz a poligonal de Euler; Um algoritmo com-putacional produz esta poligonal com uma precisao bastante grande emvez de apenas construir os vertices;

• O metodo de Taylor que e uma aplicacao dos polinomios de Taylor2 emque uma funcao polinomial vai representar a solucao aproximada. Aquivamos usar o metodo de Taylor para fazer uma melhoria no metodo deEuler produzindo uma funcao polinomial por pedacos, cada pedacao cons-truido com o metodo de Taylor. Este metodo e comparavel ao metodo deRunge-Kutta em muito exemplos.

6.1 O metodo de Euler

O metodo de Euler pode ser explicado de forma bem elementar. A figura (fig.6.2) pagina 200, ilustra o metodo com uma construcao feita a mao. O pontoP na figura representa uma condicao inicial onde desenhei um segmento dereta tangente, uma aproximacao linear da curva num vizinhanca do ponto P . Ooutro ponto do segmento, P1 e uma nova condicao inicial em que novo segmentode reta tangente sera tracado e assim sucessivamente temos uma poligonal querepresenta uma aproximacao da curva-solucao da equacao diferencial.

A curva apresentada na (fig. 6.2) e um cırculo que se for centrada na origeme uma solucao da equacao diferencial

y′ = −x

y= f(x, y) (6.7)

e eu escolhi este exemplo porque ele oferece um problema na implementacao doalgoritmo: os pontos com tangentes verticais, em cima do eixo OX, tornam oprograma instavel. O mesmo aconteceria com a equacao

y′ =x

y(6.8)

2alguns autores se referem indevidamente a serie de Taylor

Page 107: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 6. E.D.O. 200

método de Euler

P

P

P

P

1

2

3

Figura 6.2: O metodo de Euler - uma poligonal

cujas curvas-solucao sao hiperboles. Novamente o algoritmo perde estabilidadequando passa no eixo OX. E possıvel obter uma solucao que corte este eixo,mas em geral o programa se perde desenhando retas obliquas porque perto doeixo, logo acima ou logo abaixo o coeficiente angular e muito alto e e difıcilescrever um algoritmo que supere este problema.

O algoritmo, como mostra a figura, consiste em substituir a solucao por umapoligonal que parte da condicao inicial dada, (x0, y0), e que podemos descrevercom a seguinte sucessao de equacoes num processo indutivo. No conjunto deequacoes abaixo, cada duas equacoes representa um passo no processo

(x0, y0) ⇒ f0(x) = y0 + f(x0, y0)(x − x0) (6.9)

x1 = x0 + ∆x ; y1 = f0(x1) (6.10)

... (6.11)

CAPITULO 6. E.D.O. 201

(xk, yk) ⇒ fk(x) = yk + f(xk, yk)(x − xk) (6.12)

xk+1 = xk + ∆x ; yk+1 = fk(xk) (6.13)

... (6.14)

(xn, yn) ⇒ fn(x) = yn + f(xn, yn)(x − xn) (6.15)

xn+1 = xn + ∆x ; yn+1 = fn(xn) (6.16)

eu escrevi a equacao da reta fk com a qual calculei yk+1 definindo antes xk+1 =xk + ∆x .

• o primeiro lado da poligonal se originando na condicao inicial para a qualse calcula a equacao da reta tangente ;

• o segundo extremo deste segmento de reta tangente e uma nova condicaoinicial para determinar um novo lado da poligonal

e assim sucessivamente.O programa euler.c implementa este algoritmo mas nao consegue resolver

a equacao do cırculo se a condicao inicial estiver em cima do eixo OX. A figura(fig. 6.3) pagina 202,

O trecho essencial do programa euler.c, escrito em C que implementa estealgoritmo e

data = abrearquivo("dados","e"); // (2)

enquanto( (x > InicioX)*(x < FimX)*(y > InicioY)*(y < FimY)*(k < n) )

// (cos(theta), sin(theta)) = (a,b)

real m = atan(f(x,y));

real a=cos(m),b = sin(m); // b=sqrt(1 - a*a); // cosenos diretores

imprime_arq(data,"%f %f \n", x, y); // primeiro ponto da reta

x = x + a*salto; y = y + b*salto; // novo ponto da reta

imprime_arq(data,"%f %f \n", x, y);

k++; // contando os segmentos de reta da poligonal

imprime("...");

fecha_arquivo(data); // fecha o arquivo "dados"

que coloca no arquivo ”dados”apenas os vertices da poligonal. Depois possousar Gnuplot, um programa de domınio publico, que completa os segmentos dereta entre os pontos desenhando a poligonal. Eu chamo o Gnuplot diretamentede dentro do programa de modo que o programa ja apresenta o grafico dasolucao aproximada deixando os dados registrados em arquivos o permite repetiro grafico posteriormente, sem rodar o programa.

Alem de poder ver o grafico tenho assim os vertices da poligonal de Eulerdisponıveis para aplicacoes numericas. O leitor interessado pode me pedir copiado programa por e-mail.

Page 108: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 6. E.D.O. 202

-4

-3

-2

-1

0

1

2

3

4

-4 -3 -2 -1 0 1 2 3 4 5

"dados""XOY"

Figura 6.3: solucao aproximada de y′ = −xy

Exercıcios 26 1.

2.

3.

CAPITULO 6. E.D.O. 203

6.2 Polinomio de Taylor: solucao aproximada

O metodo de Taylor pode ser visto como genera-lizacao do metodo de Euler e eu vou apresenta-losob esta forma nesta exposicao. Fazendo assim, oalgoritmo computacional ja produzido par o metodode Euler pode ser facilmente alterado para produziro metodo de Taylor.

Quero resolver o problema de valor inicial

y′ = f(x, y) ; y′(x0) = f(x0, y0) (6.17)

num domınio Ω ⊂ R2 em que (x0, y0) ∈ Ω.A suposicao de que Ω seja um aberto nos deixa livre de preocupacoes com

a fronteira onde eventualmente as derivadas parciais de f deixassem de existir.Na construcao vamos ver quais sao as hipoteses necessarias para que o problemapossa ser resolvido.

A polinomio de Taylor de grau n produz uma funcao polinomial tangente aografico de uma funcao tangenciando ate a ordem de derivacao correspondenteao grau do polinomio.

6.2.1 Polinomio de Taylor do segundo grau

A reta tangente e a expressao do polinomio de Taylor de primeiro grau.Podemos entao tomar a equacao

(x0, y0) ⇒ f0(x) = y0 + f(x0, y0)(x − x0) (6.18)

em que obtivemos uma funcao do primeiro grau cujo grafico e tangente ao graficoda curva-solucao passando no ponto (x0, y0) e queremos expandir mais um termopara obter uma expressao (polinomio) do segundo grau.

Para isto vamos formalmente expressar y′ = z, que o leitor vera novamentequando numa equacao de ordem dois fizermos sua transformacao num sistemade equacoes de primeira ordem, ao final do capıtulo, para escrever:

y′ = z = f(x, y) (6.19)

y′(x0) = A0 (6.20)

dz = ∂f(x,y)∂x dx + ∂f(x,y)

∂y dy (6.21)

y′′ = dzdx

= ∂f(x,y)∂x

+ ∂f(x,y)∂y

dydx

(6.22)

y′′(x0) = ∂f(x,y)∂x |(x0,y0) + ∂f(x,y)

∂y |(x0,y0)y′(x0) (6.23)

y′′(x0) = A1 (6.24)

f0(x) = y0 + A0(x − x0) + A1

2(x − x0)

2 (6.25)

Page 109: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

CAPITULO 6. E.D.O. 204

f0(x) = y0 + A0,0(x − x0) +A0,1

2 (x − x0)2 (6.26)

e a expressao do polinomio do segundo grau que substitui, na formula de Euler,a equacao da reta tangente.

Posso agora retomar as equacoes que de forma iterativa me deram a poligonalde Euler, para calcular construir uma sucessao de polinomios do segundo grau,uma polinomial de segundo grau que aproxima a solucao do problema de valorinicial

y′ = f(x, y) ; y′(x0) = f(x0, y0) (6.27)

(x0, y0) ⇒ f0(x) = y0 + A0,0(x − x0) +A0,1

2 (x − x0)2 (6.28)

x1 = x0 + ∆x ; y1 = f0(x1) (6.29)

... (6.30)

(xk, yk) ⇒ fk(x) = yk + Ak,0(x − x0) +Ak,1

2 (x − x0)2 (6.31)

xk+1 = xk + ∆x ; yk+1 = fk(xk) (6.32)

... (6.33)

(xn, yn) ⇒ fn(x) = yn + An,0(x − x0) +An,1

2 (x − x0)2 (6.34)

xn+1 = xn + ∆x ; yn+1 = fn(xn) (6.35)

O programa taylor.c e uma simples consequencia do programa euler.c

apenas acrescentanodo as funcoes necessarias para calcular Ak,0, Ak,1, e natu-ralmente usando a nova expressao de fk no calculo dos pontos para obter ografico.

6.2.2 Polinomio de Taylor de grau n

Poderiamos ser tentados em prosseguir estes calculos em busca de um polinomiode Taylor de grau mais elevado. Como e facil de observar a partir do calculofeito acima, as contas ficariam bem mais complicadas a cada nova ordem (graudo polinomio).

A experiencia que temos com aproximacao nos indica que outro caminhopode ser tomado para obter melhor aproximacao, por exemplo construir ummetodo hıbrido, de Taylor, usando a mesma metologia acima.

Isto recairia na construcao de splines ou quase-splines.

Referencias Bibliograficas

[1] D’Azevedo, E.F. Romine, C. H. e Walker, D. W. Shared-Memory Emulationis key to Billion-Atom Molecular Dynamics Simulation

- SIAM-News Vol 28 (5) - 1995

[2] Beazley, D. M. e Lomdahl, P. S. Large-Scale Molecular Dynamics on MPPs:Part I

- SIAM-News Vol 28 (2) - 1995

[3] Borwein, Jon - [email protected] 28/07/1997

www.cecm.sfu.ca/personal/jborwein/Kanada 50b.htmljborwein@@cecm.sfu.ca

[4] Claudio, D. M. e Marins, J.M.Calculo Numerico Computacional - 1994 editora atlas - 2a Edicao

[5] Sperandio, D. Mendes, J. T. e Silva, L.H.M Calculo Numerico Prentice HallBrasil

[6] Shapiro, H. S Smothing and approximation of functions

Van Nostrand Reinhold Mathematical Studies - 24

[7] Franco, N.M.B. Calculo Numerico Prentice Hall Brasil

[8] Daubechies, Ingrid, Ten lectures on wavelets

- SIAM - Philadelphia, PA - 1992

[9] Dieudone Calcul Infinitesimal

- 1968 - Collection Methodes - Herman - Paris.

[10] Eaton, John W. Octave - A high-level interactive language for numericalcomputations

1996 ftp.che.utexas.edu/pub/octave/octave-M.N.tar.gz

205

Page 110: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

REFERENCIAS BIBLIOGRAFICAS 206

[11] Faculdade de Engenharia Mecanica - Unicamp

http://www.fem.unicamp.br/ em313/paginas/person/lavoisie.htm

[12] Saunders, M e Birkhoff, G - Algebra

MacGraw-Hill - 1968

[13] gnuplot um programa para fazer grafico e alguns calculos

http://www.gnuplot.info

[14] A enciclopedia livre na Internet

http://www.widipedia.org

[15] Linz, P. A critique of numerical Analysis.

- Bull. of AMS vol 19 no. 2 1989 (407,416)

[16] Meyer, Y Wavelets Algorithms and Applications

- SIAM - 1994

[17] Monagan e NeuenschwanderGRADIENT. Algortithmic Differentiation in Maple

Pre-Print - Symbolic Computation GroupInstitut fur Wissenschftliches Rechnen- ETH - Zurich - Switzerland

[18] Praciano-Pereira, T. Calculo numerico Computacional - Introducao a lin-guagem Pascal- Editora da Universidade Estadual Vale do Acarau - 2000

http://www.4shared.com/file/14206895/ae074651/pascal.html

[19] Calculo numerico Computacional - Edicao EletronicaLaboratorio de Matematica Computacional - 2007

http://www.4shared.com/dir/1751707/4c187abc/sharing.html

[20] Praciano-Pereira, T Programas para Calculo Numerico - programas.tgz

http://www.4shared.com/dir/2041165/e14cc331/programas.html

[21] Praciano-Pereira, T Splines por convolucao

http://www.4shared.com/file/17757661/3515d0b6/convspl02.html

[22] Rossum, Guido van A tutorial on Python

- [email protected] - ftp.python.org.

[23] Scilab Group - SciLab - programa para simulacoes numericas

INRIA - Unite de recherche de Rocquencourt - Projet Meta2 - [email protected] 1996

htt://www.scilab.org

REFERENCIAS BIBLIOGRAFICAS 207

[24] SIAM NEWS - The news journal of the Society of Industrial and AppliedMathematics

- Philadelpphia, PA - USA

[25] Simmons, G.F.Differential Equations with App. and Hist. Notes.

McGraw-Hill - Book Company - 1978

[26] An elementary proof of the Arithmetic-Geometric Inequality - Revista Vetor- Univ. Federal do Rio - 2004 - Grande - Rio Grande - RS

[27] Jose Stalio Rodrigues do Santos e Praciano-Pereira, T.

Introducao a Matematica Universitaria

Edicao Eletronica do Laboratorio de Matematica Computacional - Univ. Es-tadual Vale do Acarau - Sobral - Ceara - 2005

http://www.4shared.com/file/12779601/ab687cc4/fundam2p.html

[28] Spline

A enciclopedia livre na Internet

http://pt.wikipedia.org/wiki/Spline

[29] A enciclopedia livre na Internet - Wikipedia

http://encyclopedia.thefreedictionary.com/

Page 111: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

Indice Remissivo

1-spline, 1332-spline, 133

abertosoftware, 126

algebricacomputacao, vi

algorıtmicaderivada, 13, 112–115

amostragem, 10, 102antigo

moderno, 82aproximacao, 4Aquiles

paradoxo, 30aritmetica

geometricadesigualdade, 83

assintotico, comportamento, 177

babilonios, 83algoritmo, 88precisao, 82

barra invertida, 148binaria

busca, 73busca binaria, 28

calc, viC interpretado, 52

caracterısticafuncao, 133

cırculodesenhando, 4

compilar e rodar, 43comportamento assintotico, 177computacao

algebrica, vicientıfica, vinumerica, vi

constantesespecıficas, 36

construcoesarea de, 36

contınuo, 127continuidade, 129contracao, 91contradicao, 127convexa

comb. linear, 121convolucao

correcao, 143def. geometrica, 133domınio, 144produto, 133produto de, 133

correcaoinformacao, 137pela media, 8

cortes de Dedekind, 69cubicos

splines, 132, 148cubicos, splines, 132

Dedekindcortes de, 69

derivada, 1aproximada, 7importancia, 7

derivada algorıtmica, 13, 112–115derivada zero, 61desigualdade

aritmetico-geometrica, 83

208

INDICE REMISSIVO 209

diferencaquociente, 10

diferenciaveisfuncoes, 128

diferenciabilidade, 128

equipetrabalho, 127

erraformula, 18

erro, 19, 127, 138correcao, 138Valor Medio, 138

especıficasconstantes, 36

etica, 126Euler, 112

metodo de, 194poligonal, 194

figuraarea, 80, 81area aproximada, 163rea, 792-spline, 157aprox. polin. classica, 103aproximacao, 125

Lagrange,splines, 158, 159convolucao, 146

produto, 134produto de, 135

convolucaoregularizacao, 159

dados amostrais, 18derivada

interpretacao, 9derivada zero, 61grafico de f , 17interpolacao, 108

linear, 7nao linear, 8

intersecaocurvas, 77

Lagrange, polinomio, 114maximo modulo, 104media viciada, 140

metodo da secante, 54metodo de Euler, 195, 197malha, 32, 35

figura plana, 35multiplicidade

raızes, 40nucleos, 144particao, 32

figura plana, 35polin. por ped., 188, 189raz

recursividade, 91, 92raız

reta tangente, 63raız da tangente, 64Raız duma funcao, 29raız quadrada, 87raızes

secantes, 48Reta tangente, 20secantes

raızes, 48sensor

mais antigo, 5melhor geracao, 6

solucaoedo, 193

soma de Riemann, 164tangencia

parabolico, 60tangente

cırculo, 2taxa de variacao, 2trapesio, 181um-spline, 105Valor medio, 130valor medio, 139

fixoponto, 66, 73ponto,teorema, 90

fixo pontoteoremas, 90

florestasarea de, 36

gaussiana, 143

Page 112: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

INDICE REMISSIVO 210

integral da, 143GNU/Linux, viGnuplot, 148gnuplot, vi, 12, 89, 102

comandos, 16GPL, vii, xiigrafico

Riemann,soma, 176soma de Riemann, 176

hipoteticafuncao, 126

implıcitateorema da funcao, 22

impulsounitario, 134

infinito, 127loop, 65

informacaocorrecao, 137

informacoesexcesso, 120

integravela Riemann, 170nao, 170

integral, 183aprox. por falta, 173aproximacao, 174–176, 178calculo numerico, 178calculo, 161Expressao formal, 169python, 178soma de Riemann, 167–169valor medio, 136, 138, 186

interpolacaocurva, 6Lagrange, 112linear, 104nao linear, 7, 105, 109poligonal, 121polinomial classica, 111

interpolacaolinear, 7

intervaloparticao, 32

iterada de T, 65

Lagrangeinterpolacao, 112, 121metodo, 112tutorial, 112

LandauO grande de, 26o pequeno de, 3o pequeno de , 26

Linux, vi, xii, 127loop infinito, 65

malha, 31, 124, 127, 164laco, 36multidimensional, 34, 35

problema, 37uso, 35, 36

nos, 120norma, 31

maximomodulo, 104teorema, 103

Maxima, xiimaxima, vimedia, 8

dados, recuperacao, 138restauracoes, 138telecomunicacoes, 138

mediovalor, 183

metododeterminar raızes

da secante, 62da tangente, 62

microrganismosquantidade de, 35

modelagem, 101modelo, 126, 127

tipos de, 126modelos

contınuos, 127discretos, 127

modernoantigo, 82

modulo maximo, 104

INDICE REMISSIVO 211

teorema, 103monico

polinomio, 109movimento

equacao, 19multidimensional

malha, 34MuPad, xii

n-splines, 133, 148no

de uma malha, 112nos, 164

malha, 120nucleo, 134, 136

n-spline, 148norma da malha, 31

Octave, xiiorbita

foguete, 4oscilacao, 104

fenomenos com, 120

paradoxo, 127de Aquiles, 30

particao, 31, 120, 127, 164norma, 31uniforme, 120

particaonao uniforme, 120

pedacoslinear, 121, 122polinomios, 124

pen-drive-splines, 140pequeno

relativamente, 48peso, 121pesos, 136pique

fenomeno com, 120poligonal, 121polinomio

de Lagrange, 121polinomial, 130

aprox. classica, 102

aproximacao, 101, 102de grau tres, 124do terceiro grau, 123interpolacao, 111por pedacos, 102splines, 102

poluicaoavaliacao de, 36

ponderadamedia, 136

ponto fixo, 66, 73, 85, 88teorema, 90

precisaopontos, 120pontos de, 120

produto de convolucao, 133programa, 176, 178

fim de linha, 148raizes01.c, 43

programasintegral.py, 178python, 178

pulso unitario, 136Python, 169

quantidadefenomeno, 122

quasi-splines, 132, 190integral, 185

raz quadrada, 83raız

metodosecante, 28tangentes, 28

secante, 48–50, 55, 56tangente, 47tipo secante, 47tipo tangente, 47

raızesde funcoes, 28separacao das, 39

raiztipo secante, 61, 62tipo tangente, 61, 62

real

Page 113: CA´LCULO NUME´RICO COMPUTACIONAL. · 2009. 9. 28. · computacional ´e ana´lise num´erica que ´e onde se encontra a nossa disci-plina, o ca´lculo num´erico. O nosso trabalho

INDICE REMISSIVO 212

numero, 170realidade

simulacao, 126recursiva

sucessao, 66recursivas

sucessoes, 88sucesswoes, 88

recursividade, 28, 53, 66, 73raız, 91, 92

Reduce, xiiRiemann

soma, 166, 173, 174Riemann, soma, 162, 163riemann.py, 173rodar e compilar, 43Runge-Kutta, 194

salto quantico, 128Scilab, xiiscilab, visecante

metodo, 73secantes

e tangentes, 4seguranca

simulacao, 126separacao

das raızes, 39sequencias

recursivas, 88serie

termo geral, 98Simpson

integral, 160simulacao, 126sinal, 134soma de Riemann, 160, 162, 163, 166splines, 101, 102, 130, 133,190

aplicacoes, 134pen-drive, 140

splines cubicos, 132sucessao, 128sucessoes

recursivas, 88suporte

notacao, 144

tangentemetodo, 73parabola, 18, 19

tangentese secantes, 4

taxa de variacao, 183Taylor

formula, 19, 23formula multivariada, 21polinomio, 194

teoremamodulo maximo, 103

tipos de raızes, 47translacao, 134trapesio

regra do, 160tutorial, 112

Lagrange, polinomio, 112

uniformeparticao, 120, 170

unitariopulso, 136

unitario, impulso, 134

valor medio, 136, 138, 183integral, 186

valor medio integral, 138Vandermonde, 111, 112variacao

taxa, 9taxa de, 1, 183

variedade, 22, 27varredura, 30, 127viciada

media, 137

Waring, 112