Este - Cálculo Numérico Computacional

Transcrição

Este - Cálculo Numérico Computacional
CÁLCULO NUMÉRICO
COMPUTACIONAL.
Tarcisio Praciano-Pereira1
Universidade Estadual Vale do Acaraú
Sobral, 26 de janeiro de 2008
1
[email protected]
Edições Lab. de Matemática Computacional
Universidade Estadual Vale do Acaraú
Sobral - Ce
copyleft by Tarcisio Praciano Pereira
Praciano-Pereira, Tarcisio
P496c
Cálculo Numérico Computacional.
Sobral: UeVA, Sobral, 26 de janeiro de
2008
133.p
Bibliografia
ISBN:85-87906-05-4
1 - Linguagem - Computação C/C++
2 - Cálculo Numérico.
I. Tı́tulo
CDD
515.1
Sumário
1 A derivada aproximada
1.1 derivada . . . . . . . . . . .
1.2 Quocientes de diferenças
de ordem superior . . . . .
1.3 Polinômios de Taylor . . . .
1.4 Derivadas parciais . . . . .
1.5 Solução de alguns exercicios
1.6 Vocabulário . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Raı́zes aproximadas
2.1 Raı́zes por varredura . . . . . . . . . . . . . .
2.1.1 Método computacional básico . . . . .
2.1.2 Busca de raı́zes por varredura . . . . .
2.2 A troca de sinal . . . . . . . . . . . . . . . . .
2.2.1 Análise de um programa . . . . . . . .
2.3 Raı́z do tipo secante . . . . . . . . . . . . . .
2.3.1 Método da secante . . . . . . . . . . .
2.4 Quando a derivada é zero . . . . . . . . . . .
2.5 O método da tangente . . . . . . . . . . . . .
2.5.1 Como funciona o método da tangente
2.5.2 Quando o método não funciona . . . .
2.5.3 A precisão do método . . . . . . . . .
2.6 Método da busca binária . . . . . . . . . . . .
2.7 Encontrar raı́zes, sumário . . . . . . . . . . .
2.8 Interseção de gráficos . . . . . . . . . . . . . .
3 Recursividade
3.1 exemplos . . . . . . . . . . . . . . . . . .
3.1.1 raı́z quadrada . . . . . . . . . . . .
3.2 Fundamentos da convergência de iteradas
3.3 O algoritmo babibilônio é convergente . .
3.4 Exercı́cios . . . . . . . . . . . . . . . . . .
3.5 Solução de alguns exercicios . . . . . . .
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
.
.
.
.
.
10
18
21
26
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
29
30
37
44
44
47
49
57
62
63
64
65
70
74
77
.
.
.
.
.
.
82
82
88
89
91
93
94
4 Splines
4.1 Aproximação polinomial clássica . . . . . .
4.1.1 Análise de dois casos particulares . .
4.1.2 A solução geral do problema . . . .
4.1.3 Interpolação polinomial de Lagrange
4.2 Funções polinomiais por pedaços . . . . . .
4.2.1 sensor . . . . . . . . . . . . . . . . .
4.2.2 aproximação . . . . . . . . . . . . .
4.3 Quase-splines . . . . . . . . . . . . . . . . .
4.3.1 polinomiais . . . . . . . . . . . . . .
4.4 Valor médio integral . . . . . . . . . . . . .
4.5 Splines cúbicos . . . . . . . . . . . . . . . .
4.5.1 convolução . . . . . . . . . . . . . .
4.5.2 suporte compacto . . . . . . . . . . .
4.6 Solução de alguns exercicios . . . . . . . .
4.7 Vocabulário . . . . . . . . . . . . . . . . . .
5 Integral aproximada
5.1 soma de Riemann . . . . . . . . . . . .
5.1.1 Integração geométrica. . . . . .
5.1.2 Somas de Riemann . . . . . . .
5.2 Integral no sentido de Riemann . . . .
5.2.1 propriedades da integral . . . .
5.2.2 Cálculo “numérico” da integral
5.3 trapésio . . . . . . . . . . . . . . . . .
5.4 polinômios . . . . . . . . . . . . . . . .
5.4.1 Apresentação do método . . . .
5.4.2 Integral num sub-intervalo . . .
5.5 quasi-splines . . . . . . . . . . . . . . .
6 E.D.O.
6.1 Método de Euler . .
6.2 Método de Taylor . .
6.2.1 segundo grau
6.2.2 grau maior do
. . . . . .
. . . . . .
. . . . . .
que dois .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
. . . .
. . . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
101
102
105
115
124
126
127
129
135
135
137
142
144
151
158
163
.
.
.
.
.
.
.
.
.
.
.
169
170
170
171
178
180
183
189
191
192
192
199
.
.
.
.
200
203
207
207
208
Índice Remissivo Alfabético
211
Bibliografia
211
iii
Lista de Figuras
1
3
Retângulos para aproximar uma integral
Uma aproximação spline de uma curva.
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
A pedra, quando o cordão se rompe
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
Raı́zes de f no intervalo [α, β]
Partição do intervalo I
. . .
3.1
3.2
3.3
4.1
4.2
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
ix
xi
. . . .
Taxa de variação . . . . . . . . . . . . .
Dados obtidos com um sensor . . . . . . .
Dados obtidos por um sensor mais preciso .
Curva que interpola os dados . . . . . . .
interpolação não linear . . . . . . . . . .
Qual pode ser o gráfico de f ? . . . . . . .
grafico de f analisando f ′ . . . . . . . . .
Dados amostrais
. . . . . . . . . . . . .
Reta tangente ao gráfico de f . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
5
6
7
8
9
17
18
20
. . . . . .
. . . . . .
Malha sobre uma região do plano . . . .
Vários representantes da única raiz
. . .
O método das secantes . . . . . . . . .
Fluxograma - método da secante . . . . .
Num ponto de tangência, tipo parabólico .
Quando a derivada é zero . . . . . . . .
Uma sequência de retas tangentes... . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
área limitada por duas curvas
. . . . . .
. . . . . . .
. . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
32
35
40
48
54
60
62
63
65
78
80
81
81
√
Determinação de 10 . . . .
√
Ponto inicial menor do que a
√
Ponto inicial maior do que a
. . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . .
87
91
92
.
.
.
.
.
.
.
.
.
Duas tangentes se reproduzindo indefinidamente
Interseção de curvas . . . . . . . . . . . . . .
Região cuja área queremos calcular
área limitada por duas parábolas
. . . . . . . . . . . . . . . . . . . . . 103
. . . . . . . . . . . . . . . . . . . . . . . . 104
Uma reta interpola dois pontos
A reta e o fenômeno real
iv
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
Duas soluções do problema homogêneo
O teorema do módulo máximo . . . .
. . .
. . .
Aproximação linear por pedaços - 1-spline .
interpolação polinomial dos pontos . . . . .
Polinômio de Lagrange . . . . . . . . . .
Aproximação de uma função . . . . . . . .
4.20
Regularização por convolução
5.1
5.2
5.3
Trapésios para aproximar área
Soma de Riemann . . . . . .
5.4
5.5
5.6
área do trapésio é uma média aritmética
6.1
6.2
6.3
Uma poligonal-solução aproximada
O método de Euler - uma poligonal
.
.
.
.
.
.
.
.
.
.
.
.
Derivada, tangente e Teorema do Valor médio .
Uma função positiva cuja integral é 1 . . . . .
Definição geométrica - produto de convolução
.
O significado geométrico de três valores . . . .
Correção pelo valor médio numa vizinhança de c
Média viciada . . . . . .
Núcleos ou pulsos unitários
. . . . . . . . . . .
. . . . . . . . . .
quadrado de convolução da função caracterı́stica
2-splines . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Comparação: polinômio de Lagrange e splines .
Comparação: polinômio de Lagrange e splines - quando os nós ficam uniformente próximos.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
106
107
109
112
118
130
134
143
144
146
147
148
152
154
166
167
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
. . . . . . . . . . . . . . . . . . . . . . 168
. . . . . . . . . . . . . . . . . . . . . . 172
. . . . . . . . . . . . . . . . . . . . . . 173
R3 2
retângulos da soma de Riemann para
x + 2x + 1 . . . . . . . . . . . 185
−3
. . . . . . . . . . . . . . . . . 190
. . . . . . . . . . . . . . . . . . . . 197
Modelagem com polinômios por pedaços . . . . . . . . . . . . . . . . . 198
Gráfico do polinômio por pedaços
solução aproximada de y ′ = − yx
. . . . . . . . . . . . . . . . . . . 202
. . . . . . . . . . . . . . . . . . . 204
. . . . . . . . . . . . . . . . . . . . . 206
v
Introdução
Faça apenas uma leitura superficial desta introdução como primeira leitura.
Volte a lê-la depois mais algumas vezes até que ela lhe pareça mais clara. No
inı́cio será difı́cil entendê-la por completo, porque ela fala de assuntos que serão
objeto do trabalho do livro. Mas, ainda assim, o seu lugar é aqui mesmo, no
inı́cio....
O autor deste livro sente responsabilidade com @ leitor@ e quer disponibilizar material complementar que incluir no texto o deixaria demasiado longo.
Para isto há uma página na Internet em que o material complementar do livro
pode ser encontrado, entretanto os links para páginas na Internet podem mudar e o endereço do autor é mais estável, havendo dificuldade com algum link,
me envie um e-mail para [email protected], mas não se esqueça de que
eu não posso lhe dar cursos particulares via e-mail, use este recurso de forma
cuidadosa.
Há duas áreas muito produtivas e com objetivos e métodos diferentes em que
se utiliza o computador para fazer Matemática ou para aplicar Matemática:
• Matemática aplicada e computacional, é a terminologia brasileira, que ainda
se chama de computação cientı́fica; Um ramo da matemática aplicada e
computacional é análise numérica que é onde se encontra a nossa disciplina, o cálculo numérico.
O nosso trabalho se enquadra, portanto, nesta área, computação cientı́fica
e neste caso os programas que usamos como auxiliares, neste livro são
scilab, gnuplot, calc, e algumas linguagens de programação como C,
C++, Python. Todos estes itens podem ser, em geral, encontrados nas
distribuições Linux.
• Computação algébrica que tenta, com razoável sucesso, substituir o cálculo
aproximado pelo cálculo formal. Representantes deste trabalho são
– Maxima um pacote de computação algébrica de domı́nio público que
em geral é encontrado nas distribuições de GNU/Linux ;
– Pari um pacote de computação algébrica voltado para Álgebra, de
domı́nio público;
– MuPad um pacote de computação algébrica publicado por um grupo
de matemáticos da Universidade Paderborne (Alemanha) que é distribuido com uma licença amigável para usuários individuais, mas
normalmente vendido;
– Maple um pacote de computação algébrica publicado por um grupo
de universidades do Canadá e Estados Unidos, que é vendido por um
preço não muito acessı́vel;
– Reduce que é semelhantes ao MuPad, do ponto de vista de distribuição;
vi
e há outros que são francamente comerciais e não vemos razão para citá-los
aqui. A sintaxe usada no Maxima, MuPad, Maple é muito semelhantes,
de modo que quem já usou algum deles, facilmente migra para outro, e
naturalmente, sugerimos que se migre para Maxima que é distribuido sob
GPL.
Metodologia de comunicação
O texto é completado com observações de dois tipos. Um dos tipos se chama
claramente “observação”, o outro são as notas de rodapé.
Você deve ler as observações na ordem em que elas aparecerem, mas sem lhes
dar muita importância numa primeira leitura. Em geral elas são apresentadas
com letra pequena, para salientar o fato de que você lhe deve dar pouca atenção,
numa primeira leitura.
Para lhe permitir uma busca mais acurada de informações, o livro tem um
ı́ndice remissivo alfabético, ao final, em que todos os conceitos que surgem nas
observações se encontram indexados, de forma que você poderá facilmente retornar a eles quando achar necessário. Também se encontram indexadas todas
as palavras-chave do texto.
Quando falamos usamos encenação para completar o sentido das palavras
usadas no discurso: mexemos as mãos, o corpo e alteramos a entonação da
voz. Para suprir um pouco deste teatro usaremos uma convenção tipográfica:
texto em itálico representa material que você deve olhar com cuidado, possivelmente não está definido ainda e estamos usando a concepção intuitiva do termo.
Quando usarmos texto tipográfico estaremos fazendo referência a um termo
técnico já definido anteriormente ou considerado bem conhecido como tal. As
palavras da linguagem C serão escritas no estilo tipográfico. Quan-do usarmos letra pequena estamos lhe querendo dizer que o assunto é polêmico e que há
muito mais coisa para ser dito do que estamos conseguindo dizer naquele momento. Usamos texto sublinhado para chamar sua atenção de um detalhe que
poderia passar desapercebido, tem o mesmo sentido texto em negrito.
O que é Cálculo Numérico
Acima dissemos que este livro é sobre Cálculo Numérico e queremos agora
dizer-lhe qual é o planejamento do nosso trabalho, porque há muitas formas de
desenvolver esta disciplina e nós vamos escolher uma que não precisa ser melhor
do que qualquer outra, apenas traduz a nossa preferência. Se você gostar do
nosso trabalho, insistiremos em que leia outros autores para completar a sua
visão.
• De uma forma simplificada é repetir o Cálculo Diferencial e Integral calculando, aproximadamente, aquilo que é obtido formalmente na outra
disciplina;
• Resolver, numéricamente, algumas questões que o Cálculo consegue apenas mostrar que tem solução; Por exemplo;
– determinações de valores, números, raizes de equações para os quais
o cálculo formal pode ser longo ou muito complexo, isto é feito aqui
no capı́tulo 0.
vii
– criação de modelos semi-formais para representar dados de um fenômeno,
este é o objeto do capı́tulo 0 mas o capı́tulo 0 também representa este
item.
– cálculo de algumas integrais para as quais não existem fórmulas, este
é objeto do capı́tulo 0.
– soluções aproximadas de equações diferenciais, isto é feito aqui, muito
moderadamente, no capı́tulo 0, é somente uma introdução.
• Associar uma linguagem de programação, ou pacotes computacionais para
realizar o projeto acima descrito.
Vamos discutir detalhadamente cada um dos tópicos que levantamos anteriormente. É preciso lembrar que não é fácil explicar o desconhecido e até
poderiamos questionar a validade de uma introdução como esta.
A idéia de tentar explicar o que faremos tem sentido ainda assim, porque
em parte estamos falando de tópicos que os leitores deste livro já estudaram,
no Cálculo Diferencial e Integral e cujos aspectos esta disciplina irá desenvolver
com outro objetivo. Mas estamos nos referindo a itens novos também e a razão
é lhe oferecer um plano do trabalho.
Suas perguntas, entretanto, podem fornecer ao expositor “ganchos” valiosos
na tentativa de deixar as coisas mais claras. O autor também se sentirá agradecido se os leitores tiverem a bondade de lhe mostrar o que não gostaram no
texto.
Raı́zes de uma função
Este é o assunto do capı́tulo 0.
Para a determinação das raı́zes de uma função vamos fazer uso de programas que apresentaremos resumidamente no texto. Os programas se encontram
disponı́veis em endereço citado na biliografia.
A busca de raı́zes é um assunto que não é diretamente discutido nos Cursos
de Cálculo.
Cálculo de integrais
O cálculo de integrais é um dos itens mais importantes do Cálculo Diferencial
e Integral. Sua importância supera a própria conceituação da integral, como
cáculo de área ou volume.
A integral é um método que se insere em outras definições, um exemplo bem
simples disto são os conceitos qualificados com “quantidade de”, como é o caso
de
• quantidade de movimento;
• quantidade de exposição à irradiação;
• número de moléculas ou virus em determinado vetor.
Aqui há duas versões do problema:
• há integrais que não sabemos calcular formalmente,
viii
• ou, mesmo sabendo, o cálculo formal é muito complexo ou longo para
certas aplicações, como nas telecomunicações, por exemplo.
e o resultado é que se torna mais prático calcular estas integrais aproximadamente.
Um dos instrumentos para o cálculo aproximado de integrais é a Soma de
Riemann. Como instrumento, está longe de ser o melhor, mas os métodos
melhores usam-na como método auxiliar. Porisso começaremos por discutı́-la.
Veja na figura (fig. 1), o que é uma soma de Riemann.
Soma de Riemann para f; passo=0.2
10
’data’
8
6
4
2
0
-2
-3
Figura 1:
-2
-1
0
1
2
3
Retângulos para aproximar uma integral
Nela você pode ver o domı́nio de integração subdividido em diversos intervalos e um retângulo associado a cada um destes sub-intervalos.
A soma das áreas dos retângulos é uma aproximação para a integral desejada.
Que precisamos para fazer este cálculo ? Quais são as técnicas envolvidas no
cálculo de uma integral usando Somas de Riemann ?
• Uma coleção de retângulos, devidamente dimensionados, representam uma
área que aproxima a área de uma determinada função.
• Um programa de computador permite o cálculo rápido de somas e portanto
cria as condições para que usemos retângulos com bases ı́nfimas o que nos
conduz a uma grande aproximação.
Análise e controle de variação
Um exemplo tı́pico, e bem atual, é o da qualidade da corrente elétrica que
uma determinada instituição, um hospital, por exemplo, recebe da rede pública
(manipulada por empresas privadas...) Veja o gráfico na figura (fig. ??),
Como se poderia tratar este problema ? Qual é o problema ? quais são as
ferramentas ?
Surpreendemente, há uma superposição de técnicas a serem usadas aqui e
no problema que discutimos anteriormente. Mas há técnicas novas também.
Vamos rapidamente analisar o que precisamos.
Deixando de lado a coleta de dados, que deveria ser feita por uma placa
apropriada instalada em um computador, vamos resolver o problema a partir
ix
dos dados colhidos. Estamos indicando ao lado de cada uma das etapas o
departamento cientı́fico responsável pela mesma. Chamamos isto de divisão do
trabalho.
1. Leitura e digitalização de dados analógicos recebidos da placa coletora de
dados (a digitalização pode ser trabalho da placa); (Computação, Engenharia Elétrica )
2. Cálculo da variação da tensão criando uma série temporal com estes dados;
(Cálculo Numérico e Estatı́stica)
3. Comparação dos piques de tensão com valores maximais selecionados como
suportáveis. (Cálculo Numérico Engenharia elétrica)
4. Decisão, em tempo real, sobre conexão ou desconexão de aparelhos, com
desvio para nobreakes ou outro tipo de alimentação de segurança. (Computação e Engenharia Elétrica);
5. O cálculo de uma integral faz o registro do consumo da energia elétrica
recebida... (quantidade de energia que passou pela placa controladora),
calcula médias, desvios. (Cálculo Numérico
Tangente, derivadas.
Para que servem.
Examine a figura (fig. 1.1), página 2. Tangentes e derivada servem pelo
menos para colher mangas maduras de árvores. Mas podemos, partindo deste
exemplo, atingir um uso mais sofisticado. Como poderiamos colher mangas
maduras usando derivada ? Indiretamente, é claro.
A figura (fig. 1.1) sugere alguma coisa. Queremos lançar uma pedra, amarrada a um cordão, de modo que o cordão fique preso próximo a um conjunto
de mangas. Rodamos a pedra preza ao cordão até que ela atinja uma velocidade angular razoável. Quando a pedra, em seu caminho sobre o “cı́rculo”se
encontrar na posição adequada, soltamos o cordão que irá acompanhar a pedra
se alojando entre as mangas. Usamos o coeficiente angular instâneo da pedra
percorrendo o ‘cı́rculo”para escolher a direção certa.
O mecanismo é o mesmo quando um computador vai dirigir a trajetória de
um foguete. Com as informações guardadas na memória do computador sobre o
mapa da Terra em sua órbita, o computador calcula a cada milésimo de segundo
qual deve ser o coeficiente angular relativo do eixo do foguete e desta forma vai
corrigindo a rota que levara a nave ao seu destino.
O pilôto automático dos grandes aviões comerciais fazem algo parecido. Ao
partir o pilôto humano coloca o avião na direção do aeroporto de destino. O
piloto automático vai medindo o erros de rota impostos pelo fluxo do ar e calculando a direção para corrigir o erro.
Aproximação polinomial de curvas
As funções nos fornecem dados dinâmicos sobre diversos fenômenos. Mas
nem sempre a natureza se conforma à matemática como nós gostariamos...
x
A solução é fazermos aproximações para os fenômenos naturais. Há diversos
tipos de aproximações vamos analisar uma delas aqui, splines.
Splines são uma melhora considerável dos polinômios de Taylor. Precisaremos deste assunto de Cálculo para desenvolver esta forma de aproximação que
uma aproximação polinomial por pedaços. A figura (fig. 3) ilustra este tipo de
aproximação usando polinômios do primeiro grau o que resulta numa poligonal.
O objetivo do curso
Discutir os problemas
180
’data’
do Cálculo Diferencial e
160
140
Integral de modo a en120
contrar soluções aproxi100
madas para este proble80
mas.
60
Questionar a validade
40
20
destas aproximações.
0
Criar a sensação de
-20
-20
-15
-10
-5
0
5
10
15
20
que a solução exata pode
ser um mito.
Linguagem de programação
Vimos que métodos com- Figura 3: Uma aproximação spline de uma curva.
putacionais são essenciais para desenvolvermos as aproximações.
Os alunos, seja do curso de Computação, ou do curso de Matemática ou
das Engenharias, já deveriam conhecer uma linguagem de programação, a esta
altura.
Infelizmente isto raramente é verdade.
Mas achamos que é preciso forçar a barra, como temos feito com os nossos
alunos de Cálculo Numérico, com resultados positivos: ao final do segundo mês
de aula a maioria deles já sabe fazer programas e inclusive planejar um pequeno
pacote, claro, isto pressupõe que eles tenham acesso a computadores.
Na metologia que temos empregado os programas crescem de nı́vel de modo
que, se o aluno se empenhar em entendê-los, ficará gradualmente no nı́vel dos
mesmos.
Nas duas ou tres primeiras semanas temos mantido a preocupação de explicar
detalhadamente 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 programação, e também
sob a hipótese de que ele irá encontrar sempre um “hacker”a sua volta no laboratório de computação de modo a lhe tirar algumas dúvidas (e lhe implantar
mais uma dezena...).
Vamos adotar a linguagem C, mas ninguém deve se sentir obrigado a nos
acompanhar nesta escolha. Use o que houver à sua mão, aquilo que ficar mais
fácil, mas que os alunos aprendam a programar.
As linguagens de programação de um certo tipo todas se parecem de formas que quando apresentarmos um programa em C facilmente ele poderá ser
transformado para a linguagem preferida do leitor.
xi
Como é que se aprende uma linguagem ?
Primeiro que tudo metendo a cara, depois perguntando muito a quem já sabe
um pouco mais, e sem dar muita importância ao semblante de incomodado que
algumas pessoas possam fazer... quem sabe um pouco mais, aprendeu perguntando aos outros. Pergunte! incomode inclusive o professor! use o seu endereço
eletrônico para tirar suas dúvidas, mas não se esqueça de que será o seu esforço
pessoal que será decisivo.
Procure economizar a paciência dos outros, tente descobrir você sozinho
como fazer as coisas. Este é seguramente o melhor aprendizado: quando você
mesmo descobre.
Estamos convencido de que o uso de computação no ensino de Matemática
enriquece fortemente a experiência do aluno porque permite introduzir uma
dinâmica que giz e quadro nã conseguem mais gerar ante uma nova mentalidade
gráfica que está presente em nós todos.
Isto vale para qualquer outra profissão e nós não tentariamos convencer os
alunos de computação desta verdade.
Vamos listar algumas linguagens de programação parecidas com C
1. Pascal, e você certamente vai encontrar [18] na biblioteca que lhe pode
conduzir a dominar esta linguagem.
2. Python, é uma linguagem de domı́nio público que se encontra disponı́vel
em todo sistema Gnu/Linux. Nestes sistemas você encontra um tutorial
sobre esta linguagem no diretório /usr/doc/python/tutorial.
3. Java, praticamente de domı́nio público, se encontra disponı́vel em todo
sistema Gnu/Linux
4. Computação Algébrica.
• Domı́nio público ou relativamente livres MuPad, Reduce, Maxima
• Comerciais - não aconselhamos! Maple, Derive
5. Cálculo Numérico, domı́nio público SciLab Octave
6. Cálculo Numérico, comercial MatLab. Scilab, Octave fazem tudo que
MatLab faz.
Os programas distribuidos sob o GPL, General Public License, são de excelente qualidade. Ninguém mais precisa, hoje, pagar, para ter um computador
funcionando, além do preço da máquina... Este livro, todos os programas que o
acompanham, todo o trabalho de pesquisa do autor, se desenvolve inteiramente
com programas de domı́nio público rodando em ambiente Linux.
xii
Capı́tulo 1
A derivada aproximada
A taxa de variação de f é uma das informações mais importantes
que podemos ter sobre um fenômeno descrito por f . O Cálculo
Diferencial e Integral define a derivada, usando o limite da taxa
de variação ou a taxa de variação instantânea
A taxa de variação é definida por um quociente de diferenças e
esta é a definição básica que iremos usar neste capı́tulo.
1.1
Quociente de diferenças
Uma função f é diferenciável se em cada ponto do domı́nio o gráfico
graf (f ) tiver uma reta tangente
A reta tangente no ponto (a, f (a) tem um coeficiente angular m e nós diremos
que f ′ (a) = m. A função derivada, f ′ é uma outra função que descreve as
derivadas de f e portanto as taxas de variação instantâneas de f . No Cálculo
dizemos que a derivada define a reta tangente ao gráfico, aqui preferimos
inverter a forma de falar porque vamos criar modelos, funções, a partir de
dados amostrais e a taxa de variação será frequentemente um desses dados
amostrais.
Este primeiro capı́tulo é dedicado a uma revisão do Cálculo Diferencial e
Integral e de programação como um alerta daquilo que você precisa saber para
o desenvolvimento dos demais capı́tulos.
Observe a figura (fig. 1.1) em que estamos simulando o que acontece com
uma pedra que alguém esteja rodando presa a um cordão e que, num certo
momento, o cordão (provavelmente podre) se rompa. A pedra “memoriza” o
último coeficiente angular que o seu movimento tinha sobre o cı́rculo e segue
em movimento uniforme não acelerado1 pela reta tangente.
Assim o coeficiente angular da reta tangente é o coeficiente angular instantâneo da trajetória da pedra no cı́rculo.
1 falso,
obviamente, porque a aceleração da gravidade está presente
1
CAPÍTULO 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 cordão se rompe
Se f representar a parte da equação do cı́rculo onde vemos a pedra ainda
presa ao cordão, e t1 for o valor do parâmetro no ponto em que o cordão se
rompeu, então
f ′ (t1 ) é a derivada de f no ponto (t1 , f (t1 )))
(1.1)
Para dizer o mesmo que dissemos acima, o professor de Cálculo considera
a seguinte figura (fig. 1.2) em que podemos ver uma reta tangente e três retas
Tangente e uma sucessão de secantes
a
a+h
(f(a+h)−f(a))/h
Taxa de variação
Figura 1.2:
Taxa de variação
secantes. As retas secantes são aproximações da tangente.
Na figura (fig. 1.2) estão indicados apenas dois valores para o parâmetro
a, a + h mas temos alı́ as secantes correspondentes a três valores: a1 , a2 , a3 e o
o cálculo do coeficiente angular, das secantes, é feito assim:
m1 =
m2 =
f (a1 )−f (a)
a1 −a
f (a2 )−f (a)
a2 −a
(1.2)
(1.3)
3
CAPÍTULO 1. A DERIVADA APROXIMADA
m3 =
f (a3 )−f (a)
a3 −a
(1.4)
Quanto mais próximo estiver ai de a mas preciso será o valor do coeficiente
angular da secante, relativamente ao desejado coeficiente angular da tangente.
Veja mais abaixo onde estamos explicando um método prático para cortar
um cı́rculo em um folha de papel como um exemplo do que é aproximação.
O coeficiente angular da tangente é o limite das taxas de variação. Como
nem sempre podemos calcular o limite, seja recortando cı́rculos em papel (ou
colocando foguetes em órbita), muita vezes temos que nos contentar com o coeficiente angular de uma reta secante, tentando minimizar o erro disto decorrente,
ou tentando corrigir o erro ao longo do processo.
Relembrando a equação da reta tangente
f (x1 )−f (a)
≈ f ′ (a)
x1 −a
f (x1 )−f (a)
= m = ∆f
= ∆a (f )
x1 −a
∆x
y1 − y0 = f (x1 ) − f (a) = m(x1 − a)
f (x) − f (a) = f ′ (a)(x − a) + o(x − a)
f (x) − f (a) ≈ f ′ (a)(x − a)
y − f (a) = f ′ (a)(x − a)
(1.5)
(1.6)
(1.7)
(1.8)
(1.9)
(1.10)
Vamos parar um pouquinho nas últimas equações.
• A equação 7 representa a relação entre os lados de um triângulo sobre a
reta secante que passa nos pontos (a, f (a)), (x1, y1 ).
• As equações 8 e 9 são equivalentes, representam a aproximação que a
reta tangente fornece para os valores de f . Na equação 8 o erro está
representado com a notação o(x − a), o “o pequeno de Landau”2
• Na equação 8 estamos indicando com o termo corretor o(x − a) que a
equação da reta fornece o valor de f (x) com este erro: o(x − a)
• A última equação, 10, é simplesmente a equação da reta tangente:
y − b = m(x − a) ; b = f (a), m = f ′ (a)
Escrevemos a equação 8 com o termo corretor, o(x − a) porque a expressão
y − f (a) = f ′ (a)(x − a)
(1.11)
é a equação de uma reta e o gráfico da função não precisa ser uma reta3 então a
igualdade representada pela reta está errada e é isto que estamos representando
com o termo de correção o(x − a). É uma forma prática de indicar que existe
um erro sem precisar entrar no detalhe do valor do erro.
2 A notação dos “o s de Landau” nos ajudam a falar de aproximação de uma forma prática
escondendo a precisão, veja mais a respeito no ı́ndice remissivo
3 compare as equações 8 e 10
CAPÍTULO 1. A DERIVADA APROXIMADA
4
Observação 1 Porque falar em “aproximação”
Falaremos seguidamente de “aproximação”, neste livro. Podemos dizer que
Cálculo Numérico faz de forma aproximada o que o Cálculo Diferencial e Integral diz que faz exatamente.
Porque falar que as secantes são aproximações da tangente?
Veja a seguinte experiência que você certamente já fez4 .
Suponha que você deseje recortar um cı́rculo em papel. A geometria nos
ensina que as tangentes a um cı́rculo são 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 mantendo
a tesoura a distância constante do centro e sempre perpendicular a uma reta
(imaginaria...) que parte do centro.
Mas, quando você aciona a tesoura, você corta um “pequeno” segmento de
reta, que dizer que você está na verdade recortando um polı́gono com um número
de lados tão grande que lhe parece que o resultado é um cı́rculo.
Você não está “cortando” tangentes, mas sim secantes. Mas você queria que
fossem tangentes.
O resultado é uma aproximação e você, em geral, ficará satisfeito com ela.
Mas não é apenas uma situação tão simples quanto recortar cı́rculos em papel
que nos interessam. Há situações bem mais importantes, como como colocar
um satélite em órbita para tornar possı́vel as comunicacações. O método é bem
parecido com o da construção de cı́rculos em papel com tesoura. No capı́tulo
final, quando discutirmos equações diferenciais, estaremos mostrando como é
parecido, recortar cı́rculos em papel, e colocar um foquete em órbita em que um
computador, substituindo a tesoura, estará corrigindo a trajetória do foquete
e fazendo-o percorrer “pequenos segmentos de reta” de algumas centenas de
kilómetros. Corrigindo assim a trajetória para que o foguete atinja uma órbita
(elı́ptica ) desejada. Portanto, para aprender a colocar foguetes em órbita no
último capı́tulo, vá logo treinando com papel, tesoura e cı́rculos...
O Cálculo Diferencial e Integral algumas vezes deixa uma sensação de que
derivadas e integrais podem ser sempre calculadas exatamente. O Cálculo tem a
sua função e aqui nós temos a nossa de corrigir o otimismo do Cálculo. Vejamos
4e
se não tiver feito, use a primeira oportunidade para executar a experiência que estamos
aqui relatando...
5
CAPÍTULO 1. A DERIVADA APROXIMADA
no seguinte exemplo como podemos usar “derivadas aproximadas” como a única
opção disponı́vel.
Exemplo 1 Sensor e levantamento de dados
Veja na figura (fig. 1.3) página 5,
Dados amostrais
x
1
x
x
2
Figura 1.3:
x4
3
x
5
Dados obtidos com um sensor
Lendo a figura podemos dizer, sobre o fenômeno descrito, que
• houve um descrescimento de x1 para x2 ;
• de x2 em diante o fenômeno apenas cresceu;
• houve um crescimento considerável entre x3 para x4 ;
• o crescimento entre x4 para x5 foi relativamente reduzido.
Mas esta impresão visual poderia ser tornada efetiva se usassemos um sensor
de geração mais recente que fosse capaz de fazer micro medições ao redor de cada
ponto, veja na figura (fig. 1.4) página 6,
Na figura (fig. 1.4) estamos indicando que, em cada um dos pontos que o
sensor mediu, ele também fez três medições a pequenos intervalos de tempo.
Estas “micro-medições” nos permitem calcular a taxa de variação do fenômeno
em cada um dos pontos:
f (x12 )−f (x11 )
x12 −x11
f (x22 )−f (x21 )
x22 −x21
;
;
f (x13 )−f (x12 )
x13 −x12
f (x23 )−f (x22 )
x23 −x22
(1.12)
(1.13)
6
CAPÍTULO 1. A DERIVADA APROXIMADA
Dados amostrais refinados
x
51
x
1
x
x
2
x4
3
x
x
52
x
53
5
foram tomadas três medidas
medidas em cada um
x x
dos pontos:
x
i1
i3
i2
Figura 1.4:
Dados obtidos por um sensor mais preciso
f (x32 )−f (x31 )
x32 −x31
f (x42 )−f (x41 )
x42 −x41
f (x52 )−f (x51 )
x52 −x51
;
;
;
f (x33 )−f (x32 )
x33 −x32
f (x43 )−f (x42 )
x43 −x42
f (x53 )−f (x52 )
x53 −x52
(1.14)
(1.15)
(1.16)
Além de sabermos o valor no ponto, podemos calcular a “derivada aproximada”
da função que descreve o fenômeno.
O Cálculo nos ensina que tudo pode ser descrito por alguma função, e isto é
certı́ssimo, apenas nem sempre as funções tem equações algébricas que possamos
derivar. Algumas vezes tudo que sabemos sobre estas funções são valores colidos
por um sistema de amostragem, como as figuras que acabamos de comentar
indicam.
Para terminar o exemplo, vejamos mais duas figuras. A figura (fig. 1.5)
página 7, nos apresenta uma interpolação linear dos dados, quer dizer, tudo
que sabiamos eram os valores obtidos em cada ponto, e os segmentos de reta
alı́ desenhados nos sugerem qual poderia ser o valor do fenômeno em pontos
intermediários entre aqueles em que foram tomados medidas.
Veja agora na próxima figura, (fig. 1.6) página 8, em que, usando as taxas de variação obtidas em cada um dos pontos, pudemos traçar uma curva
não poligonal5 interpolante descrevendo melhor o que acontece nos pontos intermediários.
5 retas,
são curvas, poligonais, são curvas, e tem curvas que não retas...
7
CAPÍTULO 1. A DERIVADA APROXIMADA
Interpolação linear dos dados
x
1
x
2
Figura 1.5:
x
3
x4
x
5
Curva que interpola os dados
Vamos ver como fazer isto no capı́tulo 0, esta curvas interpolantes serão
pedaços de polinômios.
Agora, com as taxas de variação podemos descrever melhor o fenômeno medido. Lendo o gráfico contido na figura (fig. 1.6), podemos dizer
• Há um ponto de mı́nimo do fenômeno entre os pontos x1 e x2 ;
• o crescimento abrupto que parecia acontecer entre x3 e x4 de fato acontece
num pequeno pedaço deste intervalo, a partir do ponto médio.
• também houve um crescimento abrupto próximo do ponto x5 .
Observe que a interpolação linear não nos permitia tecer nenhuma dessas considerações. Sem o conhecimento da taxa de variação em cada um dos pontos, tudo
que podemos fazer é uma interpolação linear que descreve um comportamento
uniforme entre os pontos em que as medições foram feitas.
Este exemplo nos mostra uma situação bem concreta do dia-a-dia em que a
derivada formal seria inútil6 . A derivada tem que ser obtida aproximadamente
a partir de algumas medições finas tomadas em alguns pontos escolhidos.
O exemplo também nos mostra a importância da derivada como informação
complementar.
6 mas
se você estiver deduzindo que o estudo do Cálculo é inútil, engana-se. Precisamos
de teorias formais, para produzir a técnica e as aproximações, mas isto é uma história mais
longa, envolva o professor nesta discussão...
8
CAPÍTULO 1. A DERIVADA APROXIMADA
Interpolação não linear dos dados
x
1
x
x
2
foram tomadas três
medidas em cada um
x
x
dos pontos:
i1
i2
Figura 1.6:
x4
3
x
x
5
i3
interpolação não linear
E o qual seria a taxa de variação a ser considerada em cada um dos pontos?
Temos três medidas, logo duas taxas de variação.
Aqui entra em cena uma decisão tı́pica de quem cria modelos para fenômenos.
A média é uma melhor opção, ela corrige possı́veis erros de medidas. Um
bom sensor tomaria não tres medições mas certamente uma dezena de micromedições o que permitiria uma boa média.
Voltaremos a discutir interpolação mais a frente.
Resumindo,
• ∆a (f ) = ∆f
∆x representa o coeficiente angular de uma reta secante que
desejamos que seja uma aproximação da reta tangente;
• f ′ (a) é o coeficiente angular da reta tangente ao gráfico de f no ponto
(a, f (a)).
• Usaremos, quando a técnica nos permitir, o valor médio de uma coleção
de taxas de variação, obtidas com micro medições, para representar (aproximar) f ′ (a).
Nos exercı́cios seguintes, você será solicitado a calcular a derivada aproximada de funções cuja derivada você sabe calcular exatamente. Desta forma você
poderá comprender melhor a derivada aproximada, comparando-a em casos em
que temos a derivada exata disponı́vel.
9
CAPÍTULO 1. A DERIVADA APROXIMADA
Exercı́cios 1 Derivada aproximada
Notação ∆a (f ) =
f (a+∆x)−f (a)
∆x
1. micro medições Considere a função f (x) = (x + 3) ∗ (x − 4) e no ponto
x = 3 considere as “micro-medições”
(3, f (3)), (3.01, f (3.01)), (3.02, f (3.02)).
(3)
(3.01)
Calcule ∆3 (f ) = f (3.01)−f
e ∆3.01 (f ) = f (3.02)−f
e a média aritmética
0.01
0.01
∆3 (f )+∆3.01 (f )
′
. Compare o resultado com f (3)
2
2. micro medições Repita a questão anterior com o ponto x = 4 com ∆x =
0.001
3. Sabendo que f (−1) = 3, f ′ (−1) = −1 qual dos gráficos na figura (fig. 1.7)
página 9, corresponde ao gráfico de f . Justifique sua resposta.
f
f
−1
−1
Figura 1.7:
Qual pode ser o gráfico de f ?
2
4. Calcule ∆a (f ) = ∆f
∆x com f (x) = x + 3x + 2 no ponto x = a e com os
valores de ∆x indicados
x=a
1
2
1.5
∆x
0.1
0.1
0.1
∆x
0.01
0.01
0.01
∆x
0.001
0.001
0.001
5. Complete a tabela, calculando a diferença (o erro) D = |f ′ (a) − ∆a (f )| =
2
|f ′ (a) − ∆f
∆x |x=a | com f (x) = x + 3x + 2.
10
CAPÍTULO 1. A DERIVADA APROXIMADA
x=a
1
2
1.5
∆x
0.001
0.001
0.001
|f ′ (a) − ∆a (f )|
6. A seguinte listagem de valores foi obtido por um sensor para os valores de
na vizinhança de um ponto. Calcule a derivada média.
∆a (f ) = ∆f
∆x
0.99884447020655558927
0.99945892356272536761
0.99976592143543602562
0.99991936316018971376
7. Um sensor apresenta a seguinte saı́da de dados em que o primeiro valor
é f (a) e os quatro seguintes são ∆a (f ) = ∆f
∆x na proximidades do ponto
x=a.
(a) Construa, gráfica e algebricamente, a interpolação linear dos dados.
(b) Construa, gráfica e algebricamente, uma interpolação não linear da
amostragem com quatro dados obtidos pelo sensor em cada ponto.
a
−1
0
1
2
3
∆a (f )(1)
−0.667
−0.002
−0.812
−2.926
−5.895
∆a (f )(2)
−0.701
−0.001
−0.774
−2.861
−5.816
∆a (f )(3)
−0.719
−0.000
−0.755
−2.828
−5.776
∆a (f )(4)
−0.728
−0.000
−0.746
−2.812
−5.756
f(a)
3
-5
-7
-14
-20
8. Faça um programa que liste os valores de ∆a (f ) de de f ′ (a) para alguns
valores de um um intervalo. Use um while() para controlar uma lista de
valores.
solução derivadas.c, [20].
1.2
Quocientes de diferenças
de ordem superior
Se calcularmos a diferença entre dois quocientes de diferenças sucessivos
∆2a (f ) =
∆a+∆x (f ) − ∆a (f )
∆x
estaremos obtendo uma aproximação da segunda derivada.
Este é um quociente de diferenças de segunda ordem.
Como não podemos calcular a derivada formal, em nossos programas de
cálculo numérico, resta-nos a tentativa com os quocientes de diferenças. Aqui
11
CAPÍTULO 1. A DERIVADA APROXIMADA
vamos discutir os quocientes de diferença de segunda ordem
∆a+∆x (f )−∆a (f )
=
∆x
(a)
(a+∆x)
− f (a+∆x)−f
( f (a+2∗∆x)−f
∆x
∆x
(a+∆x)+f (a)
= f (a+2∗∆x)−2∗f
∆x2
∆2a (f ) =
(1.17)
=)/∆x
(1.18)
(1.19)
Não havendo dúvida7 nós usaremos uma notação mais simples para os quocientes
de diferença de segunda ordem:
∆2 (f ) = ∆2a (f )
(1.20)
Enquanto que os quocientes de diferenças de primeira ordem são razoavelmente precisos, quando passamos aos de segunda ordem, é preciso ter muito
cuidado com os resultados porque a precisão cai.
Veja seguinte listagem obtida com a função:
f (x) = (1 − x2 )sin(x/4)
Usamos um programa feito em calc que tem uma sintaxe semelhante a da
linguagem C, é o programa deriva02.calc que você pode encontrar em [20,
programas.tgz]. A listagem foi editada e resumida, você pode rodar e alterar o
programa para ganhar mais experiência. Não tema extragar os programas, eles
estarão na página à sua diposição quando você cometer erros e não souber como
corrigı́-los, aprenda, tranquilamente, a alterar os programas.
O programa derivada02.calc produz uma saı́da de dados pronta para usar
em um texto com LATEX. Experimente a versão derivada03.calc que produz
o resultado no terminal.
As funções d2f() e ddf() são idêndticas.
ddf() calcula o quociente de primeira ordem da função df(), que calcula o
quociente de primeira ordem de f(), corresponde a equação (17), d2f() calcula
diretamente o quociente de segunda ordem usando f(), corresponde a equação
(19).
Intervalo [0, 10], passo 1, Delta = 0.000001
x
0
1
2
3
4
5
6
7
8
9
d2f
-0.000001520000
-1.463721700812
-2.624124797793
-3.217524857357
-3.055271491335
-2.051102544324
-0.237390644956
2.231711106131
5.090941230838
7.987785378986
ddf
-0.000001520000
-1.463721700812
-2.624124797793
-3.217524857357
-3.055271491335
-2.051102544324
-0.237390644956
2.231711106131
5.090941230838
7.987785378986
exata
-0.5
-1.463720340220
-2.185332631556
-2.485835877783
-2.244818686029
-1.420459396864
-0.060549895849
1.696970169472
3.634424528937
5.475087704277
7 ∆(f ), um quociente de diferenças, e ∆f = f (x ) − f (x ), uma diferença, como ∆x =
2
1
x2 − x1
12
CAPÍTULO 1. A DERIVADA APROXIMADA
Podemos ver nesta listagem erros da ordem de 300% no cálculo aproximado
da derivada segunda, e o caso quando x = 6 ou de 3289% quando x = 0 o que
mostra que não podemos confiar em cálculos aproximados da segunda derivada
usando quocientes de diferença. Mas veremos no capı́tulo 0 que conseguimos
modelar com boa precisão dados discretos (obtidos com sensores) usando apenas aproximações da primeira derivada, esta sim, calculada com quociente de
diferenças.
No capı́tulo 0 vamos usar do quociente de segunda ordem, apenas o numerador, quando estudarmos o problema,
f (x) = 0
veremos que assim é possı́vel contornar o problema deste erro, ao evitar o quociente, No momento certo voltaremos a discutir esta questão.
Exercı́cios 2 Revisão de Cálculo e computação
objetivo adquirir familiaridade com questões de Cálculo e de computação,
necessárias ao Cálculo Numérico Computacional. Conscientemente, ignore as
questões que você domina, o objetivo não é perder tempo, mas ao mesmo tempo,
aprofunde e procure outras questões parecidas com as que você não dominar para
aumentar a sua prática.
O programa gnuplot é um pacote computacional para fazer gráficos, tem
também uma versão que roda em windows que pode ser encontrada aqui, [13].
Nas revisões de programação, você pode usar em programas em Pascal, [18],
mas os programas que associados a este livro, que estão aqui, [20], foram escritos
em C ou em calc.
Você quiser rodar programas em Pascal existe um compilador, gpc, para
Linux.
1. Equação da reta que passa num ponto
(a) teórica Escreva a equação da reta que passa no (a, b) e tem coeficiente
angular m.
(b) aplicação Escreva as equações das retas que passam no (a, b) com
o coeficiente angular indicado, em cada item abaixo. Faça gráficos
procurando ser preciso. Você pode usar gnuplot ou xfig para fazer
estes gráficos, mas deve indicar por escrito como fez.
no ponto
(a, b)
(−1, 3)
(−1, 3)
coef. angular
m
−3
−1
no ponto
(a, b)
(−1, 3)
(−1, 3)
coef. angular
m
1
2
(c) teórica Escreva a equação da reta que passa nos pontos (a1 , b1 ), (a2 , b2 ).
(d) aplicação Escreva as equações das retas que passam nos pontos indicados em cada um dos itens abaixo. Para cada caso faça gráficos
precisos. Você pode usar gnuplot ou xfig para fazer estes gráficos,
mas deve indicar por escrito como fez.
13
CAPÍTULO 1. A DERIVADA APROXIMADA
P1
(a1 , b1 )
(−1, 3)
(−1, 3)
P1
(a2 , b2 )
(1, −3)
(3, 3)
P1
(a1 , b1 )
(1, −3)
(1, 3)
P1
(a2 , b2 )
(−3, 1)
(−2, 5)
2. teoria Reta tangente ao gráfico de uma função Fórmula de Taylor. A derivada de uma função nos fornece o coeficiente angular instantâneo da
mesma no ponto:
f ′ (a) é o coeficiente angular instantâneo de f em (a, f (a))
(a) teórica Fórmula de Taylor - equação da reta Escreva a equação da
reta que passa no (a, f (a)) e é tangente ao gráfico da função neste
ponto. Observe que você deseja a equação da reta que passa no ponto
(a, f (a)), com coeficiente angular f ′ (a). Faça um gráfico genérico
mostrando o que acontece.
(b) Aplicação - derivada algorı́tmica
Derivar algortmicamente significa, para
este exercı́cio, evitar de fazer todas as contas, represente as contas, não as faça
totalmente, deixe que a linguagem de programação calcule por você.
Para cada
item abaixo faça o gráfico da função e da reta tangente no ponto
(a, f (a)) indicado. Você pode usar gnuplot ou xfig para fazer estes
gráficos, mas deve indicar por escrito como fez.
f (x) = (x + 3)(x − 4)
f (x) = (x + 3)(x − 4)
f (x) = (x + 3)(x − 4)
f (x) = sin(x)(x + 1)
f (x) = sin(x)(x − 1)(x − 5)
f (x) = cos(x)(x + 3)(x − 4)
a = −3
a=4
a = 0.5
a = −4
a = −2
a = 0.5
3. Altere o programa ex01.c para imprimir alguns números. Você encontra
este programa aqui, [20, programas.tgz].
4. Altere o programa ex01.c para que ele escreva quatro termos de uma
progressão artimética cujo primeiro termo seja 3 a raão 4.
solução: ex02.c
5. Faça um programa que escreva de 0 a 10, use um while().
solução: ex03.c
6. Altere ex03.c para escrever os 10 termos de uma progressão aritmética
de razão 3.
solução: ex04.c
7. Altere ex04.c para escrever os 10 termos de uma progressão geométrica
de razão 2.
solução: ex05.c
CAPÍTULO 1. A DERIVADA APROXIMADA
14
8. Altere ex05.c para escrever os 100 termos de uma progressão geométrica
de razão 1.0005, os “juros da simplória cadernete de poupança”.
solução: ex06.c
9. Altere o programa ex06.c colocando um if() dentro do while() controlando
um contador para permitir a visualização do sagrado capital sendo transformado na poupança.
solução: ex07.c
10. Escreva um programa que
(a) Produza uma progressão artimética de razão 0.5, primeiro termo 3 e
o número de termos 10;
solução: altere ex04.c
(b) Produza uma progressão artimética de razão 5, primeiro termo -3 e
o número de termos 10;
solução: altere ex04.c
(c) uma progressão geométrica de razão 7% com primeiro termo 1000
e com 12 termos. Obtenha outra cuja razão seja 0.5%. Uma delas
(qual ?) mostra como cresce sua dı́vida se você usar cheque especial
ou cartão de crédito.
solução: altere ex07.c
11. Derivada aproximada O quociente
f (a + ∆x) − f (a)
∆f
=
≈ f ′ (a)
∆x
∆x
(1.21)
é uma aproximação do valor da derivada de f no ponto x = a quando
∆x for pequeno. Os próximos itens servem para que você desenvolva a
sua intuição com respeito a esta aproximação, faça gráficos bem feitos
que permitam você se convencer do seu significado, a precisão com que
os gráficos serão feitos é parte essencial da questão, um gráfico mal feito
não lhe indicará nada, use papel quadriculado (ou milimetrado). Se você
usar gnuplot, ele lhe permite um zoom usando o botão direito do ratinho
e você poderá ver assim o detalhe entre as duas retas.
(a) Considere f (x) = x2 − 2x − 3 e encontre a reta tangente ao gráfico
de f no ponto (−1, f (−1)). Faça o gráfico.
solução: derivada02 01.gnuplot, [20].
(b) Use ∆x = 0.2, calcule o valor aproximado da derivada com este erro,
e obtenha a equação da reta “tangente” no ponto (−1, f (−1)). Faça
o gráfico.
solução: derivada02 02.gnuplot
CAPÍTULO 1. A DERIVADA APROXIMADA
15
(c) Use ∆x = 0.05, calcule o valor aproximado da derivada com este
erro, e obtenha a equação da reta “tangente” no ponto (−1, f (−1)).
Faça o gráfico.
solução: altere derivada02 02.gnuplot
(d) Com f (x) = x2 − 2x − 3 e encontre a reta tangente ao gráfico de f
no ponto (−3, f (−3)). Complete o gráfico anterior.
solução: altere derivada02 02.gnuplot
(e) Use ∆x = 0.2, calcule o valor aproximado da derivada com este
erro, e obtenha a equação da reta “tangente” no ponto (−3, f (−3)).
Complete os gráficos anteriores.
solução: altere derivada02 02.gnuplot
(f ) Use ∆x = 0.05, calcule o valor aproximado da derivada com este
erro, e obtenha a equação da reta “tangente” no ponto (−3, f (−3)).
Complete os gráficos anteriores.
solução: altere derivada02 02.gnuplot
12. Faça um programa que imprima a derivada aproximada, por quociente de
diferenças, do item anterior. Aprenda a usar função, em C,
solução: derivadas.c
13. Para f (x) = x2 − 9
(a) Encontre as retas tangentes ao gráfico de f nos pontos
(−4, f (−4)), (−3, f (−3)), (0, f (0))
Faça os gráficos.
solução: altere derivada02 02.gnuplot
(b) Use ∆x = 0.05, calcule o valor aproximado da derivada com este
erro, e obtenha a equação da reta “tangente” nos pontos
(−4, f (−4)), (−3, f (−3)), (0, f (0))
Complete os gráficos anteriores.
solução: altere derivada02 02.gnuplot
14. Significado da derivada Considere a função 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 é mais fácil fazer o gráfico de f ′ que o gráfico
de f . Deduza um esboço do gráfico de f do gráfico usando o gráfico
da derivada.
16
CAPÍTULO 1. A DERIVADA APROXIMADA
Solução 1 A derivada da função f (x) = x3 − 3x2 − 9x + 2 é uma função
do segundo grau, cujos zeros sabemos calcular.
f (x) = x3 − 3x2 − 9x + 2
f ′ (x) = 3x2 − 6x − 9 = 0 = x2 − 2x − 3
(1.22)
(1.23)
√
x = 2± 24+12
=3=
x1 = 2+4
2
(1.24)
(1.25)
x2 = −1 =
(1.26)
As raı́zes, x1 , x2 da derivada são pontos de extremos de f , neste caso com
certeza porque são zeros isolados de um polinômio.
Temos duas maneiras de determinar se são máximo ou mı́nimos. Uma
consiste em calcular a segunda derivada e verificar o sinal. Outra consiste
em verificar a variação em volta do ponto.
Vamos usar o teste da segunda derivada. Lembrando a fórmula de Taylor,
a segunda derivada representa a concavidade da função e portanto mostra uma parábola que lhe é semelhante no ponto. Se f ′ (xi ) for positiva,
então f neste ponto “lembra” uma parábola com com o vértice para baixo,
passando por um mı́nimo. Se for negativa passará por um máximo.
ponto
f ′′ (x1 )
f ′′ (x2 )
2a. derivada no ponto
12
-12
diagnóstico
passa por um mı́nimo
passa por um máximo
valor no ponto
f (x1 ) = −25
f (x2 ) = 7
O esboço gráfico de f pode ser visto na figura (1.8) página 17,
Comandos do gnuplot usados na resolução desta questão
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
17
CAPÍTULO 1. A DERIVADA APROXIMADA
40
f(x)
df(x)
0
30
20
10
0
-10
-20
-30
-3
-2
-1
0
Figura 1.8:
1
2
3
4
5
grafico de f analisando f ′
15. Modelo Encontre a equação de uma reta (um tipo de modelo) que melhor
represente os dados da tabela na figura (1.9) página 18. Justifique sua
solução;
Calcule o valor deste modelo no ponto x = 2. Calcule o valor médio
que estes dados representam usando a reta como modelo, e admita que o
intervalo de observações é [−10, 10].
solução: calcule o valor médio das taxas de variação e use este valor para
a equação da reta.
16. Teste do modelo Faça o gráfico do conjunto de pontos da tabela (1.9) e da
reta que você encontrou para modelar os dados com gnuplot e verifique
assim se o modelo está adequado. Justifique a sua conclusão.
18
CAPÍTULO 1. A DERIVADA APROXIMADA
−10
−6
−2
0
3
7
9
Figura 1.9:
1.3
−28.6
−15.4
−2.2
4.4
11.7
22.5
27.9
Dados amostrais
Polinômios de Taylor
Estudamos a equação da reta tangente ao gráfico de f no ponto (a, f (a)) e na
verdade quando começamos a estudar esta questão o nosso exemplo, na figura
(fig. 1.1), página 2, nos dizia que não era a “reta tangente” que nos deveria
interessar e sim a parábola tangente. Vamos agora ver como podemos obter
uma parábola tangente ao gráfico graf (f ) no ponto (a, f (a)).
O método se parece com o que já usamos para a reta tangente, foi porisso
mesmo que começamos com este caso mais simples. Revendo o caso da reta
tangente,
y − f (a) = f ′ (a)(x − a)
y = f (a) + f ′ (a)(x − a)
(1.27)
(1.28)
seriamos facilmente conduzidos ao erro de imaginar que a equação da parábola
tangente seria (está errado)8
y − f (a) = f ′ (a)(x − a) + f ′′ (a)(x − a)2
y = f (a) + f ′ (a)(x − a) + f ′′ (a)(x − a)2
(1.29)
(1.30)
Para encontrar a fórmula correta, vamos inicialmente considerar um polinômio
do segundo grau
P (x) = a0 + a1 (x − a) + a2 (x − a)2
(1.31)
desenvolvido no ponto x = a e vamos impor as condições que nos interessam,
para encontrar9 os coeficientes
a0 , a1 , a2
(1.32)
P (a) = f (a) ⇒ a0 = f (a)
P ′ (x) = a1 + 2a2 (x − a)
P ′ (a) = f ′ (a) ⇒ a1 = f ′ (a)
P ′′ (x) = 2a2
(1.35)
(1.36)
f ′′ (a)
2
(1.37)
P ′′ (a) = f ′′ (a) ⇒ a2 =
8 esta
9 os
(1.33)
(1.34)
fórmula está errada!
coeficientes é que são as incógnitas deste problema....
CAPÍTULO 1. A DERIVADA APROXIMADA
19
Na equação (33) estamos impondo a condição de que o polinômio P passe
no ponto (a, f (a)). Na equação (34) calculamos a derivada do polinômio P
para impor a condição, na equação (35), que o polinômio P tivesse a mesma
derivada que f no ponto (a, f (a)). Derivamos, na equação (36), o polinômio P
para impor na equação (37) que o polinômio tivesse a mesma derivada segunda
(curvatura) que a função f tem no ponto (a, f (a)).
Vemos assim que a fórmula correta para a equação da parábola tangente ao
gráfico graf (f ) no ponto (a, f (a)) é
f ′′ (a)
(x − a)2
(1.38)
2
Compare a equação errada 33 com a equação correta 38 e veja que a diferença
se encontra no método do cálculo para o coeficiente do segundo grau:
y = P (x) = f (a) + f ′ (a)(x − a) +
a2 =
f ′′ (a)
2
Este exemplo também lhe mostra a razão pela qual a equação do movimento
acelerado (caso da gravidade) é
g
v = s0 + v0 (t − a) + (t − a)2
2
(1.39)
em que t = a é o ponto considerado como inı́cio do movimento.
Nos cursos de Cálculo este tópico aparece sob o nome de fórmula de Taylor
e vai bem além na construção de um polinômio de grau n tangente ao gráfico
de f no ponto (a, f (a)). A metodologia para obter esta fórmula é exatamente a
mesma que apresentamos acima, entretanto partindo do polinômio
P (x) = a0 + a1 (x − a) + . . . + an (x − a)n
(1.40)
ao qual se impõem, sucessivamente, as condições de tangência. A conclusão é
que
f (n) (a)
(1.41)
an =
n!
e aı́ você deve observar que
2 = 2!, 1 = 1!, 1 = 0!
(1.42)
são os denominadores dos termos em x2 , x, x0 .
Fizemos menção ao erro existente entre a equação da reta tangente ao
graf (f ) e os valores de f numa vizinhança do ponto de tangência, chamando-o
de o(x − a).
Aqui usaremos a mesma notação, porém o erro é, teoricamente, menor.
Infelizmente, quando passarmos aos cálculos numéricos este erro tende a
ser bem maior, desta maneira há que ser prudente com o uso da aproximação
polinomial do grau elevado. O fato é que em geral nos damos muito bem com
as aproximações do primeiro grau. No capı́tulo 0 vamos ver que o grau ideal
para as aproximações polinômiais é o terceiro grau.
20
CAPÍTULO 1. A DERIVADA APROXIMADA
Aqui você pode observar a crı́tica diferença entre o cálculo feito manualmente (e formalmente) e os cálculos automáticos. Podemos atingir precisões
muito maiores com o cálculo manual, mas possivelmente com um grande lapso
de tempo, não esquecendo que nele estamos sujeitos a erros diversos. No entanto, no cálculo automático os computadores incluem outros tipos de erros
com a inevitável aproximação com que têm que trabalhar. A conclusão, nos
a repetiremos com frequência, é temos que fazer os cálculos com programas de
computador, mas temos que monitorar os resultados e saber analisá-los criticamente para tirar o bom proveito que eles nos podem trazer.
No penúltimo capı́tulo 0 iremos estudar aproximação polinomial quando
necessitaremos que você tenha uma boa prática com do uso do polinômio de
Taylor e de programação, eis uma boa razão para lhe oferecermos logo uma
lista de exercı́cios.
Exercı́cios 3 Polinômios de Taylor
1. Reta tangente ao gráfico de uma função Fórmula de Taylor. A derivada
de uma função nos fornece o coeficiente angular instantâneo da mesma no
ponto:
f ′ (a) é o coeficiente angular instantâneo de f em (a, f (a))
Veja na figura (fig. 1.10),
600
f(x)
reta(x)
0
500
400
300
200
100
0
−100
−200
−300
−4
−2
Figura 1.10:
0
2
4
Reta tangente ao gráfico de f
(a) Considere f (x) = x2 −2x−3 calcule f ′ (−2) e encontre a reta tangente
ao gráfico de f no ponto (−2, f (−2)).
solução: altere derivada02.02.gnuplot, você o encontra aqui, [?]
(b) Considere f (x) = x2 − 9 calcule f ′ (−4) e encontre a reta tangente
ao gráfico de f no ponto (−4, f (−4)).
solução: altere derivada02.02.gnuplot
CAPÍTULO 1. A DERIVADA APROXIMADA
21
(c) Escreva a expressão da reta tangente ao gráfico de uma função qualquer, f no ponto (a, f (a)). Observe que você deseja a equação da
reta que passa no onto (a, f (a)), com coeficiente angular f ′ (a).
solução: altere derivada02.02.gnuplot
2. Análise do gráfico de f
(a) parábola tangente Encontre a parábola tangente ao gráfico de
f (x) = (1 − x2 )sin(x/4)
no ponto (−4, f (−4)) e deduza como é o gráfico de f nas vizinhanças
deste ponto.
solução: altere derivada02.03.gnuplot
(b) parábola tangente Encontre a parábola tangente ao gráfico de f no
ponto (−2, f (−2)) e deduza como é o gráfico de f nas vizinhanças
deste ponto.
solução: altere derivada02.03.gnuplot
(c) Dedução do gráfico de f Com base nas duas informações10 obtidas
anteriormente, simule o gráfico de f numa vizinhança do intervalo
[−1, 1].
3. Polinômio desenvolvido em um ponto A expressão usual dos polinômios é
desenvolvida no ponto x = 0
P (x) = a0 + a1 x + a2 x2 + a0 x3 + · · · + an xn
(1.43)
Usando polinômio de Taylor podemos desenvolver um polinômio em qualquer outro ponto.
Desenvolva o polinômio
P (x) = 3 − x + 2x2 − 3x3 + 5x4
(1.44)
no ponto x = −3 e faça os gráficos dos dois polinômios com gnuplot.
Comente o resultado obtido.
solução:11 num terminal, rode calc < poltay2.calc
1.4
Derivadas parciais
Vamos generalizar a fórmula de Taylor para o caso multivariado. Aqui a restrição será mais forte, não passaremos do primeiro grau e a consideração feita
anteriormente sobre erros nas aproximações de derivadas de ordem maior se
10 este
exercı́cio tem o defeito de sugerir que podemos fazer uma simulação destas em qualquer intervalo sabendo o que acontece nos extremos. Isto é falso!
11 Todos os programas do livro se encontram aqui, [20]
22
CAPÍTULO 1. A DERIVADA APROXIMADA
aplica, fora que a otenção de dados amostrais com taxas de variação parcial
maior do que um é bem mais difı́cil de ser obtida.
Se considerarmos uma expressão dependendo de várias variáveis
F (x, y, x) = d
(1.45)
e lhe aplicarmos derivação implı́cita, vamos obter um modelo que nos permitirá
chegar à equação de um objeto linear tangente:
dw = dF (x, y, z) =
∂F
∂F
∂F
dx +
dy +
dz = 0
∂x
∂y
∂z
(1.46)
Vamos agora admitir a hipótese 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 é
P = (a, b, c)
é uma solução da equação (45). Nesta forma de falar a hipótese é que existe
uma solução para esta equação, que é P .
Se substituirmos, neste modelo,
dx := x − a ; dy := y − b ; dz := z − c
(1.47)
vem a equação da variedade13 linear tangente:
∂F
∂F
∂F
(x − a) +
(y − b) +
(z − c) = 0
∂x
∂y
∂z
(1.48)
Podemos explicitar z nesta expressão
∂F
∂x (x
∂F
∂z
− a) +
∂F
∂y
(y − b) +
∂F
∂z
(z − c) = 0
∂F
∂x
|(a, b, c) 6= 0 ⇒ z − c = − ∂F
(x − a) −
∂z
∂F
∂y
∂F
∂z
(1.49)
(y − b)
(1.50)
o que nos conduz, com auxı́lio do Teorema da Função Implı́cita14 a garantir que
existe uma função
∂F
∂x
z = f (x, y) ; ∂f
∂x = − ∂F ;
∂z
12 variedade
∂F
∂y
= − ∂F
∂f
(x − a) + ∂f
(y − b) ; c =
∂x
∂y
∂f
f (a, b) + ∂f
∂x (x − a) + ∂y (y − b) ; c
z−c=
z=
∂f
∂y
(1.51)
∂z
f (a, b)
(1.52)
= f (a, b)
(1.53)
é o conceito que nos livra da prisão tridimensional veja no ı́ndice remissivo mais
informações a respeito neste caso esta é variedade de dimensão dois, uma superfı́cie
13 esta variedade tangente é um plano, planos são variedades lineares de dimensão dois
14 você encontra este teorema em qualquer bom livro de Cálculo. Estamos também admitindo a hipótese de a derivada parcial que aparece no denominador seja diferente de zero
23
CAPÍTULO 1. A DERIVADA APROXIMADA
e assim temos duas fórmulas que podemos adaptar para fazer aproximações
de funções com duas ou três variáveis sendo imediato (basta considerar mais
derivadas parciais) estender estas fórmulas para um número qualquer que se
precise de variáveis15
O sı́mbolo := que utilizamos, apareceu com a linguagem de programação
Pascal para evitar a confusão com a igualdade matemática. Queremos dizer
que os dois objetos que se encontram de cada lado do sı́mbolo “:=” têm natureza
distinta, mas que é possı́vel fazer uma dedução de um, a partir do outro.
Observe que a equação (53 ) é a fórmula de Taylor multivariada, de grau 1
para a função = f (x, y).
Existe também uma fórmula de Taylor multivariada de grau 2, de grau
3, etc... mas em geral não passamos da fórmula do primeiro grau, devido as
imprecisões que o cálculo numérico joga nas derivadas de ordem superior.
Exercı́cios 4 Polinômio de Taylor
Você deve usar gnuplot para obter todos os gráficos, mas deve apresentar
toda a justificação das equações que usar.
O comando do gnuplot para fazer gráficos de funções de duas variáveis é
splot f(x,y)
1. Teórica - polinômio do segundo grau tangente Expanda as equações (53),
(44) para encontrar aw equações de uma parábola (polinômio do segundo
grau) tangente ao gráfico de f memorizando também a curvatura (segunda
derivada)
y = A + B(x − a) + C(x − a)2
(1.54)
Um polinômio desenvolvido16 no ponto x = a.
solução: polinômio de Taylor do segundo grau no ponto x = a
2. Teórica - polinômio do terceiro grau tangente Expanda as equações (53),
(44) para obter as condições que façam de
P (x) = A + B(x − a) + C(x − a)2 + D(x − a)3
(1.55)
um polinômio do terceiro grau, tangente ao gráfico de f no ponto (a, f (a)).
Descreva as equações para determinarmos os coeficientes A, B, C, D.
solução: polinômio de Taylor do terceiro grau no ponto x = a
3. Fórmula de Taylor
(a) Ache o desenvolvimento de Taylor para f (x) = sen(x) no ponto x = 0
de ordem 7 (grau 7) (um polinõmio de grau 7).
15 os
problemas econômicos lidam com espaços de dimensão de alguns milhares, o que justifica a grande dificuldade no planejamento econômico, por outro lado justifica trabalharmos
com dimensões altas.
16 novamente, um polinômio desenvolvidono ponto x = a
24
CAPÍTULO 1. A DERIVADA APROXIMADA
(b) Ache o desenvolvimento de Taylor para g(x) = cos(x) no ponto x = 0
de ordem 8 (grau 8), (um polinõmio de grau 8). Analise porque a
diferença de grau entre esta questão e anterior.
solução: derivada02 ex02.calc
(c) Calcule a derivada de g(x) + if (x), com os polinõmios encontrados
no item anterior. Será que o resultado poderia ser interpretado como
sendo
(g(x) + if (x))′ = i(g(x) + if (x))
4. Aplicações
(a) Calcule o valor aproximado de sen(0.1) usando a fórmula de Taylor
de ordem 7. Compare o resultado, indicando o erro ocorrido usando
uma calculadora.
solução: derivada02 ex02.calc
(b) Calcule o valor aproximado de cos(0.1). Compare o resultado, indicando o erro ocorrido usando uma calculadora.
solução: derivada02 ex02.calc
5. Derivadas parciais introdução teórica A equação de plano que passa no
ponto (a, b, c) é por comparação com a equação da reta
z − c + A(x − a) + B(y − b) = 0
z = c − A(x − a) − B(y − b)
(1.56)
(1.57)
(a) Calcule as derivadas parciais de z = f (x, y) na equação (57).
resposta: A, B
(b) Justifique a afirmação seguinte usando os conceitos “tangente”, “coeficiente angular” dentro de uma pequena redação. Se o plano cuja
equação está em (56), for tangente ao gráfico de uma função no ponto
(a, b, f (a, b)) então a equação do plano seria, atualizando os valores
de c, A, B na equações (56), (57):
z − f (a, b) + A(x − a) + B(y − b) = 0
z = f (a, b) +
∂f
∂x (x
− a) +
∂f
∂y (y
− b)
(1.58)
(1.59)
(c) Considere uma função
z = f (x, y)
(1.60)
que seja derivável numa vizinhança do ponto (a, b, f (a, b)). Então
ela tem um plano tangente no ponto (a, b, f (a, b)), semelhante ao
caso da função univariada com a reta tangente. Identifique entre as
equações abaixo a equação do plano tangente ao gráfico de f no ponto
(a, b, f (a, b)) e justifique sua escolha.
25
CAPÍTULO 1. A DERIVADA APROXIMADA
∂f
∂y (y − b)
∂f
z − a = f (a, b) ∗ (x − a) + ∂f
(y − b)
∂z
∂y
∂f
a = f (a, b) ∗ (x − a) + ∂f
∂x (x − a) + ∂y (y
(1.61)
z − a = f (a, b) ∗ (x − a) +
z−
(1.62)
− b)
(1.63)
solução: z = −5 + 2(x − 1) + 3(y − 2); f (1.1, 2.1) − 4.5
(d) Sabendo que as taxas de variação parciais de z = f (x, y) no ponto
(1, 2) são
∂f
∂f
= 2;
=3
∂x
∂y
e que f (1, 2) = −5
i. Escreva a equação do plano tangente ao gráfico de f no ponto
(1, 2, f (1, 2))
ii. calcule aproximadamente
f (1.1, 2.1)
(e) Fórmula de Taylor multivariada de grau 1 Observe que a equação do
plano tangente pode ser escrita de forma semelhante á equação da
reta tangente. Encontre as semelhanças e escreva a fórmula de Taylor
multivariada de grau 1. Você vai precisar de um produto de matrizes
(estas matrizes se chamam de gradiente ou Jacobiana).
6. Polinômio Esta é uma variante do método polinômio de Taylor. Podemos
encontrar um polinômio que memoriza as informações de uma função de
forma parecida com o polinõmio de Taylor, mas usando informações em
dois pontos. Encontre um polinômio P desenvolvido no ponto x = a tal
que
• P (a) = f (a); P ′(a) = f ′ (a)
• P (b) = f (b); P ′ (b) = f ′ (b)
em que [a, b] é um intervalo em que f está definida e é derivável. Sugestão:
escreva a expressão de um polinômio desenvolvido no ponto x = a.
7. Aplicação Encontre um polinõmio tal que
a) P (−3) = 3
P (3) = 1
P ′ (−3) = −1
P ′ (3) = 1
b) P (−3) = −3
P (3) = −3
Faça os gráficos destes polinômios usando gnuplot
P ′ (−3) = 1
P ′ (3) = 1
CAPÍTULO 1. A DERIVADA APROXIMADA
1.5
Solução de alguns exercicios
1.6
Vocabulário
26
gnuplot, Landau, variedade
Nesta seção vamos incluir alguns conceitos que é
preciso discutir mas cujo desenvolvimento dentro do
texto seria prejudicial. Mesmo assim será uma pequena amostra de cada assunto.
• gnuplot é um programa para fazer gráficos, uma espécie de máquina
de calcular eletrônica com capacidade para fazer gráficos, que roda num
terminal do computador, com alguma habilidade sintática. Você pode
escrever pequenos algoritmos no terminal do gnuplot ou com um editor
de textos e chamar gnuplot para ler e executar o algoritmo.
gnuplot pode ser chamado de dentro de um programa, logicamente falando é o mesmo que já dissemos acima a respeito de chamar gnuplot na
linha de comandos passando-lhe um arquivo: isto pode ser feito de dentro
de um programa e inclusive o programa pode construir o arquivo de comandos do gnuplot, veja, por exemplo raizq graf.c, rode apenas, este
é um programa relativamente avançado que será discutido no capı́tulo 0.
O próprio programa lhe dirá que construiu um arquivo de comandos do
gnuplot que você poderá ler como um exemplo.
• Landau Para representar que uma variável tem uma relação multiplicativa com outra, usamos uma das notações
y
= K 6= 0
x=0 x
(1.64)
y
=0
x=0 x
(1.65)
x = O(y) ≡ lim
x = o(y) ≡ lim
No primeiro caso, equação (64), o significado é que para valores cada vez
menores de x as variáveis x, y se encontram numa proporção e podemos
dizer que são comparáveis.
Este é o caso
∆f
f (x) − f (a)
=
(1.66)
∆x
x−a
quando a função for diferenciável no ponto a com derivada diferente de
zero. Neste ponto a função tem uma tangente paralela a reta
x 7→ Kx
(1.67)
CAPÍTULO 1. A DERIVADA APROXIMADA
27
em que K é o que aparece na equação (64).
No segundo caso, equação (65), a variável y é infinitamente menor do que
a variável x, é o caso em que a função derivável f tangencia o eixo dos X,
a derivada é nula, portanto ∆f é infinitamente pequeno relativamente a
∆x.
Esta linguagem, infinitamente pequeno, traduzida com a palavra infinitésimo, gerou uma confusão e um mito grande durante toda a primeira
metade do século 20 em que vários autores procuraram apresentar infinitésimos como um tipo de número.
Observe o salto violento que existe entre as duas notações, não há nada
entre elas. A melhor forma de entender a notação de Landau, que foi uma
tentativa de evitar os infinitésimos, é usá-la para aos poucos compreender
quando usar uma ou a outra, e talvez admitir o que Courant dizia, que o
limite se encontra no limiar da Matemática superior. . .
Se você quiser ver alguma coisa experimental nesta linha, considere y =
f (x) e compare
– x com f (x) quando x ∈ V(0), uma vizinhança de zero, é o caso
do o pequeno de Landau, faça um programa que liste x, f (x) com x
decrescendo para zero.
– x −a com f (x) −f (a) quando x ∈ V(a), uma vizinhança de um ponto
a 6= zero, é o caso do O grande de Landau, faça um programa que
liste x − a, f (x) − f (a) com x − a decrescendo para zero, você vai ver
que neste caso K = f ′ (a).
• Variedade é uma palavra que nos livra da prisão tridimensional em que
a geometria do mundo fı́sica em que vivemos nos confina.
Diremos variedade de dimensão 1 para fazer referência as curvas, uma
reta, um cı́rculo são variedades de dimensão 1.
Diremos variedade de dimensão 0 para fazer referência aos pontos.
As superfı́cies são as variedades de dimensão 2, como um plano que é uma
variedade linear de dimensão 2.
Depois da dimensão 2 a geométria não tem mais palavras e nós continuamos a denominar os objetos de variedades lineares ou não-lineares
acrescentando a dimensão que eles tenham. Podemos então falar de uma
variedade linear de dimensão 4 que seria uma generalização dos planos ou
das retas.
Enfim, agora não temos mais as limitações da geometria.
Capı́tulo 2
Raı́zes aproximadas de
funções contı́nuas
Neste capı́tulo vou estudar o problema determinação das raı́zes de uma função: queremos
descobrir quando f (x) = 0. Este é um velho problema e a justificação de sua inclusão no
currı́culo se deve a que ele é ilustrativo de técnicas importantes que têm valor por sı́ próprias,
como o método da tangente, a procura binária, e o método da secante e a recursividade.
O problema é velho e atual, como veremos na discussão, é “atual” no sentido que nós não
sabemos resolvê-lo.
Resolver esta equação computacionalmente, é bastante difı́cil, e iremos, no momento apropriado, indicar quais os problemas envolvidos. A saı́da, computacional, é resolver a desigualdade
|f (x)| < ǫ
para um valor adequado para ǫ. Veremos que isto é insuficiente e irrealista, apesar de ser
naturalmente a saı́da matemática.
Iremos salientar como os métodos computacionais, associados a estas ántigas metodologias,
as tornam mais ágeis.
O plano do trabalho é:
• mostrar e exemplificar o problema;
• apresentar uma primeira solução computacional, simples, ingênua mesmo,
usando varredura eliminando parte do problema;
• mostrar uma solução mais efetiva;
• apresentar os métodos, método da secante e o método da tangente e imergir
estes métodos em metodos computacionais;
• vamos estudar dois métodos matemáticos importantes, busca binária e
sucessões recursivas;
28
29
CAPÍTULO 2. RAÍZES APROXIMADAS
• apresentar ao final o problema completo, mas, obviamente, não, a solução.
É interessante observar que a primeira parte, a solução ingênua e simples
fará parte integrante da solução final. Também faremos uma afirmação: este
problema, a determinação das raı́zes, nos ensina uma lição, que os humanos são
companheiros dos computadores na busca de soluções. . .
2.1
Raı́zes de uma função por varredura
Queremos determinar todos os pontos a tal que
f (a) = 0 ; a ∈ [α, β]
isto é, todas as raı́zes de f no intervalo [α, β].
Veja a figura (fig. 2.1) que mostra uma função 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 você deveria começar se perguntando: e porque nos interessária um
deteminado intervalo, e não o conjunto mais amplo em que uma função tivesse
raı́zes ?
A resposta para esta pergunta, absolutamente lógica, é que existem conjuntos que são os domı́nios naturais para uma função dentro de um problema em
que ela aparece. Neste caso seria uma perda tempo procurarmos propriedades
desta função num conjunto mais amplo.
CAPÍTULO 2. RAÍZES APROXIMADAS
30
Uma outra forma de responder, seria, quando definimos uma função, necessáriamente estipulamos um domı́nio de validade para a mesma.
Será neste domı́nio que iremos procurar as raı́zes da função.
2.1.1
Um método computacional: varredura
Um método computacional básico, para resolver esta questão, e várias outras
que você vai encontrar neste livro, é varredura.
Existe um paradoxo muito conhecido, de Zenon, resolvido por Aristóteles,
em que Aquiles persegue uma tartaruga. Aquiles corre a um metro por segundo
enquanto que a tartaruga corre a 0.1 metro por segundo, mas a tartaruga parte
de um ponto mais avançado, a 0.9 m mais a frente.
O paradoxo estabelece que Aquiles somente pode atingir a tataruga depois
de percorrer o espaço percorrido por esta (e aqui está o paradoxo):
• Aquiles parte do ponto 0 e a tartaruga parte do ponto 0.9;
• quando Achile atingir o ponto 0.9 a tartaruga já não está mais lá;
• nova corrida começa, agora com Aquiles no ponto 0.9 e a tartaruga no
ponto 0.91 e quando ele atingir o ponto 0.91 a tartaruga já não está mais
lá . . . e assim nova corrida começa, [14, lógica, Stanford].
Podemos inventar outra forma equivalente deste paradoxo com uma tartaruga que aos poucos fosse ficando cansada com a corrida.
A tartaruga começa uma corrida e no primeiro dia corre a metade do percurso oficial, no segundo dia corre a metade do que ficou faltando e assim,
sucessivamente, segue correndo sempre a metade do que estiver faltando nos
dias seguintes. Serve para ilustrar que nunca a tartaruga terminaria a corrida...
Aqui vamos usar a idéia para convencê-lo de que por menor que for o passo,
não será possı́vel percorrer todos os pontos de um intervalo.
Em vez de falar em percorrer, coisa impossı́vel, vamos falar em varrer. Aquiles pode varrer o espaço a sua frente e passará pela tartaruga em algum ponto no
caminho, mas pode sempre acontecer, dependo do passo escolhido, que nunca
Aquiles encontre a tartaruga.
E não há nenhum paradoxo nesta questão, assim como o paradoxo de Aquiles
nada mais é do que uma forma enganosa de colocar a questão. Não existe
nenhum paradoxo de Aquiles.
Problema 1 Nunca encontrar o zero de f
Este é o problema básico, sem nenhum paradoxo, é simplesmente pouco
provável que encontremos x tal que f (x) = 0.
Para fazer uma varredura de uma região vamos colocar uma malha de nós
sobre esta região.
Pense numa rede de pesca, mas nos interessam apenas os nós da rede . . .
A região Ω (pode ser uma região da reta, do plano ou do espaço), e queremos escolher um conjunto de nós, definindo a malha, associada a esta região.
Existe um conceito vizinho a este denominado de partição.
31
CAPÍTULO 2. RAÍZES APROXIMADAS
Malha associada a um intervalo
Vamos começar com o caso unidimensional.
Acompanhe a descrição do método com a figura (fig. 2.2) página 32.
1. Malha uniforme associada a um intervalo I = [α, β]
(a) A precisão da malha - a norma
Considere um intervalo I = [α, β]
A medida deste intervalo é
m([α, β]) = β − α
e a dividimos por um inteiro n que representa a precisão com que
faremos os cálculos.
A norma da malha1 é
β−α
.
(2.1)
∆x =
n
Quando a malha for uniforme este conceito perde sentido, é a medida de qualquer sub-intervalo. Ele é importante quando as malhas
não são uniformes porque serve para controlar a distribuição quaseuniforme dos nós, impedindo que uma grande de quantidade de nós
se concentre em uma pequena sub-região.
(b) nós da malha Podemos agora definir os nós como os elementos de
uma progressão aritmética
α = x0 , x1 , · · · , xn = β
(2.2)
x0 = α,
x1 = α + ∆x,
(2.3)
(2.4)
x2 = α + 2∆x, · · · ,
xk = α + k∆x, · · · ,
(2.5)
(2.6)
· · · , xn−1 = α + (n − 1)∆x,
xn = α + n∆x = β
(2.7)
(2.8)
Em geral desprezamos um dos extremos, deste conjunto de nós,
• desprezamos o último nó
(xk )n−1
k=0 = x0 , x1 , · · · , xn−1 = β − ∆x
x0 = α, x1 = α + ∆x, x2 = α + 2∆x, · · · ,
xk = α + k∆x, · · · ,
xn−1 = α + (n − 1)∆x
ou
1 ou
norma da partição
(2.9)
(2.10)
(2.11)
(2.12)
32
CAPÍTULO 2. RAÍZES APROXIMADAS
• desprezamos o primeiro nó
(xk )nk=1 = x1 = α + ∆x, · · · , xn = β
x1 = α + ∆x, x2 = α + 2∆x, · · · ,
xk = α + k∆x, · · · , xn−1 = α + (n − 1)∆x,
xn = α + n∆x = β
(2.13)
(2.14)
(2.15)
(2.16)
Veja na figura (fig. 2.2) página 32,
I
k
xn
x0
x1
Partição do
intervalo I
Figura 2.2:
Partição do intervalo I
Algumas vezes preferimos salientar que este processo criou uma coleção
de sub-intervalos
I0 = [x0 , x1 ),
I1 = [x1 , x2 ), . . . ,
(2.17)
(2.18)
In−1 = [xn−1 , xn ]
I0 ∪ I1 ∪ · · · ∪ In−1 = I
(2.19)
(2.20)
cuja uni~
ao é o intervalo I sendo estes sub-intervalo disjuntos. Esta
coleção de sub-intervalos é o que chamamos uma partiç~
ao de I
Em Matemática gostamos de pensar que “escolhemos uma coleção
arbitrária de pontos”
x0 , x1 , x2 , . . . , xn−1 , xn ∈ I
(2.21)
CAPÍTULO 2. RAÍZES APROXIMADAS
33
mas, para tornar computacional uma partição é preciso estabelecer
uma equação, para o elemento genérico coisa que os computadores
entendem.
Se a sucessão (xk )nk=1 formar uma progressão aritmética, dizemos que
temos uma malha uniforme (ou uma partição uniforme). Esta será a
nossa preferência neste livro: partições uniformes.
Usamos, então, ∆x como a razão de uma progressão aritmética cujo
primeiro termo é x0 = α
xk = α + k∆x
(2.22)
como já descrevemos.
Esta expressão aparecerá com frequência neste livro.
Observação 2 Aprendendo a ler ou a programar
O programa raizes01.c, [20, programas.tgz], é um implementação deste
método, mas ele faz um pouco mais do que isto, procura algumas raı́zes.
Leia o programa sem stress.
É lendo programas que a gente aprende a programar, assim como é lendo
os autores clássicos que a gente aprende a escrever.
Mas nem aprendemos a escrever apenas lendo como não aprenderemos
a programar apenas lendo programas. É preciso aprender a alterar os
programas.
Não tenha medo de fazê-lo. Não se preocupe com estragar o programa, o
original se encontrará, sempre, à sua disposição na página ou no CD.
2. Malha não uniforme Vamos descrever o que seria construir uma malha
não uniforme, mas não faremos nenhum uso para este tipo de malha neste
livro, imediatamente.
A construção de malhas uniformes conduz a seleção de uma razão como
a que se encontra na equação (1), e de uma progressão aritmética que se
encontra na sucessão de equações que iniciando em (2), ou do conjunto de
intervalos, todos com mesma medida que apresentamos nas equações que
começam com (17).
No capı́tulo 0 e no capı́tulo 0 vamos usar malhas não uniformes, elas aparecerem naturalmente quando pensamos em aplicações do tipo coleta de dados feitas por sensores distribuidos ao longo do percurso de um fenômeno.
Neste momento seria artificial dividir este percurso em partes iguais, estabelecendo um passo ∆x porque tais caminhos tem pontos crı́ticos que
merecem atençao especial onde haverá uma concentração de sensores. Um
exemplo tı́pico seria a análise do tráfego numa rodovia em que eventos
como curvas, cidades ou vilarejos, acidentes geográficos exigiriam um levantamento especial de dados.
CAPÍTULO 2. RAÍZES APROXIMADAS
34
A resposta para este tipo de necessidade vem com um arquivo de dados
em que os nós estão definidos pela posição dos sensores.
A esta altura do texto é também um pouco artificial esta discussão que
preferimos relegar para o momento certo, apenas declarando aqui teremos
necessidade de malhas não uniformes. Se o leitor precisar de imediatamente ver este ponto, recorra aos capı́tulos 0 ou 0 ou procure no ı́ndice
remissivo ao final do livro.
Descrevemos assim malhas unidimensionais. Vamos descrever, na próxima
secção, como construir malhas bidimensionais.
Malhas bidimensionais
1. Malha associada a uma região do plano Selecionar malhas para regiões de
dimensão maior que 1 geralmente é mais trabalhoso. No caso unidimensional não há muitas escolhas mas nos casos pluridimensionais há vários
problemas a serem considerados.
Analise um caso simples, representado pela figura (fig. 2.3) página 35, e
acompanhe com a figura, as definições que faremos.
Começaremos supondo que se trata de uma região Ω limitada.
Quer dizer que existem quatro números reais: α1 , α2 , β1 , β2 tal que Ω é
um subconjunto do produto cartesiano de dois intervalos:
Ω ⊂ [α1 , β1 ] x [α1 , β1 ]
(2.23)
e então criamos uma malha em cada um dos intervalos:
∆x =
β1 − α1
β2 − α2
; ∆y =
n
n
(2.24)
• Agora o produto cartesiano dos dois conjuntos de nós em cada intervalo, define um conjunto de nós no plano, uma malha no plano;
• temos que selecionar um sub-conjunto desta malha que fique no interior de Ω, veja a figura (fig. 2.3).
Se Ω for definido por uma expressão algébrica, pode ser simples a seleção
automática dos nós que esteja no seu interior.
Frequentemente este é um outro problema a ser resolvido, mas este livro
vai lhe apresentar, no capı́tulo 0 uma técnica, aproximação polinomial,
que pode fornecer a equação algébrica determinando o contorno de uma
figura como (fig. 2.3) a partir de uma coleta de dados como uma fotografia
aérea, por exemplo, ou um conjunto de medições tomadas no próprio local.
Veja na figura (fig. 2.3), um domı́nio, Ω, do plano, em que colocamos uma
malha e fizemos a seleção dos pontos da malha que se encontram dentro
do domı́nio.
35
CAPÍTULO 2. RAÍZES APROXIMADAS
β
2
α
2
α
β
1
1
Malha sobre uma
região do plano
Figura 2.3:
Malha sobre uma região do plano
Um elemento genérico da malha tem por equação
xi,j = (xi , yj ) ; i = 0, . . . , n − 1 ; j = 0, . . . , n − 1
em que estamos ignorando os pontos que se encontram na última linha da
malha (tanto na horizontal como na vertical).
Se usarmos o mesmo método da progressão aritmética, que já usamos com
malhas sobre um intervalo, (eq.1) teremos
xi,j = (α1 + i∆x1 , α2 + j∆x2 );
∆x1 =
∆x2 =
β1 −α1
;
n
β2 −α1
;
n
(2.25)
(2.26)
(2.27)
Também podiamos considerar números de pontos diferentes na horizontal
e na vertical, neste caso, usariamos as variáveis n, m para designar estas
quantidade e nos denominadores, das frações nas equações (26), (27).
Estamos usando a hipótese de que é possı́vel selecionar os pontos com
uma decisão algébrica, realmente isto pode ser complicado de fazer e não
conhecemos um algoritmo genérico para tratar deste caso, mas os métodos
do capı́tulo 0 podem resolver esta questão.
Neste livro usaremos malhas em dimensão maior do que um apenas no cálculo
de integrais multivariadas no capı́tulo 0. É entretanto conveniente, pelo menos
CAPÍTULO 2. RAÍZES APROXIMADAS
36
mostrar ao leitor, onde ele pode fazer uso de malhas multidimensionais e uma
pista de como encontrar a solução para os problemas envolvidos.
Tais situações podem ser facilmente encontradas como aplicações do cálculo
aproximado de integrais.
Exemplo 2 Uso de malhas multidimensionais
1. População de microrganismos numa lâmina. Sabendo que os microrganismos a serem estudados são capazes de um certo tipo de reação, é possı́vel
pintá-los com uma solução quı́mica que fará com que eles respondam a
reação quı́mica com um comprimento de onda, que habitualmente chamamos de cor. Cada um dos pontos da figura (2.3) pode ser descrito como
aquele que o sensor captou como estando na faixa de comprimento de onda
que identifique a presença dos microrganismos que interessa.
Depois podemos contar a quantidade de microrganismos calculando a área
da região que eles ocupam. O biólogo deve, experimentalmente, descobrir
uma constante especı́fica que permita transformar esta área na quantidade
microrganismos presentes na lâmina.
2. Fotografia de satélite de região urbana. A figura (2.3) pode representar
uma região fotografada por um satélite e novamente, via comprimento de
onda, se pode detectar intensidade construções urbanas, florestas etc...
Neste caso a fotografia pode ser feita sob emissão de uma onda com uma
comprimento particular, ver [14, onda], objetivando obter um determinado
resultado: florestas, construções urbanas, determinados tipos de poluição.
Novamente o cálculo da área da região determinada vai permitir uma avaliação da região urbana, da floresta, ou da quantidade de poluição que se
estiver observando. Aqui também constantes especı́ficas permitem a transformação da área nas quantidades que seja deseja determinar.
No capı́tulo 0 vamos estudar o cálculo aproximado das integrais.
Estes exemplos são bastante genéricos e mostram a amplitude do uso de
integrais multivariadas.
Estas aplicações fogem ao planejamento deste livro mas se o leitor precisar, encontrará aqui meios para fazer estas aplicações, se puder contar com
informações sobre as constantes mencionadas nos exemplos, na literatura especializada.
Pelo menos um método para cálculo de integrais multivariadas será visto no
capı́tulo 0.
Malhas num programa de computador
Dentro de um programa de computador, podemos implementar a progressão
aritmética definida na (eq.1 )
37
CAPÍTULO 2. RAÍZES APROXIMADAS
x=α
enquanto (x < β)
// (1)
// (2)
{
x = x + ∆x
}
// (3).
1. o ponto inicial
2. a lógica que controla o laço
3. a progressão aritmética que define os nós da malha
Este pequeno programa não faz nada, visı́vel ! Seria preciso um “comando”
para guardar, num arquivo, no disco, os elementos da progressão aritmética ou
fazê-los aparecer na tela do computador:
(1)
∆x = β−α
n
x=α
enquanto (x < β)
// (1)
// (2)
{
x = x + ∆x
imprima(x)
}
// (3).
// (4)
1. dando valores iniciais as variáveis
2. a lógica que controla o laço
3. a progressão aritmética que define os nós da malha
4. o comando para imprimir na tela os elementos da progressão aritmética
O caso de malhas multidimensionais, num programa, consiste em encadeiar
laços semelhantes a estes que apresentamos acima para o caso unidimensional,
não tem segredo, outro, que dominar a definição do domı́nio, e como já dissemos
este pode ser um problema especial: considere um lado dentro de uma região,
ele pode representar um buraco em que você não deseja ou não poderá obter
informações. Mas o tal lago pode representar informações preciosas num estudo
de reações climáticas da mesma região. . .
2.1.2
Procura de raı́zes por varredura
Temos as ferramentas para fazer a nossa primeira pesquisa de raı́zes de uma
função. Vamos discutir uma solução simples e intuitiva do problema.
Vamos varrer um intervalo [α, β] procurando quando os valores de f sejam
menores que um erro escolhido. Pela discussão feita acima sobre o chamado
paradoxo de Aquiles, não vale a pena procurar quando f (x) = 0, porque a
probabilidade de que Aquiles encontre a tartaruga, é a mesma de encontremos
x tal que f (x) = 0, é muito pequena praticamente nula.
38
CAPÍTULO 2. RAÍZES APROXIMADAS
Como no caso de Aquiles, é melhor procurar saber quando tivermos passado
pela tartaruga:
(2.28)
|f (x)| > ǫ
Um primeiro “programa” seria:
∆x = β−α
[1]
n
x=α
enquanto (x < β)
[1]
[2]
{
se (|f (x)| < ǫ) escreva x, f (x);
x = x + ∆x
}
[3]
[4]
Este livro não pode oferecer-lhe técnicas de programação, sem fugir dos seus
objetivos, mas algumas sugestões podem ser encontradas aqui. Uma delas é
básica: construa programas que executem tarefas especı́ficas e bem restritas,
depois cole os programas para produzir um algorimo mais complexo, quando
tiver certeza de que todas as etapas anteriores foram bem testadas.
Outra forma de fazer programas eficientes consiste em partir de um programa
como este que está acima e ir acrescentando ao programas novas rotinas. Mesmo
neste caso vale a observação anterior: teste as rotinas separadamente antes de
incluı́-las no programa.
Esta metodologia se presta para o trabalho em equipe.
Descrição das etapas do programa
1. valores iniciais para as variáveis
2. a lógica que controla o laço
3. o teste para encontrar as raı́zes aproximadas
4. a progressão aritmética que define os nós da malha
Exemplo 3 Procura de raı́zes
Todos os exemplos apresentados aqui foram executados com programa
raizes01.c
que pode ser obtido aqui,[20, programas.tgz], ou no CD que acompanha este
livro. Em seguida lhe apresentamos uma lista de exercı́cios em que você será
convidado a usar o programa para repetir estes exemplos e construir outros para
melhorar a sua compreensão do assunto.
1. Raiz de f (x) = x2 no intervalo [−1, 1]
Rodamos um programa que implementa o algoritmo acima. O programa
solicita os pontos inicial e final do intervalo de busca, e pede a norma da
malha, depois o programa usa a própria norma da malha no teste
|f (x)| < ǫ = ∆x
CAPÍTULO 2. RAÍZES 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 há valores aproximados para a raiz
da função, e escreve o valor de f em cada extremo do intervalo:
• [−0.1, 0]
• [0, 0.1]
Aqui você já pode ver uma dificuldade na determinação de raı́zes aproximadas, 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 é o problema intitulado separação das raı́zes . O nome não é dos
melhores porque, como você vê, acima, não há duas raı́zes e sim uma única
que foi apresentada como aparecendo em dois intervalos consecutivos.
A figura (fig. 2.4) página 40, pretende ilustrar o problema descrito no
exemplo. Uma malha muito fina levará o programa a encontrar vários
pontos que satisfazem a desigualdade.
Este é um dos principais problemas em Cálculo Numérico: nós não sabemos fazer programas que possam funcionar sozinhos.
Temos que monitorar o resultado dos programas e selecionar, dentre as
possibilidades por eles encontradas, quais são interessantes. Este mesmo
programa poderia não encontrar nenhuma raı́z no intervalao indicado, se
usarmos um valor muito pequeno para ǫ. Veja o resultado se modificarmos
o programa com ∆x 6= ǫ
Forneca-me o intervalo [a,b] para busca de raizes:
a = -1 b = 1
40
CAPÍTULO 2. RAÍZES APROXIMADAS
f
|y| < r
Figura 2.4:
Vários representantes da única 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 não conseguiu encontrar nenhuma raiz, observe porque.
• 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 somente
no interior do intervalo [−0.1, 0.2] é 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:
CAPÍTULO 2. RAÍZES 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 os
dois extremos de cada intervalo, teria achado também uma raı́z no intervalo [−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]
CAPÍTULO 2. RAÍZES 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 função tem uma única raı́z, no ponto x = −1 e o programa encontrou
vários intervalos em que o valor de |f (x)| < ǫ. Rodando o programa
novamente, 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
CAPÍTULO 2. RAÍZES APROXIMADAS
valor de f no ponto -0.990002
43
--> 0.029401
O programa conseguiu isolar um único intervalo com uma raı́z aproximada.
Os exemplos acima mostram as dificuldades que temos para resolver o problema de encontrar as raı́zes de uma função usando varreduras. Depois veremos
que, com técnicas mais refinadas, poderemos evitar estes erros.
Porém os programas podem ainda, deixar de encontrar raı́zes, mesmo que
elas existam o que nos obriga a monitorar o funcionamento dos programas para
dirigir 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 instruções
de como compilar e rodar um programa.
2. Você pode repetir as experiências registradas aqui rodando o programa
raizes01.c. A função cujas raı́zes estão sendo procuradas, está definida
dentro do programa, ao final. Troque a equação para executar os seus experimentos e depois compile e rode o programa. Dentro do programa, no
inı́cio há instruções de como compilar e rodar o programa.
3. Rode raizes01.c com f (x) = x2 no intervalo [−3.2, 3] com passo 0.3
e erro máximo 0.001. O programa vai dizer-lhe que nenhuma raiz foi
encontrada. Analise por que ?
4. Rode raizes01.c com f (x) = x2 no intervalo [−3, 3] com passo 0.3 e erro
máximo 0.001. Agora o programa vai encontrar um intervalo onde há uma
raiz.
5. Rode raizes01.c com f (x) = x no intervalo [−3.2, 3] com passo 0.3 e erro
máximo 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 e
erro máximo 0.01. O programa vai encontrar vários sub-intervalos onde
há raı́zes.
Nos exercı́cios, a busca de raı́zes, com uma mesma função um programa
produz diversos resultados. A figura (2.4) oferece uma boa descrição geométrica
para este problema:
• uma malha com passo muito fino e com erro (módulo máximo) relativamente muito grande, apresenta vários nós em que a desigualdade é verificada;
• se o erro, (módulo máximo) for relativamente muito pequeno nenhum dos
nós da malha vai satisfazer a desigualdade.
CAPÍTULO 2. RAÍZES APROXIMADAS
44
Observe que usei o advérbio “relativamente” para qualificar os adjetivos
grande ou pequeno porque as grandezas são relativas a algum referencial. Você
talvez precise de fazer algumas experiências com o programa raizes01.c para
compreender o problema descrito nesta seção.
Na próxima seção 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
Análise do programa raizes01.c
Analise o que acontece com a função 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 não 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 função
troca de sinal.
45
CAPÍTULO 2. RAÍZES APROXIMADAS
Este método nos livra do relativismo2 . Quando uma função contı́nua trocar
de sinal em um intervalo, neste intervalo há um ponto (pelo menos) em que a
função vai se anular.
Se introduzirmos esta pequena melhora no programa ele irá encontrar uma
raiz 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
x=α
enquanto (x < β)
[1]
[1]
[2]
{
se (|f (x)| < ǫ) ou (f (x)f (x + ∆x) ≤ 0 )
{escreva x, f (x)};
x = x + ∆x
}
[3]
[4]
Comentando as etapas do programa
1. valores iniciais para as variáveis
2. a lógica que controla o laço
3. o teste para encontrar as raı́zes aproximadas tanto a verifica se módulo de
f é pequeno:
|f (x)| < ǫ
como também verifica se f troca de sinal no intervalo:
f (x)f (x + ∆x) ≤ 0
O operador lógico ou “pesca” se uma destas condições for satisfeita.
4. a progressão aritmética que define os nós 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
2 tamanho
é um conceito relativo, depende de um referencial...
CAPÍTULO 2. RAÍZES 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 função troca de sinal, no outro
a função é 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 para
que o programa identificasse um único intervalo onde há raı́z da função. Monitorando o programa conseguimos obter um resultado preciso.
Se você não souber programar, ou não tiver acesso a um computador, se
tudo que você tiver for uma máquina de calcular, o algoritmo analisando a
troca de sinal é o ideal. Depois de verificar num intervalo “grande” que f troca
CAPÍTULO 2. RAÍZES APROXIMADAS
47
de sinal, você pode refinar sua pesquisa em sub-intervalos deste até encontrar
um 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 instruções
de como compilar e rodar um programa.
2. Leia o programa raizes011.c. Leia o comentário (10) que lhe explica que
o problema tem dados pre-definidos que você pode aproveitar na primeira
vez que rodar o programa.
3. Leia o comentário (30) e elimine o teste do módulo máximo. Verifique
que alguma raiz pode ser perdida, dependendo da equação que você estiver
usando. Experimente vários tipos de equações. Leia o comentário (50).
4. Altere o programa a vontade, deve haver uma cópia em disco para você
retornar à versão original... faça suas experiências.
2.3
Raı́z do tipo secante
Falamos na troca de sinal para encontrar raı́zes de funções. A forma clássica é o método
das secantes que vamos estudar mais a frente. Como preparação para os métodos clássicos
vou fazer uma análise dos tipos de raı́zes que irei classificar como do tipo secante e do tipo
tangente. Primeiro vamos discutir as raı́zes do tipo secante.
Vamos nos aprofundar na análise de quando uma função se anula. São
desafios interessantes que temos pela frente. Os gráficos podem ter curvas e
neste caso encontrar as raı́zes exige mais domı́nio do assunto.
Observe o que nos diz a figura (fig. 2.5) página 48,
O gráfico da função f “corta” o eixo OX em dois pontos.
• Raı́z por tangência Uma desta raı́zes é do tipo “tangente”, veja o gráfico,
(fig. 2.5).
O gráfico de f tangencia o eixo OX, no ponto x1 e corta o eixo OX no
ponto x2 .
– x1 é um ponto de tangência, uma raiz em que
f ′ (x1 ) = 0.
(2.30)
e não seria possı́vel obter esta raı́z pelo método das secantes neste
ponto porque neste ponto (nesta raı́z) f não troca de sinal. Aparentemente a única forma de encontrar esta raı́z é usando o teste
|f (x)| < ǫ
(2.31)
Num ponto de tangência, como x1 , o gráfico pode ser comparado
com o gráfico de uma parábola em que ∆f << ∆x. O sı́mbolo <<
48
CAPÍTULO 2. RAÍZES APROXIMADAS
Esta raíz é possível
de se determinar pelo
método das secantes
raíz aproximada
obtida pelo método
das secantes
f
x
1
x
2
raíz impossível
de se obter pelo
método das secantes
Figura 2.5:
O método das secantes
se lê “muito menor do que. A tal ponto ∆f << ∆x que o quociente
3
∆x1 (f ) = ∆f
∆x tem limite zero, quando ∆x representar o zero . A
derivada é zero. Vou tratar deste caso na próxima seção. Vamos
ver que existe outra maneira de encontrar esta raiz sem ser com a
desigualdade
(2.32)
|f (x)| < ǫ
que já sabemos que é problemática porque depende de valor “relativamente pequenos”, coisas com que programas não podem lidar de
forma efetiva.
– Raı́z por secância o ponto x2 é um ponto de secância do gráfico com
o eixo OX e vou me especializar neste caso agora.
A outra raı́z é do tipo “secante”, o gráfico graf (f ) corta o eixo OX de
forma semelhante a uma reta, neste ponto (nesta raı́z) f troca de sinal.
Aqui o teste
|f (x)| < ǫ
(2.33)
funciona mal porque é difı́cil comparar o tamanho de |f (x)| com o tamanho
de ∆x e desta forma fica difı́cil definir um erro ǫ adequado.
3 ou,
como ainda se diz, “quando ∆x tender a zero”
49
CAPÍTULO 2. RAÍZES APROXIMADAS
É hora de observar que igualdades e desigualdades são sempre difı́ceis de
serem obtidas com programas, e a razão está descrita acima, a dificuldade
de comparar tamanhos.
É mais simples e prático usarmos o teste da troca de sinal
f (x)f (x + ∆x) ≤ 0
(2.34)
porque se o zero x2 ∈ [x, x+∆x] então f terá sinais diferentes nos extremos
do intervalo.
2.3.1
Método da secante
O chamado método da secante consiste em substituir o gráfico de f , num intervalo em que haja troca de sinal, pela reta secante obtida com os valores de f
nos extremos do intervalo.
Notação: Vamos designar por [a, a + ∆x] um intervalo que descobrimos4 em
que f troca de sinal.
Veja o gráfico (fig. 2.5), página 48, e observe o ponto x2 . Na figura estou
salientando que a raiz da equação do primeiro grau que representa a reta secante,
é uma aproximação da raiz de f .
Queremos obter a raiz da função do primeiro grau cujo gráfico passa no
pontos
(2.35)
(a, f (a)), (a + ∆x, f (a + ∆x))
então precisamos da equação da reta que passa por estes dois pontos. Relembrando a equação da reta que passa num ponto com coeficiente angular m dado
chegamos à equação que nos interessa:
m=
f (a+∆x)−f (a)
a+∆x−a
=
f (a+∆x)−f (a)
∆x
=
∆a f
∆x
y − f (a) = m(x − a)
fazendo y = 0 em y − f (a) = m(x − a)
(a)
y = 0 ⇒ x − a = − fm
s0 = a −
f (a)
m
(2.36)
(2.37)
(2.38)
(2.39)
(2.40)
a raı́z aproximada que estamos procurando é
s0 = a −
4 Não
f (a)
m
(2.41)
se esqueça de que chegamos até aqui dentro de um programa que fez uma varredura apenas testando troca de sinal e agora vamos entrar numa sub-rotina chamada
procura raiz secante()
50
CAPÍTULO 2. RAÍZES APROXIMADAS
Não se perca com a mudança de notação.
Chegamos aqui, olhe a figura (fig. 2.5), página 48, porque sabemos que existe
um ponto designado por x2 que é a raiz exata que gostariamos de encontrar.
Resolvemos uma equaçao do primeiro grau para encontrar a raı́z da reta secante
e estamos chamando s0 ao primeiro ponto de uma sucessão de pontos que
esperamos que convirjam para a raı́z
s n → x2
(2.42)
x2 é o limite da sucessão sn
Ao iterarmos este processo vamos criar a sucessão (sn ) referida acima. Precisamos re-escrever as equações acima alterando a notação de forma a sermos
conduzidos a uma expressão (matemática) adequada. Depois vou transformar
as equações matemáticas no algoritmo computacional que é muito mais simples,
e se você preferir (não deve) pode saltar direto para o algoritmo computacional.
Repetindo (e alterando a notação) temos:
a0 = a; b0 = a0 + ∆x;
m0 =
y − f (a0 ) = m0 (x − a0 )
y = f (a0 ) + m0 (x − a0 )
f (b0 ) − f (a0 )
b0 − a0
(a0 )
y = 0 ⇒ s0 − a0 = − f m
0
(2.43)
(2.44)
(2.45)
(2.46)
(2.47)
uma raı́z aproximada inicial
s0 = a0 −
f (a0 )
m0
(2.48)
a única modificação foi que designamos por m0 o coeficiente angular da reta
secante 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 a
notação.
Leia com calma e verá que é verdade, não foi para complicar, foi para tornar
mais claro (padronizar).
Porque agora vamos considerar um segundo intervalo, um sub-intervalo deste
primeiro.
Veja a construção 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)
51
CAPÍTULO 2. RAÍZES APROXIMADAS
• certamente há uma troca de sinal em um destes intervalos porque havia
troca de sinal no intervalo primitivo
(2.50)
[a0 , b0 ];
Problema
Pode haver mais de uma troca de sinal e isto pode representar um complicador para o algoritmo, o programa pode simplesmente se perder em buscas
indefinidas... Logo diremos como podemos controlar este problema.
Mas vamos supor a situação mais benignaa e para depois procurar melhores
algoritmos.
a é a técnica que estamos utilizando, montamos a teoria usando os casos simples, depois
iremos testá-la e procurar algoritmos mais robustos
• Testamos a troca de sinal e no intervalo onde ela se verificar, traçamos5
nova reta secante usando os extremos para determinar agora o ponto s2
da sucessão:
a0 = a; b0 = b;
(2.51)
Se f (a0 )f (s0 ) ≤ 0
então b1 = s0 ; a1 = a0 ;
(2.52)
(2.53)
senão b1 = b0 ; a1 = s0 ;
(2.54)
m1 =
f (b1 )−f (a1 )
b1 −a1
(2.55)
y=0
y = r1 (x) = f (a1 ) + m1 (x − a1 ) ⇒
⇒ x = s1 = a1 −
f (a1 )
m1
(2.56)
(2.57)
• iteramos este processo para encontrar
an , bn , mn =
f (bn )−f (an )
bn −an
(2.58)
y=0
y = rn (x) = f (an ) + mn (x − an ) ⇒
⇒ x = sn = an −
f (an )
mn
até que o teste
|f (sn)| < ǫ
em que ǫ é a precisão com que desejamos calcular a raı́z.
5 não
“traçamos” nada, apenas calculamos a raı́z da equação do primeiro grau
(2.59)
(2.60)
CAPÍTULO 2. RAÍZES APROXIMADAS
52
Observação 3 Você pode fazer isto com calc
A linguagem de programação calc é injustamente chamada de C interpretado, é uma outra linguagem de programação que tem uma precisão infinita,
coisa que C não tem. Mas se parece com C e pode servir para fazer protótipos
de programas em C.
Veja uma sessão para obter a sucessão de raı́zes de uma função. Depois
que você rodar o script do calc, volte e releia as contas matemáticas que vão
da equação (51) até a equação (60) a respeito das quais você, provavelmente,
pensou que o autor estava complicando, para ver que é, exatamente, o que a
máquina 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 é 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
53
CAPÍTULO 2. RAÍZES APROXIMADAS
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 notação matemática tem que passar por pelas quatro sucessões
(an )n , (bn )n , (mn )n , (sn )n
que irão definir os novos sub-intervalos que iremos encontrar.
A notação computacional nos permite calcular as raı́zes, com um programa,
e a notação matemática nos permite provar que ela existe.
São duas coisas distintas e somente podemos rodar programas se pudermos
provar que eles chegarão em algum resultado. O contrário é inócuo.
No capı́tulo 0 vamos discutir melhor os métodos matemáticos que determinam as raı́zes dentro de um quadro mais geral. Todos os métodos que estamos
usando aqui são recursivos e o o capı́tulo 0 vai discutir recursividade. Claro,
você pode, e deve, chegar até o o capı́tulo 0 agora para entender melhor o que
estamos fazendo e começar a ler sobre este outro assunto. O livro está departamentalizado por uma questão de organização, mas você não precisa ficar preso
a estas paredes.
Vou transformar o método matemático no algoritmo computacional, até
mesmo porque você poderá rodar o algoritmo e isto lhe servirá de motivação
para entender melhor o método matemático.
O algoritmo do método da secante I
Comece analisando a figura (2.6) página 54, que é um fluxograma, um planejamento visual que fazemos antes de escrever um programa.
No centro da figura (2.6) você pode observar um caminho, indicado pelas
seta que sai do “diamante” que representa o teste de parada do programa
|f (a)| > epsilon
(2.61)
que é uma mistura de Matemática e computação.
Numa linguagem de computação deveria6 estar
(abs(f (a)) > epsilon)
Também não aparecem sn porque numa linguagem de programação os valores
se encontram em memórias cujos endereços estão associados a variáveis, e é isto
que o programador deve ver os nomes das variáveis (e não o endereço onde os
dados estão guardados).
6 em
Pascal a função valor absoluto é abs(), em C é fabsf()
54
CAPÍTULO 2. RAÍZES APROXIMADAS
f troca de sinal em
[a,b]
Método da secante
V
F
| f(a) | > epsilon
m = (f(b)−f(a))/(b−a)
r(x) = f(a) + m(x − a)
s é a raíz de r
a é a raíz
aproximada
com erro epsilon
V
b=s
f(s)f(a)<=0
F
a=s
Figura 2.6:
Fluxograma - método da secante
• Entramos no algoritmo quando descobrimos que há uma troca de sinal no
intervalo [a, b] e calculamos, sucessivamente, m, r(x), s.
• Somos levados agora ao teste que vai decidir em que intervalo há nova
troca de sinal
f (s)f (a) <= 0
(2.62)
• Um novo intervalo, onde se verifica a troca de sinal, é calculado:
– O teste resultando em verdadeiro o programa vai colocar o valor s
na memória apontada pela variável b.
– Se o teste resultar em falso o programa vai colocar o valor s na
memória apontada pela variável a.
Neste escolha a variável que não foi usada fica com o seu valor primitivo.
• Este novo intervalo continua sendo designado por [a, b] e se o teste de
parada do algoritmo, na equação (62), resultar em verdadeiro novo ciclo
vai ser efetuado. Se for falso significa que a precisão esperada já foi
atingida e portanto o algoritmo para.
55
CAPÍTULO 2. RAÍZES APROXIMADAS
• O programa escolhe quem vai ser indicada como raı́z aproximada, se é a,
ou s ou b, ou como em alguns dos nossos programas
a+b
2
pura questão de gosto do programador. Se o programador for mais exigente aplicaria o teste da (62) a estes quatro candidatos para escolher
aquele que ofereça uma precisão maior.
Matemática do Método da secante
Vamos repetir de forma suscinta, tanto os cálculos matemáticos como o algoritmo computacional nesta seção e na próxima.
Para construir a formulação matemática do método, vou mais uma vez retomar a sequência de equações em que calculei a raiz, alterando novamente a
notação. Repetindo (e alterando a notação) temos:
[a, a + ∆x] = [a0 , b0 ]
(2.63)
∆x0 = b0 − a0
(2.64)
y − f (a0 ) = m0 (x − a0 )
y = f (a0 ) + m0 (x − a0 )
(2.66)
(2.67)
m0 =
f (b0 )−f (a0 )
∆x0
y = 0 ⇒ s0 = a0 −
(2.65)
f (a0 )
m0
(2.68)
a primeira versão da raı́z aproximada que achamos foi
s0 = a0 −
f (a0 )
m0
(2.69)
Agora determinamos em qual dos sub-intervalos há troca de sinal (se houver
nos dois7 , o programa terá que se lembrar disto para fazer nova busca no outro
interval):
f (a0 )f (s0 ) ≤ 0 ; f (s0 )f (b0 ) ≤ 0
(2.70)
Vou simplificar a redação sob a suposição de que apenas um destes produtos
é negativo (mas fica claro que é uma simplificação e que o programa tem que ir
em busca da outra possibilidade).
se (f (a0 )f (s0 ) ≤ 0)[a1 , b1 ] = [a0 , s0 ]
senão [a1 , b1 ] = [s0 , b0 ]
7 observe
que isto significa que há mais de uma raiz no intervalo
(2.71)
(2.72)
CAPÍTULO 2. RAÍZES APROXIMADAS
56
o que nos levará a definir m1 e s1
[a1 , b1 ]
∆x1 = b1 − a1
)−f (a1 )
m1 = f (b1∆x
1
y − f (a1 ) = m1 (x − a1 )
−f (a1 ) = m1 (x1 − a1 )
s1 = a1 −
f (a1 )
m1
(2.73)
(2.74)
(2.75)
(2.76)
(2.77)
(2.78)
(2.79)
achamos assim a segunda versão da raı́z aproximada
s1 = a1 −
f (a1 )
m1
(2.80)
Podemos provar, usando indução finita, que
sn = an −
f (an )
mn
(2.81)
definindo as quatro sucessões,
ak , bk , mk =
f (bk ) − f (ak )
f (ak )
, sk = ak −
bk − ak
mk
(2.82)
Algoritmo do Método da secante II
A notação computacional é mais simples. Vamos usar a mesma técnica, copiando
a equação e alterando a notação. Repetindo (e alterando a notação) temos.
Simplesmente chamamos de [a, b] o intervalo onde foi detectada a troca de
sinal
[a, b] é o intervalo onde há troca de sinal
m=
f (b)−f (a)
b−a
y − f (a) = m(x − a)
(a)
y = 0 ⇒ x − a = − fm
x=a−
f (a)
m
(2.83)
(2.84)
(2.85)
(2.86)
(2.87)
a raı́z aproximada que estamos procurando, no primeiro passo é
x=a−
f (a)
m
e agora tomamos a decisão sobre a nova troca de sinal
(2.88)
CAPÍTULO 2. RAÍZES APROXIMADAS
f (a)f (x) ≤ 0 ⇒ [a, b] = [a, x]
f (x)f (b) ≤ 0 ⇒ [a, b] = [x, b]
57
(2.89)
(2.90)
e seguimos no laço com as variáveis tendo assumido os novos valores. Será
preciso um condicional para que o processo pare. Isto pode ser feito de duas
maneiras:
• com um contador estipulando-se o número máximo de iterações;
• testando em cada passo a precisão da raiz aproximada obtida.
O programas raizes013.c faz isto, rode e leia o programa.
2.4
A raiz num ponto de tangência
Vamos agora estudar como podemos descobrir a raiz quando ela for um ponto em que a
função tangência o eixo OX. O método consiste em usar a troca de sinal da derivada. Vou
começar mostrando alguns exemplos gráficos para ilustrar as dificuldades e como podemos
sair delas.
Para lhe dar uma visão da necessidade de um pouco mais de teoria, comece
resolvendo os exercı́cios seguintes sobre os quais eu farei comentários em seguida.
A figura (fig. 2.5) página 48 é a referência para as experiências que vamos
começar fazendo, nela há uma raiz num ponto de tangência do gráfico com o
eixo OX e o objetivo é produzir um programa que consiga descobrir esta raiz.
Exercı́cios 7 Usando raizes011.c
1. Edite o programa raizes011.c e escolha a função
f (x) = (x + 3)(x + 3)(x − 2)
que pode estar desligada (com o sı́mbolo de comentário) na versão que
você tiver do programa. Depois compile e rode o programa com os valores
pre-definidos que ele tem (dê “enter” em todas as perguntas do programa).
Analise o resultado.
2. Rode novamente o programa usando os valores pre-determinados, entretanto responda com o valor 0.1 para a precisão ǫ (quando o programa
solicitar o valor da variável epsilon). Observe que o resultado ficou diferente.
3. Rode novamente o programa usando os valores pre-determinados, mas escolha um valor grande para a norma da partição. Sugestão ∆x = 1.
Comentando os resultados do programa nas experiências que você fez usando
os valores pre-deteminados no programa.
CAPÍTULO 2. RAÍZES APROXIMADAS
58
• Quando ǫ = ∆x o programa encontrou diversas raı́zes que na verdade representam a mesma raiz exata x = −3. Veja uma réplica dos resultados
do programa captados8 por um editor de textos:
Forneça-me o intervalo [a,b] para busca de raizes:
a =
b =
Forneça-me o passo delta da malha para a busca:
Sugest~
ao 0.01 < delta
< 0.5
delta =
Forneça-me o erro epsilon (módulo máximo) :
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 (módulo máximo): 0.100000
=================================================
Aperte <enter> para continuar
Raı́z provável da funç~
ao no intervalo
[-3.100002,-3.000002]
valor de f no ponto -3.100002 é 0.051002
valor de f no ponto -3.000002 é 0.000000
Raı́z provável da funç~
ao no intervalo
[-3.000002,-2.900002]
valor de f no ponto -3.000002 é 0.000000
valor de f no ponto -2.900002 é 0.048998
Raı́z provável da funç~
ao no intervalo
[-2.900002,-2.800002]
valor de f no ponto -2.900002 é 0.048998
valor de f no ponto -2.800002 é 0.191996
Estas raı́zes representam todas a raiz x = -3 - são valores próximos de −3
que o programa captou. Achou também a raiz x = 2
Raı́z provável da funç~
ao no intervalo
[1.999998,2.099998]
valor de f no ponto 1.999998 é 0.000057
valor de f no ponto 2.099998 é -2.600939
• Quando ǫ << ∆x lhe sugeri no exercı́cio que você usasse 0.1 o programa
achou uma representação para cada uma das raı́zes existentes:
8 o editor de textos joe, permite que você rode programa dentro dele e consequentemente
pode captar os resultados do programa
CAPÍTULO 2. RAÍZES APROXIMADAS
59
Forneça-me o intervalo [a,b] para busca de raizes:
a =
b =
Forneça-me o passo delta da malha para a busca:
Sugest~
ao 0.01 < delta
< 0.5
delta = 0.3
Forneça-me o erro epsilon (módulo máximo) :
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 (módulo máximo): 0.100000
=================================================
Aperte <enter> para continuar
Raı́z provável da funç~
ao no intervalo
[-2.900000,-2.600000]
valor de f no ponto -2.900000 é 0.049000
valor de f no ponto -2.600000 é 0.736001
Raı́z provável da funç~
ao no intervalo
[1.900000,2.200000]
valor de f no ponto 1.900000 é 2.400998
valor de f no ponto 2.200000 é -5.408001
Vamos agora continuar as experiências agora usando o programa raizes012.c
Exercı́cios 8 Experiências com raizes012.c
1. Leia o programa raizes012.c e verifique se a função escolhida é f (x) =
(x + 3)(x + 3)(x − 2). Se não for selecione9 esta função cujo gráfico é
semelhante ao da figura (fig. 2.5).
2. Leia o programa raizes012.c. Ele é uma alteração de raizes011.c.
Leia também os comentários dentro do programa. Compile e rode o programa usando os valores predefinidos no programa. O programa escolhe,
ele mesmo, o valor da precisão ǫ, verifique isto. Veja o comentário (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 equação de f para f (x) = (x − 1)2 (1 +
7(x + 1)2 ). Observe que esta equação já se encontra no programa, mas
desligada por um comentário. Basta ligá-la.
9 voce pode “ligar ou desligar” uma expressão colocando ou apagando o sı́mbolo de comentário // na frente, não precisa apagar
60
CAPÍTULO 2. RAÍZES APROXIMADAS
5. Teste o programa com outras equações e nestes casos altere o intervalo de
busca. Isto pode ser feito dentro do programa ou respondendo às perguntas
que o programa fizer.
Vamos entender o método utilizado no programa raizes012.c. Num ponto
de tangência com o eixo OX a derivada troca de sinal e podemos nos aproveitar
disto para encontrar a raiz evitando a perigosa comparação
|f (x)| < ǫ.
(2.91)
Analise a figura (fig. 2.7), página 60. Vamos tirar algumas informações desta
figura.
• No ponto a temos uma raı́z do tipo tangente,
• e marcamos dois pontos, a−, a+, anterior e posterior10 , ao ponto a,
• fizemos os gráficos das retas tangentes em (a−, f (a−)), e (a+, f (a+)).
f
a
a−
a+
O coeficiente angular da
reta tangente é negativo
Figura 2.7:
O coeficiente angular da
reta tangente é positivo
Num ponto de tangência, tipo parabólico
• Você pode ver que antes e depois do ponto de tangência, o coeficiente
angular da reta tangente tem sinais diferentes:
sinal(∆a− (f )) 6= sinal(∆a+ (f ))
sinal( ∆f
∆x |a− )
10 a−,
6=
sinal( ∆f
∆x |a+ )
(2.92)
(2.93)
a+ são notações padrão em Matemática para representar pontos anterior e posterior
ao ponto a
CAPÍTULO 2. RAÍZES APROXIMADAS
61
• Como ∆x > 0 então11 podemos comparar apenas os numeradores12 . Analisaremos apenas os produtos dos númeradores, o produto de dois valores
sucessivos de f ao longo da varredura. Estamos evitando os quocientes:
f ′ (a) ∗ f ′ (a + ∆) < 0
(2.94)
para verificar se é um ponto de tangência de tipo parabólico.
Se for uma tangência do tipo “ponto de inflexão” o programa continuará
fazendo o teste de troca de sinal de f .
Caracterizamos estes dois tipos de raı́zes, veja a figura (fig. 2.5), como
• raiz tangente, é o que acontece no ponto x1 em que o gráfico da função
tangência o eixo OX;
• raiz secante, é o que acontece no ponto x2 em que o gráfico da função
corta o eixo OX. Fica incluı́da, aqui o caso de tangente com ponto de
inflexão.
• raiz tangente - num ponto de inflexão vamos tratá-lo como um ponto de
secância porque nele a função troca de sinal.
Vamos agora observar o que acontece no gráfico representado na figura (fig.
2.8) página 62,
Neste gráfico a figura nos mostra dois pontos em que a derivada se anula,
mas apenas o ponto x2 é o que nos interessa.
Então foi preciso incluir no programa raizes012.c um teste complementar
ao teste de troca de sinal da derivada.
Tanto em x1 , como em x2 , na (fig. 2.8), a derivada troca de sinal. Mas
apenas em x2 a função é pequena.
Este é o resultado do exercı́cio em que lhe foi pedido que rodasse o programa
com a função
f (x) = (x − 1)2 (1 + 7(x + 1)2 ).
O gráfico desta função se assemelha ao gráfico na figura (fig. 2.8). Voce pode
obter este gráfico usando Gnuplot, não se esqueça de usar o comando
set xrange [-4:3]
para instruir Gnuplot a considerar o gráfico sobre o intervalo [−4, 3] afim de que
você consiga ver alguma coisa interessante. Se você não fizer isto ele vai usar o
intervalo padrão, [−10, 10].
Vimos assim o método para “separar” estas duas situações dentro de uma
análise automática (dentro de um programa). O algoritmo irá fazer os dois testes
em cada ponto da varredura, irá aceitar o ponto x2 como uma raiz aproximada
e descartar o ponto x1 . Estamos nos referindo ainda à figura (fig. 2.8).
Observe que terminamos por voltar a usar a desigualdade, agora apenas em
uma forma complementar. Assim ela funciona.
11 ∆x
não precisa ser positivo, mas tradicionalmente consideramos assim para que o seu
valor coı̈ncida com o comprimento do intervalo considerado
12 aqui você tem a técnica prometida no capı́tulo das derivadas, em vez de usarmos derivada,
estamos usando derivada aproximada
62
CAPÍTULO 2. RAÍZES APROXIMADAS
x2
x1
A derivada se anula
no ponto x1 mas ele não
é uma raiz
Figura 2.8:
Aqui a derivada se anula
e é também uma raiz
Quando a derivada é zero
Exercı́cios 9
1. Leia o programa raizes013.c e identifique onde o programa verifica a troca de sinal de f e da derivada.
2. Rode o programa com cada uma das três funções definidas no programa.
Com os dados pre definidos os resultados não são muito bons, aumente a
precisão da malha em experiências sucessivas.
3. Defina novas funções para testar o programa.
2.5
O método da tangente
Vamos estudar o método da tangente para determinação aproximada da raı́z de uma função.
Evite confundir-se, nas seções anteriores falamos de “raiz (do tipo) tangente”, são as raı́zes
múltiplas, em que o graf (f ) é tangente ao eixo OX. Agora vamos discutir o método da
tangente para determinar raı́zes.
É natural observar, pese o trocadilho, que o método da tangente serve para encontrar raı́zes
(do tipo) tangente. . .
São duas coisas diferentes os tipos como classificamos as raizes, tangente, secantes e os
métodos clássicos, com estes nomes, para determinar raı́zes, metodo da tangente, que vamos
estudar agora e método da secante que usamos rapidamente na seção anterior. Começaremos
por mostrar as limitações do método. A crı́tica se encontra no contexto, ao iniciarmos o
capı́tulo chamamos sua atenção para a dificuldade de resolver o problema que nos ocupa
aqui, estamos apenas ressaltando, em cada momento as dificuldades que aparecem.
O plano do trabalho:
63
CAPÍTULO 2. RAÍZES APROXIMADAS
• Começaremos mostrando um exemplo em que o método funciona,
• depois um exemplo em que ele não pode funcionar.
• Vamos transformar o método em um programa de computador e encontrar
algumas raı́zes. Você poderá rodar o programa e experimentar o resultado.
• Finalmente vamos discutir em que condições (hipóteses) o método da tangente pode ser aplicado e um programa de computador em que ele é usado
intensivamente junto com o método da secante.
2.5.1
Como funciona o método da tangente
Veja as figuras (fig. 2.9) página 63 que nos mostram como funciona o método.
raíz exata
f
raíz aproximada
obtida por uma tangente
f
A raíz
exata
é esta
Raízes aproximadas
por retas tangentes
Figura 2.9:
Uma sequência de retas tangentes...
CAPÍTULO 2. RAÍZES APROXIMADAS
64
Com uma sequência de retas tangentes vamos encontrar uma sequência de
pontos x0 , x1 , . . . que se aproximam de uma raı́z, a sequência converge para a
raı́z da função f .
Descrição do método:
• Ponto inicial Escolhemos um ponto inicial x0 e nele traçamos uma reta
tangente ao gráfico de f ;
• Ponto inicial o método somente se aplica em raı́zes do tipo secante ou
do tipo tangente portanto temos que encontrar um intervalo em que haja
troca de sinal de f ou de f ′ . O ponto inicial a0 é um dos extremos deste
intervalo de troca de sinal;
• Segundo ponto Escrevemos a equação da reta tangente em (a0 , f (a0 )) e
cuja raiz encontramos, este é o ponto s0 da sucessão;
• Iteramos o processo, traçando a reta tangente ao gráfico de f no ponto
(s0 , f (s0 )), resolvendo a nova equação do primeiro grau correspondente a
esta nova reta tangente encontrando assim s2 , s3 , . . . , sn
• A sucessão (sn )n>0 converge para uma raiz de f
sn → s a raı́z exata
f (sn ) → f (s) = 0
f (sn ) ≈ 0
(2.95)
(2.96)
(2.97)
e sn é uma raiz aproximada de f .
No “algoritmo”, que acabamos de descrever, usamos a expressão “escolhemos
um ponto inicial”. Estamos fazendo uso de uns do métodos mais “controversiais”
da Matemática, a “escolha”. Controversial porque funciona e também porque
envolve uma dos problemas abertos da Matemática, o axioma da escolha.
Como escolher um elemento próximo de um ponto desconhecido ? Em algumas circunstâncias podemos provar que o método funciona.
2.5.2
E quando o método não funciona ?
Mas vamos logo ver quando deixa de funcionar. Na figura (fig. 2.10) página 65,
• Consideramos a reta tangente no (A, f (A)); A raiz da reta tangente em A
é B;
• Esta reta tangente tem como raiz o ponto x = B
• Consideramos então a reta tangente no ponto (B, f (B)) corta o eixo OX
no ponto x = A e a raiz da reta tangente em B é A ...
65
CAPÍTULO 2. RAÍZES APROXIMADAS
A raiz da reta tangente em A é B
a raiz da reta tangente em B é A ...
f
A
Figura 2.10:
B
Duas tangentes se reproduzindo indefinidamente
Vemos que caimos num circulo vicioso. O programa que fizermos cairá em
loop infinito.
Obviamente este é um exemplo raro de acontecer, ele apenas mostra que
o risco existe e uma intervenção do usuário do programa pode prevenir contra
este 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 ou
B para evitar o ciclo vicioso.
É preciso incluir no programa um teto de operações que ao ser atingido sem
sucesso o programa sugira ao usuário alterar um pouco um dos extremos do
intervalo inicial. Você pode ver na figura (fig. 2.10) página 65 que uma alterção
no valor de A faz com que a sucessão dos zeros das retas tangentes convirja para
uma das raı́zes.
2.5.3
Funciona com precisão, se funcionar
• Considere o ponto a escolhido para traçarmos a reta tangente por (a, f (a))
• A equação da reta tangente sendo
(2.9
(2.9
a0 = a = s0
y − f (a0 ) = f ′ (a0 )(x − a0 )
y = 0 ⇒ s0 = a0 −
s1 = s0 −
f (a0 )
f ′ (a0 )
f (s0 )
f ′ (s0 )
= T (a0 ) = T (s0 )
= T (s0 )
(2.10
s2 = s1 −
f (s1 )
(2.10
= T (s1 ) = T (T
(s
f ′ (s1 )
(2.10
66
CAPÍTULO 2. RAÍZES APROXIMADAS
• podemos ver que a lei de formação dos elementos da sucessão é
sn = sn−1 −
f (sn−1 )
= T n (s0 )
f ′ (sn−1 )
(2.103)
em que na equação (103) a “potência” aplicada no operador T representa
repetição do operador aplicado no ponto inicial. Seria interessante fazer
uma primeira leitura do capı́tulo 0, se você ainda não tiver feito isto, para
reconhecer que estamos lidando com expressões recursivas.
Assim,
– cada nova raı́z da função do primeiro grau tangente, se expressa sempre da mesma maneira usando a anterior,
– a “potência” da “transformação” T , indica o número de vezes que
ela foi aplicada ao ponto inicial a, função de função.
– É o que chamamos de iterações de T . Na equação (eq. 103) se está
indicando que calculamos a terceira iterada de T .
• Falta-nos provar que a sucessão assim obtida se aproxima da raı́z exata,
ou tem algum limite.
Este é um exemplo de recursividade, semelhante ao que vamos usar no cálculo
de raı́zes, na busca binária. .
Vamos discutir recursividade no capı́tulo 0.
O método Matemático para obter demonstrações passa pela abstração das
expressões. Suponhamos que a sucessão produzida pelas iteradas de T seja
convergente (tenha limite) e chamemos este limite de b.
Como T é uma função contı́nua em qualquer intervalo em que a derivada de
f não se anule, (vamos admitir esta hipótese) temos
xn+1 = T (xn ) −→ b
(2.104)
como T é contı́nua T (b) = b = b −
b=b−
f (b)
f ′ (b)
⇒
f (b)
f ′ (b)
f (b)
f ′ (b)
=0
como por hipótese f ′ (b) 6= 0 então f (b) = 0
(2.105)
(2.106)
(2.107)
ou seja, a hipótese de que a sucessão seja convergente nos conduz a que o limite
seja uma raı́z de f .
Uma consequência dos cálculos acima é que
T (b) = b.
(2.108)
Quando isto acontece dizemos que o ponto b é um ponto fixo da função T
Vamos obter uma condição suficiente para que T tenha um ponto fixo.
Começando por relembrar a aproximação linear dada pela derivada, da qual
extrairemos a condição que desejamos.
67
CAPÍTULO 2. RAÍZES APROXIMADAS
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 fórmula de aproximação linear pela derivada.
Na (eq. 110) voltamos a usar a mesma aproximação, mas agora, e sucessivamente, nas seguintes, estamos aplicando aos elementos que foram sendo obtidos
pela iteração do método das tangentes.
Como queremos que a sucessão seja convergente, e portanto que a distância
entre dois novos pontos seja cada vez menor, vamos impor uma semelhança com
as séries geométricas.
Vemos que a cada dois novos pares de pontos da sucessão surge como multiplicador T ′ (a) em que a é um dos pontos anteriores. Basta-nos que a derivada
de T seja menor do que 1 para a comparação com as séries geométricas tenha
sucesso.
Esta é a hipótese que precisamos.
Derivando T quando f for um polinômio de grau maior do que 2, temos
T (x) = x −
f (x)
f ′ (x)
′′
(x)
|T ′ (x)| = | f (x)f
f ′ (x)2 |
(2.115)
(2.116)
(2.117)
A fração racional que aparece como derivada de T tem polinômios de mesmo
grau no denominador e no denominador: 2n − 2 em que n é o grau de f com
termos lider igual
n(n − 1)a2n x2n−2 ; n2 a2n x2n−2
(2.118)
respectivamente, no numerador e no denominador. Portanto, exceto no pontos
em que o denominador se anule e numa vizinhança destes pontos, a derivada
é menor do que 1 em módulo o que fará que com que o método da tangente
produza iteradas que convirjam para uma raı́z, se alguma houver.
Demonstramos assim
Teorema 1 Método da tangente
Se f for uma função polinomial de grau maior do que 2, as iteradas de
T (x) = x − ff′(x)
(x) convergem para uma raı́z de f
Infelizmente não podemos aplicar o método arbitrariamente. Ele tem que ser
monitorado, já vimos um exemplo gráfico mostrando que nem sempre o método
funciona.
CAPÍTULO 2. RAÍZES APROXIMADAS
68
Exemplo 4 Iteradas do método da tangente
Dentro do Gnuplot você pode executar a sequência de comandos abaixo. O
resultado será o gráfico das sucessivas retas tangentes cujas raı́zes se aproximam
da 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)
plot reta(x),f(x),0
pause -2
// calculo de novo valor para a
a = a - f(a)/df(a)
plot reta(x),f(x),0
pause -2
// calculo de novo valor para a
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 iterações, são:
-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
Veja outra iteração, em que usamos como ponto inicial x = −20
(2.119)
CAPÍTULO 2. RAÍZES 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 sucessão convergindo para a
raiz x = −1. Estas duas sequências foram obtidas com calc e o programa
é o seguinte em que uma função recursiva, principal() está se chamando a
si própria enquanto o parâmetro p for estritamente positivo. Quando p = 0 o
processo para. Copie esta sequência em um arquivo, por exemplo, raizes.calc
e depois chame
calc < raizes.calc
e você poderá repetir a experiência feita acima. Troque a equação da função
para calcular raı́zes de outras funções.
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 penúltima linha se encontra o comando que bota o programa para rodar:
principal(-2,10). O primeiro parâmetro, “a = −2” é o ponto inicial, e o
segundo parâmetro, “p = 10” é o número de iterações que desejarmos.
Troque a equação de f e de sua derivada df e repita a experiência com outra
função. Logo no primeiro passo você verá se o processo conduz, ou não a alguma
raı́z.
Experimente
f (x) = x2 + 1
70
CAPÍTULO 2. RAÍZES APROXIMADAS
que não tem raı́zes reais. Use um número de pequeno de iterações, 10 no
máximo.
2.6
Busca binária
Vamos estudar aqui o método busca binária para determinação de raı́zes.
A busca binária é um método matemático antigo, o matemático Dedekind
o utilizou para definir números reais, os chamados cortes de Dedekind, que
consistem em dividir a reta racional em duas semi-retas, numa “se encontra o
ponto”13 (número real desejado) e assim sucessivamente vai sendo dividido o
conjunto Q dos número racionais até se obter uma aproximação desejada de um
número real (ou uma sucessão convergente).
Vamos usar esta idéia para produzir uma sucessão de raı́zes aproximadas
convergindo para uma raiz de f .
Precisamos encontrar um intervalo em que f troque sinal e o processo é
muito semelhante ao do método da reta secante.
Descrição matemática do método:
• Suponha que que no intervalo [a, b] = [a0 , b0 ]
Hipótese 1 Existência 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 uma
destas duas condições for satisfeita.
• Selecione o ponto médio do intervalo
s0 =
b0 − a0
2
(2.120)
e repita o teste 1 para descobrir em qual das duas metades está a raı́z
procurada e defina
[a0 , s0 ] = [a1 , b1 ]
[s0 , b0 ] = [a1 , b1 ]
se hipótese for verdadeira
se hipótese for verdadeira
s1 =
13 eta
b1 −a1
2
erro lógico... se o ponto estivesse aı́ não seria uma reta racional...
(2.121)
(2.122)
71
CAPÍTULO 2. RAÍZES APROXIMADAS
• Itere o processo para obter o próximo intervalo;
O resultado deste processo é uma sucessão de intervalos cuja médida será
sempre a metade do anterior, tendo partido de um intervalo de medida
r = b − a = b0 − a0
b − a = b0 − a0 = r
m([a0 , b0 ]) = r
m([a1 , b1 ]) = 2r
..
.
m([an , bn ]) =
r
2n
→0
(2.123)
(2.124)
(2.125)
(2.126)
(2.127)
sendo esta uma convergência muito rápida porque é dominada por progressão
geométrica de razão 12 . Veja abaixo o poder decrescente de uma progressão
geométrica num cálculo 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 décima iterada, partindo de um intervalo de medida três já estamos com
um intervalo de medida 0.0029296875 e portanto já teriamos uma aproximação
da raiz com esta precisão. Como em geral vamos procurar mudanças de sinal
usando intervalos de medida 0.1 na décima iterada já teriamos um intervalo medindo 0.00009765625 consequentemente nos oferecendo a raiz com esta precisão.
72
CAPÍTULO 2. RAÍZES APROXIMADAS
Exemplo 5 Cálculo de uma raiz
Considere a função
f (x) = x3 + x2 + x + 1
(2.128)
que tem uma única raiz no ponto x = 1, veja isto fazendo o gráfico desta função
com Gnuplot. Coloque set xrange [-2:2] para obter um gráfico 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 último cálculo usamos um intervalo de medida 0.2 e a busca
binária encontrou a raiz com 3 iterações. Não acredite que buscas binárias
encontrem raı́zes exatas... este é um resultado muito bom. Use as definições
expostas acima, em Calc para construir outros exemplos.
Exemplo 6 As raı́zes de (x − 3)2 (x + 3)sin( x2x+1 )
O programa raizes014.c procura raı́zes usando busca binária nos pontos de
secância e analisa a troca de sinal da derivada nos pontos de tangência. Veja o
resultado do programa procurando as raı́zes de
f (x) = (x − 3)2 (x + 3)sin(
x2
x
)
+1
no intervalo [−10, 10] em que há tres raı́zes:
Raizes aproximadas - metodos da secante e tangente
(2.129)
CAPÍTULO 2. RAÍZES 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 binária, provável, da funç~
ao no intervalo
[-3.049978, -2.999978]
valor de f no ponto -10.728836 --> 134.416962
Raiz, por busca binária, provável, da funç~
ao no intervalo
[-0.049980, 0.000020]
valor de f no ponto 27.644634 --> 672.242493
Raiz, por tang^
encia, provável, da funç~
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 uma
versão compilada do programa raizes014.c.
Observação 4 Ponto fixo e busca binária
Neste capı́tulo estudamos o problema
f (x) = 0
(2.130)
“resolver uma equações”.
Fomos omissos em não dizer que tudo que fizemos vale para funções polinomiais. Na verdade sabemos que vale para funções não polinomiais também, mas
com algumas restrições. Por exemplo, a demonstração que fizemos do método
das tangentes usou que a função, cujas raı́zes procuravamos, era polinomial.
Sem dúvida sabemos um pouco mais sobre o assunto do que antes de iniciar
o capı́tulo, sobre tudo sabemos que não é fácil resolver-se uma equação. Algebricamente, as equações polinomiais somente podem ser resolvidas com radicais
até o grau quatro. Mesmo as equações do grau três e quatro oferecem razoáveis
dificuldade para que as resolvamos usando as fórmulas algébricas. Com um programa de computador, e com um monitoramento adequado do mesmo podemos
ir bem mais longe.
Como dissemos no inı́cio do capı́tulo, o nosso objetivo era tomar o problema
de resolução de equações como motivação para o estudo de algumas técnicas
matemáticas e seus correspondentes algoritmos computacionais.
Estudamos assim os métodos clássicos para determinação de raı́zes,
CAPÍTULO 2. RAÍZES APROXIMADAS
74
1. o método da secante;
2. o método da tangente;
aos quais associamos a técnica computacional varredura.
Também estudamos dois métodos matemáticos (e a correspondente implementação computacional)
1. busca binária;
2. sucessões recursivas;
3. ponto fixo.
O método do ponto fixo é muito mais profundo do que nos foi possı́vel discutir aqui. Tudo que fizemos foi partir da hipótese de convergência e usando a
continuuidade de uma função fomos conduzidos a que o limite satisfaz à equação
T (b) = b
(2.131)
Um ponto de T satisfazendo esta equação, se chama ponto fixo .
Os pontos fixos sempre aparecem nas iteradas de uma função e sempre usamos esta propriedade para resolver equações. Relembre aqui o que já dissemos
no inı́cio do capı́tulo, estamos usando o problema para estudarmos técnicas que
tem valor por si própria.
Esta é uma delas, construir iteradas para encontrar pontos fixos que são
soluções de equações.
Esta técnica é usada largamente na construção de soluções aproximadas de
equações diferenciais. Nós dedicaremos, ao final do livro, um capı́tulo à introdução deste assunto, onde voltaremos a usar o método do ponto fixo para
resolver estas equações.
2.7
O problema completo
O tı́tulo é audacioso, problemas completos dificilmente existem. O que vou fazer
é juntar os pedaços, as discussões feitas nas seções anteriores, numa discussão
final e apresentar-lhe um programa que faz todas estas análises conjuntamente.
O problema de busca de raı́zes, na forma como o estudamos aqui, separa as
raı́zes em dois tipos,
• raı́zes do tipo tangente, que na verdade se classificam algebricamente como
raı́zes múltiplas porque, numa vizinhança da raiz a função pode ser fatorada como
(2.132)
f (x) = (x − a)n g(x) ; g(a) 6= 0
75
CAPÍTULO 2. RAÍZES APROXIMADAS
em que n é o ı́ndice de multiplicidade da raiz é um número par. Se n for
par serão estas raı́zes que estou classificando aqui como do tipo tangente,
não há troca de sinal em alguma vizinhança da raiz;
• raı́zes do tipo secante podemos usar a notação do item anterior e dizer que
f (x) = (x − a)n g(x) ; g(a) 6= 0
(2.133)
com n impar. Neste caso há troca de sinal da função em alguma vizinhança
da raiz e podemos usar os métodos clássicos:
– busca de raı́zes pelo método da secante;
– busca de raı́zes pelo método da tangente;
– busca binária. Este método, a busca binária, pode ser usado quando
a multiplicadade da raiz for par, mas eu não usei este método no
programa.
O programa raizes015.c faz isto salientando qual foi o método que ele
escolheu em cada raiz.
Testamos o programa com diversas funções com bons resultados, mas lhe
entregamos também o código fonte no modo habitual de programação aberta.
Se você melhorar o programa, distribua a melhor versão não se esquecendo de
nos enviar uma cópia, poruqe o conhecimento é universal, é de todos.
Veja o resultado do programa captado pelo editor Joe com pequenas alterações feitas por mim. Leia e rode o programa para fazer suas experiências.
A função selecionada dentro do programa é
f (x) = (x + 3.4)4 (x + 3)2 (x + 2)3 (x − 1)2 (x − 3)sen(
x
x2 + 1
(2.134)
que não chega a ser uma função realmente maldosa. Bastaria acrescentar um
termo como sen(3x) para deixar o programa instável. Esta instabilidade pode
ser resolvida com uma mudança de variáveis, entretanto, como eu já disse diversas vezes, não há programa que possa funcionar sozinho, eles tem que ser
monitorados.
O programa conseguiu encontrar todas as raı́zes quando usei o passo 0.0001
com 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]
CAPÍTULO 2. RAÍZES APROXIMADAS
Precisao da malha 0.000100
=================================================
==== Quando a derivada troca de sinal - tang^
encia =====
Raiz, por tang^
encia, provável, da funç~
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 - tang^
encia =====
Raiz, por tang^
encia, provável, da funç~
ao no intervalo
[-3.000090, -2.999990]
valor de f no ponto -3.000040 --> -0.000000
====
fim do caso troca de sinal da derivada =====
============= Tr^
es métodos ===========
Raiz provável da funç~
ao no intervalo [-2.000017, -1.999917]
========1o método: por busca binária =======
valor de f no ponto -2.000000 --> 0.000000
========2o método: pelo método da secante =========
valor de f no ponto -2.000012 --> -0.000000
========3o método: pelo método da tangente ========
valor de f no ponto -1.999998 --> 0.000000
======== fim do caso troca de sinal ========
============= Tr^
es métodos ===========
Raiz provável da funç~
ao no intervalo [-0.000097, 0.000003]
========1o método: por busca binária =======
valor de f no ponto -0.000000 --> 0.000984
========2o método: pelo método da secante =========
valor de f no ponto -0.000000 --> 0.000000
========3o método: pelo método da tangente ========
valor de f no ponto 0.000000 --> -0.000250
======== fim do caso troca de sinal ========
==== Quando a derivada troca de sinal - tang^
encia =====
Raiz, por tang^
encia, provável, da funç~
ao no intervalo
[0.999956, 1.000056]
valor de f no ponto 1.000006 --> -0.000006
====
fim do caso troca de sinal da derivada =====
76
77
CAPÍTULO 2. RAÍZES APROXIMADAS
============= Tr^
es métodos ===========
Raiz provável da funç~
ao no intervalo [2.999995, 3.000095]
========1o método: por busca binária =======
valor de f no ponto 3.000000 --> 0.000000
========2o método: pelo método da secante =========
valor de f no ponto 3.000000 --> 0.000000
========3o método: pelo método 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
Interseção de gráficos
Discutimos até agora a solução do problema
f (x) = 0
mas é muito mais frequente precisarmos de resolver o problema
f (x) = g(x)
em que f, g são duas funções dadas. Evidentemente que este problema se
reduz ao anterior, entretanto há técnicas especı́ficas para resolver o segundo
problema que vamos discutir nesta seção.
Uma expressão 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 não é um novo problema que estamos estudando.
Mas as peculiaridades em que o problema f (x) = g(x) se encontra, ou as
aplicações que podem ser modeladas por este problema justificam que nos lhe
demos uma atenção diferenciada como logo você irá ver.
Vamos começar lendo o gráfico na figura (fig. 2.11) página 78.
Este é um caso interessante que descreve uma gama de problemas do tipo
f (x) = g(x) ou f (x) ≥ g(x)
Analisando o gráfico 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)
(2.135)
78
CAPÍTULO 2. RAÍZES APROXIMADAS
g
f´(a) < g´(a)
f
f´(a) > g´(a)
c
f´(c) < g´(c)
b
a
Figura 2.11:
Interseção de curvas
ou seja, temos duas funções e algum ponto do domı́nio as derivadas delas se
alternam em tamanho.
Se por um momento aceitarmos a linguagem mecânica14 diremos que pode
haver um momento em que o gráfico de g passe o gráfico de f porque a derivada
representa a taxa de crescimento.
Pelo teorema do valor médio 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 pontos
Sabemos 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)
então é possı́vel encontrar outra solução b > a para o problema f (x) = g(x)
Cosidere
g(x) = x
f (x) = 2(1 − e−x ) ; f ′ (x) = 2e−x −→ 0 quando x cresce
f (0) = g(0) = 0 ; f ′ (0) = 2 > g ′ (0) = 1
(2.137)
(2.138)
(2.139)
Como f ′ decresce muito rapidamente, é possı́vel que haja outra solução para o
problema f (x) = g(x) quando x > 0.
14 que
usualmente rejeitamos, tal como “tende” para limite
79
CAPÍTULO 2. RAÍZES APROXIMADAS
Vamos analisar o que nos diz o Teorema do Valor médio para derivadas, se
em algum ponto f ′ (x) = 1
f ′ (x) = 2e−x = 1 ⇒ e−x = 12 ⇒
⇒ ex = 2 ⇒ x = ln(2)
(2.140)
(2.141)
(2.142)
Temos que procurar uma raı́z a a partir de x = ln(2) ≈ 0.69314718 o que
faremos 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 médio do Teorema do Valor médio não é a
média aritmética entre os pontos a, b que resolvem o problema, mas se encontra
razoavelmente próximo do ponto médio.
Em outras palavras, 2ln(2) é uma aproximação da raı́z.
Uma aplicação desta questão á determinação da área entre duas curvas.
Neste caso não queremos encontrar todas as soluções do problema f (x) = g(x).
Desejamos encontrar aquelas que ficam nos extremos de um intervalo que é a
projeção, no eixo OX da região cuja área desejamos calcular.
Um caso comum é que você pode ver no gráfico (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 área da região
limitada por elas é
Zb
| (f (x) − g(x))dx|
a
e temos que encontrar as duas raı́zes do problema f (x) = g(x).
O cálculo, com grande acuracidade de raı́zes somente pode ser feito com
auxı́lio de programas de computador, entretanto, a determinação “grosseira”
80
CAPÍTULO 2. RAÍZES APROXIMADAS
g
f
b
a
Figura 2.12:
Região cuja área queremos calcular
de um intervalo onde haja raı́z15 pode ser feito com auxı́lio de uma máquina
de calcular eletrônica e isto é o que se espera na lista de exercı́cios a seguir
proposta.
Exercı́cios 10 Raizes de funções
1. Considere f (x) = x5 + x2 − 4
(a)
(b)
(c)
(d)
Mostre que f ′ tem apenas duas raı́zes, x0 < x1 .
Prove, sem fazer cálculos numŕicos que f (x0 ) > f (x1 )
Prove fazendo algum cálculo numŕico que 0 > f (x0 ) > f (x1 )
Prove que f tem uma única raı́z real e determine um intervalo onde
esta 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 área da região limitada pelos gráficos das parábolas, figura
y = x2 − x − 12 ; y = −x2 − x + 12
(fig. 2.13) página 81,
4. As curvas
g(x) = (x2 + x − 12)cos(
x
x
) ; f (x) = (x2 − x − 12) ∗ sin( )
2π
2π
se cortam segundo tres pontos no intervalo [−7, 7], veja a figura
y = x2 − x − 12 ; y = −x2 − x + 12
(fig. 2.14) página 81,
Encontre os dois pontos mais distantes (ignore o ponto médio) e calcule a
área indicada na figura.
15 ou
no plural, a determinação dos intervalos onde haja raı́zes
81
CAPÍTULO 2. RAÍZES APROXIMADAS
15
f(x)
g(x)
0
10
5
0
−5
−10
−15
−4
−3
−2
Figura 2.13:
−1
0
1
2
3
4
área limitada por duas parábolas
100
f(x)
g(x)
0
80
60
40
20
0
−20
−40
−60
−80
−100
−10
−5
Figura 2.14:
0
5
área limitada por duas curvas
10
Capı́tulo 3
Sucessões recursivas
Os babilônios conheciam um método prático, ver [?], para cálcular raı́zes
quadradadas, que vamos usar como introdução para o assunto deste capı́tulo
porque é um algoritmo recursivo.
Recursividade é um método em que uma função f “chama” a si própria.
A recursividade é conhecida e usada em Matemática há milênios, como o
algoritmo do cálculo de raźes quadradas, mas recentemente (desde 1970), com
LISP, vem sendo usada em programas de computador produzindo algoritmos
bastante otimizados.
3.1
Babilônios e raı́z quadrada
Vamos usar o álgoritmo dos babilônios para calcular raı́zes quadradas como motivação para o assunto deste capı́tulo.
Uma sequência é recursiva se for definida em função dos seus
próprios termos: xn = f (xn−1 , . . . , x1 ) em que f é uma expressão
legal (computacional ou matemática).
Escolhemos o algoritmo dos babilônios para servir de introdução (e motivação) para o assunto deste capı́tulo por duas razões:
• pela sua antiguidade provável de mais de 4.000 anos e assim nos educamos
no respeito dos antigos e do antigo contra o mito de que o moderno é que
bom;
• pela sua alta precisão, com auxı́lio de uma máquina de calcular com
memória, com algumas iteradas, quatro ou cinco, você obtém uma raiz
quadrado com boa precisão.
√
Uma primeira aproximação para a vem da desigualdade entre a média
aritmética e a média geométrica:
82
83
CAPÍTULO 3. RECURSIVIDADE
Teorema 2 Desigualdade aritmético-geométrica Se a, b > 0 temos
√
ab ≤
a+b
2
(3.1)
Dem :
√
a+b
2
ab ≤
a +2ab+b
4
2ab + b2
ab ≤ ( a+b
)2 =
2
4ab ≤
a2
+
(3.2)
2
2
0 ≤ a2 − 2ab + b2 = (a − b)2
(3.3)
(3.4)
(3.5)
e como a última equação é verdadeira e as anteriores são equivalentes algébricas dela, então
a primeira é verdadeira. q.e.d .
Este teorema vale para um número qualquer de termos, ver [26], mas aqui
é suficiente o caso da média entre dois número positivos, mais exatamente 1, a
em que a é o número positivo cuja raı́z quadrada desejamos.
√
• Se a > 1 então 1 < a < a e 1 < a+1
< a;
2
√
• Se 0 < a < 1 então 1 > a > a e 1 > a+1
2 > a;
portanto os números
1+a √
, a
2
se encontram ambos entre 1 e a até porque ambos são a média entre 1, a, um a
média aritmética, o outro a média geomética, pelo teorema (2).
√
Assim temos uma estimativa inicial, e de muito baixa precisão, para a
como consequência da desigualdade aritmético-geométrica
√
assim
√
a≈
a=
√
1·a≤
a+1
2
(3.6)
a+1
2
Exemplo 8 Raiz quadrada de 10
√
10 + 1
= 5.5
2
Podemos ver neste exemplo como a estimativa fornecida pela desigualdade
aritmético-geométrica é de baixa classe. Mas os babilônios há mais de 4.000
anos souberam iterar esta estimativa obtendo um algoritmo que fornece a raı́z
quadrada com grande precisão depois de alguns passos.
Uma observação simples conduz ao algoritmo dos babilônios.
√
Se tivermos1 uma estimativa inicial, digamos, x, para a raı́z quadrada a
então, xa é outra aproximação:
10 ≤
√
a
a
≈√ = a
x
a
1e
temos, que é a média com a unidade
(3.7)
84
CAPÍTULO 3. RECURSIVIDADE
√
a então xa será menor do a.
√
√
• Se x for menor do que a então xa será maior do a.
• Se x for maior do que
√
• Quer dizer que temos duas aproximações, (no segundo caso)
√
a
a
x, ; x < a <
x
x
√
uma menor e outra maior do que a logo à média das duas que vai ser,
melhor do que uma delas.
Definimos (definiram os babilônios)
g(x) =
x+
2
a
x
=
a + x2
2x
(3.8)
cuja derivada é
√
; g ′ ( a) = 0
√
g ′ (x) > 0 ⇐ x > a
√
g é crescente x > a
√
√ x>√a
√
g( a) = a ⇒ g(x) > a
√
<x
x > a ⇒ g(x) = x+a/x
2
√
x > a ⇒ g(g(x)) < g(x)
g ′ (x) =
x2 −a
2x2
(3.9)
(3.10)
(3.11)
(3.12)
(3.13)
(3.14)
Com estas propriedades podemos deduzir (possivelmente não foi assim que
os babilônios provaram)
√
uma primeira aproximação s0 = x > x
√
a < s1 = g(s0 ) < s0
√
√
g( a) = a < g(s1 ) = s2 < s1
√
a < g(s1 ) = s2 < s1 < s0
..
.
√
hipótese: a < sn = g(sn−1 ) < sn−1
√
√
g( a) = a < g(sn ) = sn+1 < sn
e assim provamos por indução parte do Teorema
Teorema 3 algoritmo dos babilônios
(3.15)
(3.16)
(3.17)
(3.18)
(3.19)
(3.20)
(3.21)
(3.22)
85
CAPÍTULO 3. RECURSIVIDADE
A sucessão (sn )n definida recursivamente por

√
a
x é uma
aproximação
de


√

x> a
s0 = g(x)



sn = g(sn−1 )
√
é decrescente e limitada por a logo converge para um limite
√
sn → l = a
(3.23)
(3.24)
Dem :
√
Falta prova apenas a última afirmação do teorema, que o limite é exatamente a.
Para isto observemos que g é contı́nua, portanto preserva limite o que significa que
lim g(sn ) = g(lim sn )
n
(3.25)
n
A direita na equação (25) temos
lim sn+1 = l
(3.26)
g(lim sn ) = g(l)
(3.27)
g(l) = l
(3.28)
n
e a esquerda na equação (25) temos
n
o que nos leva
Substituindo na equação de g, (8), temos
g(l) =
l2 + a
=l
2l
⇒
l2 + a = 2l2
⇒
l=
√
a
(3.29)
q.e.d .
Definição 1 Ponto fixo
Quando uma funçao g satisfizer a equação (28), dizemos que o valor l é um
ponto fixo de g.
A sucessão seguinte de equações mostra como eles faziam:
0
= x0 +10/x
2
1
= x1 +10/x
2
2
= x2 +10/x
2
3
= x3 +10/x
2
4
= x4 +10/x
2
√
e usando x5 como aproximação de 10 temos
x0
x1
x2
x3
x4
=1
= 5.5
= 3.6590909
= 3.196005
= 3.162455
x1
x2
x3
x4
x5
x1
x2
x3
x4
x5
= 5.5
= 3.6590909
= 3.196005
= 3.162455
= 3.1622776
x25 = (3.1622776)2 = |9.999999
{z } 61946176
que nós dá 10 − x25 < 0.0000004 =
4
107
(3.30)
86
CAPÍTULO 3. RECURSIVIDADE
Vejamos mais um exemplo, calculando a raı́z
√
1000.
Exemplo 9 A raı́z de 1000
x0
x1
x2
x3
x4
x5
x6
x7
=1
= 500.5
= 251.249
= 127.6145
= 67.7253273
= 41.2454260
= 41.2454260
= 32.74526
x1
x2
x3
x4
x5
x6
x7
x8
=
=
=
=
=
=
=
=
x0 +1000/x0
2
x1 +1000/x1
2
x2 +1000/x2
2
x3 +1000/x3
2
x4 +1000/x4
2
x5 +1000/x5
2
x6 +1000/x6
2
x7 +1000/x7
2
x1
x2
x3
x4
x5
x6
x7
x8
= 500.5
= 251.249
= 127.6145
= 67.7253273
= 41.2454260
= 32.74526
= 32.74526
= 31.62278
x28 = (31.62278)2 = |1000.000
{z } 2149284
(3.31)
Os exemplos são eloquentes, mostram que um “povo primitivo”, como os
babilônios, usavam um método há mais de 4.000 anos que continua hoje imbatı́vel...
Nós não temos nada melhor, para calcular raı́zes quadradas, a não ser
máquinas com recursos formais. Por exemplo, o cálculo 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 teclado
do micro, oito vezes. É tudo que podemos fazer para melhorar o algoritmo dos
babilônios.
Resta-nos agora entender o que se encontra por trás do método, é o que
passaremos a fazer.
Exercı́cios 11 Médias e raı́zes
1. Calcule as médias aritméticas e geométricas dos pares de números
87
CAPÍTULO 3. RECURSIVIDADE
12
f(x)
x
0
"data"
10
8
6
4
2
0
1
2
3
Raíz
4
6
7
8
aproximada
de 10
Figura 3.1:
a
1
2
0.2
0.2
5
Determinação de
b
2
4
0.4
1
√
a+b
2
10
√
ab
2. Calcule a média aritmética ponderada dos objetos dados considerando os
pesos indicados
a1 , a2 , a3
p1 , p2 , p3
3
P
pi ai
i=1
1, 2, 3
1, 2, 3
1, 2, 3
1, 2, 3
(1, 2), (2, 1), (1, 1)
0.1, 0.2, 0.7
0.4, 0.3, 0.3
1 1 1
3, 3, 3
1 1 1
6, 3, 2
1 1 1
6, 3, 2
3. Calcule, aproximadamente, as raı́zes quadradas dos números indicados,
usando o método dos babilônios, até a quarta iterada, e indique o erro
cometido:
√
a
x4
a
1
2
20
200
O gráfico (fig. 3.1), mostra a realização do algoritmo dos babilônios (para
raı́z quadrada de 10). Nele podemos ver a função identidade e gráfico de
g(x) =
x + 10/x
2
88
CAPÍTULO 3. RECURSIVIDADE
com a sucessão de pontos que vai sendo obtida com a iteradas de g para obter
a sucessão recursiva (xn )n cujo limite é o ponto fixo
√
√
( 10, g( 10)).
Você pode repetir este processo inclusive com outras raı́zes quadradas usando
o programa em C que apresentamos logo a seguir.
Exercı́cios 12 Sequências recursivas
1. Matemática Social Escolha uma função f (sem combinar com seus colegas
de trabalho) tal que graf (f ) e o o gráfico da primeira bissetriz y = x se
cortem no primeiro quadrante e que2 hipergraf (f ) seja convexo.
Considere x0 > 0 escolhido arbitrariamente (sem combinar com seus colegas de trabalho) e construa graficamente a sucessão de pontos no plano
(n não menor do que 4)

(x0 , x0 )
(x0 , f (x0 )) ; x1 = f (x0 )



(x1 , x1 )
(x1 , f (x1 )) ; x2 = f (x1 )
(3.32)
···
···



(xn , xn ) (xn , f (xn )) ; xn+1 = f (xn )
e agora compare o seu resultado com o dos seus colegas de trabalho para
tirar uma conclusão.
2. Verifique (geometricamente) que a função f (x) = ln(x) não pode definir
uma sucessão recursiva xn+1 = f (xn ) convergente. Justifique.
3. Verifique quais das funções seguintes produz uma sucessão recursiva convergente, e em que região isto se dá (se der). Sugestão faça um gráfico
contendo graf (f ), graf (y = x).
f
a)f (x) = x + 3
c)f (x) = x2
e)f (x) = x2 − 9
[a, b]
.
Os exercı́os acima estão longe de esclarecer a importância ou os métodos
como tratar sucessões recursivas que é um vasto tópico dentro do qual se encontra o algoritmo dos babilônios.
3.1.1
Um programa em C
O programa se chama raizq graf.c e você pode encontrá-lo em [20].
2o
hipergráfico de f é o conjunto dos pontos (x, y) tal que y ≥ f (x) - é o conjunto limitado
inferiormente pelo graf (f )
89
CAPÍTULO 3. RECURSIVIDADE
Os módulos do programa são, a função
g(x, a) =
x + a/x
2
em que deixamos a como parâmetro de formas que uma pequena alteração no
programa permite que ele rode na linha de comandos.
A função principal, main(), que é obrigatória em todo programa em C ou
C + + e que puxa o script do teatro.
Alguns comandos colocados na função principal para criar o arquivo “data”
onde se encontram as linhas que Gnuplot irá traçar.
Um arquivo que chamamos “transfere” e que contém os comando de Gnuplot
e que serão chamados internamente pelo programa uma vez que quem vai fazer
tudo é o programa em C.
O programa contém comentários para ajudá-lo a compreender o que ele, faz,
mas você deve ler os arquivos “data” e “transfere” que o programa cria, para
compreendê-lo melhor. E, finalmente, escreva um e-mail ao autor, com suas
dúvidas, ou consulte um hacker em computação a sua volta, eles são, em geral,
benignos.
O comando para compilar o programa é
gcc -Wall -oprog -lm programa.c
em que programa.c é o nome do arquivo onde você guardou o texto acima, e gcc
é o nome do compilador C que acompanha qualquer distribuição Linux. Compilado o programa você o pode rodar (executar) o executável, prog, digitando
numa shell do Linux
./prog
no diretório onde se encontra o programa gravado.
O programa descrito acima constroi qualquer exemplo de raı́z quadrada que
você desejar, implementando o método dos babilonios. Ele cria dois arquivos: data e transfere. Se você apenas quiser rever3 o gráfico, digite numa shell
(Linux)
gnuplot transfere
e você voltará a ver o gráfico recém feito com o programa. Ou, simplesmente,
rode novamente4 o √
programa com os mesmos dados. O programa fará, automaticamente, o caso 2 se você apenas der, “enter”, como resposta a todas as
perguntas. Movendo o cursor, sobre a tela gráfica do Gnuplot, você pode ver
o valor aproximado da raı́z escolhida. Não espere conseguir grande precisão,
nesta visualização.
3.2
Fundamentos da convergência de iteradas
Exemplificamos, com o algoritmo dos babilônios da raı́z quadrada, que um tipo
de sucessão, que designamos por recursivas eram convergentes. Também já
vimos que o método das tangentes é gerado por uma função recursiva:
3 enquanto
você não der “enter”, o gráfico ficará presente na tela
você tiver problemas com o programa, ou não rodar Linux em seu computador, solicite
uma versão do programa, ao autor, indicando qual o sistema que roda em seu computador
4 se
90
CAPÍTULO 3. RECURSIVIDADE
g(x) = x −
f (x)
; xn+1 = g(xn )
f ′ (x)
(3.33)
Desejamos agora demonstrar os fatos, descobrir em que condições podemos
garantir que uma sucessão
xn+1 = g(xn )
(3.34)
seja convergente. Vamos usar a aproximação linear
g(b) − g(a) = g ′ (a)(x − a) + o(|x − a|)
x2 − x1 = g(x1 ) − g(x0 ) = g ′ (x0 )(x1 − x0 ) + o(|x1 − x0 |)
|x2 − x1 | = |g(x1 ) − g(x0 )| ≤ |g ′ (x0 )| · |x1 − x0 |
···
|xn+1 − xn | = |g(xn ) − g(xn−1 )| ≤ |g (xn−1 )| · |xn − xn−1 |
′
(3.35)
(3.36)
(3.37)
(3.38)
(3.39)
Estes cálculos nos mostram que precisamos da hipótese de que g seja diferenciável e que em uma vizinhança do ponto inicial x0 o módulo da derivada
seja menor do que 1. Se isto acontecer podemos deduzir das equações acima:
|x2 − x1 | = |g(x1 ) − g(x0 )| ≤ |g ′ (x0 )| · |x1 − x0 |
|x3 − x2 | =≤ |g ′ (x1 )| · |x2 − x1 | ≤ |g ′ (x1 )||g ′ (x0 )| · |x1 − x0 |
|xn+1 − xn | ≤
n−1
Y
k=0
(3.40)
(3.41)
···
(3.42)
|g ′ (xk )||x1 − x0 |
(3.43)
Considerando os fatores na equação (eq. 43) seja
r = max(|g ′ (x0 )|, . . . , |g ′ (xk )|, . . . , |g ′ (xn−1 )|) < 1
(3.44)
podemos deduzir da (eq. 43)
|xn+1 − xn | ≤ r n |x1 − x0 |
(3.45)
e assim comparar a sucessão (xn ) com uma sucessão geométrica convergente.
Demonstramos assim o Teorema
Teorema 4 Teorema do ponto fixo
Se uma sucessão recursiva xn+1 = g(xn ) em que g é uma função diferenciável
e tal que exista um domı́nio [a, b] a cujo interior pertença o ponto x0 e que
|g ′ | < r < 1 em [a, b] então a sucessão recursiva xn+1 = g(xn ) converge para
um ponto a de forma mais rápida que uma sucessão geométrica de razão r e o
ponto a = lim xn é um ponto fixo de g
n
A última parte da tese do Teorema é o resultado das contas que fizemos na
seção anterior, com o algoritmo dos babilônios para a raı́z quadrada. Embora
91
CAPÍTULO 3. RECURSIVIDADE
o ponto fixo no caso daquele algoritmo tenha sido obtido num caso especial de
função contı́nua, o arqumento aqui seria o mesmo.
Há vários teoremas do ponto fixo, nós demonstramos acima um caso particular e bem simples que atende às nossas necessidades aqui. Mas o estudioso
de análise irá encontrar mais a frente outras formulações deste teorema quando
verá, entretanto, que a questão gira em torno das mesma idéias, poder garantir
que a função g que define uma certa sucessão recursiva funcione como um freio
interno da sucessão. Tais função satisfazem à desigualdade
|g(a) − g(b)| < |a − b|
portanto elas contraem a imagem e poristo se chamam de contrações. Quando
a derivada for menor do que 1 em módulo temos uma contração, e foi isto que
usamos na demonstração do teorema-4.
3.3
O algoritmo babibilônio é convergente
Para terminar o projeto, queremos mostrar que o algoritmo babibilônio para
raı́zes quadradas satisfaz às hipótses do teorema do ponto fixo, e portanto converge.
Vimos que o algoritmo depende da função
x+
a
g(x) = (x + )/2 =
x
2
cuja derivada é g ′ (x) =
1
2
−
a
x
(3.46)
a
2x2 .
g ′ (x) = 0 =⇒ 1 −
√
a
= 0 =⇒ x = ± a
2
x
(3.47)
quer dizer que, para x > 0 o gráfico conjunto de g e da primeira bissetriz é da
forma (fig. 3.2) ou da forma (fig. 3.3)
g
x
0
a
Figura 3.2:
Ponto inicial menor do que
√
a
92
CAPÍTULO 3. RECURSIVIDADE
g
xo
a
Figura 3.3:
Ponto inicial maior do que
√
a
Nos dois tipos de gráficos, (fig. 3.2) ou (fig. 3.3), vemos que o gráfico
de g
√ √
corta a primeira bissetriz na imagem do ponto fixo sobre o graf (g), ( a, a).
Como g é assı́ntota à função
x
y=
2
√ √
e no ponto ( a,√ a) a derivada de g é zero, então se x0 for “grande”, quer dizer
“maior do que a”, então |g ′ (x0 )| < 1. √
Consideremos então o intervalo I = [ a, ∞). Sobre I a hipótese do (Teorema
4) é atendida porque como g(x) < x então g(g(x))√< g(x) e portanto xn ∈ I, o
que termina a demonstração se escolhermos x0 > a.
Mas
√ podemos considerar um ponto inicial x0 “pequeno”, isto é, menor do
que a. Mas neste caso
x1 = g(x0 ) = x0 +
√
x0 + xa0 > a
a
x0
a 2
) >a
x0
x20 + 2a + ( xa0 )2 > a
x20 + a + ( xa0 )2 > 0
(x0 +
(3.48)
(3.49)
(3.50)
(3.51)
(3.52)
provando que x1 ∈ I portanto, se escolhermos um ponto inicial “pequeno” o segundo ponto da sucessão obtida pelas iterações de g será “grande”, pertentecerá
ao intervalo I e portanto a sucessão
(xn )n≥1 ⊂ I
(3.53)
satisfaz ao (Teorema 4).
Provamos assim que o algoritmo dos babilônios para razı́z quadrada converge
e muito rápido.
Teorema 5 Algoritmo babilônio para raı́z quadrada
A função g(x) = x+a/x
define uma sucessão recursiva a partir de um ponto
2
pa
√
qualquer x0 > 3 sendo o seu ponto fixo a.
93
CAPÍTULO 3. RECURSIVIDADE
3.4
Exercı́cios
1. Escreva os 5 primeiros termos das seguintes sucessões definidas recursivamente
a)sn = sn−1 + sn−2
c)sn = 1 + sn−1
e)sn = nsn−1
b)sn = sn−1 + sn−2
d)sn = 1 + sn−1
f)sn = nsn−1
s0 = 0; s1 = 1
s0 = 1
s0 = 2; s1 = 1
s0 = 1; s1 = 1
s0 = −1
s0 = 3; s1 = 1
2. Escreva o loop em pseudo linguagem de programação5 que calcula cada
uma das sucessões
a)sn+1 = sn + sn−1
c)sn+1 = sn sn−1
e)sn+1 = sn sn−1
b)sn+1 = sn /sn−1
d)sn+1 = (n + 1)sn
f)sn+1 = nsn
s0 = 1; s1 = 1
s0 = 1; s1 = 2
s0 = 2;
s0 = 1; s1 = 1
s0 = 1; s1 = 1
s0 = 3;
3. série, termos geral Escreva a equação de Sn sabendo que
Sn+1 − Sn = an ; S0 = 0
(3.54)
em que a sucessão a = (an )n∈N é dada.
4. Escreva a equação de Sn sabendo que
Sn+1 − Sn = an ; S0 = 0
(3.55)
em que a sucessão a = (an )n∈N é dada
Sn+1
a)Sn+1
c)Sn+1
e)Sn+1
an
1
n
n2
Sn+1
b) Sn+1
d) Sn+1
f) Sn+1
an
1
n
1
n2
3
n
5. Seqüência de Fibonacci6
A seqüência de Fibonacci é definida, recursivamente, como
s0 = 1
(3.56)
s1 = 1
n > 1sn = sn−1 + sn−2
(3.57)
(3.58)
Calcule alguns termos de s e escreva o loop que calcule s Resposta é
exatamente um dos exercı́cios anteriores.
5 chamamos de pseudo linguagem de programação uma sequência de “comandos” que poderiam pertencer a uma determinada linguagem de programação, aquilo que é habitual fazer
em cursos introdutórios de programação com o nome de “algoritmo”
94
CAPÍTULO 3. RECURSIVIDADE
3.5
Solução de alguns exercicios
1. (ex. 1) página 93
(a)
sn = sn−1 + sn−2 ; s0 = 0; s1 = 1
s2 = 1; s3 = 2; s4 = 3; s5 = 5;
(3.59)
(3.60)
sn = sn−1 + sn−2 ; s0 = 1; s1 = 1
s2 = 2; s3 = 3; s4 = 5; s5 = 8
(3.61)
(3.62)
(b)
(c)
sn = 1 + sn−1 ; s0 = 1
(3.63)
s1 = 2; s2 = 3; s3 = 4; s4 = 5; s5 = 6
(3.64)
sn = 1 + sn−1 ; s0 = −1
s1 = 0; s2 = 1; s3 = 2; s4 = 3; s5 = 4
(3.65)
(3.66)
(d)
(e)
sn = nsn−1 ; s0 = 2; s1 = 1
(3.67)
s2 = 2; s3 = 6; s4 = 24; s5 = 120
(3.68)
sn = nsn−1 ; s0 = 3; s1 = 1
s2 = 2; s3 = 6; s4 = 24; s5 = 120;
(3.69)
(3.70)
(f)
2. (ex. 2) página 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
}
CAPÍTULO 3. RECURSIVIDADE
0
1
2
3
4
5
6
7
8
9
10
(b)
(c)
return(S); // saida de dados do programa
1
1
2
3
5
8
13
21
34
55
89
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
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)
{
95
CAPÍTULO 3. RECURSIVIDADE
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;
96
97
CAPÍTULO 3. RECURSIVIDADE
printf("%d %f \n ",0,a0);
if (n == 0 ){printf("%d %f \n ",0,a0);
while(contador <=n)
{
S = contador*a0; // s(n+1)
printf("%d %f \n",contador, S);
a0 = S; // s(n)
contador++;
}
return(a0);}
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
98
CAPÍTULO 3. RECURSIVIDADE
3. (ex. 3) página 93
S0 = 0 =⇒ S1 = S0 + a0 = a0
S2 = S1 + a1 = S0 + a0 + a1
S2 = a0 + a1
(3.71)
(3.72)
(3.73)
S3 = S2 + a2 = a0 + a1 + a2
···
(3.74)
(3.75)
Sn+1 = Sn + an = a0 + a1 + a2 + · · · + an
n
P
ak
Sn+1 =
(3.76)
(3.77)
k=0
4. (ex. 4) página 93
(a) Sn+1 =
(b) Sn+1 =
n
P
k=0
n
P
k=1
1=n+1
1
k
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.
100000
P 1
ln(100000) ≈ 11.51292546497022842009;
k ≈ 12.090851
k=1
(c)
n
P
k=1
k=
(1+n)n
2
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
CAPÍTULO 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
X
π2
1
≈
k2
6
1
para grandes valores de n. Com n = 35000S35000 = 1.6449054958278
2
e π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;
}
n
P
P (k) em que P é um polinômio a coeficientes
As somas do tipo
k=0
inteiros, podem ser calculadas exatamente usando-se um polinômio Q
de grau uma unidade superior ao de P porque estas somas se reduzem
100
CAPÍTULO 3. RECURSIVIDADE
a uma expressão da forma Q(n + 1) − Q(0), ver [27, indução finita].
n
P
= Q(n); Q(10) =
k 2 = n(n+1)(2n+1)
neste caso a fórmula exata é
6
385
k=1
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
P
)2
k 2 = (1 + 2 · · · n)2 = ( n(n+1)
2
k=1
Capı́tulo 4
Aproximação polinomial de
funções
Este capı́tulo vai lhe apresentar o objetivo deste livro: a modelagem matemática usando aproximação polinomial.
Primeiro consideraremos o método intuitivo, um polinõmio de
grau n interpolando n pontos do plano, depois vamos otimizar
este método o que nos vai conduzir ao chamado método de Lagrange. É o que chamamos de método clássico e que foi utilizado
até 1950.
Com o método clássico, que consiste em fazer passar um polinômio pelos pontos conhecidos de uma função, para obter-se uma
boa aproximação é preciso que a densidade da malha seja muito
grande e consequentemente o grau do polinômio muito alto. As
consequências computacionais são graves com esta metologia, mas
o método é excelente para época em que foi construidoa ,como o
programa que acompanha o livro bem o mostra.
Aos poucos, a partir dos anos 50, no século passado, foi surgindo
um método sugerido por autores da década de 40 que se constitue
em considerar vários polinômios, um para cada intervalo da malha.
É o que chamamos polinômios por pedaços, ou uma polinomial e
finalmente vieram os splines, e os métodos finitos que muito se
parecem: ambos são polinômiais.
A parte final deste capı́tulo faz a construção dos splines por convolução.
a Lagrange,
(1736-1813)
101
102
CAPÍTULO 4. SPLINES
4.1
Aproximação polinomial clássica
Começaremos pela aproximação polinomial clássica, na verdade com um único
objetivo em mente, mostrar que ela exige uma amostragem muito grande do
fenômeno para que se possa obter uma boa aproximação e, consequentemente,
não é prática (computacional). Ela servirá como motivação para o assunto
das últimas seções, aproximação polinomial por pedaços e finalmente para os
splines.
Nesta primeira seção vamos apresentar o problema um pouco de forma
histórica mas com o objetivo de encaminhá-lo para um uso intenso de dois
programas, gnuplot e scilab.
O gnuplot já vem sendo usado no livro desde o primeiro capı́tulo, aqui
você vai ter a possibilidade de usá-lo como uma máquina de calcular. scilab,
[23], é um pacote computacional distribuido gratuitamente pelo instituto francês
INRIA que se dedica aos experimentos numéricos computacionais em vários
campos da ciência sendo scilab um dos projetos deste instituto. scilab, entre
outras coisas, resolve sistemas de equações lineares de grande porte. Neste
sentido vou usar, inicialmente, a aproximação polinomial como uma motivação
para aumentar a sua experiência com estes dois programas.
A idéia intuitiva, e ingênua1 , para aproximação polinomial ou interpolação
polinomial de n pontos
(x0 , y0 ) · · · (xn−1 , yn−1 )
(4.1)
consiste em encontrar-se um polinômio
P (x) = a0 + a1 x + · · · + am xm
tal que
P (xk ) = yk ; k ∈ {0, · · · n − 1}
(4.2)
Como as incógnitas do problema são os coeficientes de P e como temos n
condições, vemos que P deve ter no mı́nimo2 n coeficientes: um polinômio de
grau n − 1.
Vamos começar do começo, com o caso mais simples, um polinômio do primeiro grau.
A figura (4.1) página 103, mostra a solução deste problema quando tivermos
dois pontos,
P = (a, b) ; Q = (c, d)
1 Veremos, mais adiante, que existe uma solução, a chamada de Lagrange, que não é nem
ingênua e nem intuitiva.
2 Com grau maior, há mais coeficientes aumentando o grau de liberdade da solução e
permitindo uma maior seleção entre as soluções.
103
CAPÍTULO 4. SPLINES
Q
(c,d)
f(p)
f(x) = m (x−a) + b
f(a) = b
P
f(c) = d
(a,b)
p
a
c
[a,c]
Figura 4.1:
Uma reta interpola dois pontos
precisamos de um polinômio a ser determinado por dois coeficientes:
f (x) = m(x − a) + b ; f (a) = b ; m =
d−b
; c 6= a
c−a
(4.3)
Como já vimos em várias ocasiões neste livro, é interessante escrever o polinômio desenvolvido em dos pontos porque teremos de graça um dos coeficientes
quando impusermos a condição f (a) = b na equação (3) temos o valor de b a
ordenada de um dos pontos que determina a reta.
Claro, é preciso vermos claro quais são as condições do problema, mesmo
que isto tenha sido dito acima, uma pequena repetição torna-se didática: “são
dados dois pontos e queremos saber qual é o polinômio que interpola estes dois
pontos”. Encontrar um polinômio significa encontrar os seus coeficientes.
O nosso objetivo aqui não é geométrico e sim funcional, desejamos funções.
No caso da reta, figura (4.1) estamos entendendo que foram feitas duas medidas,
uma no ponto x = a com intensidade y = b e outra no ponto x = c com
intensidade y = d resultando nos dois pontos P = (a, b), Q = (c, d) e a reta que
aparece na figura é a uma aproximação do que acontece no intervalo [a, c].
Se todas as informações que tivermos forem estas (muito pobre o conjunto
de informações) a única modelagem do fenômeno é o segmento de reta que passa
nos dois pontos, na figura (4.1).
Se considerarmos um ponto p ∈ [a, c] o valor do fenômeno neste ponto, obtido
como interpolação (linear) é o valor da função do primeiro grau, equação (3),
calculada no ponto p. Pontos calculados em cima de retas são médias aritmética
104
CAPÍTULO 4. SPLINES
ponderadas dos valores que determinam esta reta, isto é a melhor que coisa que
podemos obter com esta quantidae (pobre) de informações.
Em geral se quer obter mais informações, mas obviamente existe um custo
associado a quantidade de informações: mais pessoas levantando dados, mais
tempo de busca, mais tempo de processamento. Então precisamos de métodos
mais eficientes para conseguir o melhor resultado com uma quantidade menor
de informações, este é o objetivo deste capı́tulo, desenvolver um método nos
permita interpolar as informações conhecidas para calcular mais informações a
partir das (poucas) informações obtidas.
Nesta primeira seção estamos apresentando a solução clássica, que se originou no século 18, uma antiguidade digna de museu, mas que vale a pena pelo
menos conhecer porque é magnifica considerando os parcos meios que Euler e
Lagrange e outros tinham para chegar nesta solução, e não somente nisto, ela é
bastante exata, porém depende de uma grande quantidade de informações.
Veja mais uma comparação gráfica para ilustrar a imprecisão com que uma
pequena quantidade de informações nos deixa. Na figura (4.2) página 104,
estamos apresentando uma formulação gráfica de um pretenso fenômeno real
o valor obtido por
interpolação linear
para x=p
Q
o fenômeno "real"
(c,d)
f(x) = m (x−a) + b
f(a) = b
P
f(c) = d
(a,b)
O erro no ponto
x=p
p
a
c
[a,c]
Figura 4.2:
A reta e o fenômeno real
associado à reta que que interpola o fenômeno a partir, apenas, das informações
coletadas nos extremos do intervalo. Você pode ver neste gráfico que a reta
nada tem a ver com o fenômeno modelado, porque a quantidade de informações
coletadas é muito pequena.
Observe que se, tudo que soubermos for os valores nos pontos x = a e x = c,
não teremos nenhuma condição de avaliar o erro ocorrido ao considerar a média
CAPÍTULO 4. SPLINES
105
aritmética f (p) como um valor aproximado do fenômeno no ponto x = p.
O gráfico na figura (4.2) é apenas uma ilustração, é um gráfico feito à mão.
Certamente não lhe estamos dizendo nada de extraordinário, o que desejamos
é conscientizá-lo para a necessidade de um trabalho maior em que pretendemos
metê-lo agora: resolver um grande sistema de equações lineares. Felizmente
temos bons programas para resolver sistemas de equações lineares e a prática
com usá-los lhe será útil em muitas situações.
Uma solução para este problema, quando tivermos um levantamento de dados com n informações, pode ser obtida com um sistema de n equações nas n
incóognitas representadas pelos coeficientes de P
P (x) = a0 + a1 x + · · · + an−1 xn−1
(4.4)
um polinômio de grau n − 1, como no caso da reta, duas informações, são
interpoladas com um polinômio de grau 1, n informações serão interpoladas
com um polinômio de grau n − 1.
Vamos começar brincando um pouco com várias interpolações polinômiais
tendo como objetivo mostrar-lhe que gnuplot é um excelente instrumento para
testes porque lhe permite somar polinômios ou multiplicá-los por constantes e
portanto pesquisar saı́das para um problema para o qual você ainda não tenha
um modelo adequado.
gnuplot é uma máquina de calcular com potencialidades bem elevadas e é
isto que lhe queremos mostrar, inicialmente.
4.1.1
Análise de dois casos particulares
Interpolando pontos sobre o eixo OX
No primeiro caso considerarmos o caso em que yk = 0 para todo k, podemos facilmente ver que há muitas soluções para este problema e assim discutir
a existência de uma solução ótima. Veja na figura (fig. 4.3) página 106, as
múltiplas soluções, para o problema particular, construidas com gnuplot
Esta modelagem com gnuplot foi produzida com o seguinte script que pode
ser encontrado aqui, [20, programas.tgz].
## splines01.01.gnuplot é 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 ## módulo máximo da derivada (visualmente)
P(x) = (1/M)*p(x)
dP(x)=(1/M)*dp(x)
plot P(x), dP(x),0
106
CAPÍTULO 4. SPLINES
3.5
P(x)
g(x)
0
3
2.5
2
1.5
1
0.5
0
−0.5
−1
−1.5
−4
Figura 4.3:
−2
0
2
4
6
Duas soluções do problema homogêneo
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_03.fig
Neste caso particular, quando estivermos interpolando pontos de um intervalo contido em R, qualquer múltiplo de uma solução é também uma solução,
e a soma de duas soluções é também uma solução produzindo um espaço vetorial de soluções e você pode se divertir procurando a dimensão deste espaço
vetorial. . .
Ao construir a solução do problema:
• fizemos o gráfico de p, p′ = dp
• módulo máximo calculamos, visualmente, o módulo máximo de p′ . Existe
um teorema que garante que o módulo máximo de um polinômio ocorre na
fronteira de um disco que contém este intervalo considerado. É o teorema
do módulo máximo e a figura (fig. 5) página 120, é uma ilustração do
teorema do módulo máximo estudado em variáveis complexas. A figura
justifica porque preferimos calcular visualmente o máximo da derivada;
• usamos como coeficiente
1
; M = 470.0 ; M = max(|p′ (x)|)
M
107
CAPÍTULO 4. SPLINES
que é o valor do módulo máximo da derivada de p no intervalo
I = [a3 − 1, a0 + 1]
• redefinimos o polinômio, P (x) =
do polinômio P no intervalo I.
1
M p(x),
portanto reduzimos a oscilação3
• O módulo máximo vem do plano complexo que o melhor lugar para estudarmos polinômios (mas também um pouco mais complicado), a figura
(5) mostra o que significa o módulo máximo quando estudamos polinômios
com variáveis complexas. Esta é a última menção às variáveis complexas
neste livro para o caso de você querer saber onde é que se pode obter
informações mais completas sobre o uso do módulo máximo.
Módulo máximo
pré imagem do
ponto de módulo
máximo
O módulo máximo
no plano complexo
Figura 4.4:
O teorema do módulo máximo
Esta análise sugere a existência de uma solução ótima. Vamos ver que existe
uma solução única para o problema que é também, em um certo sentido, ótima.
Os exercı́cios seguintes devem conduzı́-lo a uma compreensão da oscilação
dos polinômios interpolantes associada a densidade da malha representada pelos pontos a serem interpolados. O objetivo dos exercı́cios é o de lhe oferecer
uma oportunidade de fazer cálculos, portanto faça experiências com gnuplot
e scilab mas não despreze as expressões formais sem as quais não é possı́vel
escreverem-se os programas.
Quanto mais densa a malha, menor a oscilação no interior do intervalo em
que se encontram os pontos (nós) da malha. Os exercı́cios vai convidá-lo a usar
scilab, um pacote para fazer Álgebra Linear, [23].
Quando os valores dados estão fora de OX
No segundo caso consideramos yk = r uma constante r ∈ R,.
Aqui nos ajuda a solução dos sistemas lineares dos quais sabemos que a
solução geral de um sistema (é o caso agora) é a solução geral do caso homogêneo
(o primeiro caso que estudamos) mais uma solução particular do caso geral.
3 Observe que para reduzir a oscilação do polinômio fomos buscar o módulo máximo da
derivada
108
CAPÍTULO 4. SPLINES
Qualquer solução P do problema homogêneo, somada de uma solução particular, um polinômio, portanto um conjunto de coeficientes, é a solução geral
deste problema não homogêneo. Vem da Álgebra Linear, porque o problema
se reduz à procura dos coeficientes sendo portanto um equação matricial. Um
exemplo particular está no exercı́cio (3) na página 109.
Não é possı́vel obter todas as soluções do problema não homogêneo sem
considerar o caso homogêneo foi poristo que dividimos a questão em dois casos.
Esta formulação é importante se estivermos trabalhando com sistemas superdeterminados onde existe uma infinidade de soluções (uma infinidade de
polinômios).
Se quisermos encontrar o (único) polinômio de grau n − 1 que interpola n
pontos dados, a solução é única, e se trata simplesmente de resolver um sistema
de equações determinado como mostra o exercı́cio (3) na página 109.
Não vamos voltar mais a esta questão neste livro, isto é uma decisão de
otimizar esforços, o nosso objetivo são os splines, quer dizer polinômios por
pedaços. Se o leitor precisar de modelar com polinômios, o que foi dito acima é
suficiente para guiá-lo na complementação do que ainda precisar.
Exercı́cios 13 Interpolação e oscilação de um polinômio
1. O gráfico na figura (fig. 4.1) foi produzido com o script
splines01.01.gnuplot
que se encontra aqui [20, programas.tgz]. Edite este script e faça alguns
experimentos com polinômios. Eis algumas sugestões:
• encontre uma famı́lia de polinômios que que interpolem os pontos
{(a0 , r), (a1, r), (a2, r), (a3, r), (a4, r)}
(4.5)
escolha os valores de ai diretamente dentro do script do gnuplot;
• Construa um polinômio que passa em dois pontos escolhidos com uma
oscilação especificada.
solução: splines01.02.gnuplot, [20, programas.tgz].
• Mais difı́cil: construa um polinômio com oscilação especificada que
passe em alguns pontos escolhidos. Você vai precisar de resolver um
sistema de equações. . .
2. interpolação linear Tudo que sabemos sobre um fenômeno f medido sobre
o intervalo [a, b] são os valores do fenômeno nos pontos a, b, c:
[a, b] = [−3, 5] ; f (−3) = 7; c = 0f (c) = −2; f (5) = 1
(4.6)
Interpole,linearmente, estas informações estimando qual poderia ser o
valor de f nos pontos
{−2, 0, 2}
(4.7)
Faça um gráfico ilustrativo.
109
CAPÍTULO 4. SPLINES
7
f(x)
0
6
5
4
3
2
1
0
-1
-2
-3
-2
-1
Figura 4.5:
0
1
2
3
4
5
Aproximação linear por pedaços - 1-spline
Solução 2 Veja o gráfico na figura (fig. 4.5) página 109,
Esta função está definida por dois sementos de reta, um quando x < 0 e
outro quando x ≥ 0.
x = −2 ⇒ (x < 0)f (x) = 7 − (9/3)(x + 3); f (−2) = 4
x = 0 ⇒ (x ≥ 0)f (x) = −2 + (3/5) ∗ x; f (0) = −2
x = 2 ⇒ (x ≥ 0)f (x) = −2 + (3/5) ∗ x; f (2) = −0.8
(4.8)
(4.9)
(4.10)
————————————————
3. interpolação n~
ao linear Temos as informações f (xk ) sobre f definida no
intervalo [a, b]:
[a, b] = [−3, 5]; x0 = −3; x1 = −2; x2 = 0; x3 = 2; x4 = 5
f (−3) = 7; f (−2) = 3; f (0) = −3; f (2) = 0; f (5) = 1
(4.11)
(4.12)
Encontre um polinômio do quarto grau
P (x) = a0 + a1 x + a2 x2 + a3 x3 + a4 x4
(4.13)
P (xk ) = f (xk )
(4.14)
tal que
interpolando não linearmente as informações contidas na (eq. 12). Use
esta interpolação para obter uma estimativa dos valores de f nos pontos
{−1, 1, 3}
Faça um gráfico ilustrativo.
(4.15)
110
CAPÍTULO 4. SPLINES
Solução 3 As informações que temos nos permitem montar a tabela
xk
yk
-3
7
-2
3
0
-3
2
0
5
1
P (−3) = a0 − 3a1 + 9a2 − 27a3 + 81a4 = 7
(4.16)
P (−2) = a0 − 2a1 + 4a2 − 8a3 + 16a4 = 3
P (−2) = a0 = −3
(4.17)
(4.18)
P (2) = a0 + 2a1 + 4a2 + 8a3 + 16a4 = 0
P (5) = a0 + 5a1 + 25a2 + 125a3 + 625a4 = 1
(4.19)
(4.20)
−3a1 + 9a2 − 27a3 + 81a4 = 11
−2a1 + 4a2 − 8a3 + 16a4 = 6
2a1 + 4a2 + 8a3 + 16a4 = 3
(4.21)
(4.22)
(4.23)

−3
 −2

 2
5
5a1 + 25a2 + 125a3 + 625a4 = 4
 

a1
9 −27 81
 

4 −8
16 
  a2  = 
4
8
16   a3  
a4
25 125 625
(4.24)

11
6 

3 
4
(4.25)
Vamos primeiro usar scilab para resolver o sistema de equações depois
vamos mostrar uma outra forma de resolver o problema associado com o
que fizemos no capı́tulo 1, usando a idéia (não o conceito) de polinômio
de Taylor. Com scilab resolvemos qualquer sistema de equações portanto
não precisamos de técnicas mais avançadas de cálculos manuais (que mostraremos depois).
a = [-3 , 9 , -27 , 81 ;
-2 , 4 , -8,
16 ;
2 , 4 , 8 , 16
;
5 , 25 , 125 , 625]
a =
! - 3.
! - 2.
!
2.
!
5.
9.
4.
4.
25.
- 27.
- 8.
8.
125.
-->b=[11 ; 6 ;3
b =
!
!
11. !
6. !
;4]
81.
16.
16.
625.
!
!
!
!
CAPÍTULO 4. SPLINES
!
!
3.
4.
111
!
!
-->a\b
ans =
! - 0.6880952 !
!
1.2678571 !
! - 0.0154762 !
! - 0.0357143 !
-->function y = f(x)
-->y =-3 -0.6880952*x + 1.2678571*x*x - 0.0154762*x*x*x - 0.0357143*x*
-->endfunction
-->f(0) = - 3.
-->f(-3)
=
-->f(-2) =
7.9999986
2.9999996
-->f(2) = - 0.0000004
-->f(5) =
0.999989
a0 = −3; a1 = −0.6880952; a2 = 1.2678571;
a3 = −0.0154762; a4 = −0.0357143
(4.26)
(4.27)
Observe o erro apreciável no cálculo de f (−3) = 7.9999986 cometido
usando scilab. O erro não é do scilab mas do método, uma interpolação
polinomial de grau 4 das quatro informações obtidas de uma tabela.
Devemos ainda calcular, usando a interpolação polinomial, os valores de
f (−1), f (1), f (3), com scilab
-->f(-1)
=
- 1.0642858
-->f(1)
=
- 2.4714286
-->f(3)
=
3.0357126
Veja o gráfico deste polinômio, feito com scilab na figura (fig. 4.6) página
112,
112
CAPÍTULO 4. SPLINES
8
f(x)
0
6
4
2
0
−2
−4
−3
−2
−1
Figura 4.6:
0
1
2
3
4
5
interpolação polinomial dos pontos
————————————————
Outra solução, de acordo com o que desenvolvemos no capı́tulo 1, vamos
desenvolver o polinômio no ponto x = −3
f (x) = a0 + a1 (x + 3) + a2 (x + 3)2 + a3 (x + 3)3
a0 = −7

f (−2) =
−7 + a1 + a2 + a3
=3



f (0) =
−7 + 3a1 + 9a2 + 27a3
= −3
f (2) = −7 + 5a1 + 25a2 + 125a3 = 0



f (5) = −7 + 8a1 + 64a2 + 512a3 = 1
(4.28)
(4.29)
(4.30)
113
CAPÍTULO 4. SPLINES




a1 + a2 + a3
3a1 + 9a2 + 27a3
5a1 + 25a2 + 125a3



8a1 + 64a2 + 512a3
= 10
=4
=7
=8
(4.31)
Resolvendo este sistema de equações com scilab temos
a =
[1 , 1 , 1 ;
3, 9, 27; 5,
25,
125; 8, 64, 512]
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 precisão apenas para f (−3).
Este dois exemplos nos mostram as dificuldades de obter uma interpolação
confiável com polinômios de grau alto determinado pelo número de informações. Aqui foram polinômios de grau pequeno porque também temos
poucas informações.
4. Faça uma pequena dissertação descrevendo quem é f e P na questão
(ex.3). Use em sua redação algumas das palavras: interpolação, linear,
estimativa, aproximação, modelo.
114
CAPÍTULO 4. SPLINES
5. interpolação não linear Calcule o polinomio mónico4 p que interpola os
pontos
(−7.5, 0), (−2.5, 0), (2.5, 0), (7.5, 0)
6. Cálcule o módulo máximo M de p no intervalo [−3, 4] e defina P (x) =
p(x)
. Calcule M axx∈[−3,4] P (x) resposta oscilação = 0.6
M
7. interpolação não linear Refaça a questão considerando os pontos
(−7.5, 0), (−1, 0), (1, 0), (7.5, 0)
.
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(x-x1)*(x-x2)*(x-x3))
plot P(x),dP(x),0
pause -2
8. Comparando as questões (ex. 5) e (ex. 7), verifique que, se os nós formarem uma partição uniforme, a oscilação de P e da derivada P ′ do
polinômio que interpola os pontos é diferente. Identifique em que caso a
oscilação é menor, sobre o intervalo determinado pelos pontos a serem
interpolados.
resposta oscilações 0.6 e 1
Interpolando pontos do plano
Nos exemplos desenvolvidos, mostramos como interpolar n pontos selecionados num intervalo [a, b] contido em R. Também mostramos a baixa precisão
que existe neste método ingênuo de interpolar justificando assim que devemos
procurar métodos mais eficientes.
O nosso objetivo entretanto é, considerada uma coleção de nós sobre um
intervalo [a, b]
a = x0 < x1 < · · · < xn−1 < xn−1 = b
(4.32)
4 se
chama polinômio mônico aquele cujo coeficiente do termos de maior grau é 1
115
CAPÍTULO 4. SPLINES
e um correspondente conjunto de valores
{y0 , y1 , . . . , yn−1 }
(4.33)
como poderiamos interpolar, polinomialmente, os pontos
{(x0 , y0 ), (x1 , y1 ), . . . , (xn−1 , yn−1 )}
(4.34)
ou ainda, encontrar um polinômio P cujo gráfico passe por estes pontos. No
exemplo anterior fizemos isto quando yk = 0 para todo k.
Da mesma forma como
• dois pontos determinam uma reta, um polinômio de grau 1, porque os dois
pontos determinam os dois coeficientes da reta que passa por estes pontos,
• também n pontos determinam um polinômio de grau n−1, os n coeficientes
do polinômio, que os interpola.
Um segmento de reta, um polinômio de grau 1, é a forma de interpolar dois pontos.
A forma eficiente de interpolar n pontos deve ser um polinômio de grau n − 1.
4.1.2
A solução geral do problema
Resolver o problema geral de interpolação polinomial clássica
(x0 , y0 ) · · · (xn−1 , yn−1 )
(4.35)
consiste em encontrar um polinomio P de grau n tal que
P (xk ) = yk ; k ∈ {0, · · · n − 1}.
(4.36)
seremos conduzidos a resolver um sistema de n equações cujas incógnitas são os
coeficientes de um polinômio do grau n − 1
a0 , a1 , · · · , an−1
P (x) = a0 + a1 x + · · · + an−1 xn−1


P (x0 ) =



 P (x1 ) =
..

.



P (xn ) =



P (x0 )

 

..
=



.

P (xn−1 )







P (x0 )
..
.
P (xn−1 )

(4.37)
(4.38)

 
=
y0
..
.
yn−1


 = (4.39)
a0 + a0 x0 + · · · + an−1 xn−1
=
y0
y0
0
y1
a0 + a0 x1 + · · · + an−1 xn−1
=
y1
1
=
(4.40)
..
..
..

.
.
.



yn
a0 + a0 xn−1 + · · · + an−1 xn−1
n−1 = yn−1





n−1
x0
1
x0
x20 · · ·
a0
y0
  a 1   y1 
1
x1
x21 · · ·
xn−1
1

 

..
..
..
..   ..  =  ..  (4.41)
.
.
.
.  .   . 
n−1
an−1
yn−1
1 xn−1 x2n−1 · · · xn−1
116
CAPÍTULO 4. SPLINES



A

a0
a1
..
.
an−1


 
 
=
 
y0
y1
..
.
yn−1



(4.42)

Este é um sistema muito especial cuja matriz A é uma matriz de Vandermonde5 e
sabemos, da Álgebra Linear que o valor do seu determinante é obtido pelo
produto das diferenças entre os seus elementos caracterı́sticos
x0 , x1 , x2 , · · · , xn−1
(4.43)
(x0 − x1 ) · · · (x0 − xn−1 )(x1 − x2 ) · · · (x1 − xn−1 ) · · ·
· · · (xk − xk+1 ) · · · (xk − xn−1 ) · · · (xn−2 − xn−1 ) =
(4.44)
(4.45)
= Πi>j (xi − xj ) = V an((xi )n−1
i=0 ) = D
(4.46)
em que V an((xi )n−1
i=0 ) representa o determinante da matriz de Vandermonde,
de ordem n, ver [12, página 301] ou [29, Vandermonde], cujos elementos caracterı́sticos estão listados entre parênteses como parâmetros.
Este produto é diferente de zero, porque os nós 6 são todos diferentes (não
teria sentido haver nós repetidos). Consequentemente a solução do sistema
existe é única. Isto demonstra o teorema
Teorema 6 da interpolação polinomial de Lagrange
Dada uma partição de um intervalo [a, b] com n nós,
{a = x0 , . . . , xn−1 = b}
(4.47)
existe um único polinômio de grau menor ou igual a n passando pelos pontos
(x0 , y0 ) · · · (xn−1 , yn−1 )
(4.48)
O único polinômio identificado no (teorema 6) pode ser calculado a partir do
sistema de equações descrito acima, mas este método conduz à fórmulas muito
difı́ceis de expressar. Em vez disto vamos usar um método algorı́tmico que vai
conduzir a uma fórmula mais simples para encontrar este polinômio.
Os exercı́cios seguintes são um tutorial para conduzı́-l@ a 7 entender o chamado método de Lagrange para determinação deste único polinômio de grau n
que interpola os pontos
{(x0 , y0 ), (x1 , y1 ), . . . , (xn−1 , yn−1 )}
(4.49)
a = x0 < x1 < · · · < xn−1 = b
(4.50)
associados à malha
sobre o intervalo [a, b].
5 Alexandre
Vandermonde, matemático francês (1735-1796).
da malha de precisão
7 mas descoberto por Edward Waring (1736-1798) e por Leonard Euler (1707-1783)
6 pontos
117
CAPÍTULO 4. SPLINES
Exercı́cios 14 Tutorial sobre polinômio de Lagrange
Estes exercı́cios vão conduzı́-lo a entender o que é um polinômio de interpolação de Lagrange. Os exercı́cios marcados com asterisco podem ser ignorados, porque não serão usados em nenhum local do livro.
1. derivada algoritmica Considere
P (x) = (x − x1 )(x − x2 )(x − x3 )
(4.51)
Verifique que
P ′ (x) = (x − x1 )(x − x2 ) + (x − x1 )(x − x3 ) + (x − x2 )(x − x3 ) (=4.52)
P ′ (x) = P1 (x) + P2 (x) + P3 (x)
(4.53)
em que (notação)
P1 (x) =
P (x)
P (x)
P (x)
; P2 (x) =
; P3 (x) =
x − x1
x − x2
x − x3
(4.54)
Solução 4 Usando a derivada do produto: (uv)′ = u′ v + uv ′ que pode
ser usada com um produto de qualquer quantidade termos, e observando
que a derivada de que cada fator é 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 originais foi eliminado (trocado por 1). É razoável designarmos
P (x)
x−x1 ;
P (x)
P2 (x) = (x − x1 )(x − x3 ) = x−x
;
2
P (x)
P3 (x) = (x − x1 )(x − x2 ) = x−x
3
P1 (x) = (x − x2 )(x − x3 ) =
(4.55)
(4.56)
(4.57)
e desta forma
P ′ (x) = P1 (x) + P2 (x) + P3 (x)
(4.58)
em que Pk é o polinômio sem o fator (x − xk ) ou ainda é o quociente
P (x)
x−xk .
Vamos usar esta notação no próximo exercı́cio.
————————————————
2. Verifique que se
P (x) = (x − x1 )(x − x2 )(x − x3 )
então
(a) Pj (xk ) = 0 se j 6= k
(4.59)
118
CAPÍTULO 4. SPLINES
(b) Pk (xk ) 6= 0
(c) Para todo k P ′ (xk ) 6= 0
Esboce o gráfico de P e tente uma justificativa geométrica para o fato de
que a derivada de P é diferente de zero se as raı́zes forem distintas.
Solução 5 (a) Pj tem todos os fatores (x − xk ) exceto (x − xj ) logo
Pj (xk ) = 0 se j 6= k.
Como (x − xj ) não é fator de Pj então Pj (xj ) 6= 0. Vemos assim que
o valor de Pj (xk ) é
Pj (xk ) = 0 ⇐ j 6= k
(4.60)
Pj (xk ) 6= 0 ⇐ j = k
(b) O cálculo da derivada P ′ (xk ):
P ′ (x) =
3
P
Pk (x)
(4.61)
3
P
(4.62)
k=1
dado k P ′ (xk )
Pj (xk )
j=1
P ′ (xk ) = Pk (xk ) 6= 0
(4.63)
porque todos os termos em que j 6= k se tem Pk (xj ) = 0. Portanto
P ′ é diferente de zero em todos os nós e o seu valor é Pk (xk ) em xk .
Veja o esboço gráfico de P na figura (fig. 4.7) página 118, As retas
P
x1
x2
x3
Figura 4.7:
Polinômio de Lagrange
tangentes tem por coeficiente angular o valor da derivada de P no
119
CAPÍTULO 4. SPLINES
ponto
m1 = P ′ (x1 ) é coeficiente angular em x1
m2 = P ′ (x2 ) é coeficiente angular em x2
(4.64)
(4.65)
m3 = P ′ (x3 ) é coeficiente angular em x3
(4.66)
(4.67)
————————————————
3. Verifique que se
P (x) = (x − x1 )2 (x − x2 )(x − x3 )
(4.68)
então P ′ (x1 ) = 0.
Verifique que definindo
P1 (x) =
então P ′ =
3
P
P (x)
P (x)
2P (x)
; P2 (x) =
; P3 (x) =
x − x1
x − x2
x − x3
Pk .
k=1
Esboce o gráfico de P e tente uma justificativa geométrica do valor zero
ou diferente de zero das derivadas. Tente elaborar uma uma teoria geral
sobre o assunto, comparando este caso com o anterior.
4. derivada algoritmica Considere o polinômio de grau n
P (x) = Πnk=1 (x − xk )
(a) Verifique que
P ′ (x) =
n
X
Pk (x)
(4.69)
(4.70)
k=1
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 polinômio definido pela equação (eq. 69) e as
raizes xk todas distintas, então P ′ (xk ) 6= 0 para todo k = 1 . . . n, o
valor da derivada, em todos os nós, é diferente de zero.
(d) Faça um esboço gráfico de P e escreva uma pequena redação justificando, com uma argumentação geométrica, porque P ′ (xk ) 6= 0.
Solução 6 (a) É uma generalização dos exercı́cios anteriores, agora temos um produto de n monômios, todos tendo por derivada 1. Quando
aplicarmos a derivada do produto teremos uma soma de n novos produtos, cada com n − 1 termos em cada um dos quais aparentemente
dividimos P por cada um dos fatores, sucessivamente:
120
CAPÍTULO 4. SPLINES
P1 =
P2 =
P (x)
x−x1
P (x)
x−x2
..
.
Pn =
(4.71)
(4.72)
(4.73)
P (x)
x−xn
′
P (x) = P1 (x) + P2 (x) + · · · + Pn (x)
n
P
P ′ (x) =
Pk (x)
(4.74)
(4.75)
(4.76)
k=1
(b) Valor de Pk (xj ).
Para cada k, o polinômio Pk (x) é um produto de n − 1 termos em
que o fator (x − xk ) não está presente, logo
Pk (xk ) 6= 0.
Por outro lado todos os fatores (x − xj ) com j 6= k estão presentes
em Pk (x) e assim
Pk (xj ) = 0 ⇐ j 6= k.
(c) Cálculo de P ′ (xj )
P ′ (xj ) =
n
X
k=1
Pk (xj ) = Pj (xj ) 6= 0
(4.77)
O gráfico de P corta o eixo OX em todos os nós se alternando com máximo
ou mı́nimos locais entre as raı́zes. É um gráfico semelhante ao que você
pode ver na figura (fig. 4.7) página 118.
————————————————
5. * Verifique (tente uma demonstração) se P for dado pela equação (eq. 69)
com todos os xk distintos, então as raizes de P e P ′ “se entrelaçam” (tem
uma) raı́z de P ′ entre duas raizes de P . Escreva um teorema descrevendo
inteiramente esta situação.
Solução 7 Como as raı́zes são todas distintas, (não há raı́zes múltiplas)
então as raı́zes de P ′ são todas distintas das raı́zes de P .
Como entre duas raı́zes de P este polinômio terá um máximo ou um
mı́nimo8 local, então P ′ tem uma raı́z entre duas raı́zes de P .
————————————————
8 quem
garante isto é a continuidade
121
CAPÍTULO 4. SPLINES
6. * Por que a teoria do item anterior falha se houver raizes múltiplas em
(eq. 69) ?
Solução 8 Porque quando houver uma raı́z múltipla, ela também será
raiz da derivada. Suponhamos que x = a seja uma raı́z com multiplicidade
n > 1 então
′
f (x) = (x − a)n g(x)
n−1
(4.78)
n ′
f (x) = n(x − a)
g(x) + (x − a) g (x) =
f (x) = (x − a)[n(x − a)n−2 g(x) + (x − a)n−1 g ′ (x)]
′
f ′ (a) = 0
(4.79)
(4.80)
(4.81)
então x = a também é raı́z de f ′ .
————————————————
7. * A hipótese essencial na teoria do exercı́cio (exer. 5) é que P é uma
função contı́nua e P ′ também é contı́nua. Generalize o (exer. 5 ) com
estas duas hipóteses, para uma função f que é contı́nua e continuamente
diferenciável.
8. *oscilação da derivada(1) Considere P (x) = x2 −a2 . Encontre uma condição
para que o máximo da derivada P ′ seja maior do que o máximo de P no
intervalo que contém as raı́zes9 [−a, a]; a > 0 Prove que se |b−a| ≤ 4 então
|(x − a)(x − b)| ≤ |2x − a − b| =⇒ x ∈ [a, b]
Sugestão: nada muda no tamanho (desigualdades) quando os gráficos forem transladados...
9. *oscilação da derivada(2) Verifique que para P (x) = x(x2 − 1) o máximo
da derivada P ′ é maior do que o máximo de P no intervalo que contém
as raı́zes [−1, 1]
10. Polinômio interpolando pontos no plano
(a) Considere a sequência de nós
{−2.5, −1.5, 0.5, 2, 3} ⊂ [−3, 3]
e encontre P com estas raı́zes e calculo o módulo máximo, M , de P ′ .
(b) Solução ótima 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 polinômio que interpole este pontos usando o polinômio
Q. Faça os gráficos.
9a
condição a > 0 não é essencial, apenas facilita a apresentação do problema.
122
CAPÍTULO 4. SPLINES
11. polinômio de Lagrange Considere a seqüência de nós
xk ∈ {−2.5, −1.5, 0.5, 2, 3} ⊂ [−3, 3]
do intervalo [−3, 3]. Seja P o polinômio mônico10 que tem estes nós como
P (x)
.
raı́zes. E defina Pk (x) = x−x
k
(a) Calcule P ′ .
(b) Mostre que
′
P =
5
X
Pk .
k=1
(c) Mostre que
Pj (xk ) = 0 =⇒ j 6= k
(d) Mostre que
P ′ (xj ) = Pj (xj )
(e) Defina
5
X
Pk (x)
f (x) =
P ′ (xk )
k=1
Verifique que f é um polinômio de grau no máximo 5. Calculando
seus valores sobre os nós, verifique sua equação.
(f ) Considere a seguinte sucessão de dados yk ∈ {4, 1, −2, −5, 7} e re5
P
yk Pk (x)
defina f (x) =
P ′ (xk ) . Mostre que f (yk ) = yk e que, portanto, o
k=1
polinômio f interpola os pontos
(−2.5, 4), (−1.5, 1), (0.5, −2)(2, −5), (3, 7)
do plano.
(g) polinômio de Lagrange Considere uma seqüência de nós
(xk )nk=0 ⊂ [α, β]
Seja P o polinômio mônico11 que tem estes nós como raı́zes. E defina
P (x)
.
Pk (x) = x−x
k
10 aquele
cujo coeficiente do termo de maior grau é 1, obtido com os produtos
(x − x1 ) · · · (x − x5 ).
11 aquele
cujo coeficiente do termo de maior grau é 1, obtido com os produtos
(x − x1 ) · · · (x − x8 ).
123
CAPÍTULO 4. SPLINES
i. Calcule P ′ .
ii. Mostre que
′
P =
n
X
Pk .
k=0
iii. Mostre que
Pj (xk ) = 0 =⇒ j 6= k
iv. Mostre que
P ′ (xj ) = Pj (xj )
v. Defina
n
X
Pk (x)
f (x) =
P ′ (xk )
k=0
Verifique que f é um polinômio de grau no máximo n. Calculando seus valores sobre os nós, verifique sua equação.
vi. Considere uma sucessão de dados (yk )nk=0 e redefina f (x) =
n
P
yk Pk (x)
. Mostre que f (yk ) = yk e que, portanto, o polinômio
P ′ (xk )
k=0
f interpola os pontos
((xk , yk )nk=0 )
do plano.
(h) Considere uma sucessão (crescente) de nós (xk )nk=0 de um intervalo
[a, b]. Seja P o polinômio mônico12 que tem estes nós como raı́zes. E
P (x)
. Verifique que
defina Pk (x) = x−x
k
i.
′
P =
n
X
Pk
k=0
ii.
Pj (xk ) = 0 =⇒ j 6= k
iii.
Pj (xj ) = P ′ (xj )
iv. f (x) =
n
P
k=0
Pk (x)
P ′ (xk )
é um polinômio de grau no máximo n. Calcu-
lando seus valores sobre os nós, verifique sua equação.
v. Polinômio de Lagrange Considere uma sucessão de dados (yk )nk=0
n
P
yk Pk (x)
. Mostre que f (yk ) = yk
e redefina f (x) =
P ′ (xk )
k=0
12 aquele
cujo coeficiente do termo de maior grau é 1, obtido com os produtos
(x − x0 ) · · · (x − xn ).
124
CAPÍTULO 4. SPLINES
4.1.3
Interpolação polinomial de Lagrange
Se você tiver feito o tutorial sobre polinômio de Lagrange esta seção representa
apenas um resumo do que foi feito no tutorial e possivelmente pode ser pulada.
Considere dois pontos no plano, eles determinam uma reta que é o gráfico de
um polinômio de grau menor13 ou igual a 1. Isto é dois pontos são interpolados
por um polinômio de grau menor que dois. Tres pontos são interpolados por
uma parábola ou uma reta, novamente o grau é menor do que a quantidade de
pontos.
Assim, se quisermos interpolar n + 1 pontos, deveremos obter um polinômio
de grau no máximo n cujos n + 1 coeficientes ficam unicamente determinados
pelos n + 1 pontos dados. Aliás, o fato de havermos encontrado uma multitude
de soluções é um indicativo da fraqueza do método. Por outro lado, observe
que o adjetivo “fraqueza” é enganoso uma vez que na verdade a nossa conclusão
deveria ser a de que existe excesso de informações e este excesso de informações
pode ser algumas vezes usado para obter melhor solução em outro contexto.
Guarde este comentário para uso posterior.
Vamos fazer um resumo do método, devido a Lagrange14 para construir um
polinômio de grau menor ou igual a n − 1 interpolando n pontos
(x0 , y0 ), · · · (xn−1 , yn−1 ) ; x0 < x1 < · · · < xn−1
dados.
O método de Lagrange representa uma alternativa, usando a derivada, para
limitar a oscilação do polinômio de interpolação.
Como habitual, chamamos os pontos x0 , . . . , xn−1 ∈ I = [a, b] de nós de
uma malha que consideramos no intervalo I. Como sempre,
a = x0 , b = xn−1
são os extremos do intervalo considerado.
Estes nós que definem uma partição do intervalo I são chamados de pontos de precisão porque neles conhecemos exatamente a função que está sendo
estudada, por exemplo, eles são os pontos em que estão colocados os sensores
que mediram algum fenômeno. Se estivermos aproximando alguma função g, a
função aproximante f que será construida por algum dos métodos que estudaremos neste capı́tulo, conı̈ncidirá com g nestes pontos: f (xk ) = g(xk ).
A partição não precisa ser uniforme, embora seja prático, nas implementações
computacionais, considerar partições uniformes porque simplifica a construção
do algoritmo. Você irá encontrar, entre os nossos programas, um meio para trabalhar com partições não uniformes, que podem ser úteis em alguns contextos,
como na análise de de fenômenos com alta oscilação, ou piques.
Portanto a medida dos intervalos Ik = [xk , xk+1 ] não precisa ser a mesma.
Começamos considerando o polinômio
Q(x) = (x − x0 ) · · · (x − xn−1 )
13 salvo
14 mas
no caso em que os pontos estejam sobre uma paralela ao eixo OY ...
descoberto por Edward Waring (1736-1798) e por Leonard Euler (1707-1783)
(4.82)
125
CAPÍTULO 4. SPLINES
de grau n + 1 cuja derivada é obtida pela regra do produto, acompanhe a
sequência de operações que lhe devem ser familiares, como consequência de
exercı́cios anteriores:
Pk (x) =
P (x)
x−xk
um polinômio de grau n
P ′ (x) =
n−1
P
Pk (x)
(4.83)
(4.84)
k=0
Pk (xk ) = P ′ (xk )
Pk (xj ) = 0 ⇐==⇒ j 6= k
n−1
P Pk (x)
f (x) =
P ′ (xk )
(4.85)
(4.86)
(4.87)
k=0
f (xk ) =
n−1
P
k=0
Pk (xk )
P ′ (xk )
=
Pk (xk )
P ′ (xk )
=
P ′ (xk )
P ′ (xk )
=1
(4.88)
como f é uma combinação de polinômios de grau n então é um polinômio cujo
grau é no máximo n. Como os valores deste polinômio nos n + 1 nós são a
unidade, podemos concluir que f é constante igual a 1. As experiências feitas
com gnuplot na lista de exercı́cios acima já evidenciou estes fatos.
n−1
P Pk (xk )
Quer dizer que a expressão
P ′ (xk ) é uma combinação linear convexa
k=0
(uma soma de pesos), para todos os valores de x no intervalo [a, b]. Se portanto
escolhermos uma coleção de n + 1 valores, cada um deles associados a um dos
nós podemos definir:
n−1
X yk Pk (x)
(4.89)
g(x) =
P ′ (xk )
k=0
e como o valor da soma, em cada nó era 1, agora
g(xk ) = yk
o que nos dá um polinômio de grau n passando por n + 1 pontos escolhidos no
intervalo [a, b].
O polinômio de grau n, equação (89), é o polinômio de interpolação de
Lagrange.
126
CAPÍTULO 4. SPLINES
4.2
Funções polinomiais por pedaços
A forma mais simples de interpolar uma coleção de pontos do plano consiste em ligá-los por
segmentos de reta: a poligonal cujos vértices são os pontos dados. Aqui vamos considerar
um caso particular em que os pontos dados representam valores de uma função hipotética
defina em um intervalo [α, β], os valores obtidos pelas medições de um sensor ao longo de um
intervalo do tempo. Nestas condições as abcissas destes pontos são uma sequência crescente
de pontos do intervalo [α, β],
{α = a0 < a1 < · · · < an = β}
e a poligonal mencionada acima é uma função linear por pedaços, caso particular do nosso
objetivo. Vamos generalizar o caso das poligonais nesta seção construindo os quase-splines,
que são funções polinômiais por pedaços do terceiro grau cuja derivada é contı́nua.
Nesta seção vamos fazer a construção teórica das funções polinomiais por
pedaços que já aparecerem em vários exercı́cios e que portanto você já está
praticamente familiarizado com este instrumento. Aqui a linguagem será mais
formal apenas.
Alguns itens da lista de exercı́cios seguinte servem apenas para relembrá-lo
de algumas técnicas, do Cálculo Diferencial e Integral e da Geometria Analı́tica
que precisaremos na continuação. Aquilo que lhe parecer trivial você deve,
simplesmente, saltar.
Exercı́cios 15 Polinômios por pedaços
1. Função linear por pedaços
(a) Considere a seqüência de nós
xk ∈ {−3, −2.5, −1.5, −0.5, 0.5, 1.5, 2.5, 3} ⊂ [−3, 3]
e a seqüência de valores correspondente
yk ∈ {0, 1, −1, −2, −3, −1, 2, 0}
Construa, (faça o gráfico) da poligonal que interpola os pontos (xk , yk ).
(b) Chame f a função cujo gráfico foi feito no item anterior e calcule os
seus valores nos pontos inteiros do intervalo [−3, 3].
2. Considere a seguinte melhoria nos dados do item anterior: para cada nó
da malha, o sensor calculou a taxa de variação
dk ∈ {1, 0, −2, −1, 0, 1, 0, −1}
e consequentemente, em cada intervalo Ik = [ak , ak+1 ] temos quatro informações:
127
CAPÍTULO 4. SPLINES
Ik =
nó
xk
xk+1
valor
yk
yk+1
taxa de variação
dk
dk+1
Encontre, para cada intervalo Ik , o polinômio
Pk (x) = ak,0 + ak,0 (x − xk ) + ak,0 (x − xk )2 + ak,0 (x − xk )3
que15 pode ser obtido considerando os valores nos extremos de Ik , yk , yk+1
e as taxas de variação nestes pontos, dk , dk+1 , quer dizer que
Pk′ (xk ) = dk
Pk′ (xk+1 ) = dk+1
Pk (xk ) = yk
Pk (xk+1 ) = yk+1
3. Calcule a quantidade do fenômeno descrito no exercı́cio (ex. 2 ), por
definição a quantidade de um fenômeno é a integral da função que o descreve.
4. Considere a seguinte tabela de dados (obtidos por um sensor)
xk
−5
1
7
yk
7
3
5
dk
−3
1
−2
em que xk são os nós da malha e yk , dk são, respectivamente o valor medido e a taxa de variação calculada em cada nó. Encontre um polinômio
por pedaços do16 terceiro grau, P , que represesente o fenômeno no intervalo [−3, 3] e faça o gráfico.
4.2.1
Um sensor mais inteligente
Retomando a linguagem e a notação que usamos na discussão do polinômio de
Lagrange, quando tivermos uma malha
{a = x0 , . . . , xn = b}
(4.90)
definindo uma partição de um intervalo [a, b], o problema tı́pico que desejamos
resolver consiste em criar um modelo para um fenômeno cujos valores
{y0 , . . . , yn }
(4.91)
são conhecidos (medidos) sobre os nós. Anteriormente usamos a linguagem
“desejamos encontrar um polinômio que passe pelos n + 1 pontos”
(x0 , y0 ) · · · (xn , yn )
15 dizemos
16 chamos
que este polinômio está desenvolvido no ponto xk
este tipo de função de “uma polinomial do terceiro grau”
(4.92)
128
CAPÍTULO 4. SPLINES
agora diremos que desejamos encontrar uma polinomial, uma função polinomial
por pedaços que passe pelos pontos na equação (92).
Uma situação prática que este problema descreve, consiste de uma série de
sensores colocados ao longo de uma via por onde passe o fenômeno que desejamos
medir, como um oleoduto e a pressão arterial do flúido que nele passe, ou a
velocidade e a intensidade do tráfego em uma estrada, enfim, qualquer evento
que possa ser medido controlado por um parâmetro que pertence a um intervalo.
Este é o significado de yk , a medida tomada no nó xk , examine os exercicios
(ex. 2) e (ex. 3), página 127.
Vamos considerar um sensor de melhor qualidade, capaz de não somente
medir a intensidade do fenômenos em cada nó xk mas também calcular-lhe a
taxa de variação neste ponto. Assim a base de dados que temos é
(x0 , y0 , d0 ) · · · (xn , yn , dn )
(4.93)
em que yk é a intensidade do fenômeno em cada nó xk e dn é a taxa de variação
em cada nó.
Exemplo 10 Sensor
Vamos mostrar com um pequeno exemplo que a situação descrita acima e
explorada no exercı́cio 1, do sensor que também mede taxas de variação, é
realista.
Considere um sensor colocado em uma local estratégico para medir um fenômeno que executa as medições a intervalos determinados, a cada minuto, por exemplo. Mas, ao “disparar o medidor, em vez de fazer uma única medida, faz três
medições, por exemplo, a cada mili-segundo.
**aqui página 24
A base de dados assim levantada fica descrita pela matriz


y0,2 −y0,1
y
−y
∆y0,2
∆y0,1
+ 0,3∆t 0,2
∆t1
∆t1 + ∆t2
2
=
2
2

 x0 y0,1 y0,2 y0,3 d0 =

 ..
..
..
..
..
 (4.94)
 .
.
.
.
.


yn,3 −yn,2
∆yn,2
∆yn,1
yn,2 −yn,1
xn
yn,1
yn,2
yn,3
dn =
∆t1
+
2
∆t2
=
∆t1
+
2
∆t2
em que dk é o valor médio das duas taxas de variação que pudemos calcular
usando as três medidas finas obtidas em cada nó.
Simplificando, desta matriz de dados vamos fazer uso apenas da submatriz


x0 y0,1 d0
 ..
..
.. 
(4.95)
 .
.
. 
xn
yn,1
dn
x0
 ..
 .
xn
y0
..
.

d0
.. 
. 
dn
e vamos simplificar a notação

yn
(4.96)
129
CAPÍTULO 4. SPLINES
“esquecendo” o método como obtivemos as derivadas aproximadas e mesmo ignoraremos na continuação que se tratam de “derivadas aproximadas”. Diremos
que dk é a derivada no ponto xn quer dizer que temos 2(n + 1)informações
processadas17 pelo sensor:
• Quatro informações em cada sub-intervalo [xk , xk+1 ]. Temos
no nó xk : yk , dk
(4.97)
no nó xk+1 : yk+1 , dk+1 ;
(4.98)
• Polin^
omios por pedaços. Em cada sub-intervalo podemos calcular um
polinômio de grau três que modela o fenômeno 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), página 127.
• Malha com n + 1 nós, com os n + 1 pontos, incluindo os extremos do intervalo, determinammos n subintervalos, temos n polinômios de grau três
que irão modelar o fenômeno no intervalo [a, b];
• Polinomial de grau três é esta função que estamos chamando de uma polinomial de grau três que usaremos como modelo para os fenômenos que
estamos estudando. A polinomial também chamada de função polinomial
por pedaços.
Podemos resumir estes dados na tabela:

P0 (x) = a0,0 + a0,1 (x − x0 ) + a0,2 (x − x0 )2 + a0,3 (x − x0 )3

..

.
yn dn Pn (x) = an,0 + an,1 (x − xn ) + an,2 (x − xn )2 + an,3 (x − xn )3
(4.99)
Há várias formas de resolver o exercı́cio 1. Leia a solução dos exercı́cios ao
final do capı́tulo, nós vamos usá-la como método de trabalho. Rode os nossos
programas usando-os como exemplos dinâmicos18 do texto.

x0
 ..
 .
xn
y0
..
.
4.2.2
d0
..
.
Aproximação de funções
Analise o gráfico (fig. 4.8) página 130,
Este gráfico (fig. 4.8), pode ser reproduzido e inclusive impresso em papel,
usando o programa19 aproximacao que pode ser encontrado em [20, programas.tgz] No gráfico você pode ver uma função do tipo
f (x) = P (x)sen(ax + b)
17 Houve
(4.100)
uma quantidade bem maior de informações coletadas, depois de coletadas foram
processadas, ou pelo sensor ou por um programa num computador resultando em 2(n + 1)
informações.
18 simplesmente rodar os programas não o vai levar a adquirir conhecimento...
19 escolha, no programa, a opção (3)
130
CAPÍTULO 4. SPLINES
gráfico da aproximação
Aproximação de uma função
60
"polped"
"precisao"
"XOY"
40
20
0
−20
−40
−60
−10
−5
0
5
10
gráfico da função
Figura 4.8:
Aproximação de uma função
obtida pelo produto de uma função polinomial por uma senoide. Tais funções
são bons exemplos de modelos com grandes oscilações e portanto que oferecem
dificuldades para serem aproximadas. Rodando o programa com intervalos grandes, por exemplo [−30, 30] você poderá ver os defeitos da aproximação. Usando
o intervalo default do programa, você terá uma visão enganosa de perfeição, mas
é este o objetivo do programa, permitir que você manipule o exemplo o que não
é possı́vel fazer com uma figura como (fig. 4.8).
Observação 5 Simulação da realidade
Primeiro que tudo é preciso observar que não temos nenhuma função para
aproximar. O nosso objetivo é o de resolver problemas do tipo exemplificado
pelo (ex. 3), página 127 em que uma massa de dados é obtida, de alguma
forma20 , representando um certo fenômeno que desejamos estudar. No caso
dos programas educacionais que fizemos, é interessante supor que exista uma
função f dada, por uma equação “algébrica”21 , como
f (x) = P (x)sen(ax + b),
porque podemos exibir gráficos que mostrem as perfeições ou as fraquezas do
método. Nada poderiamos ilustrar apenas apresentando o modelo.
Falaremos com frequência de uma função hipotética que estamos tentando
aproximar, e essa função seria a equação do fenômeno. Ora, a Natureza é muito
rebelde para ser equacionada e é porisso que precisamos de modelos matemáticos
para simular a Natureza, e, naturalmente, sempre estar conscientes de que uma
parte, possivelmente significativa, da realidade se perdeu em sua idealização pelo
modelo.
20 em
geral com auxı́lio de sensores
usando “algébrico” de forma larga, seno não é evidentemente uma função
algébrica
21 estamos
CAPÍTULO 4. SPLINES
131
A única forma de ter segurança com simulações é
• Rodar diversas vezes o modelo. Rode o programa aproximacao com intervalos bem diferentes, para entender o que estamos dizendo;
• cada vez que o modelo for rodado, fazer uma nova entrada de dados experimentais;
• acompanhar estatisticamente a dispersão entre os dados obtidos com o
modelo e os levantamentos de dados do fenômenos estudado;
• somente aceitar o modelo quando resultados independentes tiverem uma
dispersão estatı́stica baixa.
Modelos são aproximações da realidade construidas por seres humanos que
podem perder de vista um aspecto muito importante do problema no qual você
estiver aplicando o modelo. Eis a razão da importância de entendamos os modelos por dentro e os possamos modificar, este é um ponto central na questão
software aberto.
Obviamente que existe um custo a ser considerado e, infelizmente, este custo
pode ser alguma vezes sobreposto a questões como segurança, aqui entra a ética...
Base teórica dos modelos
Há vários tipos de modelos e este assunto sozinho ocupa vários volumes na
literatura, portanto o leitor deve ficar consciente de que aqui seguiremos por
um atalho em busca de um tipo de modelo de nossa escolha. Na bibligrafia você
poderá encontrar mais dados para prosseguir num aprofundamento, se este for
o seu desejo.
Numa classificação um pouco simples consideraremos dois tipos de modelos:
• discretos em que o conjunto sobre os quais as funções estiverem definidas tenha um número finito de valores. Teoria dos jogos por exemplo
usa este tipo de modelos, a análise combinatória, ou mais amplamente a
combinatória, é uma base teórica para tais modelos;
• contı́nuos em que as funções envolvidas tem como domı́nios subconjuntos
dos números reais. As funções contı́nuas e diferenciáveis são a peça central
nestes modelos com todas as técnicas, integral e derivada, do Cálculo
Diferencial e Integral.
Os modelos de que trataremos neste livro são do segundo tipo, os contı́nuos.
Observação 6 Contradição dos modelos contı́nuos
Melhor do que contradição seria possivelmente usar a palavra paradoxo. Aqui
é preciso chamar sua atenção para uma contradição com a qual é preciso conviver.
Todo o nosso trabalho se encontra intimamente ligado com programas de
computador, enfim com computadores. Ora, tudo em um computador é finito,
132
CAPÍTULO 4. SPLINES
quer dizer que estaremos modelando o infinito (contı́nuo)22 com um modelo discreto, o computador.
Uma das conseqüências mais funestas desta contradição é que surge um item
omnipresente em nossos trabalhos, o erro, que temos que, permanentemente,
levar em conta. Aqui é preciso ter uma atitude sempre realista de verificação
sistemática dos modelos em suas aplicações. Mas o objetivo desta observação
não é o de sugerir o receio e sim o de observar que o cuidado sempre deve
estar presente e um método prático para enfrentar esta questão é o trabalho em
equipes.
Os elementos da teoria são os seguintes:
• da computação vem uma técnica que estamos usando deste o primeiro
capı́tulo, varredura;
• na Matemática, esta técnica computacional de varreduras, assume o aspecto de malha, ou partição de um determinado conjunto. Estes dois
conceitos matemáticos são equivalentes, malha,partição, embora algumas
vezes não seja trivial a passagem de um para o outro. Neste livro sempre usaremos malhas associadas a um conjunto de pontos que determinam
“retângulos” (nos casos multidimensionais) ou “sub-intervalos” (nos casos
unidimensionais). Veja as figuras (fig. 2.2), página 32 e (fig. 2.3), página
35.
Um exemplo, no caso unidimensional é o que você tem no (ex. 3), página
127, em um conjunto de nós escolhidos em um intervalo determina a
malha. Associada a esta malha temos uma famı́lia de polinômios do grau
três, uma polinomial do grau três e assim escapamos do alto custo computacional que é trabalhar com polinômios de grau elevado;
• convergência do algoritmo Os algoritmos definem sucessões. Estudamos
sucessões no capı́tulo três. Uma sucessão é uma função definida no conjunto dos números naturais e tomando valores em um outro conjunto. Este
segundo conjunto determina a natureza das sucessões. Com frqüência,
neste livro, as sucessões tem valores reais, é o que chamamos de sucessões
de números reais23 . Sucessões deste tipo definem números quando forem
convergentes, é o limite da sucessão. Entretanto, não daremos ênfase à
convergência de algoritmos neste livro, e isto é um defeito do livro, procure
compensar este defeito com literatura complementar.
• o conceito de continuidade é utilizado seguidamente. No Cálculo você essencialmente estudou que se a diferença
|∆x| = |x2 − x1 |
22 com
freqüência a palavra contı́nuo é tomada como sinônimo de infı́nito mas os dois conceitos são distintos
23 em geral números racionais, sobretudo porque os nossos programas de computador somente podem lidar com números racionais
133
CAPÍTULO 4. SPLINES
for pequena, então a diferença
∆f = f (x2 ) − f (x1 )
também será pequena quando a função f for contı́nua. Este é um ponto
essencial e que se encontrará em jogo a todo momento. Vamos sempre
supor que os fenômenos são contı́nuos. Lavoisier dizia, veja [11], que “na
Natureza nada se cria e nada se perde, tudo se transforma que se pode
traduzir grosseiramente por a Natureza não dá saltos, modificado pela
Ciência Quântica para “a natureza dá saltos, porém pequenos.
É a continuidade que usamos quando afirmamos que ao refinarmos uma
malha reduzimos o erro cometido.
As funções diferenciáveis são apenas funções mais profundamente contı́nuas.
A derivada é uma ordem superior de continuidade.
É com base nestes três conceitos
• malha ou partição e sua realização computacional, a varredura;
• convergência de sucessões;
• continuidade dos fenômenos a hipotética equação que governaria um fenômeno das ciências naturais ou humanas, é uma função contı́nua e mesmo
diferenciável,
que vamos construir os modelos e provar que eles conseguem nos dar uma aproximação satisfatória da realidade.
A próxima lista de exercı́cios tem por objetivo recı́clar os seus conhecimentos
de Cálculo dentro do nosso objetivo.
Observação 7 A admirável eficiência dos modelos matemáticos
Ou, em outras palavras, modelos contı́nuos para um Universo esponjoso.
Os saltos quânticos não alteram ou impedem o uso da continuidade nos modelos embora eles tenham que ser levados em conta num momento apropriado...
Na verdade o Universo é esponjoso e não existe, na vida real, a continuidade dos modelos matemáticos. Mas os modelos, mesmo sendo, como são, uma
realidade virtual, nos permitem analisar a realidade fı́sica muito bem, desde que
saibamos usá-los adequadamente. O nosso objetivo é mostrar-lhe isto aqui.
Exercı́cios 16 Continuidade e diferenciabilidade
Se um exercı́cio lhe parecer óbvio, não o faça, não perca tempo, mas seja
honesto consigo próprio: se um exercı́cio lhe parecer pouco claro, crie uma
variante do mesmo e faça os dois, o exercı́cio e a variante.
1. continuidade Construa uma polinomial do terceiro grau P usando os dados
da tabela abaixo. Prove, usando P0 (x1 ) = P1 (x1 ), que P é continua. Prove
que P também é diferenciável.
134
CAPÍTULO 4. SPLINES
xk
x0 = −5
x1 = 0
x2 = 6
yk
1
0
2
dk
0
−1
1
2. Considere a figura (fig. 4.9) página 134. Justifique a existência de pontos
(a)
no intervalo de definição nos quais f ′ (ζ) = f (b)−f
. Identifique ζ, a, b e
b−a
o teorema do Cálculo que governa esta afirmação.
f
1
b
a
Figura 4.9:
Derivada, tangente e Teorema do Valor médio
3. Considere uma função contı́nua e diferenciável, f , definida no intervalo
[−5, 6] e a poligonal do terceiro grau P definida pela tabela seguinte:
xk
x0 = −5
x1 = 0
x2 = 6
yk
f (−5)
f (0)
f (6)
dk
f ′ (−5)
f ′ (0)
f ′ (6)
Mostre que existe um ponto x0,1 ∈ [x0 , x1 ] tal que P ′ (x0,1 ) =
e um ponto x1,1 ∈ [x1 , x2 ] tal que P ′ (x1,1 ) =
o Teorema do Cálculo que garante isto.
f (x2 )−f (x1 )
x2 −x1
f (x1 )−f (x0 )
x1 −x0
indicando qual é
135
CAPÍTULO 4. SPLINES
4.3
Quase-splines
Como anunciamos no inı́cio, a partir dos anos 1950, começamos a
descobrir que havia um método polinomial mais inteligente. Em
vez de procurarmos um polinômio de grau elevado, n passando
por n + 1 pontos dados, poderiamos procurar vários polinômios
de grau mais baixo. Isto é o que chamamos de polinômios por
pedaços, uma polinomial. . Estas polinomiais são quase-splines.
Vamos construtivamente mostrar que uma polinomial de grau três
é a solução ótima e depois vamos definir o que são splines.
4.3.1
Polinomiais de grau três
Queremos resolver o problema de interpolar n + 1 pontos com a informação
extra da taxa de variação em cada um dos nós. Isto corresponde a um conjunto
de quatro informações sobre cada sub-intervalo considerado o que nos permite
determinar, associado a cada um dos intervalos, um polinômio de grau três.
A solução vai ser obtida iterativamente percorrendo o conjunto dos intervalos, vamos então simplificar a notação, considerando [a, b] um intervalo genérico:
c1 = P (a), d1 = P (a)′
c2 = P (b), d2 = P (b)′
(4.101)
(4.102)
no intervalo [a, b] e sabemos, da aproximação polinomial clássica que estudamos
inicialmente, que estas quatro informações nos permitem determinar de forma
única um polinômio do grau três.
Temos as equações, (desenvolvendo o polinômio 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.103)
que se reduz assim a duas equações nas incognitas ainda restantes m2 , m3 observando que são conhecidos:
m0 = c1 , m1 = d1 , b − a, c2 , d2
c1 + d1 (b − a) + m2 (b − a)2 + m3 (b − a)3
d1 + 2m2 (b − a) + 3m3 (b − a)2
(4.104)
= c2
= d2
(4.105)
136
CAPÍTULO 4. SPLINES
3c1 + 3d1 (b − a) + 3m2 (b − a)2 + 3m3 (b − a)3
d1 (b − a) + 2m2 (b − a)2 + 3m3 (b − a)3
= 3c2
(4.106)
= d2 (b − a)
3c1 + 2d1 (b − a) + m2 (b − a)2 = 3c2 − d2 (b − a)
m2 =
3c2 −d2 (b−a)−(3c1 +2d1 (b−a))
(b−a)2
(4.107)
(4.108)
Nas (eq.106 ) igualamos os coeficientes de m3 depois subtraimos as duas equações
para obter a (eq.107) de onde tiramos o valor de m2 .
Esta solução é possı́vel porque os nós a, b são diferentes e assim, calculado o
valor de m2 , ele pode ser substituido numa das equações (eq.106 ), por exemplo
em,
c1 + d1 (b − a) + m2 (b − a)2 + m3 (b − a)3 = c2
o que vai nos permitir o cálculo de m3 :
m3 =
c2 − (c1 + d1 (b − a) + m2 (b − a)2 )
(b − a)3
(4.109)
que também é possı́vel porque a 6= b. Observe que não nos preocupamos em
explicitar os valores porque estas contas devem ser feitas dentro de um programa
que irá fazer os cálculos finais.
Como esta solução é única, achamos assim o único polinômio P do terceiro
grau que satisfaz às quatro condições no intervalo [a, b].
Demonstramos assim:
Teorema 7 Existência e unicidade da poligonal de grau três
Dada uma partição
a = x0 < . . . < xn = b
(4.110)
de um intervalo [a, b] e uma lista de pares de valores
y 0 , d 0 , . . . , yk , d k , . . . , yn , d n
(4.111)
interpretados como valor no ponto, yk , e taxa de variação no ponto, dk , existe
uma única poligonal P = (P0 , . . . , Pk , . . . , Pn ) do terceiro grau tal que
P (xk ) = yk
P ′ (xk ) = dk
(4.112)
P (xk+1 ) = yk+1 P ′ (xk+1 ) = dk+1
com (desenvolvendo o polinômio Pk no ponto xk )
Pk (x) = mk,0 + mk,1 (x − xk ) + mk,2 (x − xk )2 + mk,3 (x − xk )3 (4.113)
mk,0 = Pk (xk ) = yk
mk,1 = Pk′ (xk ) = dk
(4.114)
(4.115)
sk = xk+1 − xk 6= 0
(4.116)
mk,2 =
mk,3 =
3yk+1 −sk dk+1 −3yk −2dk sk
s2k
(4.117)
yk+1 −(yk +dk sk +mk,2 s2k )
s3k
(4.118)
137
CAPÍTULO 4. SPLINES
O programa “aproximacao” calcula os coeficientes da poligonal em cada
um dos intervalos lançando os resultados no arquivo “dados” que você pode ler
com um editor de textos. O programa lhe dirá isto. Escolha a opção (5) no
programa, mas antes edite o arquivo leitura onde os dados do sensor devem
estar gravados. O programa tem um pequeno texto explicativo em que estas
informações lhe serão apresentadas. Use a opção (7) para isto, ou responda que
deseja ler a teoria, ao iniciar o programa.
Como a polinomial P coı̈ncide com o polinômio Pk no intervalo [xk , xk+1 ],
então P é contı́nua e diferenciável em cada sub-intervalo. Como Pk+1 (xk+1 ) =
′
Pk (xk+1 ) e Pk+1
(xk+1 ) = Pk′ (xk+1 ) então P é contı́nua e diferenciável no intervalo [a, b]
Pk (xk+1 )′′ = 2mk,2
Pk+1 (xk+1 )′′ = 2mk+1,2
(4.119)
(4.120)
(4.121)
4.4
Valor médio integral
O tamanho da letra indica que o assunto desta seção é mais difı́cil. Você pode optar por
saltá-lo se achar que a discussão anterior sobre valor médio @ deixou convencid@.
Vamos precisar do valor médio integral em nossa construção dos splines e como este tipo
de valor médio é muito importante e será usado muito no capı́tulo 0, vamos fazer aqui uma
revisão deste assunto de Cálculo.
Definimos:
Definição 2 (Valor médio integral) Valor médio integral Se f for integrável no intervalo
[a, b] então
V alm ed(f )[a,b]
1
=
b−a
Zb
f (x)dx
a
Os probabilistas fazem uso de um outro tipo de valor médio integral que é uma generalização deste que acabamos de definir e para definir os splines vamos precisar desta generalização.
Considere uma função positiva cuja integral seja 1. Um exemplo bem simples é uma
função como
χ[−0.5,0.5]
(4.122)
a função caracterı́stica do intervalo [−0.5, 0.5], exatamente porque a medida do suporte,
[−0.5, 0.5], é 1. Demos um exemplo, mas vamos continuar pensando numa função qualquer
positiva cuja integral seja 1.
Esta questão do valor médio está longe de ser óbvia. Temos que demonstrá-la, provar que
é verdade.
Vale a pena discutir um tópico muito importante que é Valor médio integral.
Vamos começar analisando qual é o significado da integral
Zβ
α
g=1
(4.123)
138
CAPÍTULO 4. SPLINES
quando g for uma função positiva24 , definida em um intervalo limitado [α, β].
Integral no sentido25 de Riemann é área! quer dizer que podemos calcular aproximadaRβ
mente g se colocarmos uma malha fina no intervalo [α, β] e considerarmos os sub-retângulos
α
que os sub-intervalos vão gerar no gráfico de g. Assim produzimos a soma que chamamos de
soma de Riemann, e que você deve ter visto no curso de Cálculo26 , veja o gráfico na figura
(fig. 1), na página ix. Uma soma de Riemann tem o seguinte aspecto:
n
X
g(xi )∆xi
(4.124)
i=0
e no caso de g, como sua integral vale 1, temos
n
X
i=0
g(xi )∆xi ≈ 1
(4.125)
em que27 todos os números que aparecem na soma são positivos.
Definição 3 Pesos
Uma coleção de números positivos, cuja soma é 1 se chama uma coleção de pesos, ou
simplesmente pesos.
Famı́lias de pesos são usadas para calcular médias aritméticas ponderadas, por exemplo,
a inflação28 é uma média aritmética ponderada.
No caso da função g = χ[−0.5,0.5] esta soma é exatamente 1, mas observe que estamos
fazendo uma demonstração e assim g é uma função qualquer satisfazendo duas propriedades:
• é positiva;
• sua integral é 1.
Se agora colocarmos a função f na soma de Riemann, teremos:
n
X
f (xi )g(xi )∆xi
(4.126)
i=0
e podemos interpretar esta soma como uma quase29 média aritmética dos valores de f no
intervalo [α, β] porque
xi ∈ [α, β]
onde estamos calculando a integral.
Veja esta afirmação de outra maneira: os valores
f (xi ); xi ∈ [α, β]
podem ser interpretados como amostragem de f neste intervalo e a equação (eq. 126) é o
valor médio desta amostragem por que a soma dos números g(xi )∆xi é quase 1.
Quanto mais fina for a malha, mas próximo de 1 estará a soma na equação (eq.125 )30 ,
portanto é este o valor da integral, “o valor médio de f no intervalo [α, β], relativamente à
função g”.
Aqui temos dois fatores de precisão com que lidar:
24 um
núcleo, ou um pulso unitário
apenas integrais no sentido de Riemann, neste livro! e tem integral num sentido
diferente?
26 O capı́tulo 0 faz uma revisão rápida deste assunto, visite-o agora se achar que precisa.
27 aproximadamente 1 porque é uma aproximação da integral que supusemos ser 1
28 Em que os governos colocam pesos onde lhe interessam para produzir os ı́ndices inflacionarios com que nos enganam
29 quase, porque a soma de Riemann,(eq. 125), não é 1, ela é aproximadamente 1
30 e mais preciso o cálculo da média aritmética
25 usamos
CAPÍTULO 4. SPLINES
139
• a densidade dos pontos da malha, quanto mais pontos forem tomados na amostragem,
mais preciso fica o levantamento de dados, mas também fica mais caro;
• a medida da região de correção que é o tamanho do intervalo [α, β], a “base” da funçãopeso com que estamos fazendo a média. Veja a ilustração da região de correção na
figura (fig. 4.13) página 147. Quanto menor for a medida desta região, mais exato fica
a correção do erro na função,
a “ciência” vai consistir em obter o máximo de precisão com o mı́nimo de custo.
A função utilizada para calcular o valor médio, influência este valor médio. Como em
qualquer média aritmética ponderada31 , a escolha dos pesos influência o valor da média, quer
dizer que tais médias são viciadas32 , não podemos ter uma resposta padrão sobre o valor
médio integral
Zβ
f (x)g(x)dx = V alMedg,[α,β] (f )
(4.127)
α
que chamamos de Valor médio integral de f relativo à g, no intervalo [α, β].
Em geral as funções usadas para calcular valor médio, são funções equilibradas em torno do
zero, o ponto central do gráfico, e são translatadas para uma certa posição, para alı́ fazer o valor
médio da função que interessa, como é o caso de χ[−0.5,0.5], que além do mais é uniforme ao
longo do intervalo [−0.5, 0.5] e consequentemente ela produz uma autêntica média aritmética
de f no intervalo.
Quando a medida da região de correção diminue, esta média tende para o valor de f , no
ponto central da região de correção, se ele existir.
Quando a função f for contı́nua, este valor coı̈ncide com algum valor de f no intervalo em
que a média está sendo calculada33 . Se a função for descontı́nua ele representa uma proposta
de correção da função. Esta idéia é essencial em diversas áreas hoje, sob a rubrica correção
da informação.
Veja na figura (fig. 4.13) página 147, a ilustração da região de correção.
Esta questão da média, a sua dependência de uma função-peso, está longe de ser óbvia.
Mas se você raciocinar um pouco, chegará à conclusão que deve ser assim. Por exemplo,
• considere g, a função relativamente a qual se quer calcular a média, como tendo mais
área à esquerda do ponto central a do intervalo. Tendenciosa à esquerda. Então a
média estará mais influênciada pelos valores à esquerda; Veja a (fig. 4.15) página 152.
• considere agora g, a função relativamente a qual se quer calcular a média, como tendo
mais área à direita do ponto central a do intervalo. Tendenciosa à direita. Então a
média estará mais influênciada pelos valores à direita; Veja a (fig. 4.15) página 152.
• mas se agora, g for equilibrada, tiver áreas iguais à direita e à esquerda do ponto central,
vamos encontrar a média aritmética, o valor de f neste ponto central a, se ele existir;
• e fica uma pergunta não respondida, porque usamos uma variedade grande de funçõespeso, porque não usamos sempre a mesma, uma função equilibrada em torno de um
ponto central ? guarde esta pergunta no bolso...
este raciocı́nio deve conduzı́-l@ a aceitar que se g não tiver inclinações nem à direita, nem à
esquerda, então a média calculada com ela corresponderá ao valor f (a)34 em que a é o ponto
central do intervalo.
Conseguimos assim “demonstrar” o teorema:
Teorema 8 do valor médio integral
Se g for uma função positiva tal que
31 e
o valor médio integral é uma média ponderada
adjetivo vicidadas tem sentido técnico, aqui, mas você pode facilmente extrapolar o
sentido da frase para outros contextos menos técnicos...como no cálculo da inflação. A inflação
é polı́tica! os preços são polı́ticos! os juros são polı́ticos!
33 esta é uma propriedade das funções contı́nuas
34 aqui tem um erro, veja observação mais a frente
32 o
140
CAPÍTULO 4. SPLINES
Zβ
g=1
(4.128)
α
então
V alMedg,[α,β] =
Zβ
f (x)g(x)dx
(4.129)
α
é o valor médio integral de f relativamente a g no intervalo [α, β]. E se g for equilibrada no
intervalo [α, β] no sentido de que tenha a mesma área a esquerda e á direita do ponto central
a deste intervalo, então
a ∈ [α, β] ; V alMedg,[α,β] =
Zβ
f (x)g(x)dx = f (a)
(4.130)
α
Observação 8 Um erro no teorema do valor médio
O teorema 8 tem um erro que é preciso corrigir. Observe o gráfico na figura (fig. 4.11).
A função f não está definida no ponto c
Quer dizer que não podemos escrever
c ∈ [α, β] ; V alMedg,[α,β] =
Zβ
f (x)g(x)dx = f (c)
(4.131)
α
como está no teorema, mas sim
V alMedg,[α,β] =
Zβ
f (x)g(x)dx
(4.132)
α
ou seja, apenas dizer que é o valor médio. É o acontece, no gráfico (fig. 4.11), página 144
em relação ao ponto c em que a função pode nem siquer estar definida.
Aproveitemos para ver que o valor médio serve para definir o valor f (c) que faltava para
f ou que tinha sido calculado de forma errada.
Este é um método que os estatı́sticos usam frequentemente, e também muito usado nas
telecomunicações, restaurações de arquivos, recuperação de dados.
Observação 9 Evolução e correção de um teorema
Quando redigimos o teorema 8 cometemos o erro de escrever o valor de f no ponto a
a volta do qual o valor médio está sendo calculado. Depois nos apercebemos do erro, mas
resolvemos deixá-lo assim, com a correção posterior, para que você veja que os teoremas as
vezes nascem errados. Em geral eles sempre são corrigidos, depois, mas por outra pessoa que
lê o trabalho, não pelo próprio autor.
Acho que este erro torna mais fácil a compreensão do teorema.
Exercı́cios 17 (Valor médio) Valor médio
1. Considere a função f = χ[−0.5,0.5] , a função caracterı́stica do intervalo
[−0.5, 0.5]. Prove que gα (x) = αf (αx) também tem integral 1. Produza
alguns exemplos usando gnuplot.
2. Construa uma função que seja contı́nua e positiva cuja integral seja 1.
141
CAPÍTULO 4. SPLINES
Solução 9 Se uma função positiva for contı́nua e diferenciável, digamos
f , e definida e integrável no intervalo [a, b] então podemos calcular
A=
Rb
f (x)dx
(4.133)
1
f (x)
A
(4.134)
a
g(x) =
o que resulta numa função positiva, contı́nua, diferenciável cuja integral
sobre o intervalo [a, b] é 1.
Basta-nos, portanto construir uma função qualquer e poderia ser
f (x) = 4 − x2 ; x ∈ [−2, 2]
R2
A = f (x)dx
g(x) =
−2
|x| > 2
1
f (x)
|x| ≤ 2 A
⇒ 0
(4.135)
(4.136)
(4.137)
3. Construa uma função formada de três segmentos de parábola, que seja
contı́nua, diferenciável e positiva cuja integral seja 1.
Solução 10 Considere a função f (x) = 4 − x2 cuja derivada nos extremos do intervalo [−2, 2] são, respectivamente, {4, −4}. Podemos construir
um parábola que tenha derivada no ponto −4 o valor -2, por exemplo
′
f1 (x) = (x + 4)2 ; f1 (x) = 2(x + 4); f1 (−2) = 4
portanto se somarmos:
h(x) = f (x) + 4
teremos
′
h(−2) = f1 (−2); h′ (−2) = f1 (−2)
Defina

x ≤ −4




 x ≤ −2
x≤2
g(x) =


x≤4



x>4
0
f1 (x)
f (x) + 4
f2 (x) = (x − 4)2
0
(4.138)
Esta função se anula fora do intervalo [−4, 4], por contrução é diferenciável
e sua integral vale
142
CAPÍTULO 4. SPLINES
R4
g(x)dx =
(4.139)
−4
−2
R
=
+
R2
f1 (x)dx +
(4.140)
(f (x) + 4)dx +
(4.141)
R4
+ f2 (x)dx
(4.142)
−4
−2
2
R2
−2
−2
R
f1 (x)dx =
R2
x2 dx =
0
−4
(f (x) + 4)dx = 16 −
R4
R∞
−∞
g(x) =
=
(4.143)
32
3
(4.144)
8
3
(4.145)
48
3
(4.146)
f2 (x)dx =
2
16
3
8
3
3
Defina então F (x) = 48
g(x) e temos assim uma função cuja integral é 1
sendo diferenciável na reta. O gráfico de F pode ser vista na figura (4.10)
página 143,
4. estoque de núcleos Mostre que se uma função f tiver integral 1 então
g(x) = αf (αx) também tem integral 1.
4.5
Splines cúbicos
Em muitas aplicações os quase-splines construidos na seção anterios são suficientes oferecendo boa aproximação. Mas em outras,
como exemplo em computação gráfica, em que é necessário mais
dinâmica, os algoritmo tem que ser mais otimizado e o método de
aproximação mais preciso. Para isto temos os splines cúbicos que
construiremos aqui.
O nome do jogo! É spline ou splines. Se você consultar [28, Spline], você
logo vai ver a indecisão sobre o nome, hora é usado spline e logo em seguida
splines. Vamos preferir a segunda forma que nos parece mais eufônica, mas não
temos nenhuma razão especial pela preferência a não ser porque os splines são
143
CAPÍTULO 4. SPLINES
10
F(x)
0
g(x)
5
0
-5
-10
-15
-10
Figura 4.10:
-5
0
5
10
15
Uma função positiva cuja integral é 1
formados sempre de vários pedaços e talvez porisso devessemos usar o “s” ao
final.
Há vários métodos para construir splines. O que vamos adotar é muito
poderoso, embora exija um pouco mais de base teórica. Ao mesmo tempo sua
aplicabilidade pode ser bastante simplificado, ao ponto de você poder carregar
o “motor” dos splines num pen-drive, ou mesmo num disquete de 1.44 Mb, falei
num pen-drive porque os disquetes em geral representam mais trabalho do que
utilidade. Até o final deste capı́tulo esta questão ficará clara.
Definição 4 Splines
Um n-splines é uma polinomial35 de grau n que é de classe C n−1 , quer dizer
que tem n − 1 derivadas contı́nuas.
35 Não precisa ser “polinomial”, no momento certo faremos esta observação novamente. Há
splines não polinomiais.
144
CAPÍTULO 4. SPLINES
Você está vendo a razão porque criamos um o conceito de polinomial que
chamamos de quase-splines. Elas serviram para antecipar os splines e em alguns casos substituı́-los porque dependem de menos teoria. As polinomiais que
construimos até agora são de grau três e de classe C 1 , poristo não são splines, a
segunda derivada pode ser descontı́nua.
Exemplo 11 Splines
Uma poligonal contı́nua, isto é uma sucessão de segmentos de linha reta que
interligue n pontos, é uma polinomial de grau 1 e de classe C 0 , portanto um
1-splines
É difı́cil construir manualmente um 2-splines, uma polinomial do segundo
grau que seja de classe C 1 . Você pode e deve tentar construir usando os métodos
que apresentamos para construir os quase-splines afim de se convencer da dificuldade e melhor avaliar a pequena complicação onde vamos metê-l@ agora.
4.5.1
Produto de convolução
Vamos definir uma operação que ficou na geladeira por anos até que os métodos
computacionais a viessem resgatar, a convolução, ou melhor dizendo, o produto
de convolução que é o seu nome original.
Vamos começar com uma “definição geométrica” errada, ilustrada36 na figura (fig. 4.11) página 144.
f
0
retângulo
móvel
Figura 4.11:
posição
original
do retângulo
Definição geométrica - produto de convolução
No próximo parágrafo corrigiremos a definição usando uma motivação algébrica para adotar uma forma mais adequada de definir a operação.
36 Você
deve ter compreendido o poder do erro que aparece no coeficiente do segundo grau
do Polinômio de Taylor no capı́tulo 1
145
CAPÍTULO 4. SPLINES
Você pode identificar, na figura (fig. 4.11), o gráfico da função descontı́nua
f e várias cópias do mesmo37 retângulo que são translações do gráfico da função
caracterı́stica, χ[−0.5,0.5] , do intervalo [−0.5, 0.5].
É esta a forma de fazermos produto de convolução entre duas funções.
• Uma delas fica com o gráfico fixo, a outra, tem seu gráfico translatado
para um ponto a, Shapiro,[6], chama isto de média volante e logo você vai
ver porque.
• Neste ponto calculamos a integral do produto das duas funções, o resultado
é f ∗ χ[−0.5,0.5](a), o valor do produto de convolução no ponto a. Exercı́cio
(resolvido em seguida) escreva a equação da translação χ[−0.5,0.5]a da
função χ[−0.5,0.5] para o ponto a.
• A cada novo deslocamento (translação) do gráfico de χ[−0.5,0.5], o peso se
deslocando novamente, para um ponto b e nova integral corresponde ao
cálculo de f ∗ χ[−0.5,0.5] (b), o valor do produto de convolução no ponto b.
• Leitura “produto de convolução de f por χ[−0.5,0.5] no ponto b”, a expressão formal38 seria (errada, como já @ advertimos)
Z∞
−∞
f (x)χb (x)dx =
Z∞
f (x)χ(x − b)dx
(4.147)
−∞
Na expressão da integral o exercı́cio proposto linhas acima ficou resolvido.
Sem dúvida é difı́cil39 calcularmos f ∗ χ[−0.5,0.5] (x) num ponto x qualquer
ou mesmo obtermos uma fórmula para este resultado.
Nosso objetivo é mostrar-lhe alguns exemplos do que significa f ∗ g para convencê-l@ do valor do investimento pesado que vai fazer. Depois você verá que
um programa de computador será o encarregado de fazer o trabalho pesado,
não se esqueça de que você está lendo um livro de Cálculo Numérico Computacional. . . e que você deve apresnder a escrever expressões formais que um
computador possa ler e calcular.
E, finalmente, deixe-me dizer-lhe, nos aviões comerciais, a fuselagem, é feita
com este instrumento, e quase que todos os jogos eletrônicos tem splines por
trás, portanto estamos diante de uma ferramenta que vale a pena ser entendida
e dominada.
Depois, passado o susto com a definição geométrica, você verá que o trabalho
ficará com os programas...mas, temos que entender como fazer, para podermos
escrever os programas.
37 Duas
das cópias estão superpostas dando a impressão de que você dois retângulos com
bases menores, mas é uma ilusão de ótica.
38 O autor escreveu os limites ±∞, propositadamente, para que você se intimidasse, verifique
esta integral se limita ao intervalo [−0.5 + b, 0.5 + b]
39 não há porque escondermos a dificuldade, o “difı́cil” é apenas difı́cil, não impossı́vel, e
apenas exige mais trabalho para dominar, somente isto. Como escalar um morro é difı́cil, e o
segredo é saber e ter os meios...
146
CAPÍTULO 4. SPLINES
Vamos calcular o resultado da convolução esboçada na figura (fig. 4.11),
geometricamente. A sucessão de figuras (fig. 4.12) página 146, (um filme...)
f
f
b
a
0
0
cálculo de
cálculo de
f*X(a)
posição inicial
f*X(b)
do retângulo
b>a
posição inicial
do retângulo
0.5+b
0.5+a
−0.5 +a
−0.5+b
f
c
0
cálculo de
posição inicial
f*X(c)
do retângulo
c>b>a
0.5+c
−0.5+c
Figura 4.12:
O significado geométrico de três valores
lhe mostra o significado do produto de convolução calculado em três pontos
diferentes.
Observe que escolhemos uma função muito particular: χ[−0.5,0.5]
Esta função tem integral 1 e temos a tendência de chamar tais funções de
sinal, impulso unitário, núcleo. Vamos usar a palavra núcleo porque consideramos sinal outra coisa que não irá aparecer neste livro. As funções deste tipo,
os núcleos, serão o instrumento que precisaremos quando fizermos produtos de
convolução.
O produto das duas funções no ponto a e no ponto b vai produzir resultados
semelhantes. O quadradinho que representa a translação de χ[−0.5,0.5] para estes
pontos, fica inteiramente imerso dentro do gráfico de f . E como o quadradinho
147
CAPÍTULO 4. SPLINES
tem área 1, a integral do produto vai nos dar o valor médio da integral de f no
intervalo de medida 1 (por causa da base do quadradinho) tendo como ponto
médio a translação. Estamos discutindo:
a<b<c
;
f ∗ χ[−0.5,0.5] (a), f ∗ χ[−0.5,0.5](b), f ∗ χ[−0.5,0.5] (c)
(4.148)
(4.149)
• [−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 é, em qualquer caso, f ∗ χ[−0.5,0.5] (x) é o valor médio de f no intervalo
[−0.5 + x, 0.5 + x] porque a função caracterı́stica, χ[−0.5,0.5] , é positiva e tem
integral 1.
Retornando à f ∗ χ[−0.5,0.5] , como χ[−0.5,0.5] é uma função equilibrada em
torno do ponto central do intervalo [−0.5, 0.5] então
f ∗ χ[−0.5,0.5] (x) = f (x)
(4.150)
quando este valor existir, e no caso do ponto c é um valor que fica entre os
extremos do salto que a função dá no ponto c. Veja o gráfico da convolução na
figura (fig. 4.13) página 147,
f
c
0
Região de
correção
Figura 4.13:
Correção pelo valor médio numa vizinhança de c
A figura (fig. 4.13) chama sua atenção para uma região do gráfico em que a
função f está sendo corrigida. Isto ocorre num intervalo de medida 1, (devido a
base do quadradinho utilizado). Nesta figura você vê os gráficos de duas funções,
a função f descontı́nua no ponto c e uma outra função f˜, contı́nua, que é igual
a f fora do intervalo de correção.
148
CAPÍTULO 4. SPLINES
Esta, f˜, é a proposta de correção da função descontı́nua, de que já falamos
acima.
Podemos corrigir a equação (eq. 150) escrevendo:
f ∗ χ[−0.5,0.5] (x) = f˜(x)
(4.151)
A região de correção pode ter medida menor e alguns dos exercı́cios da lista
que segue vão lhe mostrar isto: a região de correção pode ser arbitrariamente
corrigida de modo que a função f˜ seja uma melhor aproximação para f .
Exercı́cios 18 Média e núcleo
1. núcleos Faça os gráficos das funções abaixo e descubra o que há de comum
entre elas do ponto de vista da integral. Você não precisa fazer todos os
gráficos se descobrir a regra do jogo...
χ[−0.5,0.5]
1
2 χ[−1,1]
χ[0,1]
χ[−1,0]
2χ[−0.25,0.25]
1
4 χ[−2,2]
2χ[0,0.5]
2χ[0.5,0]
3
1 1
2 χ[− 3 , 3 ]
1
10 χ[−5,5]
3
2
2 χ[0, 3 ]
3
χ 2
2 [− 3 ,0]
5χ[−0.1,0.1]
1
20 χ[−10,10]
1
20 χ[0,20]
1
χ
20 [−20,0]
2. Podemos classificar os núcleos definidos na questão anterior como (1)
com tendência à esquerda, (2) com tendência à direita ou (3)equilibrados.
Descubra quais ficam em cada uma dessas classes.
3. Para cada um dos núcleos apresentados no primeiro exercı́cio, indique a
medida da respectiva região de correção que lhe está associada.
4. média viciada O gráfico seguinte representa f, f ∗ g em que g é um núcleo
tendencioso (à direita, ou à esquerda). Decida qual é a tendência de g,
analisando o gráfico Veja na figura (fig. 4.14) página 148,
f
f*g
c
0
Cálculo de média
com sinal tendencioso
Figura 4.14:
Média viciada
Definição correta da convolução
Esta é uma seção difı́cil, o que não significa que não seja para os comuns mortais.
Aquilo que é difı́cil apenas exige mais esforço para ser adquirido. É preciso,
149
CAPÍTULO 4. SPLINES
entretanto, salientar que, na prática do dia-a-dia, não será preciso estar com
todas estas contas presentes. Ao final você vai encontrar a equação de um
núcleo-splines cúbico que poderá registrar num arquivo, num pen-drive, e sair
com ele por aı́ para usar quando precisar fazer convoluções, é uma contribuição
deste livro para sua vida prática.
¡- forca uma parada do LaTeX
Vamos definir o produto de convolução, e inicialmente escreveremos uma
definição errada, acompanhando as idéias geométricas que desenvolvemos anteriormente. Logo veremos, com um cálculo algébrico, porque esta definição não
serve e assim chegaremos à definição adequada da convolução.
Na introdução geométrica que fizemos acima dissemos que o valor de f ∗ g
no ponto a era obtido
• translatando a função g de a e
• calculando a integral do produto de f por esta translatada
Precisamos de uma notação adequada para escrever tudo isto:
• a translatada de g por a vamos chamar de ga e assim
• a “transformação” translação tem uma equação curiosa:
x 7→ ga (x) = g(x − a)
(4.152)
de modo que se você quiser translatar para direita, no sentido positivo do
eixo OX então a > 0, por exemplo, g3 (x) = g(x − 3) translata a função g
de três no sentido positivo de OX. Se g(0) = 0 então g3 (3) = 0. Faça as
contas.
• definição errada da convolução no ponto a é
a 7→ f ∗ g(a) =
Z∞
f (x)ga (x)dx
(4.153)
−∞
Observe que estamos calculando a integral sobre o conjunto mais amplo
em que f esteja definida, a reta R. É possı́vel que esta equação não tenha
sentido portanto se impõe uma verificação sobre quais as funções para as
quais podemos calcular f ∗ g.
Vamos logo responder parcialmente esta questão: para que funções vale a
expressão (eq. 5 ) da convolução. Veja que, se a integral
Z∞
f (x)dx
(4.154)
−∞
existir, e se g for a função caracterı́stica de um intervalo fechado, [α, β],
então
150
CAPÍTULO 4. SPLINES
f ∗ g(a) =
R∞
=
=
−∞
R∞
R∞
f (x)ga (x)dx =
(4.155)
−∞
f (x)g(x − a)dx =
(4.156)
f (y + a)g(y)dy =
(4.157)
−∞
=
Rβ
f (y + a)g(y)dy
(4.158)
α
e se f tiver integral finita sobre R então qualquer translação40 de f terá
integral finita sobre qualquer intervalo da reta. Isto mostra a última é
integral é finita para qualquer valor de a portanto f ∗ g está bem definida
para qualquer que seja a ∈ R, quando g for uma função caracterı́stica de
intervalo limitado.
• Crı́tica da sucessão de equações Observe que a equação (eq. 158 ) sugere
que a convolução não é comutativa. Aqueles que trabalharam com esta
operação, anos atrás, observaram que uma pequena modificação definiria
uma operação comutativa:
R∞
g(a − x) dx =
| {z }
troca de sinal
y = a − x =⇒ x = a − y =⇒ dx = −dy
−∞
R
−
f (a − y)g(y)dy =
(f ∗ g)(a) =
R∞
−∞
f (x)
(4.159)
−∞
∞
∞
R
(4.160)
(4.161)
f (a − y)g(y)dy =
(4.162)
g(y)f (a − y)dy = (g ∗ f )(a)
(4.163)
−∞
Isto nos leva à definição adequada da convlução
Definição 5 Convolução
f ∗ g(a) =
Z∞
−∞
f (x)g(a − x)dx
(4.164)
quando esta integral existir.
40 uma
propriedade da integral de Riemann, translação não alteram o valor da integral
151
CAPÍTULO 4. SPLINES
• Análise do domı́nio de f ∗ g
Vamos retomar a sequência de equações acima, agora com a definição
correta da convolução em que g é a função caracterı́stica do intervalo
[α, β]
f ∗ g(a) =
Z∞
f (x)g(a − x)dx
(4.165)
−∞
se uma das funções for integrável na reta e a outra for limitada, esta
integral existe. Isto mostra que esta operação tem sentido, e logo veremos
que há uma infinidade de funções que podem ser os operandos do produto
de convolução.
Demonstramos assim o teorema
Teorema 9 Domı́nio de validade da convolução
A convolução f ∗ g está bem definida se g for uma função caracterı́stica
de um intervalo fechado e f tiver integral em qualquer intervalo fechado.
Exemplo 12 Domı́nio da convolução
Exemplos de funções para as quais podemos calcular f ∗ g são qualquer
função contı́nua f se g for uma função caracterı́stica de um intervalo
fechado.
Podemos calcular a convolução de duas funções caracterı́stica de intervalos
fechados.
Nós voltaremos logo a esta questão, ampliando o conjunto de pares de
funções para os quais podemos calcular a convolução.
A convolução define uma nova função que nós estamos sugerindo que seja
uma aproximação de f o que é inteiramente errado. Isto somente vai ser verdadeiro se a função g for um núcleo41 . Vamos discutir este detalhe logo a frente.
4.5.2
Funções a suporte compacto
Vamos aqui entender o que controla a região de correção, já algumas vezes
mencionada, e que estivemos todo tempo associando a base do quadradinho que
fica deslizando sobre o gráfico da função.
Você já deve ter percebido que esta função que usamos para calcular médias
deve ter um aspecto do tipo que aparece na figura (fig. 4.15) página 152. Nos
casos destes exemplos gráficos, existe um intervalo 0 ∈ [c, d] tal que, fora do
intervalo [c, d] a função é nula. Este intervalo se chama de suporte do núcleo.
Não é preciso que o suporte seja um intervalo limitado.
41 ou
equivalente, um pulso unitário
152
CAPÍTULO 4. SPLINES
núcleo equilibrado
núcleo tendencioso à direita
núcleo tendencioso à esquerda
Figura 4.15:
Núcleos ou pulsos unitários
Exemplo 13 Núcleo tendo como suporte a reta
2
A função f (x) = e−x , chamada de gaussiana tem integral finita
2
√
g(x) =
√1 f (x)
2
(4.167)
g(x)dx = 1
(4.168)
R∞
e−x dx =
−∞
R∞
2
(4.166)
−∞
e assim a função g(x) = √12 f (x) é um núcleo tendo por suporte a reta R.
Quer dizer que se usarmos g como núcleo para calcular uma convolução f ∗ g
o resultado seria uma função muito semelhante a f mas a região de correção
seria a reta inteira. Mesmo com este defeito, f ∗ g é uma boa aproximação de
f.
Usar um núcleo cuja região de correção se extenda ao espaço inteiro tem
significado: se dilue o erro ao longo do espaço todo.
Mas em geral não usamos a gaussiana para fazer aproximações porque ela
introduziria outra complicação. Procuramos núcleos parecidos com os gráficos
da figura (fig. 4.15) página 152, e vamos aqui ver como podemos construir tais
núcleos. Os intervalos fechados e limitados são chamados intervalos compactos
daı́ o tı́tulo desta seção, queremos núcleos com suporte compacto.
153
CAPÍTULO 4. SPLINES
Observação 10 Domı́nio da convolução
Podemos ampliar um pouco a resposta da questão do domı́nio de definição
da convolução, ou, para que tipos de funções podemos calcular a convolução.
Onde acima usamos função caracterśtica, agora podemos dizer funções a suporte
compacto.
Notação o suporte de f é designado42 por supp(f ).
Um exemplo simples mostra como podemos construir núcleos com suporte
compacto:
Exemplo 14 Um núcleo com suporte compacto
Considere f = χ[−0.5,0.5] e vamos calcular f ∗ f .
Geometricamente podemos ver que se a translação for maior do que 1 em
módulo, a convolução se anula, porque os dois retângulos não mais terão superposição, serão disjuntos. Faça um gráfico para se verificar isto. Como consequência temos
x∈
/ [−1, 1] =⇒ f ∗ f (x) = 0
e portanto o supp(f ∗f ) ⊂ [−1, 1]. Por outro lado, para qualquer translação cujo
módulo seja menor do que 1, os dois retângulos terão superposição e assim a
integral será diferente de zero. Verifique isto geométricamente, faça um gráfico.
Consequentemente supp(f ∗ f ) = [−1, 1].
Vamos agora calcular f ∗ f , determinar sua equação.
Prosseguiremos com o método geométrico. Observe que o parâmetro da
função f ∗ g é a translação aplicada à função g
x 7→ f ∗ f (x) =
f ∗ f (x) =
=
R∞
−∞
0.5
R
−0.5
0.5
R
−0.5
f (t)f (x − t)dt
f (t)f (x − t)dt
f (x − t)dt
(4.169)
(4.170)
(4.171)
y = x − t; dy = −dt; t = −0.5 =⇒ y = x + 0.5; t = 1 =⇒ y = x − 0.5
(4.172)
x−0.5
x+0.5
R
R
f ∗ f (x) = −
f (y)dy =
f (y)dy
(4.173)
x+0.5
x−0.5
chegamos à equação (eq. 170) porque f é a função caracterı́stica do intervalo
[−0.5, 0.5], logo, fora dele é nula, à equação (eq. 171) porque f é 1 sobre o
intervalo [−0.5, 0.5], na equação (eq. 172) estamos preparando a “mudança de
variável” que irá na simplificar a análise na equação (eq. 173). As hipóteses,
42 duas
razões para usar “pp”, sup é para supremo, em inglês usamos supp para o suporte
154
CAPÍTULO 4. SPLINES
que temos que fazer para calcular a integral na equação (eq. 173) são

x + 0.5 < −0.5
f ∗ f (x) = 0



x+0.5

R



dy
 x + 0.5 ∈ [−0.5, 0.5] f ∗ f (x) =
−0.5
0.5
R
(4.174)



x − 0.5 ∈ [−0.5, 0.5] f ∗ f (x) =
dy



x−0.5


x − 0.5 > 0.5
f ∗ f (x) = 0
Podemos melhorar as premissas no conjunto de equações re-escrevendo-as como

x < −1
f ∗ f (x) = 0



x ∈ [−1, 0] f ∗ f (x) = x + 0.5 − (−0.5) = x + 1
(4.175)
f ∗ f (x) = 0.5 − (x − 0.5) = 1 − x
 x ∈ [0, 1]


x>1
f ∗ f (x) = 0
e você pode ver o gráfico da convolução na figura (fig. 4.16) página 154.
0
−1
Figura 4.16:
1
quadrado de convolução da função caracterı́stica
Observe! A convolução de duas funções descontı́nuas, resultou numa função
contı́nua, f ∗ f . A convolução não existe para ser calculada à mão, e o cálculo
acima mostra que ele pode ser bastante complicado, em geral, com muitas equações
e hipóteses. Vamos ver isto no próximo exemplo.
Mas o principal resultado deste exemplo é f ∗ f é um 1-splines. Estamos
assim nos aproximando do objetivo do capı́tulo... e para melhorar o ânimo,
no meio de tantas contas, vamos calcular f ∗ f ∗ f que podemos antecipar que
será um 2-splines coisa que anteriormente dissemos que seria difı́cil de calcular
manualmente.
Exemplo 15 2-splines por convolução
Queremos calcular f ∗ f ∗ f , e como o produto de convolução é associativo,
temos f ∗ f ∗ f = f ∗ (f ∗ f ) = (f ∗ f ) ∗ f o que nos diz que vamos aproveitar o
resultado do exemplo anterior.
Preparando os cálculos, temos
f ∗ (f ∗ f )(x) =
=
0.5
R
−0.5
R∞
−∞
f (t)f ∗ f (x − t)dt
f (t)(f ∗ f )(x − t)dt
(4.176)
(4.177)
155
CAPÍTULO 4. SPLINES
y = x − t; dy = −dt; t = −0.5 =⇒ y = x + 0.5; t = 0.5 =⇒ y = x − 0.5
(4.178)
x−0.5
x+0.5
R
R
f ∗ (f ∗ f )(x) = −
f ∗ f (y)dy =
f ∗ f (y)dy
(4.179)
x+0.5
x−0.5
A razão da equação (eq. 177 ) é que o suporte de f é o intervalo [−0.5, 0.5],
na equação (eq. 178 ) estamos fazendo os cálculos para mudança de variável, e
finamente, como x−0.5 < x+0.5 invertemos os limites de integração e trocamos
o sinal na equação (eq. 179 ).
Agora recorremos a intuição gráfica para agilizar o método. A função f ∗ f
tem quatro fases (quatro equações) e seu suporte é o intervalo [−1, 1]
• antes de −1;
• no intervalo [−1, 0]
• no intervalo [0, 1]
• depois de 1
que são os intervalos em que a equação de f ∗ f muda, e temos que interpretar
a última integral em cada um desses casos, esta é a primeira análise

























x + 0.5 < −1
x + 0.5 ∈ [−1, 0]
x + 0.5 ∈ [0, 1]; x − 0.5 ∈ [−1, 0]
R0
x−0.5
x − 0.5 ∈ [0, 1]
−1
f ∗ f (y)dy +
R1
x−0.5
x − 0.5 > 1
Re-escrevendo as equações, temos:

x < −1.5






x ∈ [−1.5, −0.5]






x ∈ [−0.5, 0.5]; x − 0.5 ∈ [−1, 0]







x ∈ [0.5, 1.5]





x > 1.5
f ∗ f ∗ f (x) = 0
x+0.5
R
f ∗ f (y)dy
x+0.5
R
0
f ∗ f (y)dy
f ∗ f (y)dy
f ∗ f ∗ f (x) = 0
R0
(4.180)
f ∗ f ∗ f (x) = 0
x+0.5
R
(y + 1)dy
−1
(y + 1)dy +
x−0.5
x+0.5
R
0
R1
x−0.5
(1 − y)dy
(1 − y)dy
f ∗ f ∗ f (x) = 0
(4.181)
156
CAPÍTULO 4. SPLINES
com a devida interpretação de f ∗ f . Calculando as integrais temos:

x < −1.5
f ∗ f ∗ f (x) = 0



(x+ 23 )


 x ∈ [−1.5, −0.5]
2
3
x ∈ [−0.5, 0.5]
−
x2
4

3
(x− 2 )


x ∈ [0.5, 1.5]

2


x > 1.5
f ∗ f ∗ f (x) = 0
(4.182)
Para simplificar a notação, vamos chamar g = f ∗ f ∗ f . Queremos verificar se
g é contı́nuamente derivável, de clase C 1 : uma polinomial de grau 2 de classe
C1.
• Primeiro a continuidade, o que basta verificar os valores de cada uma das
equações nos extremos dos intervalos onde elas estão definidas.
– g(−1.5) = 0 à direita e à esquerda !
(−0.5+ 3 )2
2
– g(−0.5)− =
= 0.5 à esquerda, e à direita g(−0.5)+ =
2
3
−(−0.5)2 = 0.5 e as duas equações coı̈ncidem à direita e à esquerda
4
!
– g(0.5)− = 43 −(0.5)2 = 0.5 à esquerda, e à direita g(0.5)+ =
0.5 as duas equações coı̈ncidem à direita e à esquerda !
(0.5− 32 )2
2
=
– g(1.5) = 0 à direita e à esquerda !
e provamos que g é contı́nua.
Verificando que a derivada é contı́nua.
• g ′ (−1.5)+ =
2x+3
2 |−1.5
= 0 coı̈ncidindo à direita e à esquerda !
′
• g ′ (−0.5)− = 2x+3
2 |−0.5 = 1 g (−0.5)+ = −2x|−0.5 = 1 coı̈ncidindo à
direita e à esquerda !
• g ′ (0.5)− = −2x|0.5 = −1 g ′ (0.5)+ =
e à esquerda !
• g ′ (1)− =
2x−3
2 |1.5
2x−3
2 |0.5
= −1 coı̈ncidindo à direita
= 0 coı̈ncidindo à direita e à esquerda !
Verificamos assim que g é contı́nua e que g ′ é também contı́nua, portanto g
é de classe C 1 sendo uma polinomial do segundo grau, portanto um 2 − splines.
O gráfico de g = f ∗ f ∗ f é formado de tres segmentos de parb́ola tangentes
duas a duas no ponto (−0.5, g(−0.5)) e no ponto (0.5, g(0.5)). As parábolas
externas são tangentes ao eixo OX e você pode ver o gráfico de g, feito à mão,
na figura (fig. 4.17) página 166. Na mesma figura você pode ver o gráfico, feito
com Gnuplot, das tres parábolas, 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 você pode obter o terceiro gráfico
que também aparece na referida figura. Observe a “barra invertida” na linha em
157
CAPÍTULO 4. SPLINES
que se inicia a definição de g(x) dentro do Gnuplot. Ela serve para lhe permitir
escrever uma fórmula que se expanda por mais de uma linha. Terminando a
linha com a “barra invertida”, evita que Gnuplot leia um fim de linha e assim
uma fórmula pode ser escrita em diversas linhas.
Observando, dos exemplos que duramente desenvolvemos, que ao fazer uma
convolução a polinomial aumenta de um grau assim como a classe de continuidade.
Isto é verdade mas a demonstração é muito difı́cil e vamos apenas enunciar
o resultado sem demonstrá-lo, para uma demonstração leia o artigo [21].
Teorema 10 Núcleos n-splines
A enésima potência de convolução da função caracterı́stica do intervalo
[−0.5, 0.5] é um (n-1)-splines a suporte compacto, positivo, com área 1. Portanto um núcleo (n-1)-splines.
Nas aplicações nos contentamos com 3-splines, os splines cúbicos, que dão
tı́tulo a esta seção.
Exercı́cios 19 Splines a suporte compacto
1. splines cúbico Partindo do exemplo do núcleo 2-splines, construa um núcleo
3-splines (splines cúbico).
2. escala e núcleo
(a) Chame g ao 2-splines construido no exemplo (ex. 15). Considere a
seguinte operação:
ga (x) = ag(ax)
e verifique a identidade
Z∞
ga (x)dx =
−∞
Z∞
g(x)dx = 1
−∞
para todo número real a 6= 0.
(b) Faça o gráfico de g2 , g3 , g4 , g 31 sugestão use gnuplot para fazer estes
gráficos.
3. splines cúbico - formato arbitrário
(a) Faça o gráfico da função

x < −4
x+8




x
∈
[−4,
−1]
−2

x ∈ [−1, −0.5]
1


x ∈ [−0.5, 1]
|2x|



x ∈ [1, 4]
2
(b) Amacie a função cujo gráfico foi feito no item anterior, multiplicandoa por convolução, sucessivamente, pelos núcleos g2 , g3 , g4 e faça um
laudo do resultado.
158
CAPÍTULO 4. SPLINES
4.6
Solução de alguns exercicios
1. (ex. 8) página 121
Analisando o máximo de |P | e de |P ′ | no intervalo [−a, a]; a > 0 em que
se encontram as raı́zes, temos
|P ′ (x)| = |x + a + x − a| = 2|x| ≤ 2|a|
′
M ax(|P |) = 2|a|
M ax|P | = a2 ≤ 2|a| =⇒⇐= |a| ≤ 2
(4.183)
(4.184)
(4.185)
Se fizermos uma translação neste gráfico43 a equação de P será
P (x) = (x − a)(x − b)
em que a, b são as duas raizes do polinômio. Da parte anterior do problema deduzimos que a distância entre as raı́zes é no máximo 4 para que
a desigualdade se dê, portanto se |a − b| ≤ 4
2. (ex. 9) página 121
O máximo módulo de P ′ se dá no ponto médio das raı́zes ou nos extremos
do intervalo [−1, 1]. Calculando estes tres valores encontramos
|P ′ (−1)| = 2 = |P ′ (1)|; |P ′ (0)| = 1
logo o módulo máximo de P ′ é 2.
O módulo máximo da função do terceiro grau Pq, sobre o intervalo em que
ela tem raı́zes, se dá nas raı́zes da derivada: ± 13 e vale, em módulo
r
1 1
( − 1) =
3 3
r
12
<2
33
demonstrando o que desejavamos.
3. (ex. 10) página 121
4. Polinômio interpolando pontos no plano
5. (ex. 11g) página 122
P(x) =
P1(x)=
P2(x)=
P3(x)=
P4(x)=
P5(x)=
43 movimento
(x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)
(x+2.5)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)
(x+3)*(x+1.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)
(x+3)*(x+2.5)*(x+0.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)
(x+3)*(x+2.5)*(x+1.5)*(x-0.5)*(x-1.5)*(x-2.5)*(x-3)
(x+3)*(x+2.5)*(x+1.5)*(x+0.5)*(x-1.5)*(x-2.5)*(x-3)
rı́gido, não altera as proporções no gráfico
CAPÍTULO 4. SPLINES
159
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) página 126
(a) Coloque no arquivo “dados” os pares de pontos (xk , yk ).
-3 0
-2.5
1
160
CAPÍTULO 4. SPLINES
-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 espaço, e cada par fica em
uma única 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 você estiver lendo este arquivo eletronicamente (em pdf), “cortar
e colar” funciona com Gnuplot.
(b) Em cada intervalo a função f está definida por uma equação do
primeiro grau fk
y = b + m(x − a) equação da reta por (a, b);
fk (x) = yk + mk (x − xk );
k+1 −yk
; x ∈ [xk , xk+1 ]
mk = ∆k = xyk+1
−xk
(4.186)
(4.187)
(4.188)
(4.189)
Basta agora, para cada inteiro n, encontrar n ∈ [xk , xk+1 ]. Por
exemplo
n ∈ [xk , xk+1 ]
1 ∈ [0.5, 1.5] = [x4 , x5 ]
f4 (x) = y4 + m4 (x − x4 )
(4.190)
(4.191)
(4.192)
f4 (x) = −3 + 2(x − 0.5) ; f (1) = −3 + 2(1 − 0.5) = −2(4.193)
A definição de f num algoritmo de computador é
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)
161
CAPÍTULO 4. SPLINES
{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) página 126
Será possı́vel encontrar polinômios 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
′
fk (xk ) = dk
fk (xk+1 ) = yk+1
′
fk (xk+1 ) = dk+1
a1,k + a2,k (x − xk ) +
8. (ex. 2) página 126
A figura (fig. 4.18) página 167, mostra, comparativamente, a aproximação
polinomial clássica, de Lagrange com a aproximação polinomial por pedaços.
162
CAPÍTULO 4. SPLINES
Neste exemplo escolhemos os pontos de precisão
x1 = −7, x2 = −5, x3 = −3.0, x4 = −1, x5 = 1, x6 = 3, x7 = 5, x8 = 7;
e estamos aproximando a função
h(x) = (x ∗ x − 9) ∗ sin(x)
no intervalo [−7, 7]. A escolha dos nós foi feita de forma a salientar a fragilidade da aproximação polinomial de Lagrange uma vez que a distância
entre os dois primeiros nós e os dois últimos nós é grande. Se a distância
entre os nós for pequena, e uniforme, a aproximação polinomial de Lagrange tem um desempenho melhor, como se pode Veja na figura (fig.
4.19) página 168. em que usamos os nós
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 função
h(x) = (x ∗ x − 9) ∗ sin(x)
no intervalo [−3, 4].
A aproximação melhora na medida em que a malha ficar mais fina, e
consquentemete o polinômio de mais alto grau o que torna o método,
computacionalmente, ineficiente.
9. (ex. 2) página 157
(a)
R∞
ga (x)dx =
(4.200)
ag(ax)dx =
(4.201)
ag(ax)d(ax) =
(4.202)
−∞
R∞
1
a
−∞
R∞
−∞
R∞
a
g(ax)d(ax) =
a
−∞
R∞
a
g(y)d(y) =
a
−∞
R∞
g(y)d(y)
−∞
(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
(4.203)
(4.204)
(4.205)
CAPÍTULO 4. SPLINES
163
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) página 157 Figura (fig. 4.20) página 168,
(a) Faça o gráfico da função

x < −4
x+8




x
∈
[−4,
−1]
−2

x ∈ [−1, −0.5]
1


x ∈ [−0.5, 1]
|2x|



x ∈ [1, 4]
2
(b) Amacie a função cujo gráfico foi feito no item anterior, multiplicandoa por convolução, sucessivamente, pelos núcleos g2 , g3 , g4 e faça um
laudo do resultado.
4.7
Vocabulário
correç~
ao da informaç~
ao, scilab
• correção da informação
Vamos dar aqui um exemplo ilustrativo sobre a correção da informação.
Observe o seguinte texto:
Mituo isneterasstne
De aorcdo com uma pqsieusa de uma uinrvesriddae ignlsea, não
ipomtra em qaul odrem as lrteas de uma plravaa etãso, a úncia
csioa iprotmatne é que a piremria e útmlia lrteas etejasm no lgaur
crteo. O rseto pdoe ser uma bçguana ttaol que vcoê pdoe anida
ler sem pobrlmea. Itso é poqrue nós não lmeos cdaa lrtea isladoa,
mas a plravaa cmoo um tdoo.
Mutitu isneterassten
De aorcod com uma pqsieuas de uma uinrvesriddea ignlsae, não
ipomtar em qaul odrem as lrtesa de uma plravaa etãso, a úncai
csioa iprotmaten é que a piremrai e útmlai lrtesa etejams no lgaru
crtoe. O rseto pdoe ser uma bçguaan ttalo que vcoê pdoe anida
ler sem pobrlmae. Itso é poqreu nós não lmeos cdaa lrtea isladoa,
mas a plravaa cmoo um tdoo.
O texto explicou mal. A razão é outra, é um caso de correção da informação que vou agora explicar.
CAPÍTULO 4. SPLINES
164
É que ao lermos, não lemos! Comparamos as palavras com as que temos em
nosso banco de dados e compomos a informação usando uma amostragem
da informação. Quem lê devagar, de fato lê. Quem lê rápido, faz esta
amostragem e compõe a informação.
Quem lê rápido, nem siquer lê palavras, lê frases inteiras, e novamente,
não lê, analisa o conjunto das palavras, seleciona no banco de dados o que
dá certo para colocar naquele conjunto, e percebe a informação.
Claro, esta rapidez pode ter seus contra-pontos, é possı́vel rapidamente
adquirir o centro da idéia, porém perder detalhes. O leitor rápido pode
num relance compreender, do texto, que “brigaram o homem e a mulher”,
mas pode não perceber que foi o “seu irmão com a mulher dele”... se
alguém lhe perguntar depois pelo conteúdo do texto, responderia:
- Brigaram!
e se o interlocutor insistisse na pergunta:
- Quem brigou, com quem?
responderia:
- Sei lá!
A inmaforção foi rbidecea, mas ptare dela se pdeeru pquore o ltoeir anapes
abvsoreu patre do prcaedido e paert do pratiedicvo na oração. Se o astsuno de
fato lhe chssamae atçãeno, voriltaa e se ceicartifria de pater dos dados pedordis.
Qudano, num tetxo, a infaormção for retipeda e abdaunnte, etsa leuitra rádpia
é saftisatória pourqe, com a amraostgem, o leoitr abrsove toda a inmaforção
imtapornte. Qunado o tetxo é coincso, sórbio, téicnco, a letiura temrina sedno
mias letna poqrue a amotsragem se reevla impfereita, o letior obesrva que não
está cogunseindo coeemprnder e, natlmuraente, psasa a faezr uma amraostgem
mais fina, teirmna ledno. . .
A informação foi recebida, mas parte dela se perdeu porque o leitor apenas
absorveu parte do predicado e parte do predicativo na oração. Se o
assunto de fato lhe chamasse atenção, voltaria e se certificaria de parte
dos dados perdidos.
Quando, num texto, a informação for repetida e abundante, esta leitura
rápida é satisfatória porque, com a amostragem, o leitor absorve toda
a informação importante. Quando o texto é conciso, sóbrio, técnico, a
leitura termina sendo mais lenta porque a amostragem se revela imperfeita,
o leitor observa que não está conseguindo compreender e, naturalmente,
passa a fazer uma amostragem mais fina, termina lendo. . .
• scilab é um programa para resolver questões de Álgebra Linear, computacionalmente, distribuido sob GPL. É semelhante a um programa comercial
também dedicado à Álgebra Linear. Pode ser obtido na internet, [23].
CAPÍTULO 4. SPLINES
•
•
165
166
CAPÍTULO 4. SPLINES
−1
5
0
1
f1(x)
f2(x)
f3(x)
0
4
3
2
1
0
−1
−2
−1.5
−1
−0.5
0
0.5
1
1.5
2−spline a suporte compacto
0.8
g(x)
0
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
−1.5
−1
−0.5
0
Figura 4.17:
0.5
2-splines
1
1.5
167
CAPÍTULO 4. SPLINES
40
"polped"
"lagrange"
"precisao"
"XOY"
30
20
10
0
-10
-20
-30
-40
-8
-6
-4
Figura 4.18:
-2
0
2
4
Comparação: polinômio de Lagrange e splines
6
8
168
CAPÍTULO 4. SPLINES
8
"polped"
"lagrange"
"precisao"
"XOY"
6
4
2
0
-2
-4
-6
-8
-3
-2
-1
0
1
2
3
4
Figura 4.19: Comparação: polinômio de Lagrange e splines - quando os nós ficam uniformente próximos.
4
’data1’
’data2’
3
2
1
0
−1
−2
−6
−4
−2
Figura 4.20:
0
2
Regularização por convolução
4
6
Capı́tulo 5
Integração aproximada
O objetivo deste capı́tulo é o de apresentar-lhe dois métodos para
o cálculo aproximado da integral
Zb
f (x)dx
a
Vou começar com as somas de Riemann que, embora não seja o
método conduzindo a melhor aproximação, é o mais simples e é
usado em diversas situações em que se deseje rapidamente avaliar
a integral. Depois vou discutir uma variante da soma de Riemann
- regra do trapésio.
Embora o método não seja eficiente e nós lhe vamos mostrar na
segunda parte do capı́tulo um que é eficiente, as idéias básicas das
somas de Riemann estarão presentes posteriormente: partição,
varredura, malha.
Finalmente vou mostrar como podemos aplicar o assunto do
capı́tulo 4 no cálculo aproximado de integrais. Este método, sim,
é de alta precisão e muito otimizado.
É possı́vel que o leitor, ou o professor, sinta a falta do método Simpson
entre os processos para o cálculo aproximada da integral. De fato ele está sendo
omitido aqui uma vez que podemos mostrar coisa melhor que é o uso dos splines,
afinal não seria somente o método de Simpson que estaria faltando, num livro
como este temos que escolher, selecionar material para que não transformá-lo
num tratado enciclopédico, alguns destes tratados estão na bibliografia. Se você
fez um bom curso de Cálculo, estudou integral no sentido de Riemann e portanto
as somas de Riemann. Parte do material deste capı́tulo será uma amena revisão
para você, esperamos.
169
170
CAPÍTULO 5. INTEGRAL APROXIMADA
5.1
Integral no sentido de Riemann
Neste capı́tulo discutimos a integral de forma intuitiva e geométrica fazendo,
inicialmente, uma revisão concentrada daquilo que se faz em Cálculo Diferencial e Integral mas voltados para o nosso objetivo que é o cálculo numérico
de integrais.
Começamos por descrever, com alguma simplicidade, o método de integração,
atribuido ao matemático alemão, Bernard Riemann, as somas de Riemann,
como aproximação para o cálculo da integral e daı́ derivaremos os métodos
tı́picos desta disciplina que logo o leitor verá que é uma aplicação da aproximação polinomial.
5.1.1
Integração geométrica.
Vamos começar calculando aproximadamente várias integrais para tornar “mecânico” o uso
da “soma de Riemann” como método de aproximação de integrais.
Neste livro a integral representa a área algébrica delimitada pelo gráfico de uma função f
entre dois pontos dados de seu domı́nio. Veja a interpretação geométrica na figura (fig. 5.1)
página 172.
Rb
Esta é a forma de se interpretar a integral no Cálculo: o sı́mbolo f representa esta área
a
limitada pelo gráfico de f e o eixo OX desde x = a até x = b.
A lista de exercı́cios deve ser entendida como um laboratório para relembrar
conhecimentos que o aluno deveria ter, o que nem sempre é verdadeiro. Um
aluno que considere um exercı́cio trivial, simplesmente deve ignorá-lo e passar
para o seguinte, apenas tendo o cuidado de ter a certeza de que não fez um
julgamento apressado.
Exercı́cios 20 Cálculo aproximado da integral
1. Represente geométricamente as seguintes integrais:
R3
R3
R0
a)
4
b) 4
c) 4
d)
g)
j)
−3
R3
2x
−3
R10
−3
R3
e)
2x + 3
h)
x+4
−3
R3
m)
k)
x2 + 2x + 1
n)
0
R3
2x
−2
R10
−1
R3
0
R3
0
−3
3
f)
2x − 3
i)
x−4
l)
1 − x2
o)
R3
2x
0
−3
R
3
R0
−3
R0
3
3 − 2x
4−x
x2 − 4
2. Calcule as integrais, que você souber calcular, dentre as indicadas na
questão anterior.
3. Calcule aproximadamente as integrais.
a)
R3
−3
x2 + 2x + 1
b)
R3
0
1 − x2
c)
R3
−3
4 − x2
CAPÍTULO 5. INTEGRAL APROXIMADA
171
Sugestão aproxime por falta ou por excesso as áreas com retângulos, triângulos
ou trapésios, conforme for conveniente, e aumente a precisão dos resultados usando uma máquina de calcular ou um programa de computador.
5.1.2
Expressão formal do cálculo da integral
Nós ainda não sabemos calcular as integrais:
R3
−3
x2 + 2x + 1
(5.1)
R3
1 − x2
(5.2)
x2 − 4
(5.3)
0
R3
−3
e agora vamos ver como isto se faz, aproximadamente.
Área aproximada usando retângulos
As integrais, (eq. 1), (eq. 2) e (eq. 3), representam as áreas de regiões limitadas
por contornos não retilı́neos.
Você já foi convidado, em exercı́cio anterior, a representar geometricamente
estas integrais.
Neste momento tudo que podemos fazer é calcular estas áreas aproximadamente, este método está representado na figura (fig. 5.1) página 172 e será
discutido em detalhe mais abaixo, mas é assunto que você pode encontrar discutido em profundidade nos cursos de Cálculo.
Uma saı́da, para obter uma aproximação de integrais como
Z3
x2 + 2x + 1
(5.4)
−3
representando a área de regiões com contornos curvilı́neos, consiste em subdividir a região que elas representam com retângulos, triângulos ou trapésios e
calcular a soma das áreas destas figuras:
Veja na figura (fig. 5.1) página 172,
Você logo deve se convencer de que não há ganho especial em trabalhar com
tantas figuras. Usando apenas retângulos podemos obter alta precisão, desde
que a base dos retângulos seja pequena, e este objetivo poderá ser alcançado
com um programa de computador, não com cálculos manuais.
Veja, por exemplo, a área de um trapésio é a média aritmética entre as áreas
de dois retângulos, um com a altura máxima do trapésio, e o outro com a altura
mı́nima do trapésio, supondo que o trapésio tenha duas alturas. Analise as
figuras (fig. 5.4), página 190.
172
CAPÍTULO 5. INTEGRAL APROXIMADA
f
b
a
Figura 5.1:
Trapésios para aproximar área
Isto mostra que o cálculo da área usando trapésio pode ser obtido com a
média aritmética dos cálculos feitos usando, retângulos por excesso e retângulos
por falta.
Depois, um triângulo é apenas um tipo particular de trapésio...
Então vamos nos concentrar no cálculo com retângulos, para encontrar a
área aproximada das integrais e nos preocupar em obter este resultado com
precisão máxima diminuindo a base dos retângulos.
Se convença do que foi dito fazendo alguns gráficos.
Somas de Riemann
Para calcular aproximadamente
Rb
f podemos subdividir a região em triângulos,
a
retângulos ou trapésios, conforme a conveniência ou de acordo com as possibilidades geométricas da figura. Mas já observamos que não se ganha muito com
este detalhe, muito mais se ganha na quantidade de subdivisões1 , e, naturalmente com o uso de um programa de computador.
Mas a principal razão de usarmos retângulos é a de que podemos obter
uma expressão algébrica simples para a soma das área dos retângulos e depois
aplicá-la num programa de computador.
A expressão algébrica que se presta, facilmente, para utilizar num programa
é uma soma de Riemann.
As somas de Riemann usam exclusivamente retângulos. Para obter os retângulos,
se subdivide o intervalo [a, b] em n sub-intervalos, veja na figura (fig. 5.2) página
173, a sugestão gráfica de como fazer isto. as subdivisões não precisam ser irregulares, como é o caso da (fig. 5.2), elas podem ser os nós de uma partição
.
uniforme e assim satisfazer a uma progressão aritmética de razao ∆x = b−a
n
1 em
outras palavras, ao usarmos subintervalos cada vez menores
173
CAPÍTULO 5. INTEGRAL APROXIMADA
f
b
a
[a,b]
Figura 5.2:
Soma de Riemann
Este valor ∆x é também o tamanho, (medida), da base de cada um dos subintervalos.
Vamos adotar este caso particular de partição, chamada de partição uniforme, e o leitor pode consultar um livro de Cálculo para verificar que se a
integral existir, o valor dela independe do tipo de partição que se escolher para
o Cálculo das somas de Riemann.
Os nós da partição (malha) são:
a, a + ∆x, a + 2∆x, a + 3∆x, · · · a + k∆x, · · · , a + (n − 1)∆x = b − ∆x (5.5)
Aqui faremos mais uma simplificação no método. Falamos anteriormente de
área por excesso e área por falta. Mas queremos calcular integrais automaticamente e assim não desejamos analisar o gráfico para escolher a área por excesso
ou por falta. Seguiremos assim o exemplo da figura (fig. 5.2) na qual você pode
ver que alguns retângulos representam a área por excesso e outros por falta.
CAPÍTULO 5. INTEGRAL APROXIMADA
174
Convidamos a que você faça um exercı́cio:
Exercı́cio 1 Área por falta ou por excesso
1. Verificar que os quatro primeiros retângulos na (fig. 5.2) representam uma
aproximação por excesso.
2. Verificar que os retângulos quinto e sexto na (fig. 5.2) representam uma
aproximação por falta da área.
3. Verificar que os retângulos, sétimo, oitavo e nono, na (fig. 5.2) representam uma aproximação por falta e que o décimo aproxima por excesso a
área.
Se você não concordou com a veracidade das afirmações contidas nos exercı́cios
acima, é porque, talvez, você não tenha observado que há alguns retângulos
com área nula (altura nula), volte a análisar os exercı́cios munido desta nova
informação.
Vamos agora passar a expressão formal da soma de Riemann.
Soma de Riemann
Considere agora a figura (fig. 5.2) página 173. Estipulamos um tamanho ∆x
para a base dos retângulos e cobrimos a área algumas vezes por excesso, outras
vezes por falta. Para isto consideramos a progressão aritmética
a + k∆x; k = 0, 1, ...
(5.6)
e o último retângulo ficou extrapolando o intervalo de integração [a, b].
Para evitar que isto aconteça temos que
• calcular ∆x usando a medida do intervalo [a, b] e
• um número de divisões, um número inteiro escolhido:
∆x =
b−a
n
A progressão aritmética obtida com esta razão ∆x vai fazer de
b = a + n∆x,
o último termo da p.a. de modo que o último retângulo escolhido corresponde
ao subintervalo
[a + (n − 1)∆x, a + n∆x] = [b − ∆x, b]
(5.7)
Existe uma notação prática que esconde a expressão dos termos da progressão aritmética, mas que sabemos qual é, de forma implı́cita. Usamos
x0 = a = a + 0∆x;
xk = a + k∆x;
xn = b = a + n∆x;
(5.8)
(5.9)
(5.10)
CAPÍTULO 5. INTEGRAL APROXIMADA
175
Agora podemos escrever a expressão da soma dos retângulos:
Zb
a
f≈
n−1
X
f (xk )∆x =
n−1
X
f (a + k∆x)∆x
(5.11)
k=0
k=0
a segunda formulação é apropriada para programas de computação, a primeira
é mais resumida e própria para escrever em textos de Matemática. Com este
cálculo do ∆x evitamos que haja um retângulo a mais ou a menos na cobertura
da área representada pela integral que é o defeito apresentado na (fig. 5.2).
Observe que o último “nó” não é 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 até 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 retângulos tem por área:
f (a)∆x, f (a + ∆x)∆x, f (a + 2∆x)∆x, · · · f (a + (n − 1)∆x)∆x
(5.13)
A soma destas áreas é o valor aproximado da integral, agora não sabemos se
é por falta ou por execesso, mas, com certeza é um valor médio, entre o cálculo
por excesso e o cálculo por falta.
Experimente as funções
riemann(), riemann grafun()
no arquivo riemann.py. Digite
python riemann.py
depois de editar o arquivo. Vejas as últimas linhas do arquivo riemann.py que
trazem instruções de como usar o programa. Não se preocupe em entender
o programa, agora. Volte a ler o programa em outras ocasiões, ao longo do
capı́tulo.
Definição 6 Soma de Riemann
Considere o intervalo [a, b] e uma função que seja integrável neste intervalo.
Definimos uma soma de Riemann, de ordem n2 , associada a uma partição
uniforme3
2 ordem
3 Já
x0 = a
..
.
(5.14)
xk = a + k∆x
..
.
(5.16)
xn−1 = a + (n − 1)∆x = b − ∆x
b = a + n∆x
(5.18)
(5.19)
(5.15)
(5.17)
n porque representa a soma de n parcelas
dissemos que as partições não precisam ser uniforme, estamos fazendo uma escolha.
176
CAPÍTULO 5. INTEGRAL APROXIMADA
como
Sn (f ) =
n−1
X
f (a + k∆x)∆x.
(5.20)
k=0
Observe que em todos os retângulos consideramos a altura dada pelo primeiro extremo do correspondente subintervalo. Quer dizer que, no intervalo
[xk , xk+1 ] = [a + k∆x, a + (k + 1)∆x]
a altura considerada é f (xk ).
Poderiamos ter usado o segundo extremo obtendo a fórmula
Sn (f ) =
n
X
f (a + k∆x)∆x.
(5.21)
k=1
que você deve se convencer de que representa uma aproximação equivalente da
integral. Dissemos equivalente, os valores não são iguais, faça as contas e veja.
Mas o erro entre as duas expressões é pequeno, ou tende a ser pequeno, quando
a medida dos subintervalos decresce.
Exercı́cios 21 Soma de Riemann superior ou inferior
Objetivo: adquirir uma visão intuitiva das integrais superior e inferior e
compreender a relação
Sn (f ) ≥ Sn (f )
para uma mesma partição do intervalo [a, b] quando f for positiva.
Se os exercı́cios lhe parecerem claros, não perca o seu tempo fazendo-os.
1. Divida o intervalo [−3, 3] em 10 subintervalos iguais, represente geometricamente a aproximação da área
Z3
−3
f (x) =
Z3
x2
−3
usando sempre o máximo de f em cada sub-intervalo. Esta soma de Riemann assim obtida se chama soma superior de Riemann
S 10 (f )
e vale a desigualdade
Z3
f (x) ≤ S 10 (f )
−3
Observe que escrevemos ‘menor ou igual” porque, por uma casualidade, se
pode obter uma igualdade. Se f for constante vale a igualdade.
177
CAPÍTULO 5. INTEGRAL APROXIMADA
2. Divida o intervalo [−3, 3] em 20 subintervalos iguais, represente geometricamente a aproximação da área
Z3
f (x) =
−3
Z3
x2
−3
usando sempre o máximo de f em cada sub-intervalo. Esta soma de Riemann assim obtida se chama soma superior de Riemann
S 20 (f )
e valem as desigualdades
Z3
f (x) ≤ S 20 (f ) ≤ S 10 (f )
−3
3. Tente uma demonstração para a afirmação: “ se duplicarmos a quantidade
de intervalos, usando partições uniformes, se tem
≤ S 2n (f ) ≤ S n (f )
em outras palavras, as somas superiores obtidas por subdivisão sucessiva
dos subintervalos, forma uma sucessão decrescente. Ela decresce para o
valor da integral
Zb
f (x)
a
sobre o intervalo [a, b].
4. Prove que, se f for uma função crescente,
Sn (f ) =
n−1
X
f (a + k∆x)∆x.
(5.22)
k=0
é uma aproximação por falta da integral
Rb
f e
a
Sn (f ) =
n
X
f (a + k∆x)∆x.
(5.23)
k=1
é uma aproximação por excesso da integral. Faça um gráfico ilustrativo.
5. Prove que, se f for uma função decrescente,
Sn (f ) =
n−1
X
k=0
f (a + k∆x)∆x.
(5.24)
178
CAPÍTULO 5. INTEGRAL APROXIMADA
Rb
é uma aproximação por excesso da integral
f e
a
Sn (f ) =
n
X
f (a + k∆x)∆x.
(5.25)
k=1
é uma aproximação por falta da integral. Faça um gráfico ilustrativo.
6. Use o programa riemann() para calcular, aproximadamdente, as integrais
R3
a)
c)
3
R3
i)
0
5 − 2x
−2
R10
−3
−3
R
3
k)
R3
x2 − 2x + 3
f)
4xsen(x) + 3x2
h)
j)
sen(x)
l)
−3
2x − x2
−3
3x2 − 2x
R3
3 − 2x
R3
d)
0
m)
R3
b)
−3
R0
e)
g)
2x + 3
x2 cos(x) − 2xsen(x) − cos(x)
R3
2 − 2x2
0
R10
−1
R3
−3
R0
−3
R3
n)
x2 cos(x) − 2x − 3
(x3 − x2 − x + 4)sen(x)
cos(x)
1 + x2 cos(x)
0
e compare o resultado usando o Teorema Fundamental do Cálculo, (em
alguns casos você vai ter que usar integração por partes).
Na proxima seção alguns cálculos feitos com um programa em Python vão
ilustrar numericamente e graficamente o significado da soma de Riemann.
5.2
Integral no sentido de Riemann
Falamos diversas que as somas de Riemann eram aproximações da integral e
vamos agora ver como. A teoria que vamos apresentar é um pouco simplificada,
deixamos que você leia uma teoria mais completa num livro de Cálculo. Um
dos itens de nossa simplificação reside em que vamos considerar apenas malhas
uniformes, este defeito é importante!
O método algorı́tmico para calcular integrais é
• Temos uma função
f
[a, b] → R
que desejamos “provar que é integrável”;
CAPÍTULO 5. INTEGRAL APROXIMADA
179
• Determinamos uma sucessão de malhas4 (partições), Π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 sucessão associamos uma soma de Riemann para f
obtendo assim uma sucessão de somas de Riemann
Πk 7→ Sk (f );
(5.27)
• Se qualquer sucessão de somas de Riemann, assim construı́da, tiver o
mesmo limite, este limite comum é
Zb
f
(5.28)
a
este é um dos métodos para definir números reais, um número real é o limite
comum de uma classe de equivalência de sucessões convergentes de números
racionais.
Podemos escrever uma definição para função integrável a Riemann:
Definição 7 integral no sentido de Riemann Seja
f
[a, b] → R.
f é integrável no sentido de Riemann se qualquer sucessão de somas de Riemann
obtida por refinamentos arbitrários de uma partição de modo que a medida dos
subintervalos tendam a zero, definir um mesmo número real.
Este único número real é
Zb
f.
a
Observação 11 Partições uniformes
Observe que na definição não fizemos menção às partições uniformes. Para
definir a integral precisamos de famı́lias arbitrárias de partições.
Mas neste texto somente faremos uso de partiçoes uniformes. Para que você
fique alerta, a função
1
(5.29)
x
seria integrável se usarmos apenas partiçoes uniformes e na verdade esta função
não é integrável.
f
[−1, 1] → R; x 7→
4 que
na linguagem da estatı́stica representa uma amostragem
linguagem da estatı́stica seria uma amostragem compatı́vel, ou comparável, com a
anterior
5 na
180
CAPÍTULO 5. INTEGRAL APROXIMADA
Entretanto, se a função for integrável, usando apenas partições uniformes
podemos calcular a sua integral, este é o atalho que estamos usando aqui. Este
é um livro de Cálculo Numérico, em que calculamos numéricamente aquilo que
você aprendeu a calcular exatamente no curso de Cálculo Diferencial e Integral.
Exemplo 16 Programa riemann.py
Rode e leia o programa riemann.py. Ele produz alguns refinamentos de uma
partição inicial criando uma sucessão que converge para o valor da integral, se
este valor existir.
Experimente o programa com algumas das funções que estão definidas nele,
por exemplo inv(x) que igual a x1 quando x 6= 0. Experimente calcular sua
integral no intervalo [−1, 1] para ver alguns elementos de uma sucessão que não
‘parece” ser convergente. Os números que surgem não formam uma sucessão
que pareça ter limite.
Observe que um programa deste tipo não prova nada! ele apenas serve como
exemplo e deve ser usado com este cuidado.
Para usar o programa, troque o nome da função cuja integral você deseja
dentro de uma das últimas linhas do programa. Veja a observação que indica
isto no próprio programa. Use o programa para definir outras funções cujas
integrais você deseja, observe a sintaxe da linguagem Python ao definir novas
funções.
5.2.1
Duas propriedades da integral
Não vamos desenvolver aqui a teoria de integração, ela é privativa do curso
de Cálculo! Mostraremos entretanto uma propriedade da integral de Riemann
para ilustrar como as somas de Riemann são um método efetivo de aproximação.
Depois veremos que combinando as somas de Riemann com aproximação polinomial, teremos algoritmos muito possantes para calcular integrais aproximadamente.
A propriedade: se f = h + g então
Zb
a
f=
Zb
(h + g) =
a
Zb
a
h+
Zb
g
a
é de grande uso. Vamos ver sua demonstração.
Suponhamos que f, g, h sejam funções integráveis e que f = h + g.
Para cada partição do intervalo [a, b] podemos escrever
f (xk ) = g(xk ) + h(xk );
n
P
Sn (f ) =
f (xk )∆xn ;
(5.31)
Sn (h) =
(5.32)
k=0
n
P
k=0
h(xk )∆xn ;
(5.30)
181
CAPÍTULO 5. INTEGRAL APROXIMADA
Sn (g) =
n
P
g(xk )∆xn ;
(5.33)
k=0
Sn (h + g) =
n
P
(h(xk ) + g(xk ))∆xn =
(5.34)
k=0
n
P
f (xk )∆xn = Sn (f )
(5.35)
k=0
o que nos mostra que os números
Zb
f;
a
Zb
h+g
(5.36)
a
são iguais, porque
• As equações (30)-(35) valem para qualquer que sejam as partições escolhidas no intervalo de integração;
• Logo a a soma dos limites é igual ao limite da soma, e provamos assim
que a soma das integrais é igual a integral das somas.
É fácil usar uma pequena alteração desta demonstração para provar outra
propriedade também muito útil:
Zb
Kf = K
a
Zb
f
(5.37)
a
se f for uma função integrável e K for uma constante qualquer.
Temos assim o exemplo
Z3
10x2 + 2x + 7 = 10
−3
Z3
x2 + 2
−3
Z3
x+
−3
Z3
7.
(5.38)
−3
Exercı́cios 22 Expressão formal do cálculo da integral
1. Escreva somas de Riemann, com 10 sub-intervalos, para aproximar cada
uma das integrais abaixo:
a)
R3
1
1
x
b)
R3
−3
1
1+x2
c)
R3
−3
2x+3
4+x2
2. Re-escreva as somas de Riemann aumentando a precisão, de modo que
os sub-intervalos tenha medida 0.1 Use uma calculadora ou computador e
calcule estas integrais.
182
CAPÍTULO 5. INTEGRAL APROXIMADA
3. O número de Napier Descubra experimentalmente um ponto e ∈ R tal que
Ze
1
=1
x
(5.39)
1
Sugestão, use o programa riemann.py e calcule as integrais
Za
1
x
1
até obter (uma aproximação do) número desejado.
4. Verifique que, das duas somas de Riemann abaixo, uma fornece uma aproximação por falta e a outra por excesso da integral
Z1
2
x ;
n−1
X
0
0
n
k2 1 X k2 1
;
n2 n 1 n2 n
(5.40)
identifique quem é quem. Use riemann() in riemann.py.
5. Verifique que, das duas somas de Riemann abaixo, uma fornece uma aproximação por falta e a outra por excesso da integral
Z1
p
x ; p∈N; p>1 ;
0
n−1
X
0
n
kp 1 X kp 1
;
np n
np n
1
(5.41)
identifique quem é quem . Use riemann() in riemann.py.
6. Verifique experimentalmente (somas de Riemann) que
R1
0
riemann() in riemann.py.
x2 =
1
.
3
Use
7. soma de RiemannProve a desigualdade:
n−1
X
2
k <n
3
k=0
Z1
2
x <
n
X
k2
(5.42)
n
X
k3
(5.43)
k=1
0
8. soma de RiemannProve a desigualdade:
n−1
X
k=0
3
k <n
4
Z1
0
x3 <
k=1
183
CAPÍTULO 5. INTEGRAL APROXIMADA
9. soma de RiemannProve a desigualdade:
a
Z
n−1
n
a3 X 3
a3 X 3
3
k < x < 4
k
n4
n
k=0
(5.44)
k=1
0
10. soma de RiemannProve a desigualdade:
n−1
X
p
k <n
p+1
k=0
Z1
xp <
0
n
X
kp
(5.45)
k=1
11. soma de RiemannProve a desigualdade:
a
Z
n−1
n
a4 X 3
a4 X 3
3
k
<
x
<
k
n4
n4
k=0
(5.46)
k=1
0
12. soma de RiemannProve a desigualdade:
a
Z
n−1
n
ap+1 X 3
ap+1 X p
p
k
<
x
<
k
np+1
np+1
k=0
0
(5.47)
k=1
13. Expresse como uma soma de áreas de triângulos isósceles, (ou de retângulos0
uma aproximação para a área do cı́rculo de raio 1.
5.2.2
Cálculo “numérico” da integral
Vamos calcular as áreas dos retângulos limitados pelo gráfico de
f (x) = x2 + 2x + 1
ao longo de uma partição do intervalo [−3, 3].
Os dados contidos na tabela 5.1 na página 184, mostram a saı́da de dados
de um programa em Python para o cálculo da integral do exercı́cio 3, com
∆x = 0.2.
O gráfico 5.3, página 185, mostra os retângulos cujas áreas se encontram
calculadas abaixo. O gráfico foi feito com auxı́lio do Gnuplot.
A tabela 5.1 mostra os valores da integral ao longo dos sub-intervalos da
partição.
deltax = 0.2
Valor aproximado da integral 24.104801.
Repetindo os cálculos com valores menores para o ∆x temos o seguinte:
CAPÍTULO 5. INTEGRAL APROXIMADA
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
x=
-3
-2.8
-2.6
-2.4
-2.2
-2.0
-1.8
-1.6
-1.4
-1.2
-1.0
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1.0
1.2
1.4
1.6
1.8
2.0
2.2
2.4
2.6
2.8
Sn(-3) =
Sn(-2.8) =
Sn(-2.6) =
Sn(-2.4) =
Sn(-2.2) =
Sn(-2.0) =
Sn(-1.8) =
Sn(-1.6) =
Sn(-1.4) =
Sn(-1.2) =
Sn(-1.0) =
Sn(-0.8) =
Sn(-0.6) =
Sn(-0.4) =
Sn(-0.2) =
Sn(0) =
Sn(0.2) =
Sn(0.4) =
Sn(0.6) =
Sn(0.8) =
Sn(1.0) =
Sn(1.2) =
Sn(1.4) =
Sn(1.6) =
Sn(1.8) =
Sn(2.0) =
Sn(2.2) =
Sn(2.4) =
Sn(2.6) =
Sn(2.8) =
0.7262867
1.3078534
1.7607801
2.1011468
2.3450335
2.5085202
2.6076869
2.6586136
2.6773803
2.680067
2.6827137
2.7013204
2.7518871
2.8504138
3.0129005
3.2553472
3.5937539
4.0441206
4.6224473
5.344734
6.2318207
7.2957874
8.5527141
10.0186808
11.7097675
13.6420542
15.8316209
18.2945476
21.0469143
24.104801
Tabela 5.1: Tabela de valores da integral de f (x) = x2 + 2x + 1
a
o
a
o
a
o
base de cada retangulo eh deltax = 0.12
valor da integral aproximado eh = 23.2944
base de cada retangulo eh deltax = 0.06
valor da integral aproximado eh = 23.6436
base de cada retangulo eh deltax = 0.006
valor da integral aproximado eh = 24.060036
O valor exato desta integral é:
Z3
−3
x2 + 2x + 1 = 24
184
185
CAPÍTULO 5. INTEGRAL APROXIMADA
e um programa em Python para calculá-la, aproximadamente, é:
Exemplo 17 Um programa em Python para calcular integrais
## inicio do arquivo integral.py
def f(x):
return x*x ## função 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 = 0
deltax = 0.0000001 ## a precisão do cálculo.
while (inicio < f im):
soma = soma + f(inicio)
inicio = inicio + deltax
soma = soma*deltax
return soma
inicio = 0
fim = 1
print integral(f,inicio,fim)
## fim do arquivo integral.py
Rode este programa assim. Na linha de comandos do LinuX digite:
$ python integral.py
Você pode alterar na definição de f , veja no programa onde está “def f(x)”, a equação e
assim calcular outras integrais.
O programa pede os extremos do intervalo de integração.
16
’data’
14
12
10
8
6
4
2
0
-3
-2
Figura 5.3:
-1
0
1
retângulos da soma de Riemann para
2
R3
−3
Observação 12
Comentando o programa
3
x2 + 2x + 1
4
CAPÍTULO 5. INTEGRAL APROXIMADA
186
Não considere como ponto de honra entender um programa de computação agora. O
autor deste livro levou quase 15 anos para conseguir entender os programas de computação...
Use os programas, e aos poucos eles passarão a fazer parte de sua vida.
Existe uma regra com algumas exceções, em Unix (LinuX é Unix). O sı́mbolo # representa comentário e o programa ignora o que vier depois deste sinal até o final da linha.
Assim podemos inserir nos programas comentários para o outros que forem usar os programas. No programa você pode encontrar o comentário “a precisão do cálculo”ao lado da
variável “deltax”. Esta é medida da base dos retângulos com a integral está sendo calculada.
Troque por valor menor se quiser ter mais precisão, mas verá que logo deixa de valer a pena,
porque a precisão máxima da máquina será atingida.
Entretanto se você iniciar os cáculos com valores maiores para “deltax”, ao substituir
valores menores, verá que cálculo 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 você tiver executado a experiência, lhe terá aparecido ante os olhos a sucessão:
0.385, 0.32835, 0.3328335, 0.333383335, 0.333338333349, 0.333332833334
correspondentes a
R1
(5.49)
x2 calculada com este programa em que usamos
0
deltax ∈ {0.1, 0.01, 0.001, 0.0001, 0.00001, 0.000001}
(5.50)
Se você for além mais um pouquinho terá a desgradável surpreza de ver que a máquina
começa se perder... mas é bom que isto aconteça para que você desmistifique a máquina.
Nós, e não as máquinas, sabemos com contornar esta dificuldade para obter precisões ainda
maiores, mais isto não cabe ser discutido aqui.
Na próxima lista de exercı́cios vamos usar o que o programa nos ofereceu, (supondo que
você tenha usado o programa, naturalmente).
Observe que a sucessão das somas de Riemann parece produzir uma sucessão de números
com um comportamento assintótico previsı́vel.
Para uso no exercı́cio abaixo, use a seguinte versão do programa6 integral.py
Mais adiante vamos lhe apresentar uma outra alternativa computacional
usando uma “máquina de calcular” bem poderosa que pode estar instalada nos
computadores a que você tiver acesso.
Observe que o programa abaixo não se encontra no arquivo riemann.py.
Você deverá digitá-lo e gravá-lo em sua área de trabalho.
## inicio do arquivo integral.py
def f(x):
return x*x ## função f a ser integrada.
def integral(f,inicio,fim):
fim = 1
soma = 0
deltax = 0.1; ## precisão incial do cálculo.
while deltax > 0.0000001:
soma = 0
6 Os
programas usados neste livro podem ser conseguidos via e-mail com o autor.
CAPÍTULO 5. INTEGRAL APROXIMADA
187
x = deltax
while (x < f im):
soma = soma + f(x)
x = x + deltax
soma = soma*deltax
print soma
deltax = deltax/2
return soma
print integral(f,inicio,fim)
## fim do arquivo integral.py
Esta versão difere da anterior nos seguintes pontos, agora ‘inicio”vale “deltax”e “fim=1”, quer dizer que ele calcula
Z1
f (x).
(5.51)
0
Além disto, o próprio programa sai dividindo sucessivamente ‘deltax”por dois,
você tem apenas que sentar-se e olhar o resultado...
Para rodar este programa faça 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 você está trabalhando num diretorio chamado “calculo” em sua área de trabalho.
• Qualquer dúvida, contacte tarcisiomember.ams.org descrevendo cuidadosamente a dificuldade encontrada. Junte cópia de eventuais mensagens de
erro.
Observação 13 Calcular integrais aproximadamente
Qual pode ser o sentido de que eu o esteja conduzindo ao cálculo aproximado
de integrais que você sabe calcular exatamente?
Na verdade eu não deveria estar me concentrando no cálculo aproximado de
integrais que não sabemos calcular exatamente?
A resposta para esta pergunta é simples: como você sabe calcular exatamente
as integrais você também pode comparar os resultados do cálculo aproximado
com o cálculo exata e assim ganhar segurança sobre a precisão do cálculo aproximado.
Inclusive os exercı́cios salientam este ponto ao pedir que você calcule usando
o Teorema Fundamental do Cálculo as integrais calculadas aproximadamente.
188
CAPÍTULO 5. INTEGRAL APROXIMADA
Exercı́cios 23 Cálculo “numérico” da integral
Objetivo
1. Rode o programa integral.py com as integrais abaixo e decida em que
casos parece haver um comportamento assintótico previsı́vel (limite).
R1
a) x3
b)
0
e)
R1
x4
0
R1
0
f)
R1
0
1
x
c)
R1
x+3
d)
0
x+1
x
g)
R1
0
R1
0
x
x+1
h)
R1
0
1
x2
x+1
x+2
2. Existem exatamente três casos em que o comportamento assintótico da
sucessão de Somas de Riemann fica indefinido. Tente encontrar uma explicação.
3. Verifique que se, numa soma de Riemann para
Rb
f , os sub-intervalos tive-
a
rem todos o mesmo tamanho b−a
n então a soma de Riemann é um multiplo
de b − a por uma média de valores de f , indique que média é esta: (1)
aritmética, (2) geométrica ou (3) aritmética ponderada.
4. Usando o resultado do exercı́cio anterior, conclua que se
Rb
f existir, então
a
1
b−a
Zb
f =M
(5.52)
a
é um valor médio de f . Tente justificar a razão do “artigo indefinido”.
5. partição do intervalo A metodologia usada pelo programa integral.py
consiste em, sucessivamente, dividir os intervalos na metade para obter
uma nova coleção de sub-intervalos para a soma de Riemann seguinte.
Considere a soma de Riemann
n
X
f (a + k∆x)∆x
(5.53)
k=1
e escreva a expressão da soma de Riemann em que ∆x′ é a metade de
∆x = b−a
n .
6. Suponha que os valores
V0 , V1 , · · · , Vn−1
(5.54)
são os resultados das medidas da velocidade de um carro tomadas a intervalos regulares (iguais) do tempo t ∈ [a, b].
(a) Qual a velocidade média Vm ?
189
CAPÍTULO 5. INTEGRAL APROXIMADA
(b) Qual distância percorrida pelo veı́culo?
(c) Expresse este valores numa fórmula usando a expressão da integral.
7. Descubra, geometricamente, as soluções da equação:
Zx
0
3−t =
Zx
6
t−3
(5.55)
8. Transforme numa equação algébrica a equação:
Zx
0
3−t =
Zx
6
t−3
(5.56)
9. Verifique quais das integrais abaixo é positiva:
2π
R
R2
a) x + sen(x) b) x − cos(x)
0
0
10. Faça tabelas de valores semelhantes à tabela 5.1 na página 184, para as
integrais das funções
f (x) = x1 ; ; x ∈ [1, 10]
2
g(x) = e−x ; ; x ∈ [−3, 3]
(5.57)
(5.58)
No último exercı́cio você solicitado a fazer tabelas de valores para o cálculo
das integrais para às quais não há forma de cálculo exato.
• A integral da função f (x) =
logaritmo natural.
1
x
no intervalo [1, R] fornece os valores do
2
• A integral da função g(x) = e−x no intervalo [−a, a] fornece os valores
da gaussiana.
São duas funções de grande importância em aplicações e você foi conduzido,
neste capı́tulo, a saber fazer as tabelas das integrais destas funções.
5.3
Regra do trapésio
Vamos fazer referência a este método apenas para não deixá-lo de fora, seu valor
é histórico. Foi um método que teve importância quando calculavamos aproximações manualmente. Ao mesmo tempo ele serve de exemplo de fórmulas que
se escrevem facilmente com Matemática e que é difı́cil traduzir num programa
de computador.
Fizemos um comentário, páginas acima, dizendo que a área de um trapésio
(ou de um triângulo) é a média aritmética das áreas de dois retângulos:
190
CAPÍTULO 5. INTEGRAL APROXIMADA
1. um cuja altura é a altura maior do trapésio;
2. outro cuja altura é a altura menor do trapésio;
Veja isto na figura (fig. 5.4) página 190,
Figura 5.4:
área do trapésio é uma média aritmética
Para demonstrar esta afirmação, considere um trapésio com base B e alturas
2
H1 < H2 . Como é sabido, a área de um trapésio é B( H1 +H
)
2
2
)=
B( H1 +H
2
BH1 +BH2
2
=
(5.59)
BH1 é a área do retângulo de menor altura
(5.60)
(5.61)
BH2 é a área do retângulo de maior altura
(5.62)
191
CAPÍTULO 5. INTEGRAL APROXIMADA
e a figura (fig. 5.4) lhe mostra como, geometricamente, você pode obter um
trapésio, a partir do retângulo menor, cortando um triângulo.
Em Matemática é fácil escrever a soma de Riemann superior que fornece a
área por excesso associada a uma partição Π([a, b]):
S n (f ) =
n−1
X
f k ∆x
(5.63)
k=0
em que f k representa o supremo de f no intervalo [xk , xk+1 ]. Mas não há
programas de computador que consigam calcular supremos facilmente. De forma
análoga a soma de Riemann inferior se escreve
S n (f ) =
n−1
X
f k ∆x
(5.64)
k=0
em que f k representa o ı́nfimo de f no intervalo [xk , xk+1 ]. A mesma observação
se pode fazer sobre ı́nfimos e programas de computador. A fórmula matemática
Rb
para calcular uma aproximação, usando trapésios, de f será a média aritmética
a
de S n (f ), S n (f ) que é
n−1
S n (f ) + S n (f ) X f k + f k
=
∆x
2
2
(5.65)
k=0
que não é nada fácil de produzir com um programa de computador. Esta fórmula
foi muito utilizada nos tempos que em que calculavamos aproximações de integrais manualmente. Hoje perdeu o sentido porque uma soma de Riemann
calculada com um programa com valor muito pequeno para ∆x nos dará aproximações que dificilmente conseguiriamos com a regra do trapésio.
5.4
Integral de funções polinomiais
Nos cursos de Cálculo mostramos que
Zb
a
f (x)dx =
Zb
a
bn+1
an+1
xn+1 b
| =
−
= F (b) − F (a)
x dx =
n+1 a n+1 n+1
n
que é a expressão do Teorema Fundamental do Cálculo para as funções polinomiais. Vou agora usar este teorema para o cálculo da integral das aproximações
quase-splines de dados.
CAPÍTULO 5. INTEGRAL APROXIMADA
5.4.1
192
Apresentação do método
No capı́tulo 4 vimos que num levantamento de dados, por exemplo, com auxı́lio
de sensores, podemos recuperar de forma muito precisa a distribuição de um determinado fenômeno usando apenas as informações obtidas sobre este fenômeno
em pequena quantidade de nós de uma malha.
Na primeira parte deste capı́tulo fiz uso de malhas, que chamei de partições
de um intervalo, sobre cujos nós calculei os valores de uma função, portanto
também um levantamento de dados, concluindo na construção de somas de
Riemann como aproximações para a integral das funções.
Agora vou substituir a utilização dos sub-intervalos das partições para neles
simular os valores de uma função usando um quase-spline e calcular a integral de
cada um desses pedaços de polinômio em cima de cada sub-intervalo da partição,
substituindo estes valores na expressão das somas de Riemann. Estarei assim
re-utilizando o conceito de soma de Riemann para obter uma nova forma de
aproximação da integral de uma função.
Veremos, na comparação com casos particulares, em que sabemos calcular a
integral com precisão, que o resultado da aproximação da integral usando este
método fornece uma grande aproximação do valor da integral, validando, assim
o método.
Finalmente vou mostrar que os bons resultados não correspondem a conı̈ncidências obtidas com casos bem comportados, mas que a integral dos quasesplines correspondem a uma forma excelente de aproximação quando a função
tiver alguma classe de regularidade (ser contı́nua, por exemplo).
A conclusão sendo, portanto, que, como os dados amostrais são supostos serem o resultado de medições de fenômenos regulares, em geral mais do que apenas contı́nuos, diferenciáveis também, então a a modelagem com quase-splines
dos mesmo nos permite uma quantificação muito boa dos dados no cálculo da
quantidade total (integral), taxas de variação (derivadas), valor médio (integral).
5.4.2
Integral de quase-splines
Vou usar, neste seção, o calculo da integral de uma função polinomial, automatizada, com um programa de computador.
Os quase-splines com que trabalhamos são funções polinômiais por pedaços,
de grau menor ou igual a três. Simplificando inicialmente a notação, vou designar por [a, b] um sub-intervalo tı́pico de uma malha considerarada num intervalo
I.
Então o pedaço de polinômio, P , associado a este sub-intervalo tem por
equação
P (x) = a0 + a0 (x − a) + a2 (x − a)2 + a3 (x − a)3
e sua integral no intervalo [a, b] será
(5.66)
193
CAPÍTULO 5. INTEGRAL APROXIMADA
A=
Rb
P (x)dx =
(5.67)
a
A=
b−a
R
P (x + a)d(x + a)
(5.68)
3 b−a
R
P
(5.69)
0
A=
ak xk dx
k=0 0
3
P
A=
A=
k=0
3
P
k=0
k+1
ak xk+1 |b−a
0
(5.70)
k+1
ak (b−a)
k+1
(5.71)
em que
• na equação (68) fiz a chamada mudança de variável para transformar o
intervalo de integração de [a, b] para [0, b − a];
• na equação (69) estou trocando a ordem dos sı́mbolos de soma e integral
(distributividade da integral relativamente à soma);
• na equação (70) apliquei o Teorema Fundamental do Cálculo a cada um
dos monômios;
• e na equação (71) fiz a substituição final usando a expressão simples obtida
em consequência da mudança de variável.
Agora, se substituirmos a notação do intervalo [a, b] por um sub-intervalo
tı́pico da malha, com as correspondentes expressões para os pedaços de polinômio, teremos
[a, b] := [xi , xi+1 ]
3
P
k+1 x
−x
A := Ai =
ai,k xk+1 |0 i+1 i
(5.72)
(5.73)
k=0
Rb
a
Rb
a
f (x)dx ≈
f (x)dx ≈
n−1
P
3
P
i=0 k=0
n−1
P
Ai
(5.74)
i=0
k+1
−xi )
ai,k (xi+1k+1
(5.75)
em que
• na equação (72) substitui o intervalo [a, b] por um intervalo genérico [xi , xi+1 ]
da partição (malha);
• na equação (73) escrevi a expressão da integral pedação de polinômio Pi
no subintervalo [xi , xi+1 ];
194
CAPÍTULO 5. INTEGRAL APROXIMADA
• na equação (74) escrevi a aproximação da integral de f como a soma das
integrais de cada um dos pedaços de polinômio Pi ;
• e, finalmente, na equação (75) escrevi a expressão da soma final que dá
aproximação da integral de f no intervalo [a, b].
Vemos assim que a integral de um quase-spline depende apenas da expressão
da matriz dos coeficientes
ai,k
(5.76)
∆i,k = xi+1 − xi
(5.77)
e das medidas
de cada um dos sub-intervalos da malha considerada. A informação sobre o
fênomenos está guardada nos coeficientes da matriz dos splines e em alguma
forma também na medida dos intervalos. Quando as malhas forem informes
esta medidas serão todas iguais a ∆ e já vimos nas discussões anteriores que
esta simplificação em geral não traz nenhuma distorção significativa na análise
dos fenômenos. Vou sintetizar estes resultados em alguns teoremas para tornar
fácil a referência.
Teorema 11 Integral de quase-splines - partição não uniforme
Considere uma aproximação quase-spline de
f : [a, b] −→ R
(5.78)
(ai,k ) i = 0 . . . n − 1 ; k = 0 . . . 3
(5.79)
(∆i ) i = 0 . . . n − 1
(5.80)
determinada pela matriz
e pela matriz
das medidas dos sub-intervalos de [a, b].
Zb
a
f (x)dx ≈
n−1
3
XX
ai,k
i=0 k=0
(∆i )k+1
k+1
(5.81)
se a partição for uniforme temos um resultado um pouco simplificado
Teorema 12 Integral de quase-splines - partição uniforme
Considere uma aproximação quase-spline de
f : [a, b] −→ R
determinada pela matriz
(5.82)
195
CAPÍTULO 5. INTEGRAL APROXIMADA
(ai,k ) i = 0 . . . n − 1 ; k = 0 . . . 3
(5.83)
Zb
(5.84)
a
f (x)dx ≈
n−1
3
XX
ai,k
i=0 k=0
(∆)k+1
k+1
em que ∆ é a medida comum a todos os sub-intervalos da malha considerada
em [a, b].
É interessante registrar também com uma fórmula o valor médio de f e
vamos fazê-lo nos dois casos.
Teorema 13 Valor médio aproximado de f - partição não uniforme
Considere uma aproximação quase-spline de
f : [a, b] −→ R
(5.85)
(ai,k ) i = 0 . . . n − 1 ; k = 0 . . . 3
(5.86)
(∆i ) i = 0 . . . n − 1
(5.87)
determinada pela matriz
e pela matriz
das medidas dos sub-intervalos de [a, b]. O valor médio aproximado de f é
n−1 3
1 XX
(∆i )k+1
ai,k
b − a i=0
k+1
(5.88)
k=0
e quando a partição for uniforme temos a seguinte aproximação do valor médio
Teorema 14 Valor médio aproximado de f - partição uniforme
Considere uma aproximação quase-spline de
f : [a, b] −→ R
(5.89)
(ai,k ) i = 0 . . . n − 1 ; k = 0 . . . 3
(5.90)
determinada pela matriz
O valor médio aproximado de f é
n−1 3
(∆)k+1
1 XX
ai,k
b − a i=0
k+1
(5.91)
k=0
em que ∆ é a medida comum a todos os sub-intervalos da malha considerada
em [a, b].
196
CAPÍTULO 5. INTEGRAL APROXIMADA
Exercı́cios 24 Integral de funções polinomiais
1. Considere a seguinte tabela de dados
xk
−4
−1
2
6
f (xk )
3
0
−7
5
f ′ (xk )
−1
−2
0
6
Calcule a área da função polinomial por pedaços, f , de grau 3 que ela
determina.
Solução 11 Os coeficientes dos polinômios7 são
P1
P2
P3
[−4.00, −1.00]
[−1.00, 2.00]
[2.00, 6.00]
a0 , a1 , a2 , a3
a0 , a1 , a2 , a3
a0 , a1 , a2 , a3
3.0, −1.0, 0.33, −0.11
0.0, −2.0 − 1.0, 0.296296
−7.0, 0.0, 0.75, 0.0
As integrais destes polinômios são (nos respectivos intervalos)
−1
R
P1 = 5.24999925
(5.92)
P2 = −12.000006
(5.93)
−4
R2
−1
R6
2
R6
−4
P3 = −12
(5.94)
f = −18.75
(5.95)
Veja o gráfico da função polinomial por pedaços, na figura (fig. 5.5) página
197.
2. Calcule a quantidade do fenômeno descrito pelos dados
xk
−4
−1
2
6
f (xk )
3
0
−7
5
f ′ (xk )
−1
−2
0
6
usando a regra do trapésio e compare com o resultado obtido usando aproximação polinomial do terceiro grau.
7 os
coeficientes foram calculados com o programa ex0732.c
197
CAPÍTULO 5. INTEGRAL APROXIMADA
6
"dados"
4
2
0
-2
-4
-6
-8
-4
-3
-2
-1
Figura 5.5:
0
1
2
3
4
5
6
Gráfico do polinômio por pedaços
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 polinômio por pedaços que descreva este fenômeno e calcule
a quantidade total do fenômeno (integral) e o valor médio do mesmo.
Solução 12 Como temos medidas igualmente espaçadas, (uma partição
uniforme) vamos selecionar um subconjunto destas medidas guardando
dois valores seguidos e desprezando tres valores seguidos. Com os valores
seguidos calcularemos a taxa de varição. De acordo com esta decisão, a
tabela de valores que temos é
198
CAPÍTULO 5. INTEGRAL APROXIMADA
xk
0
5
10
f (xk )
3
5
5.2231
f ′ (xk )
3.2−3
1
5.1−5
1
5.2232−5.2231
Como selecionamos dois pontos seguidos e desprezamos os três seguintes, é
razoável considerar que a distância entre os nós seja 5 e assim escolhemos
{0, 5, 10} como o conjunto de nós. Usando o programa ex0732.c para
calcular os coeficientes dos polinômios, 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, são
R5
P1 = 20.208334
(5.98)
0
R10
P2 = 25.765875
(5.99)
5
e a quantidade do fenômeno é 45.974209. O valor médio é 4.59742
A representação gráfica da modelagem deste fenômeno pode ser vista na
figura (fig. 5.6) página 198,
6
"dados"
5
4
3
2
1
0
0
1
2
3
Figura 5.6:
4
5
6
7
8
Modelagem com polinômios por pedaços
9
10
CAPÍTULO 5. INTEGRAL APROXIMADA
199
Você logo irá perceber que o cálculo aproximado da integral usando splines é
uma generalização da soma de Riemann o que justifica que tenhamos começado
o capı́tulo usando um método atrazado e ineficiente.
5.5
Integral de quasi-splines
Um n-spline é uma função polinomial por pedaços, de grau n que é de classe8
C n−1 .
Em outras palavras, se
f
[a, b] −→ R
(5.100)
for um n-spline, então
• existe uma partição Π([a, b]), uma famı́lia de subintervalos, (Ik )n−1
k=0 e
• uma famı́lia de polinômios (Pk )n−1
k=0 de grau menor ou igual a n de tal
modo que
f |[xk ,xk+1 ] = Pk
f coı̈ncide com o polinômio Pk sobre o intervalo [xk , [xk+1 ];
• e f é de classe n − 1.
Consequentemente a integral de um spline é uma soma de integrais de polinômios sobre o ı́ndice que descreve a famı́lia de sub-intervalos associados ao
spline:
xk+1
Zb
n−1
X Z
f=
Pk
(5.101)
a
k=0 x
k
Há várias formas de apresentarmos splines, e um pouco disto foi visto no
capı́tulo 4 quando também chamamos sua atenção de que aqui estamos usando
uma versão fraca de splines que chamamos de quasi-splines porque apenas exigimos a continuidade da derivada das funções polinomiais por pedaços. Os nossos
quasi-splines são de classe C 1 .
Exercı́cios 25 Integral aproximada
1. Considere
2.
3.
8 que
tem n − 1 derivadas contı́nuas
Capı́tulo 6
Equações diferenciais
ordinárias
Vou apresentar alguns métodos que permitem, sobre
tudo, uma visualização da solução aproximadas de
equações diferenciais de primeira ordem da forma
dy
= f (x, y)
dx
considerada uma condição inicial (x0 , y0 ) e uma
região retangular da qual esta condição inicial é um
ponto interior.
Resolver exatamente uma equação diferencial é uma tarefa difı́cil mesmo nos
casos em que sabemos tudo1 , equações diferenciais lineares.
Durante a segunda metade do século 20 foram desenvolvidos complementos computacionais para métodos desenvolvidos já no século 19. É desta fusão
dos métodos antigos, com os avanços computacionais que trataremos aqui para
mostrar como podemos resolver aproximadamente uma equação diferencial ordinária.
As equações diferenciais de ordem superior a um podem ser reduzidas, através
de sistema de equações às equações de primeira ordem, e na parte final do
capı́tulo mostrarei alguns exemplos desta técnica. Entretanto o leitor não deve
perder de vista uma verdade crucial, cada equação diferencial é um novo problema, não temos uma teoria universal para resolver estas equações e nem talvez
isto venha a existir no futuro. Por outro lado os métodos computacionais vem
se revelando cada vez mais eficazes em nos ajudar na construção das soluções
1 teoricamente sabemos tudo, mas sabemos que nem sempre conseguiremos encontrar as
soluções....
200
201
CAPÍTULO 6. E.D.O.
aproximadas mas continua sendo verdadeiro que os programas não podem rodar
sozinhos, eles tem que ser monitorados, é o homem que resolve as equações com
auxı́lio da máquina.
Uma equação diferencial ordinária é uma expressão da forma
F (x, y, y ′, . . . , y (n) ) = 0
(6.1)
em que as “potências” da variável y representam as sucessivas de y em relação à
única variável livre x sendo porisso que estas equações se denominam ordinárias,
o adjetivo indicando o caso univariado.
A variável nesta equação diferencial de fato é y, que é a incognita mas o
hábito de chamar os parâmetros livres de variáveis persiste sendo um defeito que
não nos incomoda e naturalmente vou continuar usando esta terminologia. Se a
incognita, numa equação diferencial, tiver várias variáveis, a equação se chama
equação diferencial parcial e na expressão da equação intervem as derivadas
parciais da incognita relativamente às variáveis.
Neste livro vou tratar apenas de equações diferenciais ordinárias. A maior
ordem de derivação é a ordem da equação.
Como já observei, as equações de ordem superior a um podem ser transformadas num sistema de equações de primeira ordem por meios bastante engenhosos
e que dependem de cada equação, esta é a razão pela qual se estuda de forma
intensiva as equações de primeira ordem. Outra razão importante é a de que,
se interpretada de forma aproximada, derivadas de ordem superior a 1 induzem nos cálculo erros signficativos que é difı́cil de controlar. Isto se pode ver
facilmente numa listagem de quociente de diferenças de ordem 2, numa malha
suficientemente fina, em volta de pontos em que a função tenha uma oscilação
muito intensa, como apresentei no primeiro capı́tulo.
Então vou me restringir nesta exposição às equações diferenciais do tipo da
equação (1) de ordem 1
F (x, y, y ′) = 0
(6.2)
Esta equação, desde que satisfeitas ás condições do Teorema da Função
Implı́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 F
relativamente a terceira variável se anulasse portanto esta nova expressão é em
geral fácil de ser deduzida a partir da equação (2) o que justifica que a grande
maioria dos textos parte diretamente de uma equação na forma (3) deixando as
expressões das equações (1), (2) no preâmbulo como uma forma adequada de
iniciar falando de equações diferenciais.
Então será a equação (3) que eu vou tomar como modelo para uma equação
diferencial ordinária de primeira ordem neste capı́tulo sendo esta uma expressão
bastante geral como acabei de expor.
O meu objetivo aqui é apresentar métodos para resolver de forma aproximada as equações diferenciais e sobretudo apresentar este métodos no contexto
atual em que a computação nos permite trabalhar.
202
CAPÍTULO 6. E.D.O.
Resolver uma equação diferencial significa para nós encontrar uma solução
aproximada para um problema de valor inicial
y ′ = f (x, y) ; y ′ (x0 ) = f (x0 , y0 )
(6.4)
o ponto (x0 , y0 ) é comumente denominado condição inicial.
Por exemplo, certos autores ainda fazem referência ao método passo a passo
em que podemos obter um sucessão de valores yk quando hoje podemos encontrar uma poligonal com um número grande de lados sendo estes lados arbitrariamente pequenos representando uma aproximação de alta precisão para
um problema de valor inicial. A menção anterior é apenas aos vértices desta
poligonal.
Aqui vamos melhorar, como apoio computacional, os métodos tradicionais
de uma forma que logo vamos descrever.
Com frequência a variável livre usada é t quando se quer fazer referência
a problemas dinâmicos. Como esta notação é puramente psicológica, eu vou
continuar usando x como parâmetro, mas vou me permitir a usar a linguagem
de equações dinâmicas quando me parecer interessante.
Queremos obter uma poligonal a partir da condição inicial (x0 , y0 ) para
frente, ou para trás, quando x ∈ I, um intervalo aberto I contendo x0 como o
indica a figura (fig. 6.1) página 202, em que uma curva, a solução “exata” apa-
Figura 6.1:
Uma poligonal-solução aproximada
rece passando por um ponto, a condição inicial, onde também se origina uma
poligonal, a solução aproximada que nos interessa. A figura também ilustra um
item importante neste problema que o domı́nio Ω de validade da solução. A determinação desta domı́nio é consequência dos coeficientes variáveis da equação
ou da própria função f (x, y). Por exemplo, a equação
y′ = −
x
y
(6.5)
203
CAPÍTULO 6. E.D.O.
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 que
vamos tratar mais a frente.
Entretanto nós sabemos que esta restrição não precisa existir, em particular
esta equação é uma das equações mais elementares para ser resolvida conduzindo
pelo método das “variáveis” separáveis à equação de uma famı́lia de cı́rculos de
centro na origem com validade em todo R2 .
Infelizmente nem sempre podemos fazer uma discussão simples assim num
problema particular.
O plano do trabalho que vamos desenvolver aqui é
• O método de Euler que produz a poligonal de Euler; Um algoritmo computacional produz esta poligonal com uma precisão bastante grande em
vez de apenas construir os vértices;
• O método de Taylor que é uma aplicação dos polinômios de Taylor2 em
que uma função polinomial vai representar a solução aproximada. Aqui
vamos usar o método de Taylor para fazer uma melhoria no método de
Euler produzindo uma função polinomial por pedaços, cada pedação construido com o método de Taylor. Este método é comparável ao método de
Runge-Kutta em muito exemplos.
6.1
O método de Euler
O método de Euler pode ser explicado de forma bem elementar. A figura (fig.
6.2) página 204, ilustra o método com uma construção feita à mão. O ponto
P na figura representa uma condição inicial onde desenhei um segmento de
reta tangente, uma aproximação linear da curva num vizinhança do ponto P . O
outro ponto do segmento, P1 é uma nova condição inicial em que novo segmento
de reta tangente será traçado e assim sucessivamente temos uma poligonal que
representa uma aproximação da curva-solução da equação diferencial.
A curva apresentada na (fig. 6.2) é um cı́rculo que se for centrada na origem
é uma solução da equação diferencial
y′ = −
x
= f (x, y)
y
(6.7)
e eu escolhi este exemplo porque ele oferece um problema na implementação do
algoritmo: os pontos com tangentes verticais, em cima do eixo OX, tornam o
programa instável. O mesmo aconteceria com a equação
y′ =
2 alguns
x
y
autores se referem indevidamente à série de Taylor
(6.8)
204
CAPÍTULO 6. E.D.O.
P
P
1
P
2
P
3
método de Euler
Figura 6.2:
O método de Euler - uma poligonal
cujas curvas-solução são hipérboles. Novamente o algoritmo perde estabilidade
quando passa no eixo OX. É possı́vel obter uma solução que corte este eixo,
mas em geral o programa se perde desenhando retas obliquas porque perto do
eixo, logo acima ou logo abaixo o coeficiente angular é muito alto e é difı́cil
escrever um algoritmo que supere este problema.
O algoritmo, como mostra a figura, consiste em substituir a solução por uma
poligonal que parte da condição inicial dada, (x0 , y0 ), e que podemos descrever
com a seguinte sucessão de equações num processo indutivo. No conjunto de
equações abaixo, cada duas equações representa um passo no processo
(x0 , y0 ) ⇒ f0 (x) = y0 + f (x0 , y0 )(x − x0 )
x1 = x0 + ∆x ; y1 = f0 (x1 )
..
.
(6.9)
(6.10)
(6.11)
CAPÍTULO 6. E.D.O.
(xk , yk ) ⇒ fk (x) = yk + f (xk , yk )(x − xk )
xk+1 = xk + ∆x ; yk+1 = fk (xk )
..
.
(xn , yn ) ⇒ fn (x) = yn + f (xn , yn )(x − xn )
xn+1 = xn + ∆x ; yn+1 = fn (xn )
205
(6.12)
(6.13)
(6.14)
(6.15)
(6.16)
eu escrevi a equação da reta fk com a qual calculei yk+1 definindo antes xk+1 =
xk + ∆x .
• o primeiro lado da poligonal se originando na condição inicial para a qual
se calcula a equação da reta tangente ;
• o segundo extremo deste segmento de reta tangente é uma nova condição
inicial para determinar um novo lado da poligonal
e assim sucessivamente.
O programa euler.c implementa este algoritmo mas não consegue resolver
a equação do cı́rculo se a condição inicial estiver em cima do eixo OX. A figura
(fig. 6.3) página 206,
O trecho essencial do programa euler.c, escrito em C que implementa este
algoritmo é
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 vértices da poligonal. Depois posso
usar Gnuplot, um programa de domı́nio público, que completa os segmentos de
reta entre os pontos desenhando a poligonal. Eu chamo o Gnuplot diretamente
de dentro do programa de modo que o programa já apresenta o gráfico da
solução aproximada deixando os dados registrados em arquivos o permite repetir
o gráfico posteriormente, sem rodar o programa.
Além de poder ver o gráfico tenho assim os vértices da poligonal de Euler
disponı́veis para aplicações numéricas. O leitor interessado pode me pedir cópia
do programa por e-mail.
)
206
CAPÍTULO 6. E.D.O.
4
"dados"
"XOY"
3
2
1
0
-1
-2
-3
-4
-4
-3
-2
-1
Figura 6.3:
Exercı́cios 26
2.
3.
1.
0
1
2
solução aproximada de y ′ = − yx
3
4
5
207
CAPÍTULO 6. E.D.O.
6.2
Polinômio de Taylor: solução aproximada
O método de Taylor pode ser visto como generalização do método de Euler e eu vou apresentá-lo
sob esta forma nesta exposição. Fazendo assim, o
algoritmo computacional já produzido par o método
de Euler pode ser facilmente alterado para produzir
o método 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 suposição de que Ω seja um aberto nos deixa livre de preocupações com
a fronteira onde eventualmente as derivadas parciais de f deixassem de existir.
Na construção vamos ver quais são as hipóteses necessárias para que o problema
possa ser resolvido.
A polinômio de Taylor de grau n produz uma função polinomial tangente ao
gráfico de uma função tangenciando até a ordem de derivação correspondente
ao grau do polinômio.
6.2.1
Polinômio de Taylor do segundo grau
A reta tangente é a expressão do polinômio de Taylor de primeiro grau.
Podemos então tomar a equação
(x0 , y0 ) ⇒ f0 (x) = y0 + f (x0 , y0 )(x − x0 )
(6.18)
em que obtivemos uma função do primeiro grau cujo gráfico é tangente ao gráfico
da curva-solução passando no ponto (x0 , y0 ) e queremos expandir mais um termo
para obter uma expressão (polinômio) do segundo grau.
Para isto vamos formalmente expressar y ′ = z, que o leitor verá novamente
quando numa equação de ordem dois fizermos sua transformação num sistema
de equações de primeira ordem, ao final do capı́tulo, para escrever:
dz =
y ′′ =
y ′′ (x0 ) =
y ′ = z = f (x, y)
y ′ (x0 ) = A0
(6.19)
(6.20)
∂f (x,y)
∂x dx
(6.21)
dz
dx
=
+
∂f (x,y)
∂x
∂f (x,y)
|(x0 ,y0 )
∂x
y ′′ (x0 )
+
∂f (x,y)
∂y dy
+
∂f (x,y) dy
∂y
dx
(6.22)
∂f (x,y)
|(x0 ,y0 ) y ′ (x0 )
∂y
= A1
f0 (x) = y0 + A0 (x − x0 ) +
A1
(x
2
− x0 )
2
(6.23)
(6.24)
(6.25)
208
CAPÍTULO 6. E.D.O.
f0 (x) = y0 + A0,0 (x − x0 ) +
A0,1
2 (x
− x0 ) 2
(6.26)
é a expressão do polinômio do segundo grau que substitui, na fórmula de Euler,
a equação da reta tangente.
Posso agora retomar as equações que de forma iterativa me deram a poligonal
de Euler, para calcular construir uma sucessão de polinômios do segundo grau,
uma polinomial de segundo grau que aproxima a solução do problema de valor
inicial
y ′ = f (x, y) ; y ′ (x0 ) = f (x0 , y0 )
(x0 , y0 ) ⇒ f0 (x) = y0 + A0,0 (x − x0 ) +
A0,1
(x
2
x1 = x0 + ∆x ; y1 = f0 (x1 )
..
.
(6.27)
− x0 ) 2
A
An,1
2 (x
xn+1 = xn + ∆x ; yn+1 = fn (xn )
(6.29)
(6.30)
(xk , yk ) ⇒ fk (x) = yk + Ak,0 (x − x0 ) + 2k,1 (x − x0 )2
xk+1 = xk + ∆x ; yk+1 = fk (xk )
..
.
(xn , yn ) ⇒ fn (x) = yn + An,0 (x − x0 ) +
(6.28)
− x0 ) 2
(6.31)
(6.32)
(6.33)
(6.34)
(6.35)
O programa taylor.c é uma simples consequência do programa euler.c
apenas acrescentanodo as funções necessárias para calcular Ak,0 , Ak,1 , e naturalmente usando a nova expressão de fk no cálculo dos pontos para obter o
gráfico.
6.2.2
Polinômio de Taylor de grau n
Poderiamos ser tentados em prosseguir estes cálculos em busca de um polinômio
de Taylor de grau mais elevado. Como é fácil de observar a partir do cálculo
feito acima, as contas ficariam bem mais complicadas a cada nova ordem (grau
do polinômio).
A experiência que temos com aproximação nos indica que outro caminho
pode ser tomado para obter melhor aproximação, por exemplo construir um
método hı́brido, de Taylor, usando a mesma metologia acima.
Isto recairia na construção de splines ou quase-splines.
Referências Bibliográficas
[1] D’Azevedo, E.F. Romine, C. H. e Walker, D. W. Shared-Memory Emulation
is 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.html
jborwein@@cecm.sfu.ca
[4] Cláudio, D. M. e Marins, J.M.
Cálculo Numérico Computacional - 1994 editora atlas - 2a Edição
[5] Sperándio, D. Mendes, J. T. e Silva, L.H.M Cálculo Numérico Prentice Hall
Brasil
[6] Shapiro, H. S Smothing and approximation of functions
Van Nostrand Reinhold Mathematical Studies - 24
[7] Franco, N.M.B. Cálculo Numérico Prentice Hall Brasil
[8] Daubechies, Ingrid, Ten lectures on wavelets
- SIAM - Philadelphia, PA - 1992
[9] Dieudoné Calcul Infinitesimal
- 1968 - Collection Méthodes - Herman - Paris.
[10] Eaton, John W. Octave - A high-level interactive language for numerical
computations
1996 ftp.che.utexas.edu/pub/octave/octave-M.N.tar.gz
209
REFERÊNCIAS BIBLIOGRÁFICAS
210
[11] Faculdade de Engenharia Mecânica - 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 cálculos
http://www.gnuplot.info
[14] A enciclopédia 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 Neuenschwander
GRADIENT. Algortithmic Differentiation in Maple
Pre-Print - Symbolic Computation Group
Institut für Wissenschftliches Rechnen
- ETH - Zürich - Switzerland
[18] Praciano-Pereira, T. Cálculo numérico Computacional - Introdução à linguagem Pascal
- Editora da Universidade Estadual Vale do Acaraú - 2000
http://www.4shared.com/file/14206895/ae074651/pascal.html
[19] Praciano-Pereira, T.
Cálculo numérico Computacional - Edição Eletrônica
Laboratório de Matemática Computacional - 2007
http://www.4shared.com/dir/1751707/4c187abc/sharing.html
[20] Praciano-Pereira, T Programas para Cálculo Numérico - programas.tgz
http://www.4shared.com/dir/2041165/e14cc331/programas.html
[21] Praciano-Pereira, T Splines por convolução
http://www.4shared.com/file/17757661/3515d0b6/convspl02.html
[22] Rossum, Guido van A tutorial on Python
- [email protected] - ftp.python.org.
REFERÊNCIAS BIBLIOGRÁFICAS
211
[23] Scilab Group - SciLab - programa para simulações numéricas
INRIA - Unité de recherche de Rocquencourt - Projet Meta2 - [email protected]
- 1996
htt://www.scilab.org
[24] SIAM NEWS - The news journal of the Society of Industrial and Applied
Mathematics
- 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] José Stálio Rodrigues do Santos e Praciano-Pereira, T.
Introdução à Matemática Universitária
Edição Eletrônica do Laboratório de Matemática Computacional - Univ. Estadual Vale do Acaraú - Sobral - Ceará - 2005
http://www.4shared.com/file/12779601/ab687cc4/fundam2p.html
[28] Spline
A enciclopédia livre na Internet
http://pt.wikipedia.org/wiki/Spline
[29] A enciclopédia livre na Internet - Wikipédia
http://encyclopedia.thefreedictionary.com/
Índice Remissivo
1-spline, 133
2-spline, 133
aberto
software, 126
algébrica
computação, vi
algorı́tmica
derivada, 13, 112–115
amostragem, 10, 102
antigo
moderno, 82
aproximação, 4
Aquiles
paradoxo, 30
aritmética
geométrica
desigualdade, 83
assintótico, comportamento, 177
babilônios, 83
algoritmo, 88
precisão, 82
barra invertida, 148
binária
busca, 73
busca binária, 28
calc, vi
C interpretado, 52
caracterı́stica
função, 133
cı́rculo
desenhando, 4
compilar e rodar, 43
comportamento assintótico, 177
computação
algébrica, vi
cientı́fica, vi
numérica, vi
constantes
especı́ficas, 36
construções
área de, 36
contı́nuo, 127
continuidade, 129
contração, 91
contradição, 127
convexa
comb. linear, 121
convolução
correção, 143
def. geométrica, 133
domı́nio, 144
produto, 133
produto de, 133
correção
informação, 137
pela média, 8
cortes de Dedekind, 69
cúbicos
splines, 132, 148
cúbicos, splines, 132
Dedekind
cortes de, 69
derivada, 1
aproximada, 7
importância, 7
derivada algorı́tmica, 13, 112–115
derivada zero, 61
desigualdade
aritmético-geométrica, 83
212
213
ÍNDICE REMISSIVO
diferença
quociente, 10
diferenciáveis
funções, 128
diferenciabilidade, 128
método da secante, 54
método de Euler, 195, 197
malha, 32, 35
figura plana, 35
multiplicidade
raı́zes, 40
núcleos, 144
partição, 32
figura plana, 35
polin. por ped., 188, 189
raź
recursividade, 91, 92
raı́z
reta tangente, 63
raı́z da tangente, 64
Raı́z duma função, 29
raı́z quadrada, 87
raı́zes
secantes, 48
Reta tangente, 20
secantes
raı́zes, 48
sensor
mais antigo, 5
melhor geração, 6
solução
edo, 193
soma de Riemann, 164
tangência
parabólico, 60
tangente
cı́rculo, 2
taxa de variação, 2
trapésio, 181
um-spline, 105
Valor médio, 130
valor médio, 139
equipe
trabalho, 127
erra
fórmula, 18
erro, 19, 127, 138
correção, 138
Valor Médio, 138
especı́ficas
constantes, 36
ética, 126
Euler, 112
método de, 194
poligonal, 194
figura
área, 80, 81
área aproximada, 163
ŕea, 79
2-spline, 157
aprox. polin. clássica, 103
aproximação, 125
Lagrange,splines, 158, 159
convolução, 146
produto, 134
produto de, 135
convolucao
regularização, 159
dados amostrais, 18
derivada
interpretação, 9
derivada zero, 61
grafico de f , 17
interpolação, 108
linear, 7
não linear, 8
interseção
curvas, 77
Lagrange, polinômio, 114
máximo módulo, 104
média viciada, 140
fixo
ponto, 66, 73
ponto,teorema, 90
fixo ponto
teoremas, 90
florestas
área de, 36
gaussiana, 143
214
ÍNDICE REMISSIVO
integral da, 143
GNU/Linux, vi
Gnuplot, 148
gnuplot, vi, 12, 89, 102
comandos, 16
GPL, vii, xii
gráfico
Riemann,soma, 176
soma de Riemann, 176
iterada de T, 65
hipotética
função, 126
Lagrange
interpolação, 112, 121
método, 112
tutorial, 112
Landau
O grande de, 26
o pequeno de, 3
o pequeno de , 26
Linux, vi, xii, 127
loop infinito, 65
implı́cita
teorema da função, 22
impulso
unitário, 134
infinito, 127
loop, 65
informação
correção, 137
informações
excesso, 120
integrável
à Riemann, 170
não, 170
integral, 183
aprox. por falta, 173
aproximação, 174–176, 178
cálculo numérico, 178
calculo, 161
Expressão formal, 169
python, 178
soma de Riemann, 167–169
valor médio, 136, 138, 186
interpolação
curva, 6
Lagrange, 112
linear, 104
não linear, 7, 105, 109
poligonal, 121
polinomial clássica, 111
interpolação
linear, 7
intervalo
partição, 32
malha, 31, 124, 127, 164
laço, 36
multidimensional, 34, 35
problema, 37
uso, 35, 36
nós, 120
norma, 31
máximo
módulo, 104
teorema, 103
Maxima, xii
maxima, vi
média, 8
dados, recuperação, 138
restaurações, 138
telecomunicações, 138
médio
valor, 183
método
determinar raı́zes
da secante, 62
da tangente, 62
microrganismos
quantidade de, 35
modelagem, 101
modelo, 126, 127
tipos de, 126
modelos
contı́nuos, 127
discretos, 127
moderno
antigo, 82
módulo máximo, 104
215
ÍNDICE REMISSIVO
teorema, 103
mônico
polinomio, 109
movimento
equação, 19
multidimensional
malha, 34
MuPad, xii
n-splines, 133, 148
nó
de uma malha, 112
nós, 164
malha, 120
núcleo, 134, 136
n-spline, 148
norma da malha, 31
Octave, xii
órbita
foguete, 4
oscilação, 104
fenômenos com, 120
paradoxo, 127
de Aquiles, 30
partição, 31, 120, 127, 164
norma, 31
uniforme, 120
partição
não uniforme, 120
pedaços
linear, 121, 122
polinômios, 124
pen-drive-splines, 140
pequeno
relativamente, 48
peso, 121
pesos, 136
pique
fenômeno com, 120
poligonal, 121
polinômio
de Lagrange, 121
polinomial, 130
aprox. clássica, 102
aproximação, 101, 102
de grau três, 124
do terceiro grau, 123
interpolação, 111
por pedaços, 102
splines, 102
poluição
avaliação de, 36
ponderada
média, 136
ponto fixo, 66, 73, 85, 88
teorema, 90
precisão
pontos, 120
pontos de, 120
produto de convolução, 133
programa, 176, 178
fim de linha, 148
raizes01.c, 43
programas
integral.py, 178
python, 178
pulso unitário, 136
Python, 169
quantidade
fenômeno, 122
quasi-splines, 132, 190
integral, 185
raź quadrada, 83
raı́z
método
secante, 28
tangentes, 28
secante, 48–50, 55, 56
tangente, 47
tipo secante, 47
tipo tangente, 47
raı́zes
de funções, 28
separação das, 39
raiz
tipo secante, 61, 62
tipo tangente, 61, 62
real
216
ÍNDICE REMISSIVO
número, 170
realidade
simulação, 126
recursiva
sucessão, 66
recursivas
sucessões, 88
sucesswões, 88
recursividade, 28, 53, 66, 73
raı́z, 91, 92
Reduce, xii
Riemann
soma, 166, 173, 174
Riemann, soma, 162, 163
riemann.py, 173
rodar e compilar, 43
Runge-Kutta, 194
salto quântico, 128
Scilab, xii
scilab, vi
secante
método, 73
secantes
e tangentes, 4
segurança
simulação, 126
separação
das raı́zes, 39
sequências
recursivas, 88
série
termo geral, 98
Simpson
integral, 160
simulação, 126
sinal, 134
soma de Riemann, 160, 162, 163, 166
splines, 101, 102, 130, 133,190
aplicações, 134
pen-drive, 140
splines cúbicos, 132
sucessão, 128
sucessões
recursivas, 88
suporte
notação, 144
tangente
método, 73
parábola, 18, 19
tangentes
e secantes, 4
taxa de variação, 183
Taylor
fórmula, 19, 23
fórmula multivariada, 21
polinômio, 194
teorema
módulo máximo, 103
tipos de raı́zes, 47
translação, 134
trapésio
regra do, 160
tutorial, 112
Lagrange, polinômio, 112
uniforme
partição, 120, 170
unitário
pulso, 136
unitário, impulso, 134
valor médio, 136, 138, 183
integral, 186
valor médio integral, 138
Vandermonde, 111, 112
variação
taxa, 9
taxa de, 1, 183
variedade, 22, 27
varredura, 30, 127
viciada
média, 137
Waring, 112

Documentos relacionados