Você está na página 1de 447

ANÁLISE NUMÉRICA

HEITOR L. G. PINA

Faculdade de Engenharia

Universidade Católica

2009
Conteúdo

Prefácio à segunda edição xviii

Prefácio à primeira edição xx

Notação xxvi

1 Aritmética computacional 1
1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 A contagem e os números naturais . . . . . . . . . . . . . . . . . . 1
1.1.2 A medição e os números reais . . . . . . . . . . . . . . . . . . . . . 5
1.2 Representação de números inteiros . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.1 Inteiros positivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2.2 Inteiros não-positivos . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3 Representação de números reais . . . . . . . . . . . . . . . . . . . . . . . . 9
1.3.1 Notação científica de números reais . . . . . . . . . . . . . . . . . . 11
1.3.2 Representação em ponto flutuante . . . . . . . . . . . . . . . . . . . 11
1.4 Erros na aritmética em ponto flutuante . . . . . . . . . . . . . . . . . . . . 12
1.4.1 Erros de representação . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.2 Erros nas operações aritméticas . . . . . . . . . . . . . . . . . . . . 15
1.4.3 Dígitos correctos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5 A norma IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.6 Propagação de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.6.1 Análise indirecta ou regressiva de erros . . . . . . . . . . . . . . . . 32
1.6.2 Alguns aspectos práticos . . . . . . . . . . . . . . . . . . . . . . . . 42
1.7 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.7.1 Conceito de algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.7.2 Complexidade computacional . . . . . . . . . . . . . . . . . . . . . 44
1.8 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.9 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

v
vi Conteúdo

2 Interpolação polinomial 59
2.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
2.1.2 Algoritmo de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2 Formas polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.2.1 Forma de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
2.2.2 Factorização de polinómios . . . . . . . . . . . . . . . . . . . . . . . 71
2.3 Interpolação de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2.3.1 Método de Vandermonde . . . . . . . . . . . . . . . . . . . . . . . . 73
2.3.2 Fórmula de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . 75
2.3.3 Fórmula de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.3.4 Diferenças divididas . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.3.5 Interpolação inversa . . . . . . . . . . . . . . . . . . . . . . . . . . 85
2.4 Erros de interpolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.4.1 Análise de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
2.4.2 Nós de Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
2.4.3 Efeitos de perturbações nos valores nodais . . . . . . . . . . . . . . 93
2.5 Interpolação com nós equidistantes . . . . . . . . . . . . . . . . . . . . . . 95
2.5.1 Fórmulas de interpolação . . . . . . . . . . . . . . . . . . . . . . . . 95
2.5.2 Algumas relações entre operadores . . . . . . . . . . . . . . . . . . 100
2.6 Interpolação de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
2.6.1 Interpolação osculatória . . . . . . . . . . . . . . . . . . . . . . . . 104
2.6.2 Interpolação no plano complexo . . . . . . . . . . . . . . . . . . . . 107
2.7 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
2.7.1 Splines de grau zero . . . . . . . . . . . . . . . . . . . . . . . . . . 112
2.7.2 Splines de grau um . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
2.7.3 Splines quadráticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.7.4 Splines cúbicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
2.7.5 Splines com tensão . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
2.8 Representação de curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
2.8.1 Representação paramétrica . . . . . . . . . . . . . . . . . . . . . . . 122
2.8.2 Curvas de Bézier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.9 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
2.10 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

3 Derivação numérica 139


3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
3.2 Derivadas de primeira ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 140
3.2.1 Diferenças finitas de primeira ordem . . . . . . . . . . . . . . . . . 142
3.2.2 Diferenças finitas de segunda ordem . . . . . . . . . . . . . . . . . . 144
3.3 Derivadas de segunda ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Conteúdo vii

3.4 Matrizes de derivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148


3.5 Derivação com splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
3.6 Influência de erros na função f . . . . . . . . . . . . . . . . . . . . . . . . 150
3.6.1 Influência de perturbações em f . . . . . . . . . . . . . . . . . . . . 150
3.6.2 Influência dos erros de arredondamento . . . . . . . . . . . . . . . . 151
3.7 Extrapolação de Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . 154
3.8 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
3.9 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

4 Integração numérica 161


4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.2 Regras básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4.2.1 Dedução das fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . 164
4.2.2 Erros de integração . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
4.3 Regras com valores das derivadas . . . . . . . . . . . . . . . . . . . . . . . 171
4.4 Regras de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
4.4.1 Dedução das fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.4.2 Erros de integração . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
4.4.3 Regras de Gauss com peso . . . . . . . . . . . . . . . . . . . . . . . 176
4.4.4 Regras de Gauss com nós nos extremos do intervalo . . . . . . . . . 180
4.5 Regras compostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.5.1 Integração com splines . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.6 Convergência da integração numérica . . . . . . . . . . . . . . . . . . . . . 187
4.7 Integração adaptativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
4.7.1 Métodos adaptativos . . . . . . . . . . . . . . . . . . . . . . . . . . 189
4.7.2 A fórmula de Euler-Maclaurin . . . . . . . . . . . . . . . . . . . . . 192
4.7.3 Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . 196
4.8 Integrais impróprios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
4.8.1 Integrandas com singularidades . . . . . . . . . . . . . . . . . . . . 198
4.8.2 Intervalos infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
4.9 Influência de erros na integranda . . . . . . . . . . . . . . . . . . . . . . . 203
4.10 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
4.11 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

5 Equações não-lineares 212


5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
5.1.1 Raízes e zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
5.1.2 Iterações e convergência . . . . . . . . . . . . . . . . . . . . . . . . 216
5.2 Método da bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.2.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.2.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 223
viii Conteúdo

5.3 Método da falsa posição . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226


5.3.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 226
5.3.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.4 Método da secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.4.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.4.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 230
5.5 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
5.5.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 233
5.5.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 234
5.6 Método de Muller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
5.7 Utilização de interpolação inversa . . . . . . . . . . . . . . . . . . . . . . . 237
5.8 Método do ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
5.8.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 239
5.8.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 239
5.8.3 Aceleração de Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . 242
5.8.4 Método de Steffensen . . . . . . . . . . . . . . . . . . . . . . . . . . 244
5.9 Zeros de polinómios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
5.9.1 Localização dos zeros . . . . . . . . . . . . . . . . . . . . . . . . . . 247
5.9.2 Determinação de todos os zeros . . . . . . . . . . . . . . . . . . . . 252
5.10 Efeito dos erros de arredondamento . . . . . . . . . . . . . . . . . . . . . . 253
5.11 Critérios de paragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
5.12 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
5.13 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

6 Sistemas de equações lineares: métodos directos 270


6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
6.1.1 Notação e nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . 271
6.1.2 Operações com matrizes . . . . . . . . . . . . . . . . . . . . . . . . 273
6.1.3 Teoria dos sistemas de equações lineares . . . . . . . . . . . . . . . 277
6.1.4 Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 280
6.2 Redução a sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . 281
6.3 Método de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
6.4 Factorizações triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
6.4.1 Factorização LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
6.4.2 Método de Doolittle . . . . . . . . . . . . . . . . . . . . . . . . . . 291
6.4.3 Método de Crout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
6.4.4 Factorização LDU . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
6.5 Escolha de pivô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
6.5.1 Escolha de pivô no método de Gauss . . . . . . . . . . . . . . . . . 295
6.5.2 Escolha de pivô nos métodos de Doolittle e de Crout . . . . . . . . 301
6.5.3 Equilibragem de matrizes . . . . . . . . . . . . . . . . . . . . . . . 301
Conteúdo ix

6.6 Cálculo da inversa e do determinante . . . . . . . . . . . . . . . . . . . . . 302


6.7 Sistemas com matrizes especiais . . . . . . . . . . . . . . . . . . . . . . . . 304
6.7.1 Matrizes simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
6.7.2 Matrizes simétricas definidas positivas . . . . . . . . . . . . . . . . 307
6.7.3 Matrizes banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
6.7.4 Matrizes tridiagonais. Algoritmo de Thomas . . . . . . . . . . . . . 312
6.7.5 Solução por blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
6.8 Análise de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
6.8.1 Efeito das perturbações . . . . . . . . . . . . . . . . . . . . . . . . . 315
6.8.2 Efeito dos erros de arredondamento . . . . . . . . . . . . . . . . . . 322
6.9 Refinamento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
6.10 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
6.11 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

7 Valores e vectores próprios 337


7.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
7.1.1 Alguns exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
7.1.2 Definições básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
7.1.3 Propriedades de pares próprios . . . . . . . . . . . . . . . . . . . . 342
7.1.4 Similaridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
7.1.5 Teorema de Cayley-Hamilton . . . . . . . . . . . . . . . . . . . . . 358
7.1.6 Polinómio minimal . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
7.1.7 Quociente de Rayleigh . . . . . . . . . . . . . . . . . . . . . . . . . 362
7.1.8 Localização de valores próprios . . . . . . . . . . . . . . . . . . . . 365
7.2 Métodos das potências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
7.2.1 Método das potências directas . . . . . . . . . . . . . . . . . . . . . 368
7.2.2 Translações espectrais . . . . . . . . . . . . . . . . . . . . . . . . . 371
7.2.3 Método das potências inversas . . . . . . . . . . . . . . . . . . . . . 372
7.2.4 Iterações em subespaços . . . . . . . . . . . . . . . . . . . . . . . . 374
7.3 Métodos de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
7.3.1 Método de Jacobi clássico . . . . . . . . . . . . . . . . . . . . . . . 375
7.3.2 Variantes do método de Jacobi . . . . . . . . . . . . . . . . . . . . 381
7.4 Tridiagonalização de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . 382
7.4.1 Rotações de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
7.4.2 Reflexões de Householder . . . . . . . . . . . . . . . . . . . . . . . . 383
7.4.3 Valores próprios de matrizes tridiagonais simétricas . . . . . . . . . 387
7.4.4 Vectores próprios de matrizes tridiagonais . . . . . . . . . . . . . . 393
7.5 Problema de valores e vectores próprios generalizado . . . . . . . . . . . . 393
7.5.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
7.5.2 O caso hermiteano/hermiteano definido positivo . . . . . . . . . . . 394
7.6 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
x Conteúdo

7.7 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

8 Sistemas de equações lineares sobredeterminados 411


8.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
8.1.1 Alguns exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
8.1.2 As equações normais . . . . . . . . . . . . . . . . . . . . . . . . . . 417
8.1.3 Mínimos quadrados ponderados . . . . . . . . . . . . . . . . . . . . 421
8.2 Solução de sistemas inconsistentes . . . . . . . . . . . . . . . . . . . . . . . 422
8.2.1 Algoritmos de Gram-Schmidt . . . . . . . . . . . . . . . . . . . . . 423
8.2.2 Algoritmo de Householder . . . . . . . . . . . . . . . . . . . . . . . 428
8.2.3 Decomposição em valores singulares . . . . . . . . . . . . . . . . . . 430
8.2.4 Regularização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
8.2.5 A pseudo-inversa – caso geral . . . . . . . . . . . . . . . . . . . . . 438
8.3 Mínimos quadrados não-lineares . . . . . . . . . . . . . . . . . . . . . . . . 440
8.4 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
8.5 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

9 Sistemas de equações lineares: métodos iterativos 451


9.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
9.1.1 Métodos estacionários . . . . . . . . . . . . . . . . . . . . . . . . . 454
9.1.2 Decomposição da matriz A . . . . . . . . . . . . . . . . . . . . . . 457
9.2 Método de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
9.3 Método de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
9.4 Métodos de relaxação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
9.4.1 Método de Jacobi com relaxação . . . . . . . . . . . . . . . . . . . 465
9.4.2 Método de Gauss-Seidel com relaxação . . . . . . . . . . . . . . . . 468
9.4.3 Determinação do factor de relaxação . . . . . . . . . . . . . . . . . 470
9.5 Aceleração polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
9.6 Métodos de descida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
9.6.1 Descrição dos métodos . . . . . . . . . . . . . . . . . . . . . . . . . 474
9.6.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 480
9.7 Métodos de projecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
9.7.1 Quadro geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
9.7.2 Projecção em subespaços de Krylov . . . . . . . . . . . . . . . . . . 485
9.7.3 Método de ortogonalização completa de Arnoldi . . . . . . . . . . . 489
9.7.4 Método de Lanczos simétrico . . . . . . . . . . . . . . . . . . . . . 491
9.7.5 Método dos gradientes conjugados . . . . . . . . . . . . . . . . . . . 494
9.7.6 Método do resíduo mínimo . . . . . . . . . . . . . . . . . . . . . . . 499
9.8 Precondicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
9.8.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503
9.8.2 Aplicação ao método gradientes conjugados . . . . . . . . . . . . . 505
Conteúdo xi

9.9 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510


9.10 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510

10 Sistemas de equações não-lineares 520


10.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
10.2 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
10.2.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
10.2.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 524
10.3 Modificações ao método de Newton . . . . . . . . . . . . . . . . . . . . . . 526
10.3.1 Cálculo espaçado da matriz jacobiana . . . . . . . . . . . . . . . . . 526
10.3.2 Cálculo da matriz jacobiana por diferenças finitas . . . . . . . . . . 527
10.3.3 Método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
10.3.4 Modificações globalmente convergentes . . . . . . . . . . . . . . . . 532
10.4 Métodos lineares generalizados . . . . . . . . . . . . . . . . . . . . . . . . . 533
10.5 Método de ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
10.6 Métodos de continuação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
10.7 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
10.8 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

11 Aproximação de funções 544


11.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
11.2 Aproximação polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
11.2.1 Fórmula de recorrência . . . . . . . . . . . . . . . . . . . . . . . . . 553
11.2.2 Fórmula de Rodrigues . . . . . . . . . . . . . . . . . . . . . . . . . 555
11.2.3 Identidade de Christoffel-Darboux . . . . . . . . . . . . . . . . . . . 557
11.2.4 Algumas famílias de polinómios ortogonais . . . . . . . . . . . . . . 558
11.2.5 Zeros de polinómios ortogonais . . . . . . . . . . . . . . . . . . . . 567
11.2.6 Algoritmo de Clenshaw . . . . . . . . . . . . . . . . . . . . . . . . . 568
11.2.7 Polinómios ortogonais num conjunto discreto . . . . . . . . . . . . . 570
11.2.8 Convergência da aproximação polinomial . . . . . . . . . . . . . . . 571
11.2.9 Economização de séries de potências . . . . . . . . . . . . . . . . . 573
11.3 Aproximação trigonométrica . . . . . . . . . . . . . . . . . . . . . . . . . . 574
11.3.1 Transformada de Fourier contínua . . . . . . . . . . . . . . . . . . . 576
11.3.2 Convergência da aproximação trigonométrica . . . . . . . . . . . . . 579
11.3.3 Fenómeno de Gibbs . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
11.3.4 Transformada de Fourier discreta . . . . . . . . . . . . . . . . . . . 585
11.3.5 Transformada de Fourier rápida . . . . . . . . . . . . . . . . . . . . 589
11.4 Alisamento de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592
11.5 Aproximações de Padé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597
11.5.1 Interpolação racional . . . . . . . . . . . . . . . . . . . . . . . . . . 597
11.5.2 Construção das aproximantes de Padé . . . . . . . . . . . . . . . . 598
xii Conteúdo

11.6 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603


11.7 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

12 EDO’s: problemas de valor inicial 612


12.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612
12.2 Métodos de passo simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
12.2.1 Métodos de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
12.2.2 Métodos θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
12.2.3 Erro de truncatura e consistência . . . . . . . . . . . . . . . . . . . 620
12.2.4 Métodos de Taylor . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
12.2.5 Métodos de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . 623
12.2.6 Convergência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
12.2.7 Influência dos erros de arredondamento . . . . . . . . . . . . . . . . 634
12.2.8 Estabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
12.2.9 Controlo adaptativo do passo . . . . . . . . . . . . . . . . . . . . . 641
12.3 Métodos multipasso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
12.3.1 Métodos de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . . 645
12.3.2 Métodos de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . . 647
12.3.3 Métodos de Nyström e de Milne . . . . . . . . . . . . . . . . . . . . 649
12.3.4 Métodos multipasso lineares . . . . . . . . . . . . . . . . . . . . . . 650
12.3.5 Consistência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
12.3.6 Convergência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654
12.3.7 Estabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658
12.3.8 O processo preditor-corrector . . . . . . . . . . . . . . . . . . . . . 661
12.3.9 Controlo adaptativo do passo . . . . . . . . . . . . . . . . . . . . . 663
12.4 Sistemas de EDO’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
12.4.1 Rigidez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665
12.4.2 EDO’s de ordem superior . . . . . . . . . . . . . . . . . . . . . . . 666
12.5 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
12.6 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

13 EDO’s: problemas de valor de fronteira 673


13.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673
13.2 Alguns métodos clássicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
13.2.1 O método de colocação . . . . . . . . . . . . . . . . . . . . . . . . . 676
13.2.2 O método dos mínimos quadrados . . . . . . . . . . . . . . . . . . . 679
13.2.3 O método dos resíduos ponderados . . . . . . . . . . . . . . . . . . 680
13.2.4 A escolha das funções teste e tentativa . . . . . . . . . . . . . . . . 685
13.2.5 O teorema da inversa limitada . . . . . . . . . . . . . . . . . . . . . 687
13.3 Formulação fraca simétrica . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
13.3.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
Conteúdo xiii

13.3.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 692


13.3.3 Condições de fronteira essenciais e naturais . . . . . . . . . . . . . . 697
13.4 Formulação fraca não simétrica . . . . . . . . . . . . . . . . . . . . . . . . 698
13.5 Formulação variacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
13.5.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
13.5.2 O método de Rayleigh–Ritz . . . . . . . . . . . . . . . . . . . . . . 702
13.6 O método dos elementos finitos . . . . . . . . . . . . . . . . . . . . . . . . 702
13.6.1 Funções base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703
13.6.2 Construção do sistema de equações algébricas . . . . . . . . . . . . 707
13.6.3 Elementos isoparamétricos . . . . . . . . . . . . . . . . . . . . . . . 710
13.6.4 Erros de aproximação . . . . . . . . . . . . . . . . . . . . . . . . . . 712
13.7 O método das diferenças finitas . . . . . . . . . . . . . . . . . . . . . . . . 713
13.7.1 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
13.7.2 Condições de fronteira . . . . . . . . . . . . . . . . . . . . . . . . . 716
13.7.3 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 717
13.8 Estabilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
13.8.1 Diferenças finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
13.8.2 Elementos finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
13.9 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724
13.10Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725

A Espaços lineares 732


A.1 Linearidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732
A.2 Bases e dimensão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
A.3 Distâncias, normas e produtos internos . . . . . . . . . . . . . . . . . . . . 737
A.3.1 Normas de vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
A.3.2 Normas de funções . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
A.3.3 Convergência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
A.4 Espaços de funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
A.4.1 Espaços de Lebesgue . . . . . . . . . . . . . . . . . . . . . . . . . . 753
A.4.2 Espaços de Sobolev . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
A.5 Operadores lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
A.5.1 Definição e exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 757
A.5.2 Normas de operadores . . . . . . . . . . . . . . . . . . . . . . . . . 759
A.5.3 Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
A.6 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764

B Projectos computacionais 765


B.1 Aritmética computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
B.2 Interpolação polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
B.3 Derivação numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
xiv Conteúdo

B.4 Integração numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774


B.5 Equações não-lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
B.6 Sistemas de equações lineares: métodos directos . . . . . . . . . . . . . . . 784

Bibliografia 789

Índice 800
Lista de Tabelas

1.5.1 Casos previstos na norma IEEE 754 . . . . . . . . . . . . . . . . . . . . . . 30

3.3.1 Coeficientes das fórmulas de diferenciação numérica com nós xi = x0 + ih . 147

4.2.1 Fórmulas de Newton-Cotes . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


4.4.1 Abcissas e pesos das regras de Gauss-Legendre no intervalo [−1, 1] . . . . . 178

11.2.1Polinómios de Legendre Pk . . . . . . . . . . . . . . . . . . . . . . . . . . . 560


11.2.2Polinómios de Chebyshev de primeira espécie Tk . . . . . . . . . . . . . . . 562
11.2.3Polinómios de Chebyshev de primeira espécie Tk∗ . . . . . . . . . . . . . . . 563
11.2.4Monómios expressos em termos dos polinómios de Chebyshev de primeira
espécie Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573

12.2.1Resultados dos Exemplos 12.2.1 e 12.2.2 . . . . . . . . . . . . . . . . . . . 622


12.2.2Região de estabilidade dos métodos de Runge-Kutta . . . . . . . . . . . . . 641
12.3.1Fórmulas de Adams-Bashforth . . . . . . . . . . . . . . . . . . . . . . . . . 647
12.3.2Fórmulas de Adams-Moulton . . . . . . . . . . . . . . . . . . . . . . . . . 650

xv
Lista de Algoritmos

1.4.1 Somatório recursivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21


1.4.2 Somatório compensado (Kahan) . . . . . . . . . . . . . . . . . . . . . . . . 24
1.4.3 Produto interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.9.1 Norma euclideana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.1.1 Cálculo de polinómios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
2.1.2 Método de Horner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2.2.1 Método de Horner com centros . . . . . . . . . . . . . . . . . . . . . . . . 69
2.2.2 Método de Horner (modificado) . . . . . . . . . . . . . . . . . . . . . . . . 70
4.7.1 Método adaptativo não-iterativo . . . . . . . . . . . . . . . . . . . . . . . . 191
5.2.1 Método da bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
5.4.1 Método da secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.9.1 Contagem das variações de sinal . . . . . . . . . . . . . . . . . . . . . . . . 247
6.1.1 Substituições ascendentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
6.3.1 Condensação de Gauss (sem escolha de pivô) . . . . . . . . . . . . . . . . . 288
6.7.1 Método de Choleski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
6.7.2 Método de Thomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
6.9.1 Refinamento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
7.2.1 Método das potências directas . . . . . . . . . . . . . . . . . . . . . . . . . 370
7.2.2 Método das potências inversas com translações espectrais . . . . . . . . . . 373
7.2.3 Iterações ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
7.3.1 Método de Jacobi clássico . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
7.4.1 Tridiagonalização de Givens . . . . . . . . . . . . . . . . . . . . . . . . . . 383
7.4.2 Reflexão de Householder . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
8.2.1 Método de Gram-Schmidt clássico . . . . . . . . . . . . . . . . . . . . . . . 425
8.2.2 Método de Gram-Schmidt modificado . . . . . . . . . . . . . . . . . . . . . 426
8.2.3 Transformação de Householder . . . . . . . . . . . . . . . . . . . . . . . . . 430
9.1.1 Métodos baseados na decomposição de A . . . . . . . . . . . . . . . . . . . 458
9.4.1 Método de Jacobi com relaxação . . . . . . . . . . . . . . . . . . . . . . . . 465
9.4.2 Método de Gauss-Seidel com relaxação . . . . . . . . . . . . . . . . . . . . 469
9.6.1 Método de gradiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
9.7.1 Determinação de direcções A-conjugadas . . . . . . . . . . . . . . . . . . . 485

xvi
Lista de Algoritmos xvii

9.7.2 Decomposição de Arnoldi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487


9.7.3 Decomposição de Arnoldi (modificado) . . . . . . . . . . . . . . . . . . . . 489
9.7.4 Método de Lanczos simétrico . . . . . . . . . . . . . . . . . . . . . . . . . . 492
9.7.5 Método dos gradientes conjugados . . . . . . . . . . . . . . . . . . . . . . . 496
9.7.6 Método dos resíduos conjugados . . . . . . . . . . . . . . . . . . . . . . . . 502
9.8.1 Método dos gradientes conjugados precondicionados . . . . . . . . . . . . . 506
10.3.1Método de Newton (modificado) . . . . . . . . . . . . . . . . . . . . . . . . 527
10.3.2Método de Broyden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Prefácio à segunda edição

Esta edição difere da anterior nos seguintes aspectos mais importantes: eliminação das
arreliadoras gralhas; polimento do texto naqueles trechos que se revelaram de leitura
mais difícil; aumento do número de algoritmos que são descritos no formato de pseudo
programas (em cerca de 100%), do número de exemplos resolvidos (em cerca de 35%), do
número dos problemas (em cerca de 15%) e de projectos propostos (em cerca de 40%);
actualização da bibliografia.
As alterações mais significativas ao conteúdo propriamente dito são as que sucinta-
mente se passam a descrever, capítulo a capítulo:

1 – Aritmética Computacional: A exposição dos sistemas de numeração foi alargada


e sistematizada. A análise de erros das operações em ponto flutuante mereceu al-
guma simplificação sem sofrer perda de generalidade. Também a análise indirecta
de erros recebeu um tratamento mais cuidado. Foi acrescentada uma nova secção
dedicada a uma introdução breve aos algoritmos com menção ao conceito de com-
plexidade computacional.

2 – Interpolação polinomial: A secção dedicada aos splines passou a referir com mais
detalhe a interpolação com splines em tensão e foi acrescentada uma secção onde se
refere a representação de curvas, nomeadamente, as de Bézier.

3 – Derivação numérica: O título foi mudado mas o conteúdo do capítulo permaneceu


praticamente inalterado.

4 – Integração numérica: A secção dedicada a integrais impróprios foi retocada, pas-


sando a incluir outras transformações de variáveis, nomeadamente, a transformação
IMT.

5 – Equações não-lineares: A caracterização da convergência de sucessões foi apro-


fundada, distinguindo-se agora a convergência-R e a convergência-Q. A subsecção
relativa à localização de zeros de polinómios foi reescrita e ligeiramente ampliada.

6 – Sistemas de equações lineares: métodos directos: Sem alterações.

xviii
Prefácio à segunda edição xix

7 – Valores e vectores próprios: A introdução teórica foi ligeiramente ampliada (es-


tabilidade das transformações de similaridade (ou de semelhança), caracterização
variacional dos valores próprios de matrizes hermiteanas mantendo-se o resto do
capítulo praticamente sem alterações.
8 – Sistemas de equações lineares sobredeterminados: Tirando um maior partido
da decomposição em valores singulares, foi incluído algum material sobre regu-
larização em problemas mal condicionados e tratado o caso geral da matriz pseudo-
inversa.
9 – Sistemas de equações lineares: métodos iterativos: O tratamento dos méto-
dos de projecção, com especial referência aos espaços de Krylov, passa a ter uma
secção dedicada. Concomitantemente, os métodos dos gradientes conjugados são
agora tratados neste contexto mais amplo.
10 – Sistemas de equações não-lineares: O método do ponto fixo beneficia de uma
menção mais explícita.
11 – Aproximação de funções: Praticamente sem alterações.
12 – Equações diferencias ordinárias: problemas de valor inicial: Algumas alte-
rações de pormenor.
13 – Equações diferencias ordinárias: problemas de valor de fronteira: Passa a
incluir agora uma referência ao teorema da inversa limitada. O tratamento das
equações de convecção-difusão foi ampliado abordando maior variedade de proces-
sos de estabilização.
Apêndice A – Espaços lineares: Praticamente sem alterações.
Apêndice B – Projectos computacionais: Incluídos novos projectos.

Agradecimentos. É um dever e um prazer agradecer a ajuda de várias pessoas e ins-


tituições:
• aos Professores José Leonel M. Fernandes, Luís Trabucho de Campos, João Folgado,
Mário Graça, Carlos M. Lemos, Miguel Neves e Fernando P. Valente, pelos comentários,
sugestões e trocas de pontos de vista que muito contribuíram para a melhoria desta
edição.
• ao IST e ao Projecto SARA, pela disponibilização dos meios necessários à preparação
desta edição.

Lisboa Heitor Pina


Agosto de 2001
Prefácio à primeira edição

This book of mine has little need of preface, for indeed


it is ‘all preface’ from beginning to end.
– D’Arcy Wentworth Thompson (1860-1948)
Growth and Form

Este livro nasceu de sucessivas versões de apontamentos de cursos leccionados pelo


autor no Instituto Superior Técnico e na Escola Naval, nomeadamente. O conjunto do
material incluído é o habitual em textos de Análise Numérica ou de Métodos Numéricos
de carácter introdutório embora não elementar.
Existem excelentes livros de introdução aos Métodos Numéricos que apresentam um
escopo e nível de desenvolvimento semelhante ao do presente texto e que, de um modo ou
outro, lhe serviram de inspiração. Merecem destaque os seguintes: ATKINSON (1978),
CARNAHAN et al. (1969), CHENEY and KINCAID (1985), CONTE and de BOOR
(1980), DAHLQUIST and BJÖRCK (1974), FORSYTHE et al. (1977), FROBERG (1985),
HILDEBRAND (1974), ISAACSON and KELLER (1966), MATHEWS (1987), RAL-
STON and RABINOWITZ (1978) e STOER and BULIRSH (1993).
A literatura nacional neste campo não é abundante, pelo que é da maior justiça recor-
dar os textos pioneiros de César de Freitas (Introdução à Análise Numérica) nos anos
60, e a série de monografias de António Cadete e Maria Odete Cadete publicadas pelo
Instituto Gulbenkian de Ciência nos anos 70. Mais recentemente, merecem destaque os
livros de Maria Raquel Valença (Métodos Numéricos, Livraria Minho, 1993) e de M. A.
Fernandes Costa (Cálculo Numérico com Pascal, Escolar Editora, 1993).
O presente texto permite apoiar um curso semestral de iniciação, ou um curso de
dois semestres de teor mais avançado. Em qualquer caso, há um núcleo de matéria que
constitui uma espécie de fundação sobre a qual assenta tudo o resto e que ocupa grande
parte dos Capítulos 1 a 9. Os temas tratados nos restantes capítulos poderão ser escolhidos
de acordo com os objectivos específicos de cada curso.

xx
Prefácio à primeira edição xxi

Os pré-requisitos necessários a uma boa assimilação das matérias tratadas englobam a


Análise Real, o Cálculo Diferencial e Integral, a Álgebra Linear e as Equações Diferenciais
Ordinárias. São também indispensáveis conhecimentos de Programação.
Eis uma breve descrição do conteúdo dos capítulos.

Capítulo 1: O objectivo de um método numérico é, como o próprio nome indica, pro-


duzir respostas numéricas a problemas matemáticos. É, pois, necessário compreen-
der os modos como os computadores representam e operam com números, quais os
erros cometidos e como é que estes se podem avaliar e controlar. Assim, este capítulo
aborda os tópicos da Aritmética Computacional considerados indispensáveis.

Capítulo 2: A Interpolação Polinomial é um tema venerando e obrigatório. São poucas


as áreas dos Métodos Numéricos que, de uma forma ou outra, não fazem apelo à
interpolação e, muito especialmente, à interpolação que recorre a polinómios. Este
capítulo apresenta o material mínimo, com a possível excepção das secções relativas
a nós equidistantes (em fase de obsolescência por via dos computadores, mas incluída
por respeito aos clássicos) e à interpolação complexa (que pode ser considerada como
um dos tópicos a omitir num curso elementar).

Capítulo 3: A Diferenciação Numérica visa a obtenção de derivadas a partir da infor-


mação dada por valores discretos da função. É feita a dedução das fórmulas de
diferenças finitas e dos respectivos erros. Constitui uma aplicação directa do mate-
rial desenvolvido no capítulo anterior.

Capítulo 4: O objectivo da Integração Numérica é de calcular integrais quando o pro-


cesso analítico não se mostra viável. Neste capítulo deduzem-se as chamadas regras
de integração, e respectivas estimativas de erro, para os casos mais vulgares, tirando
partido, tal como sucede com o Capítulo 3, da teoria desenvolvida no Capítulo 1.
A aplicação através de algoritmos adaptativos é, também, descrita devido seu in-
teresse prático. A secção sobre Integrais Impróprios pode ser omitida num curso
elementar.

Capítulo 5: A solução de equações não-lineares é um tema muito rico que possibilita um


aprofundamento de noções essenciais, como sejam, a de método iterativo, a de con-
vergência e ordem de convergência, a de aceleração de um processo iterativo básico,
etc. Neste capítulo apresentam-se os métodos mais usuais, com chamadas de atenção
para as respectivas vantagens e desvantagens, numa tentativa de proporcionar pistas
para uma escolha criteriosa do método a empregar num caso concreto.

Capítulo 6: A solução de sistemas de equações lineares sempre se erigiu como um desafio,


já que, por ser um problema computacionalmente intensivo, os métodos manuais es-
tão, à partida, prejudicados. Este capítulo estuda os chamados métodos directos
de solução que se baseiam na ideia de redução do problema original a um problema
xxii Prefácio à primeira edição

mais fácil por meio de uma factorização adequada da matriz do sistema. São estu-
dados o método de Gauss e as suas variantes compactas, e dada alguma atenção à
exploração da estrutura da matriz para aumentar a eficácia dos algoritmos, tendo
em vista, designadamente, a aplicação ao caso tão frequente das matrizes esparsas.
O estudo dos erros inerentes à aritmética de precisão finita é abordado, chamando-se
a atenção para o importante conceito de condição da matriz do sistema.

Capítulo 7: A determinação de valores e vectores próprios constitui um dos problemas


mais exigentes da Álgebra Linear Numérica e em que medeia uma maior distância
entre a teoria básica e os algoritmos eficazes. Este facto obriga, por um lado, a uma
introdução mais longa e, por outro, a limitar o material apresentado aos métodos
clássicos. Pela sua relevância prática, é dada uma atenção particular à classe de
matrizes reais simétricas.

Capítulo 9: Este capítulo versa a solução de sistemas de equações lineares por métodos
iterativos. Sendo o complemento natural do Capítulo 6, pode perguntar-se porque
é que não surge na sua sequência imediata. A opção tomada é justificada pela
necessidade de invocar algumas propriedades espectrais de matrizes, introduzidas
no Capítulo 7, e indispensáveis ao estudo da convergência. O capítulo visita os
métodos clássicos (Jacobi e Gauss-Seidel) e descreve os processos de aceleração
em algoritmos de convergência linear: relaxação e aceleração polinomial. É feita
uma introdução aos métodos de descida ou do gradiente, e estudam-se com algum
pormenor os métodos dos gradientes conjugados, cada vez mais populares, e as
respectivas versões precondicionadas. Estes dois últimos temas podem ser omitidos
num curso de carácter mais elementar.

Capítulo 8: Em muitas aplicações práticas, a situação de ter um sistema de equações


lineares com um número de equações exactamente igual ao número de incógnitas
não ocorre. Por vezes, é possível, e, mesmo, desejável, haver redundância na infor-
mação subjacente ao problema, como forma de reduzir o efeito dos erros nos dados.
Neste caso, somos conduzidos a sistemas de equações lineares sobredeterminados. O
presente capítulo faz a apresentação das principais técnicas no âmbito do chamado
método dos mínimos quadrados.

Capítulo 10: A solução de sistemas de equações não-lineares é um problema que combina


todas as dificuldades dos sistemas de equações lineares com as das equações não-
lineares. Assim, não admira que este seja um tema particularmente difícil, e esteja
muito longe de consolidação. Os métodos apresentados derivam essencialmente de
generalizações do método de Newton, referido já no Capítulo 5, e dos métodos
apresentados no Capítulo 9. É um capítulo de estrutura minimal que só deve ser
incluído num curso com características mais avançadas.
Prefácio à primeira edição xxiii

Capítulo 11: Inicia-se aqui o grande tema da aproximação de funções por polinómios
algébricos e trigonométricos. No primeiro caso, somos levados ao estudo dos poli-
nómios ortogonais, e no segundo, ao das transformadas de Fourier, em particular,
às versões rápidas, e computacionalmente mais interessantes, destas. Faz-se, tam-
bém, uma abordagem do problema do alisamento de dados e das aproximações
racionais ou de Padé. Este capítulo recorre intensivamente às noções apresentadas
no Apêndice A, o que o torna de inclusão mais difícil num curso elementar.
Capítulo 12: A modelação de fenómenos físicos por equações diferenciais ordinárias é
uma técnica da maior utilidade nas aplicações. O estudo da respectiva solução por
métodos aproximados é iniciado neste capítulo, e prosseguido no seguinte. É um
tema inesgotável, que se justifica por si próprio, mas, também, como preparação
para o caso mais difí cil das equações às derivadas parciais. O presente capítulo
concentra-se nos problemas de valor inicial com a dedução dos métodos de passo
simples e multipasso. É dado o devido realce aos aspectos da convergência e da
estabilidade, que podem, numa versão elementar de um curso, ser expostos de forma
mais resumida.
Capítulo 13: Este capítulo introduz os métodos mais correntes para a solução aproxi-
mada de problemas de valor de fronteira de equações diferenciais ordinárias. Basica-
mente, passam-se em revista os métodos clássicos e estudam-se, com um pouco mais
de pormenor, os métodos baseados em formulações fracas ou variacionais. São ex-
postos de forma introdutória, mas preparando desde já o estudante para exposições
mais avançadas, os métodos doe elementos finitos e das diferenças finitas. Também
aqui é indispensável alguma familiaridade com o material do Apêndice A.
Apêndice A: Este apêndice serve o propósito de organizar material que, a ser disperso
por vários locais, perderia aquilo que é a própria essência dos espaços lineares – a
unidade. Não tendo pretenções a ser uma exposição, mesmo resumida, de Análise
Funcional, constitui uma oportunidade de sensibilização dos estudantes para a res-
pectiva linguagem, usando os métodos numéricos como pretexto.

Apêndice B: Estão aqui reunidas algumas propostas de projectos computacionais. É da


maior importância que o estudante seja capaz de percorrer as diferentes fases que
a solução de um problema matemático, em geral, requere: formulação; escolha do
método de solução; selecção do algoritmo; programação, tendo em conta os meios
computacionais disponíveis; interpretação e validação dos resultados. Daí que se
considere indispensável à preparação do estudante a realização de alguns destes
projectos.

No final de cada capítulo são propostos problemas de natureza variada: desde simples
exercícios de aplicação, mais ou menos imediata, da matéria exposta, à obtenção de
resultados que seria fastidioso incluir no texto, à dedução de novos resultados, constituindo
xxiv Prefácio à primeira edição

ampliações ou generalizações dos apresentados, a experiências numéricas realizáveis com


meios de cálculo modestos. São cerca de 500 problemas no total, devendo o estudante
interessado procurar resolver uma parte substancial.
As referências bibliográficas, geralmente livros de texto e algumas actas de confer-
ências, e (raros) artigos de revistas, destinam-se a proporcionar ao leitor os primeiros
elementos para um estudo mais aprofundado, não tendo sido feito qualquer esforço para
incluir as obras ou fontes originais.
Quem se lança na árdua tarefa de escrever um livro tem de tomar algumas decisões
quanto à filosofia a adoptar. O vasto domínio constituído pelo Métodos Numéricos, onde
confluem disciplinas como a Análise Matemática, a Análise Numérica propriamente dita,
a Algoritmia e a Programação, não facilita esta decisão. A escolha do título reflecte o
resultado de um compromisso: sem ser um livro de Análise, não repele o rigor propor-
cionado pelos teoremas e respectivas demonstrações; sem ser um livro sobre Programação
(não há uma única ‘receita’ para aplicar os métodos expostos), contém, sempre que tal
possa ajudar à compreensão, uma descrição algorítmica dos métodos. Em todas as opor-
tunidades, são sublinhadas as propriedades de convergência e de estabilidade, tentando
incutir no espírito do estudante que o facto de se poderem obter resultados numéricos
num computador de pouco serve se não for possível associar a estes resultados alguma
garantia de qualidade.
Há, por manifesto desejo de limitar o tamanho deste livro, duas omissões importantes
que podem ser indispensáveis na bagagem de quem quiser prosseguir os seus estudos nesta
área. São elas: a Optimização, a qual só é referida tangencialmente, e em apoio de outros
métodos, e as Equações às Derivadas Parciais. O desenvolvimento de qualquer destes
temas, a um nível aceitável, daria facilmente origem a outros dois volumes.

Agradecimentos. É um dever e um prazer registar aqui a ajuda de várias pessoas e


instituições:
• Aos alunos, que foram vítimas das versões preliminares deste texto, pela sua compreen-
são inesgotável;
• aos Professores Michel Carpentier, José Leonel M. Fernandes, Carlos M. Lemos e Fer-
nando P. Valente, pelas cuidadosas leituras e pertinentes comentários que permitiram
sucessivas melhorias incrementais;
• ao IST, ao seu Centro de Informática e ao Projecto ARMOR, pela disponibilização dos
meios necessários à preparação deste livro;
• ao artesão Heitor Pina (identificável com o autor mediante um isomorfismo natural) pelo
paciente trabalho de dactilografia, elaboração das figuras, etc., e a quem, infelizmente,
são atribuíveis todos os erros, omissões e falhas sobreviventes.

Lisboa Heitor Pina


Maio de 1995
[. . . ] and so there ain’t nothing more to write about,
and I am rotten glad of it, because if I’d ’a’ knowed what
a trouble it was to make a book I wouldn’t ’a’ tackled it,
and ain’t going to no more. But I reckon I got to light
out for the territory ahead [. . . ]
– Mark Twain (1835-1910)
The Adventures of Huckleberry Finn
Notação

Compilamos aqui as principais notações utilizadas neste livro, deixando a introdução de outras,
de carácter mais específico, para os locais apropriados.
Os teoremas são referenciados do seguinte modo: Teorema 3.4.5, em que 3 designa o Capítulo
3; 4, a Secção 4; 5, o teorema número 5 da Secção 3.4. As referências a definições, exemplos,
etc., seguem o mesmo princípio. As referências a fórmulas são sempre incluídas entre parêntesis:
(2.3.7), por exemplo.

Miscelânea
SÍMBOLO SIGNIFICADO

∀ Quantificador universal
∃ Quantificador existencial
≈ Aproximadamente igual a
≡ Idêntico a
∼ Assimptoticamente igual a
≪ Muito menor que
≫ Muito maior que
|·| Valor absoluto de um real ou módulo de um complexo
k·k Norma
p⇒q A proposição p implica a proposição q
p⇐q A proposição q implica a proposição p
p⇔q p ⇒ q e p ⇐ q, i.e., as proposições p e q são equivalentes
qtp do inglês, ‘almost everywhere’
i.e. isto é (do latim id est)
sse Se e√só se
i i = −1, unidade imaginária
Re z Parte real do número complexo z
Im z Parte imaginária do número complexo z
Fim de definição, demonstração, exemplo, etc.

xxvi
Notação xxvii

Números reais
Neste texto a separação entre a parte inteira e a parte fraccionária de um número real é feita
por um ponto de acordo com notação anglo-saxónica e não por uma vírgula segundo as regras
de ortografia do português. Assim, escreveremos 43.82 e não 43, 82. Esta opção é ditada pelo
facto de todas as linguagens de programação seguirem a tradição anglo-saxónica e o desejo de
não criar, por esta via, duplicidade de convenções.

Alfabeto grego
Minúsculas Maiúsculas
α A
β B
γ Γ
δ ∆
ǫ E
ζ Z
η H
θ Θ
ι I
κ K
λ Λ
µ M
ν N
ξ Ξ
o O
π Π
ρ R
σ Σ
τ T
υ Υ
φ Φ
χ X
ψ Ψ
ω Ω
xxviii Notação

Conjuntos
Os conjuntos são indicados de duas maneiras: ou especificando todos os elementos que formam
o conjunto como, por exemplo, S = {0, 1, 3}, ou através da expressão das propriedades que
caracterizam os elementos do conjunto como, por exemplo, S = {x : 0 < x ≤ 1}. Listamos em
seguida os conjuntos e os símbolos com eles relacionados de uso mais frequente neste texto.

SÍMBOLO SIGNIFICADO

x∈A x pertence ao conjunto A


A⊂B A é subconjunto de B
A⊃B B é subconjunto de A
A\B Diferença dos conjuntos A e B
A∪B União dos conjuntos A e B
A∩B Intersecção dos conjuntos A e B
N Conjunto dos inteiros não negativos {0, 1, 2, . . .}
N+ Conjunto dos números naturais {1, 2, . . .}
Z Conjunto dos números inteiros
Z+ ≡ N1 Conjunto dos inteiros positivos {1, 2, . . .}
Z− Conjunto dos inteiros negativos
Q Conjunto dos números racionais
Q+ Conjunto dos racionais positivos
Q− Conjunto dos racionais negativos
R Conjunto dos números reais
R+ Conjunto dos reais positivos = {x : x ∈ R e x > 0}
R− Conjunto dos reais negativos = {x : x ∈ R e x < 0}
C Conjunto dos números complexos
[a, b] Intervalo fechado, = {x ∈ R : a ≤ x ≤ b}
(a, b) Intervalo aberto, = {x ∈ R : a < x < b}
inter (a, b, c) Menor intervalo de R que contém os pontos a, b, c
dim Dimensão de um espaço linear
C[a, b] Espaço das funções contínuas sobre o intervalo [a, b]
C k [a, b] Espaço das funções sobre o intervalo [a, b] com derivadas
contínuas até à ordem k
Lp Espaços de Lebesgue
Hp Espaços de Sobolev
Pn Espaço dos polinómios de grau ≤ n
P Espaço de todos os polinómios
Pm,n Espaço dos splines de grau m numa malha com n subinter-
valos
R Espaço das funções integráveis à Riemann
Rm×n Espaço das matrizes reais m × n
Cm×n Espaço das matrizes complexas m × n
Notação xxix

Vectores e matrizes

Um vector é indicado por x e a respectiva i-ésima componente por xi . Quando houver neces-
sidade de denotar sucessões de vectores, usaremos índices superiores do seguinte modo: x(k) .
Analogamente, uma matriz será denotada por A, mas o seu elemento (i, j) (linha i, coluna j),
por aij ou, por vezes, (A)ij . As sucessões de matrizes serão indicadas por A(k) , o que não deve
ser confundido com potências, estas denotadas simplesmente por Ak . Identificaremos sempre um
vector x ∈ Cn como vector-coluna, i.e., como uma matriz em Cn×1 .

SÍMBOLO SIGNIFICADO

cond A Número de condição da matriz A


det A Determinante da matriz A
tr A Traço da matriz A
diag(a1 , . . . , an ) Matriz diagonal cujos elementos diagonais são a1 , . . . , an
(x, y) Produto interno dos vectores x e y
x⊥y x e y são ortogonais
kxk Norma do vector x
kAk Norma da matriz A
I Matriz identidade
δij Símbolo
( de Kronecker definido por
1 se i = j
δij =
0 se i 6= j
0 Vector nulo ou matriz nula
ei i-ésima coluna da matriz identidade
T
e Vector e = 1 1 · · · 1
pA (λ) Polinómio característico da matriz A
ρ(A) Raio espectral da matriz A
σ(A) Espectro da matriz A
A−1 Inversa da matriz A
AI Inversa generalizada da matriz A
AT Transposta da matriz A
AH Conjugada da transposta da matriz A
xxx Notação

Funções

SÍMBOLO SIGNIFICADO
⌊x⌋ Maior inteiro ≤ x
⌈x⌉ Menor inteiro ≥ x
erf x Função erro
exp x ≡ ex Exponencial de x
ln x Logaritmo natural (base e) de x
sin x Seno de x
cos x Co-seno de x
sinh x Seno hiperbólico (sinh x = (exp(x) − exp(−x))/2)
cosh x Co-seno hiperbólico (cosh x = (exp(x) + exp(−x))/2)
tan x Tangente de x
sign x Signum, definida como

1
 se x > 0
sign x = 0 se x = 0

−1 se x < 0

Dk f (x) ≡ f (k) (x) Derivada de ordem k da função f no ponto x
Lk Polinómios de Lagrange
Pk Polinómios de Legendre
Tk Polinómios de Chebyshev de primeira espécie
Uk Polinómios de Chebyshev de segunda espécie
O(g(x)) f (x) = O(g(x)) sse existirem constantes c > 0 e x0 ≥ 0 tais
que |f (x)| ≤ c|g(x)|, ∀x ≤ x0
O(g(x)) f (x) = O(g(x)) sse existirem constantes c > 0 e x0 ≥ 0 tais
que |f (x)| ≤ c|g(x)|, ∀x ≥ x0
Notação xxxi

Formulário útil
Trigonometria

sin(x + y) = sin x cos y + cos x sin y


cos(x + y) = cos x cos y − sin x sin y
tan x + tan y
tan(x + y) =
1 − tan x tan y
sin(2x) = 2 sin x cos x
cos(2x) = cos2 x − sin2 x = 2 cos2 x − 1 = 1 − 2 sin2 x
2 tan x
tan(2x) =
1 − tan2 x
x 1 + cos x
sin2 =
2 2
2 x 1 − cos x
cos =
2 2

Sucessões e séries

n
X n(n + 1)
k = 1 + 2 + ··· + n =
2
k=1
n
X 1 − r n+1
rk = 1 + r + · · · + rn = (r 6= 1)
1−r
k=0
n
X n(n + 1)(2n + 1)
k 2 = 1 + 4 + · · · + n2 =
6
k=1
Capítulo 1

Aritmética computacional

Este capítulo aborda os aspectos da aritmética que são mais relevantes na utilização
de computadores, nomeadamente o estudo dos erros associados à precisão finita que é
inerente a estas máquinas.

1.1 Introdução
O objectivo de qualquer método numérico, pela sua própria definição, consiste em fornecer
soluções numéricas a problemas matemáticos, i.e., soluções sob a forma de números.
É, pois, indispensável compreender a noção de número, os vários tipos de números, as
suas diferentes representações, sobretudo as que são usadas em computador, as operações
admissíveis, os erros cometidos e os seus efeitos nos resultados.

1.1.1 A contagem e os números naturais


A contagem é uma operação corrente do dia–a–dia e tão comum que as suas profundidade e
subtileza passam despercebidas. A sociedade reconhece, no entanto, a sua importância ao
ponto de transmitir a respectiva técnica às crianças logo que estas dominam a linguagem
falada.
As operações de contagem, a elaboração do conceito de número e respectivas repre-
sentações são o resultado de uma lenta evolução. Ao homem primitivo deve ter surgido a
necessidade de saber quantos animais caçou num dia, quantas peles tem guardadas para
o próximo Inverno, quantos filhos tem, etc. O número de objectos em questão era, pois,
muito baixo, e a sua indicação ou transmissão oral corresponderia a um certo fonema as-
sociado eventualmente a gestos apropriados. Assim, um homem primitivo que possuísse
quatro lanças daria conhecimento deste facto aos seus companheiros de caça emitindo
uns certos sons e exibindo talvez quatro dedos de uma mão. Se houvesse necessidade de
registar este número poderia ainda recorrer a quatro riscos na areia, ou a juntar quatro
pauzinhos ou pedrinhas e apontar para estes objectos a fim de que os seus companheiros

1
2 Aritmética computacional

melhor se inteirassem da situação. Estas pequenas artimanhas terão sido as primeiras


tentativas de construir representações de números.
À medida que a sociedade humana progrediu, as exigências relativamente à contagem
também aumentaram. O número de membros de uma tribo ou o número de cabeças de
um rebanho pode facilmente exceder o número de dedos de ambas as mãos. O advento da
agricultura e do comércio suscitou a necessidade de métodos de contagem e de represen-
tação mais sofisticados, bem como de um maior domínio sobre as operações aritméticas.
A atribuição de um símbolo distinto a cada número natural é um método que se revela
impraticável, pois seriam necessários infinitos símbolos distintos. Para resolver esta di-
ficuldade, as várias civilizações desenvolveram diferentes sistemas de numeração. Todos
eles possuíam, contudo, os seguintes ingredientes comuns:
• um conjunto (finito e geralmente pequeno) de símbolos básicos (os algarismos);
• um conjunto de regras de formação dos números a partir destes algarismos.
Os registos mais antigos de sistemas de numeração e de aritmética que se conhecem
datam de cerca de 2 000 anos a.C. e dizem respeito às civilizações centradas na Mesopotâ-
mia. Usavam, por razões não totalmente esclarecidas, a base sessenta ou sexagesimal de
que hoje ainda restam vestígios na divisão da hora em sessenta minutos, e do minuto em
sessenta segundos. Inicialmente, o zero era indicado apenas por um espaço em branco,
prática muito propícia a erros, o que levou mais tarde à necessidade de introdução de um
símbolo especial de separação. Um outro exemplo, de todos bem conhecido, é o sistema
romano de numeração que adoptou, na sua fase final de desenvolvimento, os seguintes
símbolos básicos: I(= 1), V (= 5), X(= 10), L(= 50), C(= 100), D(= 500) e M(= 1 000),
não existindo símbolo para o zero. As regras de formação eram algo complicadas. A
representação de certos números obtinha-se por repetição de símbolos básicos, como por
exemplo o III, reminiscentes talvez dos pauzinhos, riscos ou entalhes primitivos. Noutros
casos recorria-se a operações implícitas, como V I (= V + I) ou IV (= V − I), ou seja,
um I à direita implicava uma soma, e um I à esquerda, uma subtracção, relativamente
ao número adjacente, aquilo que por vezes se designa por princípios aditivo e subtractivo,
respectivamente.
Desta maneira, os algarismos podiam adquirir um valor diferente consoante a sua
posição na representação do número, ou seja, tinham um valor posicional . As vantagens
deste método foram reconhecidas na sua totalidade pelos maias e aztecas (no início da era
cristã) e pelos hindus (cerca de seis séculos depois). Foi destes últimos que adquirimos, por
intermédio dos árabes, o nosso sistema de numeração actual, no qual todos os algarismos
possuem valor posicional. Os símbolos básicos são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, e as regras
de formação, bem conhecidas. Convém notar a presença do algarismo zero e apreciar a
facilidade representativa e operativa que permite, uma ideia que levou muito tempo a
cristalizar (para quê arranjar um símbolo para representar o nada, o vazio?).
O número de símbolos básicos de um sistema de numeração posicional é designado
por base desse sistema. O nosso sistema de numeração é, pois, um sistema de base
1.1 Introdução 3

dez ou decimal, historicamente o mais vulgarizado. Este facto costuma ser atribuído ao
processo de contagem pelos dedos que privilegia a base dez. Contudo, outras bases foram
utilizadas ao longo dos tempos. Por exemplo, as civilizações da Mesopotâmia citadas atrás
desenvolveram sistemas de base sessenta. Os maias e os aztecas da América Central e os
celtas da Europa utilizaram a base vinte. Esta base vigesimal teve alguma divulgação neste
continente, aparentemente por influência normanda. Dela restam ainda alguns resquícios:
no século XX usou-se em Portugal uma unidade monetária conhecida por vintém, e os
franceses ainda hoje designam o número 80 por quatre-vingts – ‘quatro-vintes’. Adiante
veremos que, uma vez compreendidos os princípios da numeração, o problema da base
e da representação de um número nessa base não oferece dificuldade, sendo a opção do
respectivo valor ditada por razões de conveniência.
Tem interesse sintetizar e organizar, em termos de perspectiva histórica, aquilo que
acabámos de dizer.

Sistemas de numeração do tipo aditivo


Primeira espécie. Estes sistemas baseiam-se no princípio aditivo, sendo exemplo o
sistema hieroglífico egípcio decimal o qual atribuía símbolos próprios à unidade e às su-
cessivas potências de 10.
Para ilustrar a forma de representação característica destes sistemas, consideremos o
número 2037 e usemos a notação 1, 10, 100, . . . , para indicar os símbolos que representam
a unidade, a dezena, a centena, etc. Então,

2037 = 1000 + 1000 + 10 + 10 + 10 + 1 + 1 + 1 + 1 + 1 + 1 + 1


= 1000 1000 10 10 10 1 1 1 1 1 1 1

São oportunas algumas observações interessantes. Em primeiro lugar, esta representação


permite ler o número da esquerda para a direita e da direita para a esquerda, e, se for
caso disso, dispor a representação na vertical, de cima para baixo ou de baixo para cima,
dependendo do suporte da escrita. De facto, a ordem dos símbolos até podia ser qualquer,
embora tal facilidade não tenha sido usada, tanto quanto sabemos. Em segundo lugar,
não há necessidade de símbolo para o zero. Em terceiro lugar, as operações aritméticas
elementares de soma e subtracção tornam-se muito simples. A principal desvantagem
deste sistema reside no facto de produzir representações longas: o número 2037 requer
2 + 3 + 7 = 12 símbolos.

Segunda espécie. Como resposta ao problema das representações longas, certas civi-
lizações adoptaram símbolos intermédios entre as unidades e as restantes ordens. Nos
sistemas de base dez foram introduzidos caracteres para o 5, o 10, o 50, o 100, o 500, e
assim sucessivamente, enquanto para os sistemas de base sessenta da Mesopotâmia foram
criados caracteres para o 10, o 60, o 600, o 3600, etc.
4 Aritmética computacional

Retomando o exemplo acima, temos agora a seguinte representação decimal

2037 = 1000 + 1000 + 10 + 10 + 10 + 5 + 1 + 1


= 1000 1000 10 10 10 5 1 1

a qual requer 2 + 3 + 1 + 2 = 8 símbolos, o que constitui uma economia apreciável.


Sendo este sistema uma simples variante do caso anterior, continua a não ser necessário
representar o zero.
O sistema romano pode integrar-se neste grupo, embora a insólita adopção de um
princípio subtractivo o tenha complicado desnecessariamente. Neste sistema, como se
disse atrás, 1 = I, 5 = V , 10 = X, 50 = L, 100 = C, 500 = D e 1000 = M pelo que

2037 = 1000 + 1000 + 10 + 10 + 10 + 5 + 1 + 1


= 1000 1000 10 10 10 5 1 1
=MMXXXV II

Terceira espécie. Neste grupo integram-se os sistemas de numeração que empregam


caracteres próprios para todas as unidades 1, 2, . . . , 9, para todas as dezenas 10, 20, . . . ,
90, para todas as centenas 100, 200, . . . , 900, para todos os milhares 1000, 2000, . . . ,
9000, etc. Assim,
2037 = 2000 + 30 + 7 = 2000 30 7
Como se vê, neste caso são usados 3 símbolos. A economia de representação é imensa
mas foi conseguida à custa duma proliferação de símbolos difíceis de memorizar na sua
totalidade.
O sistema que os gregos usaram em determinada época constitui um exemplo deste tipo
de numeração. Os símbolos eram simplesmente as letras do respectivo alfabeto tomadas
pela respectiva ordem lexicográfica: 1 = α, 2 = β, . . . , 9 = θ, 10 = ι, 20 = κ, 30 = λ, . . . ,
100 = ρ, 1000 = ‘α, 2000 = ‘β, etc., pelo que

2037 = 2000 + 30 + 7 = 2000 30 7 = ‘β λ ζ

Sistemas de numeração do tipo híbrido


Estes sistemas fazem intervir um princípio multiplicativo conjuntamente com o princípio
aditivo, o que permite muitas combinações. A ideia é melhor ilustrada se nos concen-
trarmos nas variantes mais utilizadas, as quais, aplicadas ao exemplo que estamos a usar,
conduzem a

2037 = 2 × 1000 + 3 × 10 + 1 + 1 + 1 + 1 + 1 + 1 + 1
= 2 1000 3 10 1 1 1 1 1 1 1
1.1 Introdução 5

ou, se existir representação autónoma para os algarismos das unidades, a

2037 = 2 × 1000 + 3 × 10 + 7 = 2 1000 3 10 7

Por um lado, ganhou-se em termos de economia de símbolos mantendo as representações


compactas. Por outro lado, a representação tem que pressupor uma convenção de escrita
e leitura: agora, não é indiferente ler os números da esquerda para a direita ou da direita
para a esquerda.

Sistemas de numeração do tipo posicional


São exemplos os sistemas de numeração babilónicos de base 60, os sistemas eruditos
chineses de base 10, o sistema maia de base 20 e o presente sistema decimal de origem
hindu.
Se adoptarmos a convenção de escrever um número de acordo com as potências cres-
centes ou decrescentes de 10, os símbolos para as dezenas, as centenas, os milhares, etc.,
tornam-se redundantes e o valor de um algarismo é determinado pela sua posição na repre-
sentação. Todavia, esta ideia implica imediatamente a necessidade de criar um simbolismo
especial para assinalar a ausência de uma dada potência, ou seja, o princípio posicional
não pode prescindir de um símbolo para o zero. Chegamos assim, à representação na base
decimal
2037 = 2 × 1000 + 0 × 100 + 3 × 10 + 7 = 2 0 3 7
Observemos, no entanto, que uma coisa é a invenção de um símbolo para marcar a ausência
de uma dada ordem, i.e., o zero representativo, outra coisa é a aceitação do zero como um
número dotado de propriedades operativas idênticas às dos outros números, passagem de
extrema relevância que ficámos a dever aos hindus.

1.1.2 A medição e os números reais


Sinteticamente podemos dizer que os números naturais resolveram o problema da con-
tagem. Todavia, quando se pretendem efectuar medições de certas grandezas surgem
dificuldades. Assim, a medição do comprimento de um campo empregando uma vara de
um certo comprimento fixo (o padrão ou unidade) pode revelar que esse campo tem um
comprimento superior a 31 mas inferior a 32 varas, por exemplo. Esta dificuldade pode
não desaparecer simplesmente com uma mudança de unidade. Foi precisamente isto que
os pitagóricos descobriram, para sua grande consternação, que a hipotenusa de um triân-
gulo rectângulo isósceles não é comensurável com o cateto, i.e., a hipotenusa e o cateto
não podem ser expressos como múltiplos (inteiros) de uma mesma unidade, qualquer que
seja esta unidade! Tal facto implica a conclusão inevitável: os conjuntos dos números nat-
urais e, por extensão, dos números racionais, não são suficientemente ricos para poderem
exprimir o valor de certas grandezas físicas.
6 Aritmética computacional

Por outro lado, constatamos que certas operações aritméticas com operandos inteiros
conduzem a resultados que também não são inteiros. Se o dono de um campo cujo
comprimento fosse de 31 varas quisesse dividi-lo em dois campos exactamente do mesmo
comprimento para oferecer aos seus dois filhos, haveria de deparar com esta dificuldade.
O conceito de número real permite resolver estes dois problemas: um, de natureza física,
e outro, de natureza matemática.

1.2 Representação de números inteiros


Começamos por tratar primeiro dos números inteiros positivos e, depois, veremos as al-
terações necessárias para acomodar os números inteiros não-positivos.

1.2.1 Inteiros positivos


Como referimos atrás, a representação de um número inteiro na base decimal consiste
num conjunto de algarismos, em que cada um possui um valor que depende da respectiva
posição na representação. Assim, na base decimal o número 438 significa quatro centenas
mais três dezenas mais oito unidades ou, de uma forma sucinta,

438 = 4 × 102 + 3 × 101 + 8 × 100

Utilizando o símbolo di para denotar o algarismo ou dígito decimal colocado na posição


i a contar da direita, um inteiro positivo N com n + 1 dígitos possui a representação
decimal

N = (dn dn−1 . . . d1 d0 )10


(1.2.1)
= dn × 10n + dn−1 × 10n−1 + · · · + d1 × 101 + d0 × 100

com 0 ≤ di < 10, i = 0, 1, . . . , n.


A generalização desta ideia a uma base b diferente de 10, em que b ≥ 2 é inteiro, não
oferece dificuldade. Assim, um número inteiro positivo N cuja representação na base b
seja (dn dn−1 . . . d1 d0 )b terá a representação decimal obtida através da expressão

N = (dn dn−1 . . . d1 d0 )b
(1.2.2)
= dn bn + dn−1bn−1 + · · · + d1 b1 + d0

com 0 ≤ di < b, i = 0, 1, . . . , n e em que as operações no segundo membro são efectuadas


na base 10. É um exercício simples verificar que esta representação é única.
Um dígito que corresponda a uma potência da base maior que outro diz-se mais
significativo, i.e., na notação empregue, o dígito di é mais significativo que o dígito dj sse
i > j.
1.2 Representação de números inteiros 7

Chamamos a atenção para o facto de que os di que figuram na expressão (1.2.1) são
dígitos decimais, e os que figuram na expressão (1.2.2) são dígitos da base b. Todavia é
prática corrente utilizar os mesmos símbolos gráficos sempre que tal seja possível. Assim,
os dígitos da base 5 são denotados pelos símbolos 0, 1, 2, 3, 4, idênticos, portanto, aos
primeiros cinco símbolos da base 10. Quando se utilizam bases acima de 10 há que recorrer
a outros símbolos para representar 10, 11, . . . existindo basicamente duas técnicas. Uma
emprega as primeiras letras do alfabeto latino. Por exemplo, os dígitos da base 16, ou he-
xadecimal, são denotados por 0, 1, . . . , 9, A, B, C, D, E e F . A outra mantém os símbolos
10, 11, . . . mas na forma agrupada 10, 11, . . . para marcar a distinção.
Seguiremos a convenção de que, sempre que se omitir a indicação da base na repre-
sentação de um número, esta será interpretada como decimal.
Como a um número correspondem tantas representações quantas as bases, logo, in-
finitas representações, convém não confundir um número com qualquer das suas possíveis
representações. Um problema que se coloca é, pois, o da passagem de uma representação
para outra, ou, como é habitual dizer, o da mudança de base. Vamos a seguir mostrar
como é possível efectuá-la quando uma das bases é a base 10. Esta restrição resulta do
facto de ser mais fácil efectuar as operações necessárias em aritmética decimal, na qual
estamos mais à vontade, do que em qualquer outra base. Se for necessário converter um
número de uma base não decimal para outra, também não decimal, é preferível então
fazer esta conversão usando a base 10 como base intermédia.

Mudança da base b para a base 10


Para efectuar a conversão de um número inteiro da base b para a base 10 basta aplicar a
expressão (1.2.2), conforme se mostra no exemplo seguinte.
Exemplo 1.2.1 Converter (437)8 à base 10.

De acordo com a expressão (1.2.2) temos que

(437)8 = 4 × 82 + 3 × 81 + 7 × 80 = 4 × 64 + 3 × 8 + 7 = 287

e, portanto, (437)8 = (287)10 .

Mudança da base 10 para a base b


Seja N um número cuja representação decimal é dada e cuja representação na base b
pretendemos obter, ou seja, torna-se necessário determinar os dígitos (dn dn−1 . . . d1 d0 )b .
Recordando a expressão (1.2.2), é fácil ver que se dividirmos N por b, o quociente é
dn bn−1 + dn−1 bn−2 + · · · + d1 , e o resto é d0 . Fica assim encontrado o dígito de menor
ordem, d0 , da representação de N na base b. Dividindo o quociente achado por b, obtém-se
como resto o dígito d1 , e assim por diante. O quociente da n-ésima e última divisão é dn .
Exemplo 1.2.2 Converter 637 à base hexadecimal.
8 Aritmética computacional

637 | 16
O processo das divisões sucessivas pode dispor-se assim: 157 39 | 16
13 07 2
Logo, (637)10 = (27D)16 .

Os computadores digitais utilizam, para armazenar informação, dispositivos físicos


que podem assumir de modo estável dois estados distintos. De facto, um interruptor pode
estar ligado ou desligado, um lâmpada pode estar acesa ou apagada, uma corrente eléctrica
pode magnetizar um núcleo de ferrite num sentido ou noutro, etc. Esta característica
fundamental privilegia a base 2 ou base binária para representação de números nestas
máquinas.

Exemplo 1.2.3 Determinar a representação binária de 25.


25 |2
05 12 |2
Aplicando o método atrás descrito temos que: 1 0 6 |2
0 3 |2
1 1
Portanto, 25 = (11001)2 .

Para realizar esta representação binária em computador seriam necessários cinco ele-
mentos, que assumiriam os estados associados aos dígitos binários que constituem a re-
presentação. Podemos imaginar um computador cuja memória fosse constituída por lâm-
padas e em que o dígito binário 1 corresponderia a uma lâmpada acesa, e o dígito binário
0, a uma lâmpada apagada. É claro que este computador seria muito primitivo com-
parado com os actuais, mas o princípio utilizado é o mesmo. Assim, é usual designar
por bit (‘binary digit’) o elemento de memória básico que assume os dois estados que se
associam aos dígitos 0 e 1.
O número de bits disponíveis para a representação de números inteiros determina qual
o maior número inteiro representável em computador. Deste modo, todos os inteiros
entre zero e este valor possuem representação exacta e também são exactas as operações
aritméticas cujos operandos e resultados sejam inteiros nesta gama. Neste aspecto o
computador é uma ferramenta computacional perfeita.
Como k bits permitem 2k configurações, a representação dos dez dígitos decimais re-
quer 4 bits, pois 23 = 8 e 24 = 16, i.e., 3 bits são insuficientes, já que permitem apenas
8 configurações, e 4 bits permitem 16 configurações, o que é de mais. Isto significa que a
representação decimal desperdiça bits e é, portanto, menos económica que uma base que
seja potência de 2. Acresce ainda que a aritmética decimal é mais difícil de implementar
em computador. Por estas razões, a base 10 não é muito utilizada na representação de
números em computador, excepto quando se torna absolutamente necessário que a repre-
sentação e a aritmética sejam integralmente decimais, como acontece em certas aplicações
comerciais.
1.3 Representação de números reais 9

1.2.2 Inteiros não-positivos


A representação de números inteiros negativos não constitui problema. Basta encontrar
representações adequadas para o sinal + dos números positivos, e para o sinal − dos
negativos. A representação do sinal em computador pode fazer-se reservando um bit para
o efeito, geralmente o bit 0 para o sinal + e o bit 1 para o sinal −. Nesta representação
há dois zeros, o +0 e o −0, correspondendo, portanto, a duas configurações de bits
distintas. Esta duplicidade na representação do zero pode constituir um inconveniente,
pois, por exemplo, uma operação de comparação de +0 e −0 deve dar um resultado de
igual embora as configurações de bits sejam diferentes. Por estas razões, são por vezes
utilizadas outras técnicas que evitam este tipo de problemas e tornam mais fáceis as
operações com números negativos. No entanto, estas questões de carácter especializado
estão fora do âmbito deste texto.
Exemplo 1.2.4 Determinar a representação binária de +85 e −85 num computador com
8 bits para inteiros.
Como o sinal consome 1 bit, temos que o maior inteiro representável é 27 − 1 = 127. Neste
computador são representáveis os inteiros −127 ≤ N ≤ 127 e +0 = (0 0000000)2 , −0 =
(1 0000000)2 . Não oferece dificuldade obter +85 = (0 1010101)2 e −85 = (1 1010101)2 .

1.3 Representação de números reais


Na base decimal a notação 43.82 é interpretada da seguinte maneira1 :
43.82 = 43 + .82
em que, por sua vez,
43 = 4 × 101 + 3 × 100 e .82 = 8 × 10−1 + 2 × 10−2
Generalizando de forma evidente esta ideia, podemos dizer que a representação do número
real x na base 10 deve ser lida como significando
x = (dn dn−1 . . . d0 .d−1 d−2 . . . d−k )10
(1.3.1)
= dn 10n + dn−110n−1 + · · · + d0 + d−1 10−1 + d−2 10−2 + · · · + d−k 10−k
Analogamente, para um número real x na base b será
x = (dn dn−1 . . . d0 .d−1 d−2 . . . d−k )b
(1.3.2)
= dn bn + dn−1 bn−1 + · · · + d0 + d−1 b−1 + d−2 b−2 + · · · + d−k b−k
Os dígitos (dn dn−1 . . . d0 )b constituem a parte inteira, e os dígitos (d−1 d−2 . . . d−k )b , a parte
fraccionária da representação do número x na base b.
1
Ter presente o que se diz a este propósito na Notação.
10 Aritmética computacional

Mudança da base 10 para a base b

Seja x um número real dado através da sua representação decimal e suponhamos que
pretendemos obter a sua representação na base b. Como a conversão da parte inteira
segue as regras deduzidas na secção anterior, vamos admitir, para simplificar, que x é um
número fraccionário puro, i.e., sem parte inteira. Nestas condições,

x = (.d−1 d−2 . . . d−k )b = d−1 b−1 + d−2 b−2 + · · · + d−k b−k

Se multiplicarmos x por b, verificamos que d−1 é a parte inteira do resultado, e d−2 b−1 +
· · ·+d−k b−k+1 , a parte fraccionária. Multiplicando esta última novamente por b e tomando
a parte inteira do resultado obtemos d−2 , e assim sucessivamente.

Exemplo 1.3.1 Converter à base 2: a) .625; b) 0.1.

a) De acordo com o exposto temos b) De igual modo,


sucessivamente:
.1 × 2 = 0.2
.625 × 2 = 1.250 .2 × 2 = 0.4
.250 × 2 = 0.500 .4 × 2 = 0.8
.500 × 2 = 1.000 .8 × 2 = 1.6
.6 × 2 = 1.2
Logo, .625 = (.101)2 .
.2 × 2 = 0.4

Logo, .1 = (.000110011 . . .)2 .


Verificamos que, enquanto o número .625 tem uma representação binária finita, já o mesmo
não se passa com o número .1 cuja representação binária é infinita com o grupo de bits
0011 repetindo-se periodicamente. Este número não é, pois, representável num computador
(binário), que é por natureza uma máquina com capacidade finita. A possibilidade de ocor-
rência de um número infinito de dígitos na parte fraccionária de um número alerta-nos para
o facto de que o valor de k na expressão (1.3.2) pode não ser finito.

Mudança da base b para a base 10

Seja x = (.d−1 d−2 . . . d−k )b . A sua representação decimal obtém-se aplicando directamente
a expressão (1.3.2), como o exemplo seguinte ilustra.

Exemplo 1.3.2 Converter (.561)8 à base decimal.

De acordo com a expressão (1.3.1) vem que (.561)8 = 5×8−1 +6×8−2 +1×8−3 = .720703125.
1.3 Representação de números reais 11

1.3.1 Notação científica de números reais


Nas aplicações científicas há necessidade de recorrer a números muito grandes e a números
muito pequenos. Para verificar que assim é basta recordar o valor de algumas constantes
físicas como, por exemplo, o número de Avogadro e a massa do electrão. A representação
destas constantes obriga a um grande número de dígitos, a maioria dos quais são zeros.
Por outro lado, as medições que permitem obter estes números nem sempre garantem
tantos dígitos exactos. A forma de resolver estas dificuldades inerentes à representação
de números muito grandes ou muito pequenos é usar a chamada notação científica. Esta
notação consiste em exprimir um número real x na forma

x = ±mbt (1.3.3)

em que m é um número real não negativo designado por mantissa, b ≥ 2 é um inteiro


positivo designado por base e t é um inteiro designado por expoente. Fixada a base b,
esta representação não é única pois, por exemplo, x = 0.1 pode ser escrito na base 10 de
várias maneiras,

x = 0.1 = 1 × 10−1 = 0.01 × 101 = 10 × 10−2 , . . .

Para resolver esta ambiguidade é usual impor a seguinte convenção para as mantissas:

m =0 se x = 0
b−1 ≤ m < 1 se x 6= 0

Diz-se, neste caso, que se trata de uma representação normalizada. Nesta representação
o primeiro dígito da mantissa de um número diferente de zero é sempre diferente de zero.
A adopção desta convenção não elimina, contudo, todas as ambiguidades. Para o
número zero continuam a ser possíveis infinitas representações, todas com mantissa m = 0
e expoente t arbitrário. Uma outra situação em que a representação não é única é o caso
de números cuja mantissa tem infinitos dígitos repetindo-se periodicamente. A expressão
(1.3.1) e a fórmula da soma das progressões geométricas levam-nos a concluir que, por
exemplo,

0.1
9 × 10−k = 9 ×
X
.9999 . . . = =1
k=1
1 − 0.1
Assim, consideraremos .9999 . . . e 0.1 ×101 como duas representações do mesmo número.
O Problema 1.9.16 trata o caso geral.

1.3.2 Representação em ponto flutuante


É claro que a notação científica, tal como acabamos de apresentar, não pode ser implemen-
tada em computador, pois, para cobrir todos os números reais, a mantissa e o expoente
12 Aritmética computacional

exigiriam um número infinito de dígitos. Assim, a notação científica é modificada no


sentido de se utilizar um número finito p de dígitos para a mantissa e um número finito
q de dígitos para o expoente, obtendo-se a chamada representação em ponto flutuante.
Para simplificar a exposição usaremos a notação F P (b, p, q) para designar o sistema
de representação em ponto flutuante de base b, cuja mantissa ocupa p dígitos (base b) e
cujo expoente pode utilizar no máximo q dígitos (base b). Assim, F P (b, p, q) é constituído
por todos os números reais x da forma
(
t b−1 ≤ m ≤ 1 − b−p
x = 0 ou x = ±mb em que (1.3.4)
|t| ≤ bq − 1

Chamamos a atenção para o facto de que estamos a admitir que a gama dos expoentes
é simétrica relativamente à origem, o que nem sempre sucede nos sistemas de ponto
flutuante realizados em computador como veremos adiante.

Exemplo 1.3.3 Concretizar F P (10, 6, 2).

F P (10, 6, 2) designa o sistema de ponto flutuante de base 10, cuja mantissa possui 6 decimais
e cujo expoente pode variar entre −99 e +99. São números deste sistema todos os números
reais da forma
±(.d−1 d−2 d−3 d−4 d−5 d−6 )10±(t1 t0 )
Nesta expressão os d−1 , . . . , d−6 ou são todos nulos ou então 1 ≤ d−1 ≤ 9, 0 ≤ d−2 , ≤ 9, . . .,
0 ≤ d−6 ≤ 9. Por seu turno, 0 ≤ t0 ≤ 9 e 0 ≤ t1 ≤ 9.
O número .1 × 10100 não é representável em F P (10, 6, 2), pois o seu expoente excede 99.
Situações como esta são conhecidas como ‘overflow’ . Analogamente, o número .1 × 10−100
também não é representável neste sistema, pois o seu expoente é inferior a −99, o que é conhe-
cido como situação de ‘underflow’ . O número π = 3.141592654 . . . não possui representação
exacta neste sistema pois a sua representação decimal excede os 6 dígitos da mantissa.

1.4 Erros na aritmética em ponto flutuante


Nesta secção vamos analisar os efeitos, em primeiro lugar, da precisão finita na represen-
tação de números reais e, em segundo lugar, nas operações aritméticas correntes.

1.4.1 Erros de representação


Como acabamos de ver, o sistema de ponto flutuante só permite a representação exacta
de alguns números reais, o que implica que tenhamos de aceitar um certo erro na repre-
sentação dos restantes. A questão que é legítimo levantar, neste momento, é a seguinte:
dado um número real x qual o número em F P (b, p, q), que denotaremos por fl(x), que o
representa? Se x tiver representação exacta em F P (b, p, q), então naturalmente fl(x) = x.
1.4 Erros na aritmética em ponto flutuante 13

Se não for possível a representação exacta, existem basicamente duas técnicas para deter-
minar fl(x), a truncatura e o arredondamento. Vejamos em que consiste cada uma delas,
supondo que x não dá lugar a overflow ou a underflow.
• Truncatura: desprezam-se simplesmente os dígitos do número real x que não cabem
na mantissa, i.e., os dígitos da mantissa além dos p primeiros são desprezados; para
indicar este tipo de técnica empregaremos a notação F P (b, p, q, T ).
• Arredondamento: o número real x é representado pelo número do sistema de ponto
flutuante que lhe está mais próximo; este tipo de técnica será denotado por F P (b, p, q, A).
Exemplo 1.4.1 Achar as representações do número π nos sistemas F P (10, 5, 2, T ) e
F P (10, 5, 2, A).
Como imediatamente se deduz do que acabamos de expor,
(
(.31415)101 em F P (10, 5, 2, T )
fl(π) =
(.31416)101 em F P (10, 5, 2, A)
evidenciando-se, deste modo, os resultados diferentes produzidos pela truncatura e pelo arre-
dondamento.

A representação de 0.75 em F P (10, 1, 2, A) não é determinada pela regra que enun-


ciámos acima, pois quer 0.7 quer 0.8 são números deste sistema igualmente distantes
de 0.75. É costume resolver esta ambiguidade arredondando de acordo com o seguinte
procedimento (ver KNUTH (1998)):
• se b e b/2 forem pares, arredondar de modo a que o último dígito fique ímpar;
• se b for par mas b/2 for ímpar (como é o caso quando b = 2 ou b = 10), arredondar
de modo a que o último dígito fique par;
• se b for ímpar, optar por uma das regras anteriores, já que parece não haver vanta-
gens ou desvantagens determinantes em qualquer delas.
Esta técnica é conhecida por arredondamento simétrico e é a de utilização mais frequente
e o exemplo seguinte apresenta uma razão.
Exemplo 1.4.2 Proceder ao arredondamento do número 3.445 para 2 dígitos de acordo
com as técnicas anteriormente descritas.
Vamos começar por fazer o arredondamento simétrico (para par) directamente: 3.445 → 3.4;
e sucessivamente, um dígito de cada vez: 3.445 → 3.44 → 3.4. O resultado nos dois processos
é o mesmo.
Repitamos para o caso de arredondamento para ímpar, directamente: 3.445 → 3.4; e suces-
sivamente: 3.445 → 3.45 → 3.5. Os dois processos produziram resultados diferentes, sendo o
último incorrecto!
14 Aritmética computacional

Passemos agora à análise dos erros de representação, i.e., da determinação da diferença


entre a representação x̃ = fl(x) do número real x num sistema de ponto flutuante e o
número real x. Consideremos que
x = mbt e x̃ = fl(x) = m̃bt (1.4.1)
em que suporemos a representação de x normalizada (a de x̃ poderá não estar já que a
imposição do mesmo expoente t nas representações de x e de x̃ pode tornar tal impossível).
Então, o erro absoluto E vem dado por
E = x̃ − x = fl(x) − x = m̃bt − mbt = (m̃ − m)bt (1.4.2)
Como é fácil ver, 
b−p em F P (b, p, q, T )
|m̃ − m| ≤ (1.4.3)
 1 b−p em F P (b, p, q, A)
2
donde decorre que o erro absoluto é majorado por

bt−p em F P (b, p, q, T )
|E| ≤ (1.4.4)
 1 bt−p em F P (b, p, q, A)
2

O erro relativo e, definido apenas para o caso em que x 6= 0, é dado por


x̃ − x fl(x) − x
e= = (1.4.5)
x x
e o seu valor absoluto pode exprimir-se do seguinte modo

m̃bt − mbt m̃ − m

|e| = = (1.4.6)

mbt m

Recorrendo agora à expressão (1.4.3) para majorar o numerador, e ao facto de b−1 ser um
minorante do denominador, podemos deduzir os seguintes majorantes para o erro relativo
(porquê < e não ≤?)

b1−p em F P (b, p, q, T )
|e| < u ≡ (1.4.7)
 1 b1−p em F P (b, p, q, A)
2

O segundo membro u destas relações é conhecido pela designação de unidade de arredon-


damento do sistema de ponto flutuante do computador (mesmo quando este opera por
truncatura!). Nestas condições, é sempre válida a seguinte afirmação
fl(x) = (1 + e)x, com |e| < u (1.4.8)
Exemplo 1.4.3 Determinar as unidades de arredondamento dos sistemas F P (2, 24, 8, T )
e F P (2, 24, 8, A).
Aplicando (1.4.7) temos imediatamente que
u = 2−23 ≈ (.12)10−6 , u = 2−24 ≈ (.6)10−7
respectivamente.
1.4 Erros na aritmética em ponto flutuante 15

1.4.2 Erros nas operações aritméticas


Antes de tentar analisar casos mais complicados, é conveniente estudar o comportamento
das operações aritméticas elementares (soma, subtracção, multiplicação e divisão) quando
estas são efectuadas num sistema de ponto flutuante. Para a soma e a subtracção temos

(m
1± m2 b−(t1 −t2 ) )bt1 se t1 > t2
x1 ± x2 = m1 bt1 ± m2 bt2 =
(m1 b−(t2 −t1 ) ± m2 )bt2 se t1 ≤ t2

(porquê assim e não da outra maneira possível?). Para a multiplicação e a divisão empre-
gamos

x1 × x2 = (m1 × m2 )bt1 +t2


x1 /x2 = (m1 /m2 )bt1 −t2

Estas operações desenvolvem-se em computador de acordo com os seguintes passos:


1. Decomposição dos operandos, i.e., separação destes números nas respectivas man-
tissas e expoentes;

2. Alinhamento das mantissas e dos expoentes para a soma e a subtracção;

3. Operação com as mantissas e/ou com os expoentes;

4. Normalização da mantissa, i.e., translação da mantissa com o correspondente ajus-


tamento do expoente;

5. Arredondamento da mantissa;

6. Recomposição do resultado, i.e., reunião da mantissa e do expoente para formar o


resultado no sistema de ponto flutuante.
As operações com os expoentes, uma vez que estes números são inteiros, não intro-
duzem erros (com a excepção óbvia dos casos de overflow e underflow ). As operações com
as mantissas, pelo contrário, são susceptíveis de erros cuja análise constitui o objectivo
desta secção.
Uma outra observação importante, cuja confirmação deixamos para os problemas,
é a de que as operações em ponto flutuante não respeitam, em geral, as propriedades
comutativa, distributiva e associativa das suas contrapartes em aritmética exacta.

Um teorema auxiliar
Quantidades como (1 + e1 )(1 + e2 )(1 + e3 ), (1 + e1 )(1 + e2 )/(1 + e3 ), etc., em que os ei
representam erros relativos, aparecem com uma certa frequência na análise de erros, pelo
que é desejável majorar ou estimar o seu valor sem incorrer em grandes complicações,
16 Aritmética computacional

querendo com isto dizer que a revelação da estrutura do erro é mais importante do que
a sua expressão minuciosa. Daí a utilidade do seguinte resultado a que recorreremos com
alguma frequência.

Teorema 1.4.1 Se ei forem números tais que |ei | ≤ u, para i = 1, . . . , n, com u tal que
0 ≤ nu < 1 e ρi = 1 ou ρi = −1, então existe um número θ que verifica
n
nu
(1 + ei )ρi = 1 + θ
Y
com |θ| ≤ γn ≡
i=1 1 − nu

Demonstração Registemos primeiro algumas relações a que vamos recorrer no segui-


mento. É imediato ver que
1 1
(1 + u)(1 − u) = 1 − u2 ≤ 1 =⇒ 1 + u ≤ e ≥1−u (1.4.9)
1−u 1+u
Por indução em k inteiro positivo, pode provar-se sem dificuldade a validade da seguinte
relação
1 − ku ≤ (1 − u)k (1.4.10)
Sendo −u ≤ ei ≤ u e denotando por p o número de termos com ρi = 1 e, por q, o
número de termos com ρi = −1, então é fácil estabelecer o seguinte
n
(1 − u)p Y
ρi (1 + u)p
− 1 ≤ θ = (1 + ei ) − 1 ≤ −1
(1 + u)q i=1 (1 − u)q

Comecemos pela desigualdade da direita. Temos, pela primeira conclusão de (1.4.9) e


por (1.4.10), que
(1 + u)p 1 nu
θ≤ q
−1≤ n
−1≤ = γn
(1 − u) (1 − u) 1 − nu
Para obter a desigualdade da esquerda, a segunda conclusão de (1.4.9) juntamente
com (1.4.10) permitem escrever
nu
θ ≥ (1 − u)p (1 − u)q − 1 ≥ (1 − u)n − 1 ≥ −nu ≥ − = −γn
1 − nu
Conjugando resultados, obtemos a afirmação do enunciado do teorema.
Um desenvolvimento em série de Maclaurin fornece
nu
γn ≡ = nu + O(u2 )
1 − nu
expressão que é frequentemente utilizada para sublinhar a essência do comportamento
deste parâmetro: o de crescer linearmente com nu, a menos de termos de ordem superior
geralmente desprezáveis na prática.
1.4 Erros na aritmética em ponto flutuante 17

Soma
Sejam x1 = m1 bt1 e x2 = m2 bt2 dois números reais positivos, considerando, sem perda de
generalidade, que x1 ≥ x2 e seja y = x1 + x2 o resultado (exacto) da sua soma. Designare-
mos por ỹ = fl(x1 + x2 ) o resultado obtido efectuando esta operação em F P (b, p, q), i.e.,
executando todos os cálculos neste sistema da maneira que o exemplo seguinte ilustra.

Exemplo 1.4.4 Calcular, em F P (10, 4, 2, A), a soma y = x1 + x2 com x1 = 1/7 e


x2 = 1/60.

Neste sistema de ponto flutuante, temos que

x̃1 = fl(x1 ) = (.1429)100 = (.1429)100


x̃2 = fl(x2 ) = (.1667)10−1 = (.0167)100 (após alinhamento)
0
x̃1 + x̃2 = (.1596)10

O resultado em ponto flutuante é ỹ = fl(x1 + x2 ) = (.1596)100 enquanto o resultado exacto


é y = x1 + x2 = 67/420 = 0.1595238 . . .. Os erros absoluto e relativo são E = (.76)10−4 e
e = (.48)10−3 , respectivamente.

Este exemplo mostra que o alinhamento das mantissas pode ser fonte de erros impor-
tantes por perda de dígitos. Uma forma de minorar este efeito nefasto consiste em prover
os registos aritméticos com dígitos extra: embora os números sejam representados com p
dígitos na mantissa, as unidades aritméticas dispõem de p′ dígitos adicionais, os chamados
dígitos de guarda. Em geral, o número de dígitos de guarda é 2 ou 3 mas pode chegar, em
certos casos, a igualar p. Na realidade, torna-se necessário para as operações aritméticas,
sobretudo para a subtracção a estudar a seguir, prever pelo menos dois dígitos de guarda:
um, para assegurar o correcto arredondamento de x2 , e o outro, para assegurar a eventual
pós-normalização do resultado.
Retomando a expressão (1.4.8) e tendo em conta os alinhamentos das mantissas, resulta
que

x̃1 = fl(x1 ) = (1 + e1 )x1 com |e1 | < u


x̃2 = fl(x2 ) = (1 + e2 )(1 + e′2 )x2 com |e2 | < u

e onde e′2 designa o erro em x2 provocado pelo alinhamento da respectiva mantissa. De-
notando por e3 o erro relativo de arredondamento do resultado da soma, vem que

ỹ = fl(x1 + x2 ) = [(1 + e1 )x1 + (1 + e2 )(1 + e′2 )x2 ](1 + e3 )

Agrupando termos, podemos escrever que

ỹ = (1 + e3 )(1 + e1 )x1 + (1 + e3 )(1 + e2 )(1 + e′2 )x2


18 Aritmética computacional

Admitindo que se dispõe de um número de dígitos de guarda suficiente para que seja
válida a condição
(1 + e′2 )(1 + e3 ) = 1 + e4 , com |e4 | < u
e recorrendo ao Teorema 1.4.1, vem que
fl(x1 + x2 ) = (1 + θ1 )x1 + (1 + θ2 )x2 , com |θi | ≤ γ2 , i = 1, 2 (1.4.11)
Esta expressão tem uma leitura importante, que é a seguinte: o resultado da soma de
dois números em ponto flutuante é idêntico ao que se obteria com aritmética exacta mas
com operandos perturbados, i.e., com (1 + θ1 )x1 em vez de x1 , e (1 + θ2 )x2 em vez de
x2 . Atendendo ao valores usuais dos erros de arredondamento, estas perturbações são
geralmente muito pequenas.
De (1.4.11) resulta que os erros absoluto E e relativo e da soma são expressos da
seguinte maneira,
E = ỹ − y = θ1 x1 + θ2 x2
E x1 x2
e= = θ1 + θ2
y x1 + x2 x1 + x2
Vamos, tal como aconteceu com a representação de números, majorar os erros. Obtemos,
sem dificuldade, que
|E| ≤ γ2 (x1 + x2 )
|e| ≤ γ2
Observemos que o erro relativo é independente dos operandos x1 e x2 .
No contexto das hipóteses admitidas e com vista a ter um majorante do erro relativo
de leitura simples, é conveniente apresentar este último resultado do seguinte modo
fl(x1 + x2 ) = (x1 + x2 )(1 + e), com |e| ≤ γ2 = 2u + O(u2) (1.4.12)

Subtracção
O tratamento da subtracção segue de perto o efectuado para a soma. Assim, supondo
que x1 e x2 possuem o mesmo sinal, podemos escrever que
ỹ = fl(x1 − x2 ) = (1 + θ1 )x1 − (1 + θ2 )x2 , com |θi | ≤ γ2 , i = 1, 2 (1.4.13)
continuando a verificar-se que o resultado em ponto flutuante é idêntico ao que se obteria
com aritmética exacta mas com operandos perturbados. Os erros absoluto e relativo são
agora
E = ỹ − y = θ1 x1 − θ2 x2
ỹ − y x1 x2
e= = θ1 − θ2
y x1 − x2 x1 − x2
1.4 Erros na aritmética em ponto flutuante 19

se y 6= 0 na última expressão. Majorando, chega-se a


|E| ≤ γ2 (|x1 | + |x2 |)
|x1 | + |x2 |
|e| ≤ γ2
|x1 − x2 |
Como |x1 −x2 | pode ser uma quantidade muito pequena, tal acarretará como consequência
que o erro relativo e venha muito grande, não obstante o erro absoluto E se manter muito
pequeno. Quer isto dizer que a subtracção pode conduzir a erros relativos grandes quando
os números a subtrair são muito próximos. Este fenómeno é conhecido por cancelamento
subtractivo e constitui uma fonte importante de erros nos cálculos em ponto flutuante.
Exemplo 1.4.5 Calcular, em F P (10, 4, 2, A), o valor de y = x1 −x2 com x1 = (.43787)10−2
e x2 = (.43783)10−2 e determinar os erros absoluto e relativo.
O resultado exacto é y = x1 − x2 = (.4)10−6 . Em F P (10, 4, 2, A) temos que
fl(x1 ) = (.4379)10−2
fl(x2 ) = (.4378)10−2
fl(x1 − x2 ) = (.1000)10−5
e, portanto,
(.60)10−6
|E| = (.60)10−6 e |e| = = 1.5
(.4)10−6
Confirma-se assim que, apesar de o erro absoluto ser muito pequeno, o erro relativo pode
atingir valores extremamente elevados provocados pelo cancelamento subtractivo.
O exemplo seguinte mostra a vantagem de dispor de dígitos de guarda.
Exemplo 1.4.6 Calcular o valor de y = x1 − x2 em F P (10, 4, 2, T ) com x1 = (.1000)100
e x2 = (.5699)10−2 e determinar os erros absoluto e relativo.
O resultado exacto é y = x1 − x2 = (.94301)10−1 .
Em F P (10, 4, 2, T ), sem dígitos de guarda, temos que
fl(x1 ) = (.1000)100
fl(x2 ) = (.0056)100
fl(x1 − x2 ) = (.9440)10−1
e, portanto, |E| = (0.99)10−4 e |e| = (1.05)10−3 > u já que u = 10−3 .
Em F P (10, 4, 2, T ), com um dígito de guarda, vem que
fl(x1 ) = (.10000)100
fl(x2 ) = (.00569)100
fl(x1 − x2 ) = (.9431)10−1
e, portanto, |E| = (0.9)10−5 e |e| = (0.95)10−4 < u. A existência de um dígito de guarda foi
essencial para manter o erro relativo abaixo da unidade de arredondamento.
20 Aritmética computacional

Multiplicação
Consideremos agora a multiplicação de dois números reais x1 e x2 , e sejam, como an-
teriormente, y = x1 x2 e ỹ = fl(x1 x2 ) o resultado exacto e o resultado obtido em ponto
flutuante, respectivamente. Então,

ỹ = fl(x1 x2 ) = [(1 + e1 )x1 (1 + e2 )x2 ](1 + e3 )


= (1 + e3 )(1 + e1 )(1 + e2 )x1 x2
= (1 + θ1 )x1 (1 + θ2 )x2 (1.4.14)

com θ1 e θ2 verificando (1 + θ1 )(1 + θ2 ) = (1 + e3 )(1 + e1 )(1 + e2 ) mas, para além disso,


arbitrários. Quer isto dizer que o resultado ỹ é idêntico ao que se obteria em aritmética
exacta com operandos perturbados (1 + θ1 )x1 e (1 + θ2 )x2 . Sublinhemos que a análise
permite, se tal convier, atribuir a ‘responsabilidade’ do erro à perturbação de um só
operando, x1 , fazendo θ2 = 0 ou x2 , fazendo θ1 = 0, ou qualquer combinação intermédia
admissível.
Os erros absoluto E e relativo e vêm agora dados por

E = [(1 + e3 )(1 + e2 )(1 + e1 ) − 1]x1 x2


e = (1 + θ1 )(1 + θ2 ) − 1 = (1 + e3 )(1 + e2 )(1 + e1 ) − 1

e, portanto, tendo em conta o Teorema 1.4.1,

fl(x1 x2 ) = x1 x2 (1 + e), com |e| ≤ γ3 = 3u + O(u2 ) (1.4.15)

Divisão
Repetindo a análise efectuada para a multiplicação, facilmente se chega a
x1 (1 + e1 )x1
 
ỹ = fl = (1 + e3 ) (1.4.16)
x2 (1 + e2 )x2
e novamente se verifica que o resultado ỹ é igual ao que se obteria com operandos pertur-
bados. A majoração dos erros passa novamente pelo recurso ao Teorema 1.4.1, vindo
" #
(1 + e1 ) x1
E = (1 + e3 ) −1
(1 + e2 ) x2
(1 + e1 )
e = (1 + e3 ) −1
(1 + e2 )
Por conseguinte, também para a divisão, temos que
x1 x1
 
fl = (1 + e), com |e| ≤ γ3 = 3u + O(u2) (1.4.17)
x2 x2
1.4 Erros na aritmética em ponto flutuante 21

Em resumo, podemos dizer que, das quatro operações aritméticas elementares, apenas
a subtracção de números muito próximos pode causar problemas devidos a cancelamento
subtractivo os quais se manifestam em erros relativos elevados por comparação com a
unidade de arredondamento.
Vamos passar ao estudo de dois casos de análise um pouco mais difícil mas com
grande interesse prático. Trata-se de operação frequentes, nomeadamente em Álgebra Li-
near Numérica, que podem envolver muitos números e deste facto resultar eventualmente
alguma acumulação de erros.

Somatório

Suponhamos que pretendíamos calcular o somatório de n números xi (positivos ou nega-


tivos)
n
X
s= xi (1.4.18)
i=1

Um processo simples para obter o valor s do somatório consiste em utilizar o Algoritmo


1.4.1 (ver, a este propósito, as Secções 1.7 e 1.8), designado, por razões evidentes, por
somatório recursivo.
Quando este algoritmo é realizado em computador, vamos ter os valores aproximados
x̃i e s̃i em vez dos valores exactos xi e si . Por simplicidade de exposição, vamos admitir
que os números xi possuem representação exacta no sistema de ponto flutuante em uso, i.e,
x̃i = xi . Então, quando se executa o algoritmo acima em aritmética de ponto flutuante,
resulta que

s̃i = fl(s̃i−1 + xi ) = (s̃i−1 + xi )(1 + ei ), i = 1, . . . , n

em que ei é o erro relativo cometido na soma i (nas presentes circunstâncias, e1 = 0).

Algoritmo 1.4.1 Somatório recursivo


proc SUM (x, n, s)
s=0 (inicialização)
for i = 1 to n do
s = s + xi
od
end
22 Aritmética computacional

Aplicando esta expressão recursivamente, vem que

s̃0 = s0 = 0
s̃1 = (s0 + x1 )(1 + e1 ) = x1
s̃2 = (s̃1 + x2 )(1 + e2 ) = x1 (1 + e2 ) + x2 (1 + e2 )
s̃3 = (s̃2 + x2 )(1 + e3 ) = x1 (1 + e2 )(1 + e3 ) + x2 (1 + e2 )(1 + e3 ) + x3 (1 + e3 )
···
s̃n = x1 (1 + θ1 ) + x2 (1 + θ2 ) + · · · + xn (1 + θn )

onde recorremos novamente ao Teorema 1.4.1. Então, o valor do somatório pode exprimir-
se na seguinte forma
n n
!
X X
s̃ = s̃n = fl xi = xi (1 + θi ) (1.4.19)
i=1 i=1

o que quer dizer que o valor aproximado é igual ao valor exacto obtido com operandos
ligeiramente perturbados. Os erros absoluto E e relativo e (supondo que s 6= 0) são dados
neste caso por
n
X n
X
E= θi xi , e= θi xi /s
i=1 i=1

Admitindo que são válidas as hipóteses do Teorema 1.4.1, podemos escrever que

|θ1 | ≤ γn−1 , |θi | ≤ γn+1−i , i = 2, . . . , n

Sendo assim, como max1≤i≤n |θi | ≤ γn−1 , vem que


n Pn
|xi |
|e| ≤ γn−1 Pi=1
X
|E| ≤ γn−1 |xi |, n
i=1 | i=1 xi |

Se os xi tiverem todos o mesmo sinal, ( ni=1 |xi |)/(| ni=1 xi |) = 1 e o erro relativo pode
P P

ser facilmente majorado. De facto, neste caso tem lugar a expressão simples

|e| ≤ γn−1 = (n − 1)u + O(u2) (1.4.20)

Esta análise permite concluir que, se os números xi forem todos do mesmo sinal, o erro
relativo pode ser majorado independentemente dos valores destes números. Contudo, se
os xi tiverem sinais diferentes, tal não é possível. Trata-se, mais uma vez, da manifestação
do fenómeno de cancelamento subtractivo já detectado aquando do estudo dos erros da
subtracção.
Uma outra indicação com interesse prático que se pode extrair desta análise decorre
de os γn+1−i decrescerem com i. Então, se tal for viável, o somatório deve efectuar-
se começando pelos números mais pequenos (em valor absoluto) e progredindo para os
maiores (em valor absoluto) a fim de tentar minimizar o produto θi xi . Embora esta técnica
1.4 Erros na aritmética em ponto flutuante 23

s: s1 s2

y: y1 y2

t = s + y: s1 s2 + y 1
Figura 1.4.1: Soma
de Kahan
t − s: y1

c = (t − s) − y: −y2

não conduza necessariamente ao menor erro absoluto final (notemos que o raciocínio foi
feito com base nos majorantes γn+1−i e não nos erros efectivos θi ), ela pode contribuir
significativamente para uma maior precisão do resultado.
Ainda com vista a produzir resultados com elevada precisão, podemos recorrer a téc-
nicas como as que vamos descrever de seguida.

Acumulação em dupla precisão. Outro aspecto que merece um comentário tem a


ver com a circunstância de o algoritmo do somatório poder ser facilmente modificado de
modo a que as somas sejam acumuladas em dupla precisão (esta noção será desenvolvida
mais à frente na Secção 1.5), sem que tal procedimento exija que os números xi tenham
também de ser convertidos a dupla precisão. Para tal basta que s seja substituída por
uma variável auxiliar declarada em dupla precisão ou outra técnica de programação que
produza o mesmo efeito. Ora, é possível demonstrar que nestas condições o erro absoluto
vem substancialmente reduzido, raramente ultrapassando, se não existir cancelamento
subtractivo, uma unidade de arredondamento, qualquer que seja o valor de n. Este
resultado aponta para a vantagem prática em recorrer a esta técnica de acumulação em
dupla precisão, sempre que for importante reduzir os efeitos dos erros de arredondamento
em somatórios com muitos termos.

Técnica de Kahan. Em alternativa, pode recorrer-se à técnica de Kahan para produzir


somatórios compensados em que se procura estimar o erro cometido e efectuar a sua
compensação. A Figura 1.4.1 explica a ideia por trás desta técnica e na qual se admitiu,
para efeitos de ilustração, que y é o número que tem que ser alinhado com s para obter a
soma s + y. A variável t acumula temporariamente s + y e c designa a correcção a ter em
conta, enquanto s1 e y1 são as partes mais significativas e s2 e y2 as menos significativas
de s e t, respectivamente. O Algoritmo 1.4.2 formaliza este método.
24 Aritmética computacional

É possível demonstrar (ver GOLDBERG (1991)) que o somatório compensado satisfaz


n
com |θi | ≤ 2u + O(nu2)
X
s= (1 + θi )xi ,
i=1

pelo que os respectivos erros absoluto e relativo verificam os majorantes


h n
iX
2
|E| ≤ 2u + O(nu ) |xi |
i=1
i Pn |x |
i
h
|e| ≤ 2u + O(nu ) Pi=1
2
| ni=1 xi |

que devem ser comparados com (1.4.20). No entanto, este método de somatório também
não está imune ao cancelamento subtractivo no caso de os xi possuírem sinais diferen-
tes. Todavia, se os xi possuírem todos o mesmo sinal, o erro relativo é praticamente
independente do número n de termos.

Produto interno
Uma das operações mais correntes em métodos numéricos é o cálculo do produto interno
s de dois vectores reais x e y de dimensão n, o qual é definido por
n
s = xT y =
X
xi yi (1.4.21)
i=1

Um método simples para obter este valor, semelhante ao usado para o somatório, é ap-
resentado no Algoritmo 1.4.3 o qual imita uma subrotina semelhante da programateca
BLAS (ver LAWSON et al. (1979)).
Em aritmética de ponto flutuante estes cálculos dão origem a valores contaminados
pelos erros de arredondamento. Designando, como anteriormente, por s̃i os valores assim

Algoritmo 1.4.2 Somatório compensado (Kahan)


proc SUMK (x, n, s)
s = x1 ; c = 0 (inicialização)
for i = 2 to n do
y = xi − c
t=s+y
c = (t − s) − y (correcção)
s=t
od
end
1.4 Erros na aritmética em ponto flutuante 25

obtidos, admitindo que os xi e os yi possuem representação exacta em ponto flutuante,


e tendo em atenção os erros cometidos nas diferentes operações aritméticas envolvidas,
podemos escrever que

s̃i = fl(s̃i−1 + xi yi ) = (s̃i−1 + xi yi(1 + ēi ))(1 + ei ), i = 1, . . . , n

em que ei é o erro relativo cometido na soma, e ēi , na multiplicação xi yi na etapa i. Tal


como atrás, não oferece qualquer dificuldade ver que

s̃0 = s0 = 0
s̃1 = (s0 + x1 y1 (1 + ē1 )) = x1 y1 (1 + ē1 )
s̃2 = (s̃1 + x2 y2 (1 + ē2 ))(1 + e2 ) = x1 y1 (1 + ē1 )(1 + e2 )
+ x2 y2 (1 + ē2 )(1 + e2 )
···
s̃n = x1 y1 (1 + θ1 ) + x2 y2 (1 + θ2 ) + · · · + xn yn (1 + θn ) (1.4.22)

em que em que empregou novamente o Teorema 1.4.1. Verifica-se novamente o facto


de o resultado obtido em aritmética de precisão finita ser idêntico ao que seria obtido
em aritmética exacta mas com operandos ligeiramente perturbados. Admitindo que são
válidas as hipóteses do Teorema 1.4.1, os ēi e ej que aparecem nas expressões acima são
quantidades que verificam |ei | < u e |ēi | < u. Então, podemos afirmar que
n n
!
X X
s̃ = fl xi yi = xi yi (1 + θi ), com |θ1 | ≤ γn , |θi | ≤ γn+2−i , i = 2, . . . , n
i=1 i=1

Se todos os termos xi yi forem do mesmo sinal e seguindo um processo idêntico ao


adoptado para o somatório, pode obter-se o seguinte majorante para o erro relativo do
produto interno
|e| ≤ γn = nu + O(u2) (1.4.23)
sendo pertinente o mesmo comentário feito após (1.4.20).

Algoritmo 1.4.3 Produto interno


proc DOT (x, y, n, s)
comment: x, y ∈ Rn , s = xT y
s=0 (inicialização)
for i = 1 to n do
s = s + xi yi
od
end
26 Aritmética computacional

1.4.3 Dígitos correctos


Seja x̃ o valor aproximado resultante do cálculo, em aritmética de ponto flutuante no
sistema F P (b, p, q), de uma dada quantidade x, admitindo, para simplificar a análise, que
se trata de números diferentes mas com o mesmo sinal, positivo, digamos. De acordo com
(1.4.1), podemos escrever que

x = mbt , x̃ = m̃bt

Vamos supor que a representação de x está normalizada mas que a de x̃ poderá não
estar já que a imposição do mesmo expoente t nas duas representações pode tornar tal
desiderato impossível. Sendo assim, o erro absoluto E vem dado por

E = x̃ − x = (m̃ − m)bt = [(m̃ − m)bs ] bt−s

em que s é um inteiro escolhido de modo a que (m̃ − m)bs seja um número normalizado,
satisfazendo portanto as condições (1.3.4). Deste modo,

b−1 ≤ (m̃ − m)bs < 1

sendo fácil concluir que o erro absoluto e o número s se relacionam do seguinte modo

bt−s−1 ≤ |E| < bt−s (1.4.24)

Tomando logaritmos, também podemos deduzir que

t − logb |E| − 1 ≤ s < t − logb |E| (1.4.25)

desigualdades que determinam sem ambiguidades o inteiro s a partir do erro absoluto (ver
o Problema 1.9.35 para uma outra possibilidade). Assim, diremos que x̃ tem s dígitos
correctos e o próximo exemplo ajuda a perceber a razoabilidade desta designação a qual,
todavia, não é adoptada por todos os autores.

Exemplo 1.4.7 Determinar o número de dígitos correctos: a) da aproximação x̃ = 3.14


do número x = π; b) da aproximação x̃ = 0.19999 do número x = 0.2.

a) De acordo com o que se disse acima,

x = π = (0.314159 . . .)101 , x̃ = (0.314)101

donde
|E| = (0.159 . . .)10−2 , log10 |E| = −2.8, 2.8 ≤ s < 3.8
pelo que x̃ tem 3 dígitos decimais correctos. De facto, x e x̃ possuem os 3 dígitos decimais
mais significativos iguais e o erro revela-se apenas no quarto dígito.
b) Neste caso, x̃ = 0.19999 e x = 0.2 pelo que |E| = 10−5 , ou seja, s = 4, embora os dois
números não tenham nenhum dígito decimal igual.
1.5 A norma IEEE 754 27

1 8 23
Simples: S Expoente Mantissa
Figura 1.5.1: Formatos
da norma IEEE 754 (S
1 11 52
indica o sinal)
Duplo: S Expoente Mantissa

1.5 A norma IEEE 754


Os fabricantes de computadores têm adoptado sistemas de ponto flutuante muito variados,
diferindo na base, nos números de dígitos p da mantissa e q do expoente, nas regras de
arredondamento, etc. Uma consequência imediata desta situação é a de os resultados
em aritmética de ponto flutuante poderem depender do computador utilizado, o que não
é desejável. Para obviar a este estado de coisas foi feito um esforço de uniformização
que culminou com a publicação da norma IEEE 754 em 1985 (ver a nota a este respeito
na Secção 1.8). É esta norma, cada vez mais adoptada, que vamos passar a descrever
sucintamente.

Formatos
A norma IEEE 754 define dois formatos básicos para os números em ponto flutuante: o
formato simples, com 32 bits, e o formato duplo, com 64 bits, mostrando a Figura 1.5.1
o modo como os bits são alocados. Além dos formatos básicos, esta norma define ainda
mais dois formatos alargados: o alargado simples e o alargado duplo. O leitor interessado
encontrará na norma referida uma descrição mais pormenorizada. O Problema 1.9.39 dá
uma explicação para a forma como é feita a distribuição dos bits: primeiro o sinal, depois
o expoente e, só no fim, a mantissa, diversa do modo de escrita habitual.

• A base da representação é binária, i.e., b = 2.

• O primeiro bit é usado para o sinal: 0 para números positivos e 1 para números
negativos.

• No formato simples, os 8 bits seguintes são reservados para a representação e do


expoente t.

• As representações dos expoentes e = 00000000 (= 0) e e = 11111111 (= 255) são


reservadas para uso especial que referiremos mais à frente.
28 Aritmética computacional

• O menor expoente ‘normal’ representado é e = 00000001 (= 1), que a norma faz


corresponder ao expoente mínimo tmin = −126, e o maior expoente ‘normal’ repre-
sentado é e = 11111110 (= 254), que a norma faz corresponder ao expoente máximo
tmax = 127, ou seja, t = e − tmax ; diz-se, neste caso, que o expoente é enviesado. É
conveniente observar que tmin 6= −tmax , i.e., a gama de expoentes não é simétrica
em torno da origem.

• A mantissa dispõe de 23 bits e é normalizada (exceptuando alguns casos especiais


de que falaremos adiante), o que significa que o primeiro bit da mantissa é 1. Por-
tanto, sendo este bit conhecido, não é necessário armazená-lo explicitamente: é pois
implícito e suposto estar à esquerda do ponto. O primeiro bit da mantissa é, assim,
o bit implícito o qual é seguido pelos 23 bits explícitos. Este facto tem as seguintes
duas consequências: a primeira é a de que, embora apenas se usem 23 bits para a
representação da mantissa, p = 24 graças ao bit implícito; a segunda é a de que se
torna necessário uma representação peculiar para o zero (ver mais à frente).

Em resumo, a norma IEEE 754 permite representar, em formato simples, números


normalizados na forma
x = (−1)s (d0 .d−1 . . . d−(p−1) )2 2t (1.5.1)
em que s ∈ {0, 1} é o sinal, −126 = tmin ≤ t ≤ tmax = 127 é o expoente e os d−k são
bits, i.e., d−k ∈ {0, 1} com d0 = 1. A mantissa corresponde a m = d0 20 + f = 1 + f , com
f = d−1 2−1 + · · · d−(p−1) 2−(p−1) a parte fraccionária da mantissa, i.e., a parte da mantissa
explicitamente representada no computador, excluindo, portanto, o bit implícito.

Zero. A configuração com o expoente e com todos os bits a zero e a parte fraccionária f
também com todos os bits a zero, (i.e., d−k = 0, k = 1, . . . , p−1), é usada para representar
o valor +0 (se s = 0) e o valor −0 (se s = 1). Neste caso, o bit implícito deve ser tomado
como d0 = 0.
A existência de dois zeros obriga a norma IEEE 754 a definir que a operação de
comparação tome −0 = +0 e não −0 < +0.

Formato duplo. O formato duplo tem uma estrutura semelhante à do formato simples
mas emprega 64 bits: 1 para o sinal, 11 para o expoente e 52 para a mantissa. Assim,
o expoente pode variar entre tmin = −1022 e tmax = 1023, e a mantissa, por via do bit
implícito, dispõe de 53 bits, ou seja, p = 53.

Arredondamento
A norma IEEE 754 especifica também as regras a que a aritmética de ponto flutuante deve
obedecer. Em primeiro lugar, prescreve que, se o resultado de uma operação tiver rep-
resentação exacta, então o resultado dessa operação deve ser exactamente esse resultado.
1.5 A norma IEEE 754 29

Esta disposição pode parecer trivial, mas sucede que há computadores cuja aritmética
não obedece a este, aparentemente simples, requisito! Em segundo lugar, se o resultado
de uma operação aritmética não tiver representação exacta, a norma estabelece quatro
modos de arredondamento que devem ser todos implementados:

• Arredondamento simétrico, nos moldes expostos atrás.

• Truncatura (ou arredondamento na direcção de 0).

• Arredondamento para cima, i.e., o resultado é sempre arredondado para o número


representável imediatamente acima (arredondamento na direcção de +∞).

• Arredondamento para baixo, i.e., o resultado é sempre arredondado para o número


representável imediatamente abaixo (arredondamento na direcção de −∞).

O utilizador deve poder optar por um destes 4 modos, embora normalmente a opção por
omissão seja a do arredondamento simétrico, por ser a mais favorável do ponto de vista
numérico. Em qualquer caso, a representação deve obedecer a

fl(x) = (1 + e)x, com |e| < u (1.5.2)

A norma determina ainda que o resultado de uma operação aritmética elementar deve
ser igual ao valor arredondado do resultado exacto, i.e., deve ser sempre satisfeita a
condição
fl(x op y) = (x op y)(1 + e), com |e| < u (1.5.3)
em que op designa qualquer uma das operações aritméticas elementares (+, −, × e /) e
x e y os respectivos operandos com representação exacta. Esta regra, que consubstancia
o modelo de aritmética da norma IEEE 754, obriga os fabricantes a projectar as suas
unidades de ponto flutuante em conformidade, nomeadamente no que respeita aos dígitos
de guarda e outros pormenores técnicos.

Underflow, overflow e NaN


A situação de underflow, representada por um expoente e = 00 . . . 0 e parte fraccionária
f não nula, acontece quando o resultado de uma operação é inferior ao menor número
representável, 2−126 no caso do formato simples e 2−1022 no caso do formato duplo. A
solução tradicional era a de produzir como resultado o número 0, método seguido ainda
hoje por alguns fabricantes e que é conhecido pela designação de underflow súbito.
A norma IEEE 754 prescreve a técnica de underflow gradual que consiste, no caso de
ocorrer underflow, em desistir de ter mantissas normalizadas. Por exemplo, se o resultado
de uma operação em formato simples fosse 2−128 , então este seria representado pelo número
não normalizado 0 00000000 010 . . . 0, em que o expoente com todos os bits nulos serve para
indicar que o número não é normalizado (designado, na nomenclatura da norma IEEE, por
30 Aritmética computacional

Expoente Parte fraccionária Representa


t = tmin − 1 f =0 (−1)s 0
t = tmin − 1 f 6= 0 (−1)s f 2tmin
Tabela 1.5.1: Casos previstos tmin ≤ t ≤ tmax – (−1)s (1 + f )2t
na norma IEEE 754 t = tmax + 1 f =0 (−1)s ∞
t = tmax + 1 f 6= 0 NaN

número desnormalizado ou, por alguns autores, por número subnormal ). Assim, esta
configuração especial deve ser interpretada como representando um número cujo expoente
é o menor possível, 2−126 , e cuja mantissa é 2−2 , ou seja, o número 2−128 . Deste modo,
o menor número positivo representável em formato simples é 2−149 . Números inferiores a
este são postos a zero. Convém referir que a introdução da técnica de underflow gradual,
por encarecer substancialmente o hardware, não foi pacífica. No entanto, as vantagens do
ponto de vista numérico prevaleceram sobre os aspectos económicos.
A condição de overflow é representada pela configuração de bits do expoente e =
11 . . . 1 (= 255), razão pela qual esta configuração do expoente havia sido reservada. Se
a parte fraccionária f for exactamente 0, então esta configuração representa (−1)s ∞. A
norma especifica que as regras usuais com operações envolvendo ±∞ sejam respeitadas,
como sejam, 1/(+∞) = +0, 1/(−∞) = −0, 1/(+0) = +∞, 1/(−0) = −∞.
No caso de um cálculo produzir um expoente e = 11 . . . 1 (= 255) mas uma parte
fraccionária f não nula, a norma indica uma de duas alternativas possíveis deixadas ao
cuidado do fabricante do computador: uma situação de erro com interrupção do programa
ou a emissão de um código especial de NaN (Not a √ Number ). Situações típicas de NaN
são, por exemplo: 0/0, 0 × ∞, ∞/∞, +∞ + (−∞), x quando x < 0, etc.
A Tabela 1.5.1 resume as situações previstas na norma IEEE 754, nomeadamente os
casos especiais.

Exemplo 1.5.1 Dado os números escrito em formato simples IEEE 754, obter as suas
representações decimais: a) 1 10000010 1010 . . . 0; b) 0 00000000 010010 . . . 0.

a) O número é negativo, pois o bit de sinal é 1. Como (10000010)2 = 130, o expoente é


t = 130 − 127 = 3. A mantissa é m = (1.1010 . . . 0)2 = 1.625. Portanto, estamos perante o
número −(1.101)2 × 23 = −1.625 × 8 = −13.
b) O número é positivo, pois o bit de sinal é 0. Como o expoente é e = 0 e a parte fraccionária
f 6= 0, trata-se de um número desnormalizado (2−2 + 2−5 )× 2−126 ≈ (3.306077862)× 10−39 .

1.6 Propagação de erros


A técnica desenvolvida na Secção 1.4 para obter majorantes do erro é bastante complicada
e totalmente inaplicável em expressões com uma certa complexidade. Imaginemos o que
1.6 Propagação de erros 31

seria tentar obter majorantes para os erros no cálculo de funções do género


 
y = f (x) = sin ln(x + tan x0.3 ) + cosh(x + 1)

É impensável tentar decompor esta função nas suas operações elementares e reproduzir
uma análise semelhante à efectuada atrás.
Esta secção vai incidir sobre o problema de estimar os erros cometidos ou de, pelo
menos, avaliar a influência dos erros de arredondamento no resultado final obtido. Para
tal, tomaremos como axiomas os seguintes factos já apurados (recordar as expressões
(1.5.2) e (1.5.3)) e que qualquer aritmética computacional deve satisfazer, como é o caso
das que obedecem à norma IEEE 754:

fl(x) = (1 + e)x, com |e| < u (1.6.1)


fl(x1 op x2 ) = (x1 op x2 )(1 + e), com |e| < u (1.6.2)

em que, nesta última expressão, op designa qualquer uma das operações aritméticas ele-
mentares (+, −, × e /) e x1 e x2 os respectivos operandos com representação exacta.
Notemos que e não assume necessariamente o mesmo valor nestas duas expressões.

Problemas bem postos


Assim, suponhamos que, dado x, se pretende calcular y o qual é obtido na forma explícita
por meio de y = f (x) ou, como acontece frequentemente, por via da forma implícita
φ(x, y) = 0. Então, no caso de se verificar cumulativamente que:

1. dado x ser possível obter y;

2. o valor de y ser único;

3. os resultados y dependerem continuamente dos dados x;

diz-se que o problema de obter y, dado x, é bem posto (no sentido de HADAMARD
(1923)).
Se y = f (x), e uma vez que f é, por definição, uma função, as duas primeiras condições
acima estão trivialmente verificadas e só resta apurar se f é contínua. Se tal acontecer,
então o problema é bem posto. Se y for definido implicitamente por φ(x, y) = 0, é preciso
averiguar se esta equação permite exprimir y como função contínua de x, um estudo
potencialmente mais difícil que envolve o teorema das funções implícitas. Por palavras
simples: num problema bem posto ‘pequenas’ perturbações nos dados devem provocar
‘pequenas’ variações nos resultados; se tal não suceder, o problema diz-se então mal posto.
Hadamard pensava que os problemas mal postos não teriam realidade física e seriam, de
algum modo, problemas artificiais, ideia que se veio a reconhecer mais tarde como não
sendo totalmente correcta.
32 Aritmética computacional

Dada a sua extrema sensibilidade a perturbações nos dados, a solução numérica de um


problema mal posto apresenta maiores dificuldades já que os erros inerentes à aritmética
de precisão finita constituem uma fonte incontornável de perturbações. Se o problema for
mal posto, então impõe-se reformulá-lo de modo a obter um problema bem posto, o que
pode não ser uma tarefa simples.

1.6.1 Análise indirecta ou regressiva de erros


Uma resposta para a questão de avaliar os erros no cálculo de y = f (x) é dada pela
chamada análise indirecta ou regressiva de erros, assim designada em oposição à análise
directa ou progressiva anteriormente estudada.
Suponhamos que a expressão y = f (x) traduz o problema de calcular o resultado y
a partir do dado x, i.e., a função f associa a um valor x um (único) valor y. Os valores
possíveis para x constituem o conjunto dos dados, que naturalmente tomaremos como o
domínio X de f , e os valores resultantes para y através da aplicação desta função formarão
o conjunto dos resultados possíveis, ou seja, o contradomínio Y desta função. Quando se
efectuam os cálculos em aritmética de precisão finita, caracterizada basicamente pela uni-
dade de arredondamento u, obtemos, em vez dos valores exactos y, os valores aproximados
ỹ. Nestas condições, podemos dizer que

ỹ = fu (x)

em que fu é a função que exprime o algoritmo efectivamente utilizado. Esta função inclui
assim os efeitos da aritmética de precisão finita e a notação ajuda a reter o facto de que
fu depende de u como parâmetro.
Esta função fu é peculiar por várias razões. Por um lado, se não for constante, a sua
variação faz-se por saltos que, no mínimo, correspondem à alteração do último dígito sig-
nificativo, ou seja fu é uma função constante por troços. Por outro lado, como um mesmo
resultado ỹ pode ser produzido por mais do que uma perturbação nos dados, a função fu
não é necessariamente injectiva mesmo quando f é. Deste modo, fu carece das proprie-
dades tão úteis na Análise Matemática como sejam a continuidade, a diferenciabilidade e
a invertibilidade.
Sendo assim, o problema de relacionar ỹ = fu (x) com y = f (x) afigura-se como
geralmente impossível. Ora, é aqui que intervém a ideia–chave da análise indirecta ou
regressiva. Como vimos atrás, para algumas operações relativamente simples, o resultado
aproximado era igual ao resultado que se obteria usando aritmética exacta mas com
operandos ou dados ligeiramente perturbados (recordar as expressões (1.4.11), (1.4.13),
(1.4.14), (1.4.16), (1.4.19) e (1.4.22)).
Se tal for o caso (o que só pode ser determinado face à situação concreta em estudo),
então ỹ é o resultado exacto de aplicar a função f a x̃, em que x̃ representa um valor que
difere ‘ligeiramente’ de x, i.e.,
ỹ = f (x̃)
1.6 Propagação de erros 33

f y

fu y
~
Figura 1.6.1: Esquema da x
análise indirecta de erros f
x~
Y
X

sob reserva de que ỹ ∈ Y e x̃ não ser necessariamente único. O que acabamos de dizer
está esquematizado na Figura 1.6.1 e é, por vezes, referido como o princípio de Wilkinson:
a solução calculada é a solução exacta de um problema ‘ligeiramente’ diferente.
A ỹ −y é costume dar o nome de erro progressivo absoluto e a x̃−x o de erro regressivo
absoluto, por razões agora evidentes, recebendo os respectivos erros relativos a definições
óbvias (ỹ − y)/y e (x̃ − x)/x, respectivamente.

Números de condição de funções f : R → R


Pelo que se acabou de dizer, faz sentido estudar o efeito nos resultados de perturbações
nos dados, independentemente da origem destas provir da aritmética utilizada ou não. Se
tivermos em mente medir perturbações absolutas ou relativas, então a definição seguinte
constitui a via natural, onde h é a perturbação de x, tendencialmente ‘muito pequena’.

Definição 1.6.1 Seja f : R → R. O valor



f (x + h) − f (x)
conda f (x) = lim sup (1.6.3)

h

δ→0 |h|≤δ

designa-se por número de condição absoluto da função f no ponto x. O valor



f (x + h) − f (x)  h
condr f (x) = lim sup (1.6.4)

f (x) x

δ→0 |h|≤δ

designa-se por número de condição relativo da função f no ponto x.

Como se vê, o número de condição absoluto relaciona as perturbações absolutas de f


com as perturbações absolutas de x, enquanto o número de condição relativo relaciona as
perturbações relativas de f com as perturbações relativas de x e ambos traduzem factores
de ampliação, nos resultados, de ‘pequenas’ perturbações nos dados.
34 Aritmética computacional

No caso de f ser uma função continuamente diferenciável, o que garante que o problema
é bem posto, o seu desenvolvimento em série de Taylor permite dizer que
f (x + h) = f (x) + f ′ (x)h + O(h2 )
f (x + h) − f (x) (1.6.5)
= f ′ (x) + O(h)
h
pelo que
f (x + h) − f (x)
sup = |f ′ (x)| + O(δ)

h

|h|≤δ

e, tomando limδ→0 nesta expressão, chegamos ao resultado simples

conda f (x) = |f ′ (x)| (1.6.6)

Retornando a (1.6.5), podemos escrever que

|f (x + h) − f (x)| ≤ conda f (x)|h| + O(h2) (1.6.7)

Logo, é o valor de conda f (x) que determina, a menos de termos de ordem superior, a
forma como as perturbações nos dados se propagam aos resultados. Se o valor deste
parâmetro for grande, então existe um efeito de ampliação das perturbações, mas se,
pelo contrário, for pequeno, então as perturbações não serão apreciavelmente ampliadas,
podendo mesmo ser reduzidas (se conda f (x) < 1).
Com o fito de aliviar a notação, a expressão (1.6.7) é, por vezes, escrita na forma

|f (x + h) − f (x)| / conda f (x)|h| (1.6.8)

em que o símbolo / traduz uma desigualdade verificada a menos de termos de ordem


superior em h.
Tirando partido da dedução efectuada, não oferece dificuldade concluir que, ainda
para f continuamente diferenciável, se tem que

xf ′ (x)
condr f (x) = (1.6.9)

f (x)

Notemos que
x
condr f (x) = conda f (x) (1.6.10)

f (x)

A expressão equivalente a (1.6.7) é agora



f (x + h) − f (x) |h|

≤ condr f (x) + O(h2 /|x|) (1.6.11)
f (x) |x|

Como se verifica, a propagação das perturbações relativas é determinada por condr f (x).
1.6 Propagação de erros 35

Tal como se fez acima, é lícito o emprego da notação aligeirada



f (x + h) − f (x) |h|
/ condr f (x) (1.6.12)

f (x) |x|

Nota: Chamamos a atenção para o facto de, expressões como (1.6.9), (1.6.10) e outras,
envolverem divisões por quantidades que poderão ser nulas, o que obriga a uma
verificação cuidadosa da sua validade em cada caso concreto em que tal aconteça.

As expressões (1.6.1) e (1.6.2) tornam evidente que a aritmética computacional limita


os erros relativos e não os absolutos, pelo que a noção de número de condição relativo
acaba por ser mais relevante no presente contexto. Deste modo, sempre que nada for dito
em contrário, quando falarmos de número de condição subentenderemos que se trata de
número de condição relativo e utilizaremos a simbologia mais simples cond f (x) para o
denotar.
Uma função diz-se mal condicionada se o seu número de condição for muito elevado,
e bem condicionada, se o seu número de condição for pequeno, sendo os qualificativos
‘muito elevado’ e ‘pequeno’ necessariamente vagos e, por conseguinte, dependentes do
problema concreto em análise. Vejamos alguns exemplos para esclarecer bem estas noções
fundamentais.

Exemplo √ 1.6.1 Determinar o número de condição das funções:


a) f (x) = x; b) f (x) = x2 ; c) f (x) = (x − a)2 ; d) f (x) = exp x

Aplicando a expressão (1.6.4), chegamos sem dificuldade às seguintes conclusões:



a) f ′ (x) = 1/(2 x) , cond f (x) = 1/2
Este resultado mostra que os erros relativos no cálculo da raiz quadrada de um número
tendem a ser reduzidos a metade e, portanto, esta função é bem condicionada.
b) f ′ (x) = 2x , cond f (x) = 2
Neste caso os erros relativos tendem a ser ampliados para o dobro, o que não é muito grave,
pelo que esta função pode ser considerada bem condicionada.
c) f ′ (x) = 2(x − a) , cond f (x) = 2|x/(x − a)|.
Esta função é bem condicionada excepto na vizinhança de x = a o que contrasta com o
exemplo da alínea anterior. Então não é f (x) = (x−a)2 uma simples translação de f (x) = x2 ?
Como é que a condição destas funções pode diferir tanto? Explicação: pensar em termos de
erros relativos.
d) f ′ (x) = exp x , cond f (x) = |x|.
Quanto maior for o valor de x, maior é o número de condição e mais mal condicionada a
função exponencial se torna.

O exemplo seguinte ajuda a perceber o que se entende por número de condição baixo
e número de condição elevado.

Exemplo 1.6.2 Mostrar a influência do arredondamento dos dados.


36 Aritmética computacional

Suponhamos que f (x) é calculada por um algoritmo fu (x) que arredonda o valor de x mas que
efectua todos os demais cálculos sem quaisquer erros. Quer isto dizer que fu (x) = f (fl(x)) =
f (x + h) em que h denota o erro de arredondamento cometido o qual, por via de (1.6.1),
verifica |h| ≤ u|x|. A expressão (1.6.12) permite dizer que

fu (x) − f (x)
≈ cond f (x)u
f (x)

Por conseguinte, o erro relativo propagado ao resultado pelo simples arredondamento inicial
de x pode ser ampliado ou reduzido, tudo dependendo do valor de cond f (x).
Para fixar ideias, suponhamos que u é da ordem de grandeza determinada no Exemplo 1.4.3,
i.e., u ≈ 10−6 . Se cond f (x) ≈ 10p , então o erro relativo no resultado pode ser 10p−6 . Dito
por palavras singelas: por cada potência de 10 no número de condição, podemos perder até
um dígito decimal no resultado. Em particular, se cond f (x) ≈ 106 , o resultado final pode
estar totalmente errado, ou seja, não ter nenhum dígito correcto.

Um problema bem posto pode assim estar a ser resolvido por recurso a uma formulação,
leia-se y = f (x), mal condicionada, o que é indesejável, ou por uma formulação bem
condicionada, o que é tranquilizador.
Ao aplicar as noções de problema bem ou mal posto ou de função bem ou mal condi-
cionada é preciso ter em atenção de que situação estamos a tratar: o caso explícito
y = f (x), como nos dois exemplos anteriores, ou o caso implícito φ(x, y) = 0 em que
φ(x, f (x)) = 0, como se verá no exemplo seguinte.

Exemplo 1.6.3 Determinar o número de condição da raiz positiva z da equação x4 +


x3 − a = 0, em que a > 0.

Uma análise elementar do primeiro membro desta equação permite confirmar que existe, de
facto, uma única solução positiva, que denotaremos por z. Resulta também, das propriedades
das equações polinomiais, que z é uma função contínua de a. Estamos, pois, perante um
problema bem posto. Como, por definição de raiz, se deve ter que z 4 + z 3 − a = 0, concluímos
que z é uma função de a determinada implícitamente por φ(a, z) = z 4 + z 3 − a = 0. O
problema consiste em obter o número de condição de z = f (a) sem passar pela determinação
explícita de f . Ora, por derivação de φ em ordem a a, temos que

4z 3 f ′ (a) + 3z 2 f ′ (a) − 1 = 0

donde resulta que


f ′ (a) = 1/(4z 3 + 3z 2 )
A definição de número de condição dá

af (a) a a a a 1
cond f (a) = = = 4 = = <
f (a) (4z 3 + 3z 2 )z 4z + 3z 3 3(z 4 + z 3 ) + z 4 3a + z 4 3
Este resultado permite-nos concluir que a raiz z é, como função de a, bem condicionada.
1.6 Propagação de erros 37

Número de condição de funções f : Rn → R


O número de condição foi definido atrás para funções f : R → R. Todavia, as operações
que tratámos – soma, subtracção, multiplicação, divisão, somatório e produto interno –
são de facto funções com mais do que um argumento. Tem pois cabimento perguntar
como é que o conceito se generaliza a funções f : Rn → R cujas variáveis independentes
 T
denotaremos pelo vector x = x1 x2 · · · xn . Se tivermos em consideração que a
essência do conceito de número de condição está em relacionar variações do resultado
com variações dos dados, a seguinte definição é apropriada:
 T
Definição 1.6.2 Seja f : Rn → R e x = x1 x2 · · · xn ∈ Rn . O valor

|f (x + δh) − f (x)|
conda f (x) = lim sup (1.6.13)
δ→0 khk=1 kxk

designa-se por número de condição absoluto da função f no ponto x. O valor

|f (x + δh) − f (x)| |δ|



condr f (x) = lim sup (1.6.14)
δ→0 khk=1 |f (x)| kxk

designa-se por número de condição relativo da função f no ponto x.

Notemos que: o valor do número de condição depende agora da norma em Rn utilizada


nesta definição; o tamanho das perturbações em x é dado pelo valor de δ uma vez que
khk = 1; a passagem ao limite δ → 0 traduz o facto de estarmos preocupados apenas com
‘pequenas’ perturbações nos dados.
Se f for diferenciável, a definição de derivada (gradiente) permite escrever que

f (x + δh) − f (x)
= grad f (x)T h + O(δ) (1.6.15)
δ
donde se deduz que
conda f (x) = sup | grad f (x)T h| (1.6.16)
khk=1

Por um raciocínio idêntico, chegamos a

kxk | grad f (x)T h|


condr f (x) = sup (1.6.17)
khk=1 |f (x)|

Vejamos alguns exemplos para confirmar a bondade da Definição 1.6.2 e expressões


subsequentes, concentrando-nos, pelas razões já expostas, no número de condição relativo.
Comecemos pela operação de adição

y = f (x) = f (x1 , x2 ) = x1 + x2
38 Aritmética computacional

que engloba o caso da soma e da subtracção tratados anteriormente. Obtemos assim


 T
grad f (x) = 1 1 , grad f (x)T h = h1 + h2

Suponhamos que optamos por utilizar a norma euclideana em R2 . Nesta hipótese,



sup |h1 + h2 | = 2
khk=1

e, por conseguinte, √
2kxk
cond f (x) = ≤1
|x1 + x2 |
Este resultado permite concluir que a adição de números com o mesmo sinal é uma oper-
ação bem condicionada. Tal pode não suceder no caso de números com sinais diferentes
e de valor absoluto muito próximo. Confirma-se assim aquilo que foi dito a propósito da
diferença essencial entre a soma e a subtracção, ou seja, a possível ocorrência de cancela-
mento subtractivo quando x1 + x2 ≈ 0.
Passemos agora à multiplicação em que
y = f (x) = f (x1 , x2 ) = x1 x2
e, portanto,
 T
grad f (x) = x2 x1 , grad f (x)T h = x2 h1 + x1 h2
Não custa ver, continuando a utilizar a norma euclideana, que
|x1 x2 |
sup |x2 h1 + x1 h2 | = 2
khk=1 kxk
pelo que
cond f (x) = 2
Podemos assim concluir que a multiplicação é uma operação bem condicionada.
Um raciocínio idêntico, que se deixa como exercício, mostra que o número de condição
da divisão é igual a 2, donde decorre que esta operação é bem condicionada.

Precisão de algoritmos
Um algoritmo fu (x) para calcular f (x) pode ter boa precisão, i.e., produzir resultados
próximos, ou pelo contrário, pode fornecer resultados muito afastados, dos resultados
exactos. É claro que os qualificativos ‘próximos’ e ‘afastados’ têm a ver com a precisão da
aritmética a qual, como sabemos, é traduzida pela unidade de arredondamento u. Assim,
faz sentido dizer que um algoritmo fu (x) calcula f (x) com precisão, ou é preciso, se
|fu (x) − f (x)| = O(u)|f (x)|, ∀x ∈ X (1.6.18)
1.6 Propagação de erros 39

Quer isto dizer que o algoritmo fu calcula f com precisão arbitrariamente elevada desde
que a aritmética seja suficientemente boa, leia-se u suficientemente pequeno. Ou seja, se
não obtivermos a precisão desejada, a culpa é da aritmética e não do algoritmo.
Esta noção, tão natural à primeira vista, acaba por ser demasiado exigente. De facto,
se f (x) = 0, a relação (1.6.18) obriga a que fu (x) = 0, i.e., o algoritmo teria que produzir
neste caso o valor exacto, o que só fortuitamente poderá acontecer.
Vamos ver a seguir que é possível adoptar conceitos que, procurando quantificar a
precisão de algoritmos, não nos levem a situações irrealistas.

Estabilidade de algoritmos
Um conceito alternativo que visa traduzir a importância dos erros produzidos pela arit-
mética de precisão finita é o da estabilidade de algoritmos.

Definição 1.6.3 Seja fu um algoritmo que calcula f : X → Y . Se, ∀x ∈ X,

|fu (x) − f (x̃)| = O(u)|f (x̃)| (1.6.19)

para algum x̃ ∈ X tal que |x̃ − x| = O(u)|x|, o algoritmo fu diz-se progressivamente


estável.
Se, em vez de (1.6.19), e mantendo todas as restantes condições, for válida a relação

|fu (x) − f (x̃)| = 0 (1.6.20)

então o algoritmo fu diz-se regressivamente estável.

Isto quer dizer que um algoritmo progressivamente estável produz soluções aproxima-
das com dados ‘ligeiramente’ diferentes dos dados do problema original e um algoritmo
regressivamente estável produz soluções exactas com dados ‘ligeiramente’ diferentes dos
dados do problema original. Como se vê, este conceito é mais exigente que o de esta-
bilidade progressiva. De facto, um algoritmo regressivamente estável é necessariamente
progressivamente estável pois (1.6.20) corresponde a tornar nulo o segundo membro de
(1.6.19).
Quando não existir estabilidade (progressiva ou regressiva) diz-se que um algoritmo é
instável (progressivamente ou regressivamente).
Tendo presente (1.6.19), com um algoritmo regressivamente estável verifica-se que

|fu (x) − f (x̃)| ≤ |f (x)| cond f (x)O(u) + O(u2)

ou, se preferirmos uma notação mais ligeira,

|fu (x) − f (x̃)| / |f (x)| cond f (x)O(u)

donde decorre que o erro neste caso depende basicamente do número de condição de f .
40 Aritmética computacional

Convém frisar que os conceitos de condição e estabilidade, embora relacionados, não


são inteiramente equivalentes. Em primeiro lugar, porque a um dado problema podem
corresponder vários algoritmos, podendo uns ser estáveis e outros instáveis. Ora, um
problema ou é bem condicionado ou mal condicionado e, se for mal condicionado, não há
algoritmo que permita obter bons resultados. Em segundo lugar, um algoritmo instável
pode arruinar a solução de um problema bem condicionado. Ilustremos estas ideias com
alguns exemplos.

Exemplo 1.6.4 Determinar a estabilidade da representação de números em sistemas de


ponto flutuante.

Temos simplesmente que


f (x) = x, fu (x) = fl(x)
e, volvendo à relação (1.6.1), reconhecemos estarmos perante um caso em que

fu (x) − f (x) = O(u)f (x)

Este resultado mostra que a conversão ao sistema de ponto flutuante é um algoritmo preciso.
Tomando, na Definição 1.6.3, x̃ = fl(x) = (1+ e)x vem que x̃ − x = O(u). Constatamos assim
que fu é regressivamente estável e, por maioria de razão, progressivamente estável. Estranho
seria aliás que a operação elementar de conversão ao sistema de ponto flutuante não gozasse
de todas estas boas propriedades!

Exemplo 1.6.5 Determinar a estabilidade do cálculo de f (x) = sin x na vizinhança de


π/2.

Suponhamos que o algoritmo fu está tão bem feito que

fu (x) = fl(f (x)) = fl(sin x)

ou seja, que devolve o valor arredondado do resultado exacto, uma situação feliz que nem
sempre acontece. Neste caso, verifica-se que fu (x) = f (x)(1 + e) com |e| = O(u) e, portanto,

fu (x) − f (x) = O(u)f (x)

o que permite imediatamente concluir que fu é preciso.


Vejamos se fu é progressivamente estável. A seguinte sequência de expressões não suscita
qualquer dificuldade

fu (x) − f (x̃) = f (x)(1 + e) − f (x̃) (a)



= (1 + e)[f (x̃) + f (x̃)O(x − x̃)] − f (x̃)
= (1 + e)f ′ (x̃)O(x − x̃) + ef (x̃)
1.6 Propagação de erros 41

Tomemos a vizinhança de π/2 definida por |x − π/2| ≤ δ com δ = O(u)π/2 = O(u). Tendo
em conta que f ′ (x) = cos x, deduzimos que |f ′ (x)| ≤ δ = O(u), donde

|fu (x) − f (x̃)| = O(u)|f (x̃)|

o que prova a estabilidade progressiva.


Para haver estabilidade regressiva, deve verificar-se que fu (x) = f (x̃). Da expressão (a)
acima resulta ainda que

0 = f ′ (x)(x̃ − x) + O((x − x̃)2 ) + f (x)e

Esta relação implica que, na vizinhança que estamos a considerar,


O((x − x̃)2 ) + f (x)e

|x − x̃| =
|x|
xf ′ (x)

Ora, como |f ′ (x)| = O(u), o primeiro termo do segundo membro não é O(u) mas sim O(1).
Portanto, o algoritmo não é regressivamente estável.

Exemplo 1.6.6 Calcular em F P (10, 4, 2, T ) as raízes da equação do segundo grau

x2 + bx + c = 0 com b = −(0.9432)101, c = (0.1000)10−3

As raízes são dadas pela fórmula resolvente


1
x1,2 = (−b ± d), com d = (b2 − 4c)1/2
2
a qual nos permite obter os números de condição relevantes. Comecemos por estudar x1
como função de b. Então,

b ∂x1 /∂b b
cond x1 (b, c) =
= ≈1
x1 d

o que significa que x1 é bem condicionada face a perturbações de b. Para x1 como função de
c, temos que
c ∂x1 /∂c 2c −6
cond x1 (b, c) = = d(b − d) ≈ 10

x1
o que significa que x1 é extremamente bem condicionada face a perturbações de c. Repetindo
este processo para x2 como função de b, obtemos

b ∂x2 /∂b b
cond x2 (b, c) =
= ≈1
x2 d

e como função de c,
c ∂x2 /∂c 2c
cond x2 (b, c) = = d(b + d) ≈ 1

x2
42 Aritmética computacional

Em ambos os casos, x2 é bem condicionada.


Vejamos agora o que se passa em termos numéricos com precisão finita. Efectuando todas as
operações em F P (10, 4, 2, T ), temos a seguinte sequência de cálculos:

b2 = (0.8896)102
4c = (0.4000)10−3
b2 − 4c = (0.8896)102
d = (b2 − 4c)1/2 = (0.9431)101
x1 = (−b + d)/2 = (0.9430)101
x2 = (−b − d)/2 = (0.5000)10−3

Por outro lado, os valores exactos são, mostrando apenas 4 dígitos,

x1 = (0.9431)101 e x2 = (0.1060)10−4

O valor de x1 calculado difere apenas no quarto dígito, mas o de x2 difere em todos. No


entanto, x2 é bem condicionada! Por outro lado, se calcularmos esta raiz pela fórmula do
produto das raízes x1 x2 = c, vem que
c
x2 = = (0.1060)10−4
x1
recuperando-se desta maneira a precisão perdida. Concluímos que o algoritmo utilizado era
estável para o cálculo de x1 mas instável para o cálculo de x2 , sendo fácil agora imputar a
dificuldade deste caso ao cancelamento subtractivo na expressão −b − d.
Este exemplo mostra que: uma má escolha de algoritmo pode arruinar a solução de um pro-
blema bem condicionado; descoberta a origem das dificuldades, uma abordagem alternativa,
neste caso sugerida por uma modificação trivial, pode ser suficiente para obter estabilidade
e, assim, manter a precisão ao nível máximo permitido pela aritmética utilizada.

1.6.2 Alguns aspectos práticos


Os aspectos teóricos abordados nas subsecções anteriores não dispensam algumas consi-
derações de índole mais prática.

Natureza estatística dos erros


A estimativa de erros através de majorantes, se bem que muito útil, sofre no entanto de
um grave inconveniente do ponto de vista prático, o qual reside no seu carácter pessimista.
Este facto não deve causar surpresa já que, conforme pudemos explicar, a obtenção dos
majorantes é feita optando, em cada passo da análise, sempre pelo caso mais desfavorável.
Num cálculo de alguma complexidade é altamente improvável que os erros efectivamente
cometidos produzam, em todas as situações, os piores efeitos possíveis. Por exemplo,
1.7 Algoritmos 43

no somatório de números é muito natural que os erros sejam de sinais diferentes, i.e.,
uns sejam por defeito, e outros, por excesso, de modo que é razoável esperar alguma
compensação mútua e um erro final bem inferior ao estimado pelo majorante. Neste
contexto recordamos o que dissemos a propósito da vantagem do arredondamento sobre
a truncatura.
Estas observações levam-nos a considerar que uma análise estatística de erros per-
mitiria obter estimativas mais realistas. De facto assim é, estando todavia este tópico
fora do âmbito do presente texto. Não deixaremos, no entanto, de mencionar, a título
de ilustração do que acabamos de dizer, um resultado típico. Se admitirmos que o erro
de arredondamento se distribui com igual probabilidade entre −u e +u, é possível de-
monstrar neste √ caso que o erro relativo provável no somatório de n números positivos é
proporcional a n. Recordando que o majorante determinado na secção anterior aponta
para um erro máximo proporcional a n, podemos ajuizar da enorme diferença que pode
existir entre o erro provável e o erro máximo, sobretudo quando o valor de n for elevado.

Avaliação prática do efeito dos erros de arredondamento


Em algoritmos de uma certa complexidade, qualquer dos métodos de análise de erros,
directo, indirecto ou estatístico, dificilmente poderá ser aplicado. Nesta circunstância,
que podemos fazer para verificar a influência dos erros de arredondamento nos resulta-
dos? Existem basicamente duas técnicas empíricas que, embora não totalmente seguras,
contribuem para este objectivo.
A primeira, dirigida principalmente à verificação da influência da precisão finita, con-
siste em resolver o problema em causa com precisão aumentada, adoptando, por exem-
plo, precisão dupla para todas as variáveis. Se os resultados vierem substancialmente
alterados, então podemos concluir que o nosso algoritmo é muito sensível aos erros de
arredondamento, e neste caso há que examinar o problema a fim de averiguar se é apenas
o algoritmo que é instável ou se é o próprio problema que é mal condicionado e tomar as
medidas adequadas.
A segunda técnica consiste em produzir pequenas perturbações aleatórias nos dados e
analisar a sua influência nos resultados. Uma grande variação destes aponta para insta-
bilidade do algoritmo e/ou mau condicionamento do problema, tal como atrás.
Devemos sublinhar que qualquer destas técnicas requer alguma experiência, quer na
sua aplicação quer na correcta interpretação dos efeitos que produzem.

1.7 Algoritmos
À semelhança do que aconteceu atrás, vamos ter ocasião de estudar neste texto uma
grande variedade de algoritmos para resolução de problemas de índole numérica, pelo que
é oportuno dispender algum tempo com esta noção e com certas ideias correlacionadas.
44 Aritmética computacional

1.7.1 Conceito de algoritmo


A noção intuitiva de algoritmo, como processo detalhado para resolução de problemas,
não é nada fácil de formalizar, o que pode parecer estranho já que a ideia é intuitivamente
simples. Vejamos então quais os elementos essenciais presentes neste conceito.

1. Um algoritmo não se destina a resolver um problema mas sim uma classe de pro-
blemas, o chamado domínio do algoritmo. Por exemplo, um algoritmo construído
para calcular as raízes de uma equação de segundo grau x2 + bx + c = 0 com b e c
reais deve permitir obter estas raízes para qualquer instância dos dados b e c que
situem o problema no domínio do algoritmo, neste caso determinado por b, c ∈ R.

2. Um algoritmo deve declarar sem ambiguidade a forma como os cálculos se desen-


volvem, querendo com isto dizer que um algoritmo não deve deixar nada ao acaso,
ao arbítrio ou à imaginação do agente computador, seja ele homem ou máquina.
Tal implica o emprego de uma linguagem formal (por oposição a natural ), para a
respectiva descrição. Adoptada uma dada linguagem, a descrição do algoritmo deve
constituir uma expressão finita e sintaticamente correcta nessa linguagem. Esta
afirmação mostra claramente que o conceito de algoritmo não pode ser dissociado
do conceito de linguagem e daí a dificuldade de falar em algoritmos em geral, i.e.,
sem especificar previamente qual a linguagem subjacente.

3. Um algoritmo deve ter um comportamento determinístico, i.e., deve produzir sempre


o mesmo resultado (output) para cada instância dos dados (input) pertencente ao
respectivo domínio.

4. Um algoritmo deve envolver um número finito de operações ou instruções, extraídas


do repertório de instruções disponível na linguagem utilizada. Esta exigência implica
que os processos matemáticos intrinsecamente infinitos, como sejam certos métodos
iterativos, tenham que ser interrompidos o que obriga o respectivo algoritmo a conter
instruções que assegurem a paragem da sua própria execução. Neste sentido, não
é correcto especificar um algoritmo para “calcular a raiz quadrada positiva de um
número real x > 0” mas sim para “calcular a raiz quadrada positiva de um número
real x > 0, com n dígitos correctos,” por exemplo.

Do que acabámos de dizer não resulta nenhuma diferença essencial entre algoritmo
e programa, embora seja corrente reservar esta última designação para a implementação
concreta de um algoritmo num determinado ambiente computacional.

1.7.2 Complexidade computacional


Para um dado problema, podem ser desenvolvidos algoritmos com características dife-
rentes. Por exemplo, pode pretender-se o algoritmo mais breve, na linguagem utilizada,
1.7 Algoritmos 45

ou o algoritmo que necessite de menos memória ou o que recorre a menos operações de


um certo tipo, etc. Resulta daqui a vantagem em classificar os algoritmos de acordo com
critérios objectivos que façam realçar os aspectos em consideração, tema que é o objecto
da teoria da complexidade computacional.
No caso que nos interessa particularmente, o dos algoritmos numéricos, os parâmetros
mais relevantes são o tempo de cálculo e a memória requeridos por um dado algoritmo,
pelo que faz sentido falar em complexidade temporal Ct e em complexidade espacial Cs ,
respectivamente.
É habitual, para evitar dependências relativamente aos computadores utilizados, referir
a complexidade temporal, não ao tempo gasto em executar o algoritmo, mas ao número
de operações envolvidas e, especialmente, ao número de operações aritméticas em ponto
flutuante, designadas na gíria por flops — floating point operations. Pela mesma razão,
a complexidade espacial é medida pelo número de variáveis que traduzem a ‘dimensão’
do problema e não pelo número de bytes que o programa e respectivos dados ocupam ma
memória de um dado computador.
A notação O(nk ) (não confundir O( · ) com O( · )), usada frequentemente para indicar
a complexidade, temporal ou espacial, de um algoritmo cuja ‘dimensão’ seja aferida pelo
parâmetro n, significa que O(nk ) = cnk +· · · , em que · · · designa termos de ordem inferior,
e c > 0 é uma constante, i.e., cnk é o termo dominante para valores de n elevados. A
intenção desta notação é a de omitir informação irrelevante. Assim, o Algoritmo 1.4.1 tem
uma complexidade temporal Ct = O(n) flops e uma complexidade espacial também de
Cs = O(n), esta basicamente determinada pelos n números xi . Por sua vez, o Algoritmo
1.4.3 tem uma complexidade temporal de Ct = O(2n) flops e a sua complexidade espacial
é também Cs = O(2n), resultante dos 2n números xi e yi .
A menção explícita da constante c é opcional e tem a ver com o nível de pormenor
pretendido. Assim, um algoritmo pode ser referido como tendo Ct = O(n3 /3) flops
ou Ct = O(n3 ) flops, consoante se deseje acentuar ou não que c = 1/3 neste caso. A
menção da constante é importante quando se comparam algoritmos da mesma ordem de
complexidade, i.e., se dois algoritmos são ambos O(n3 ), é preciso distinguir se um dele é
O(5n3 ) e o outro O(2n3 ), por exemplo.
Um problema cujo melhor algoritmo tenha uma complexidade que cresce exponencial-
mente com a respectiva ‘dimensão’ n, por exemplo, Ct = O(2n ), costuma ser considerado
como computacionalmente intratável, já que exige recursos tendencialmente muito para
além do que é fisicamente possível fornecer. Pelo contrário, se existir um algoritmo com
complexidade polinomial, por exemplo, Ct = O(nk ) para um certo k > 0, então o problema
que este algoritmo resolve é considerado computacionalmente tratável. Esta preferência
pelos algoritmos de complexidade polinomial é justificada no Problema 1.9.63 que sugere
também alguma cautela interpretativa nos casos concretos.
Estes indicadores do esforço computacional, pelo seu carácter assimptótico e por in-
cidirem apenas sobre a memória e as operações aritméticas em ponto flutuante, ignoram
outros aspectos que podem ser igualmente determinantes, como sejam a movimentação
46 Aritmética computacional

dos operandos da memória para os registos aritméticos e vice-versa, as operações com in-
teiros, nomeadamente as desencadeadas por indexações, os eventuais acessos a memórias
lentas (discos, bandas), as operações lógicas, etc. São, sem dúvida, indicadores muito
importantes mas não exaustivos.

1.8 Notas e referências


1. Um estudo minucioso e erudito da história da representação de números e da aritmética
consta de (CAJORI, 1928, 1929, Capítulo II, Volume I). Também em MENNINGER (1969)
e FLEGG (1989) e, sobretudo, na obra monumental IFRAH (1994), se pode encontrar uma
descrição fascinante da evolução dos números, das suas designações e símbolos ao longo
dos tempos. Por seu lado, KNUTH (1998) apresenta um resumo da história da aritmética
computacional.

2. Mohammed ibn Musa al-Khwarismi, um astrónomo do século IX que trabalhou em Bagdad,


foi autor de dois textos fundamentais. O primeiro, escrito por volta de 820, explicava a
utilização do sistema hindu, i.e., o sistema posicional decimal com zero. O original deste
livro perdeu-se, tendo ficado conhecido apenas através de traduções do árabe para o latim,
feitas no século XII: em Espanha, por Juan de Toledo (por volta de 1143) e por Robert
of Chester (por volta de 1145) que se crê serem das primeiras abordagens do sistema hindu
no Ocidente cristão e, em Itália, por Gerardo de Cremona, talvez o mais célebre tradutor
do árabe para o latim, por volta de 1170. O segundo livro, Hisab al-jabr w’al-muqabala, (‘O
livro da substituição e simplificação’), trata do modo de manipular e simplificar expressões.
É desta obra que deriva a designação de Álgebra (‘al-jabr’) e, também, é do apelido de
Al-Khwarismi que derivam os termos algarismo e algoritmo, este último como sinónimo de
método para efectuar cálculos.

3. O grande defensor e divulgador, no Ocidente, do sistema de numeração hindu-árabe foi


Leonardo de Pisa (1180–1250), conhecido por Fibonacci (‘filius Bonaccii’ ), através do céle-
bre Liber Abaci (‘O Livro do Ábaco’) publicado em 1202 e onde são postas em evidência
as enormes vantagens deste sistema relativamente ao sistema romano utilizado na época.
Este texto permaneceu como referência obrigatória durante os dois séculos seguintes à sua
publicação! Simon Stevin (1548–1620) foi o autor da primeira exposição sistemática da re-
presentação decimal (1.3.1) em De Thiende, obra mais conhecida por La Disme (A Arte das
Décimas), datada de 1585 e de que existe uma tradução em inglês em SMITH (1959).

4. Uma análise detalhada da aritmética em ponto flutuante e dos aspectos relativos à sua
realização em computador é efectuada em KOREN (1993), KULISH and MIRANKER (1981)
(por via axiomática) e em STERBENZ (1974). O artigo de GOLDBERG (1991) constitui
uma excelente introdução.

5. A análise dos erros de arredondamento em processos algébricos, incluindo não só as operações


elementares tratadas neste capítulo mas também os polinómios e as operações com matrizes,
é exposta na referência fundamental WILKINSON (1964) cujo espírito foi continuado e
1.8 Notas e referências 47

desenvolvido de modo notável em HIGHAM (1996), CHATELIN and FRAYSSÉ (1996) e


TREFETHEN and BAU (1997).

6. Os aspectos ligados à arquitectura e projecto de unidades aritméticas de computadores são


tratados em HUANG (1979) e no Apêndice A de PATTERSON and HENNESSY (1996)
escrito por D. Goldberg.

7. IEEE é o acrónimo de Institute of Electrical and Electronic Engineers, uma associação profis-
sional dos Estados Unidos da América. A norma IEEE 754 encontra-se reproduzida em IEEE
(1987). Um texto que elucida os seus aspectos mais pertinentes do ponto de vista da com-
putação numérica é OVERTON (2001).

8. Sempre que se revelar conveniente, apresentaremos os algoritmos sob a forma de pseudo


programas escritos numa linguagem ad hoc (ou pseudo código, como por vezes se diz) cujas
semelhanças com o FORTRAN, o Pascal, etc., são evidentes, mas que tem a vantagem de
ignorar aspectos específicos destas linguagens que só obscureceriam o essencial. O leitor que
eventualmente pretenda programar os algoritmos deve ter em atenção que estes pseudo pro-
gramas não são necessariamente os melhores quanto a rapidez, memória ou precisão, já que
o seu objectivo é unicamente o de proporcionar apresentações mais claras. Constituem um
útil instrumento situado entre a descrição matemática dos métodos, que naturalmente omite
muitos detalhes, e os programas propriamente ditos, que forçosamente se devem preocupar
com todos os aspectos de implementação.

A sintaxe utilizada é intuitiva: os ciclos de do são terminados por od, os blocos condicionais
if são terminados por fi, etc., e os comentários explicativos são identificados como tal ou
inscritos entre parêntesis e encostados à direita. Não há qualquer preocupação quanto à veri-
ficação da validade dos dados, a menos que esta seja imprescindível à execução do algoritmo,
como também não há instruções de leitura e escrita. Estes pseudo programas estão, como o
próprio nome sugere, longe de ser programas.

9. A teoria dos algoritmos e da complexidade computacional é abordada em DAVIS et al. (1994)


e PAPADIMITRIOU (1994) a um nível perfeitamente adequado a quem pretenda alargar as
vistas para lá do breve material oferecido no presente texto.

10. A ideia utilizada por Henry Briggs para construir a tabela de logaritmos na sua obra Arith-
metica Logarithmica publicada em 1624 foi precisamente a relação log10 (1+ x) ≈ 0.4342945x
que é tão mais verdadeira quanto mais “pequeno” for x. Para valores de x “grandes” Briggs
k k k
recorreu à identidade log 2k (a1/2 ) = 2k log(a1/2 ) e ao facto de que limk→∞ a1/2 = 1. Por-
tanto, tirando um número suficientemente elevado de raízes quadradas, m digamos, podemos
m
obter um número a1/2 tão próximo de 1 quanto quisermos o qual escrevemos na forma
m
1 + x = a1/2 cujo logaritmo se pode obter pela fórmula aproximada acima indicada; de-
pois, é só aplicar o factor 2m para obter o resultado pretendido. Com este processo, Briggs
produziu uma tabela com cerca de 14 dígitos correctos, um feito notável para a época.
48 Aritmética computacional

1.9 Problemas
1. Obtenha a representação do número (176)10 nas seguintes bases: 2, 3, 8 e 16.

2. Ache a representação decimal dos seguintes números:


a) (101101)2 ; b) (221)3 ; c) (427)8 ; d) (1A0F )16

3. Obtenha a representação octal (base 8) dos números:


a) (101001)2 ; b) (1000111)2

4. Ache a representação hexadecimal dos números:


a) (10010)2 ; b) (10101011)2

5. Determine a representação binária dos números:


a) (0.5)10 ; b) (0.72)10 ; c) (2.3)10 ; d) (3.7)10

6. Converta as seguintes fracções binárias a fracções decimais:


a) (.110001)2 ; b) (.11111111)2 ; c) (.10101010 . . .)2

7. a) Mostre que são precisos ≈ 3.3n bits para representar um número com n decimais.
b) Os célebres números de Mersenne (Marin Mersenne, 1588–1648) são inteiros da forma
Mp = 2p − 1 com p primo, alguns dos quais são eles próprios primos, como acontece,
por exemplo, quando p = 2, 3, 5, 7, 13, 17, 19, 31, 61, . . .. Sabe-se que M3021377 é primo.
Aproximadamente, quantos decimais possui? Nota: Foi no âmbito do projecto GIMPS
(Great Internet Mersenne Prime Search) que se apurou a primalidade de M3021377 . Os
números primos muito grandes encontram aplicações (algo inesperadas) em criptografia.

8. Os Babilónios recorriam às seguintes aproximações para 2: (1.30)60 , (1.25)60 e (1.24 51 10)60 .
Converta estes valores à base decimal e determine os erros (absolutos e relativos) cometidos.

9. Ptolomeu de Alexandria (século II) usou na sua obra de astronomia Almagest (título árabe
de ‘O Grande Compêndio’), seguindo os Babilónios, o valor de π = (3.830)60 . É claro que a
notação usada não foi esta, mas sim a notação grega corrente na época π = γη ′ λ′′ .

a) Converta à base decimal e determine os erros absoluto e relativo cometidos. Nota: Este foi
o valor ainda usado por Cristóvão Colombo (século XV ) nos seus cálculos de navegação.
b) Tente explicar a notação usada por Ptolomeu tendo em atenção que os gregos recorriam
às letras do seu alfabeto para representar os números.

10. Os Egípcios, 4 000 anos atrás, só utilizavam fracções com numerador unitário (com a ex-
cepção notável de 2/3 de que não nos ocuparemos neste problema). Assim, qualquer número
fraccionário x = p/q, com 0 < p < q, era representado por um desenvolvimento do tipo
p 1 1 1
x= = + + ··· +
q d1 d2 dm
com 2 ≤ d1 < d2 < · · · < dm . O número m de termos era, geralmente, o menor possível mas
ocorriam muitas excepções.
1.9 Problemas 49

a) Obtenha a representação de x = 2/7. Nota: Para apreciar o extraordinário valor prático


desta representação, pense no problema da repartição de 2 pães por 7 pessoas de modo
a garantir iguais porções não só em peso mas, mais importante, em forma, de modo a
tornar evidente que ninguém foi enganado!
b) Idem, de π. Nota: O valor de π utilizado pelos Egípcios baseava-se na observação de que
a área de um círculo era aproximadamente igual à de um quadrado cujo lado fosse 8/9
do diâmetro.

11. Faça os seguintes truques de magia:

a) 1) Escolha um inteiro N cuja representação decimal seja (abc); 2) Forme um inteiro M


por repetição dos dígitos de N , i.e., M = (abcabc); 3) Prove que M é necessariamente
divisível por 7, 11, e 13.
b) 1) Escolha um inteiro N ; 2) Forme um inteiro M por permutação dos dígitos de N ; 3)
Calcule a diferença entre M e N ; 4) Esta diferença é sempre divisível por 9. Prove que
tem de ser assim mesmo. Sugestão: Demonstre primeiro que um número é divisível por
9 sse a soma dos seus dígitos o for.

12. Demonstre que aP representação de um número natural N numa base b é única, i.e., se

N = ni=0 di bi = ni=0 d′i bi então n = n′ e di = d′i para i = 0, . . . , n.
P

13. Considere
Pn a seguinte ideia para representação de números naturais N numa base b: N =
d (2i−1 b) com 0 ≤ d < b como habitualmente. Mostre, através de um exemplo simples,
i=0 i i
que não existe unicidade de representação excepto se b = 2.

14. Prove que 0 ≤ di < b é uma condição necessária para haver unicidade na representação de
números naturais. Sugestão: Mostre que, se tal não acontecer, i.e., se dk ≥ b para algum k,
então existem duas representações: [. . . dk+1 dk dk−1 . . .] e [. . . (dk+1 + 1)(dk − b)dk−1 . . .].

15. A base b não tem que ser necessariamente um número positivo. Considere a seguinte repre-
sentação não convencional de inteiros na base −10 (representação nega-decimal ):

N = dn × (−10)n + · · · + d1 × (−10)1 + d0 × (−10)0

em que, como habitualmente, os dk satisfazem a relação 0 ≤ dk < 10.

a) Obtenha a representação decimal de (234)−10 e de (1325)−10 .


b) Obtenha a representação nega-decimal de 134 e de −305.
c) Mostre que, consoante n for ímpar ou par, assim são representáveis muito mais números
positivos que negativos ou vice-versa.
d) Verifique que nesta representação não é necessário nenhum símbolo para o sinal.

16. Considere números reais cuja parte fraccionária (.d−1 d−2 . . .) exibe uma estrutura periódica
no sentido de que existem valores m ≥ 1 e p ≥ 1 (o período) tais que d−(k+p) = d−k , para
k > m. Mostre que estes números são racionais.
50 Aritmética computacional

17. Mostre que todos os números de F P (b, p, q) são racionais.

18. a) Liste todos os números positivos de F P (2, 4, 2).


b) Quais são os limites de underflow e overflow deste sistema?

19. a) Converta 0.1 a F P (2, 12, 3, T ).


b) Converta o resultado novamente à base dez.
c) Qual o erro relativo cometido em cada conversão e no final?

20. Repita o Exemplo 1.4.4 em F P (10, 4, 2, T ).

21. Efectue os seguintes cálculos em F P (10, 4, 2, A):


a) (A + B) + C; b) A/C; c) A − C; d) (AB)/C; e) A(B/C);
f) B(A/C);
com A = (0.3826)104 , B = (0.1246)10−3 e C = (0.7421)101 . Determine os erros absolutos e
relativos cometidos.

22. À semelhança de (1.4.8), prove que também se verifica a relação

x = fl(x̃)(1 + ǫ), com |ǫ| < u

23. a) Mostre que em aritmética de ponto flutuante a multiplicação ou a divisão por uma potên-
cia da base, se não produzir overflow ou underflow, é uma operação exacta.
b) Seja x um número representável em F P (10, p, q). Pode concluir-se que o seu dobro, i.e.,
2x, também é representável neste sistema desde que não produza overflow ?
c) E em F P (2, p, q)?

24. Uma forma de obter o valor da unidade de arredondamento u de um computador, sem


precisar de conhecer os pormenores da respectiva aritmética de ponto flutuante, é determinar
o maior valor de v para o qual fl(1 + v) = 1.

a) Mostre que este método produz, de facto, o valor de u e explique porquê;


b) Aplique esta ideia à determinação de valores v suficientemente aproximados da unidade
de arredondamento u (em precisão simples e em precisão dupla) do seu computador;
c) Compare-os com os valores teóricos.

25. a) Pretende-se calcular a hipotenusa h de um triângulo rectângulo de catetos a e b, os quais


assumem valores muito elevados mas abaixo do limite de overflow. No entanto, existe a
possibilidade de a2 e b2 produzirem overflow. Mostre que, se a ≥ b, a expressão
1/2
h = a 1 + (b/a)2

é preferível e explique porquê.


b) Como é que se generaliza este procedimento ao cálculo da norma euclideana de um vector
x ∈ Rn ?
1.9 Problemas 51

c) O Algoritmo 1.9.1 corresponde à forma como a norma euclideana de um vector é calculada


na programateca BLAS. Explique as razões para esta programação aparentemente tão
complicada.

26. Diga se, para todos os números reais x e y, são verdadeiras ou falsas as seguintes proposições:
a) fl(−x) = − fl(x); b) x ≤ y ⇒ fl(x) ≤ fl(y); c) x < y ⇒ fl(x) < fl(y)
ou seja, se a simetria e a ordem são preservadas em sistemas de ponto flutuante. Considere
separadamente os casos F P (. . . , T ) e F P (. . . , A).

27. a) Calcule em F P (10, 4, 2, T ) o valor de


√ !3
4 − 15
y= √
4 + 15

b) Repita a alínea anterior usando as expressões analiticamente equivalentes


√ √ √ √
y = (31 − 8 15)3 , y = 1/(31 + 8 15)3 , y = (4 − 15)6 , y = 1/(4 + 15)6 .

c) Diga qual a expressão que produz o melhor resultado e explique porquê.

28. O Rei Midas decretou o sistema F P (10, 6, 2, A) como o único a usar no seu reino (e, sendo ele
rei, ninguém o contrariou) e pretende cobrir a superfície da Terra (raio = 6378 km) com uma
fina camada de ouro (massa específica = (19.3)103 kg/m3 ) de espessura 10−6 m. Quantos
kg de ouro precisa? Nota: O Rei Midas tem o hábito de mandar cortar a cabeça a quem dá
respostas estúpidas!

Algoritmo 1.9.1 Norma euclideana


proc NORM2 (x, n)
comment: x ∈ Rn
s=1 (inicialização)
t=0
for i = 1 to n do
if |xi | > t
then
s = 1 + s(t/xi )2
t = |xi |
else
s = s + (xi /t)2
fi
od √
kxk2 = t s
end
52 Aritmética computacional

29. (A partir de uma ideia em PAULOS (1990)) Quando Julius Cæsar expirou, após receber a
última punhalada dos conspiradores que o assassinaram, exalou A moléculas de ar. Con-
siderando que já houve tempo suficiente para uma difusão completa destas moléculas na
atmosfera terrestre, a probabilidade de um de nós inalar pelo menos uma delas é dada por
 B
A
p=1− 1−
N

em que B é o número de moléculas por inalação e N o número total de moléculas na atmosfera


terrestre, suposto constante desde os tempos de Roma Antiga.

a) Tomando B = A = (2.2)1022 e N = 1044 , calcule p.


b) Verifique a influência do número de dígitos no resultado.

Nota: Versões mais sérias deste problema ocorrem frequentemente em Probabilidades.

30. Produza uma demonstração alternativa do Teorema 1.4.1 baseada em indução no número n
de termos. Sugestão: Considere separadamente os casos ρn = 1 e ρn = −1.

31. Mostre que o cálculo em ponto flutuante de y = a + bx produz

ỹ = fl(a + bx) = a(1 + θ1 ) + bx(1 + θ2 ), |θ1 | ≤ γ2 , |θ2 | ≤ γ4

O que conclui do facto de o erro relativo ser majorado por |e| ≤ γ4 (|a| + |bx|)/(|a + bx|)?

32. Demonstre que, se os operandos não tiverem necessariamente representação exacta em ponto
flutuante, as estimativas do erro relativo (1.4.20) e (1.4.23) deverão ser substituídas por

|e| ≤ γn = nu + O(u2 ), |e| ≤ γn+2 = (n + 2)u + O(u2 )

respectivamente.
Qn
33. Mostre que o cálculo em ponto flutuante do produto y = i=1 xi verifica, se forem válidas
as hipóteses do Teorema 1.4.1, a expressão
n
Y 
ỹ = fl xi = y(1 + θ), |θ| ≤ γ2n
i=1

34. Considere o produto y = Ax de uma matriz A ∈ Rn×n por um vector x ∈ Rn , ambos com
representação exacta em ponto flutuante. Prove que

ỹ = (A + δA)x, com |δA| ≤ γn |A|

35. Deduza a seguinte relação entre o erro relativo e e o número s de dígitos correctos

b−(s+1) ≤ |e| < b−(s−1)


1.9 Problemas 53

36. Prove o seguinte corolário do Teorema 1.4.1: se q = 0 e nu ≤ 0.01 (uma hipótese satisfeita
quase sempre na prática), então
n
Y
(1 + ei ) = 1 + θ, com |θ| ≤ γn ≤ 1.01nu
i=1

Nota: A constante 1.01 que aparece neste teorema não tem nada de mágico. Resulta sim-
plesmente de hipóteses realistas sobre a unidade de arredondamento e sobre o número de
termos com vista a obter um resultado de fácil leitura.
37. a) Determine o formato simples IEEE 754 dos seguintes números: 21.0, −15.0, 104.6;
b) Descodifique os seguintes formatos simples IEEE 754:
1 10000001 01010 . . . 0; 0 0 . . . 0 0010 . . . 0

c) Quantos zeros é que a norma IEEE 754 prevê e quais as respectivas configurações de bits?
38. a) Calcule as unidades de arredondamento nos formatos simples e duplo da norma IEEE
754.
b) Mostre que 0.1 = ∞ −4i + 2−4i−1 .
P 
i=1 2
c) Deduza que o erro relativo de representação de 0.1 no formato simples da norma IEEE
754 é u/4.
d) Qual é o resultado para o caso do formato duplo?
39. Sejam x e y, com 0 < x < y, dois números representáveis de acordo com a norma IEEE 754.
Mostre que se tomarmos a representação destes números nesta norma como a representação
binária de dois números inteiros, r em vez de x e s em vez de y, então também r < s. Quer
isto dizer que a ordenação de números reais (como seria no caso x < y < 0?) pode ser
efectuada como se fossem inteiros, não requerendo, portanto, nenhum hardware adicional.
40. Considere o cálculo da resistência equivalente R a duas resistências R1 e R2 em paralelo
efectuado pelas duas expressões alternativas
1 R1 R2
R= =
1/R1 + 1/R2 R1 + R2
Em aritmética IEEE 754 e tendo em consideração os casos especiais de uma ou ambas as
resistências serem nulas, qual destas expressões é preferível?
41. Suponha que pretendia dividir o intervalo [a, b] em n subintervalos de igual comprimento
h = (b − a)/n, para o que dispõe das seguintes fórmulas, analiticamente equivalentes, para
o cálculo das abcissas dos extremos dos subintervalos:
xi+1 = xi + h, i = 0, . . . , n − 1, x0 = a
xi = a + ih, i = 0, . . . , n
xi = b − (n − i)h, i = 0, . . . , n
xi = ((n − i)a + ib), i = 0, . . . , n
54 Aritmética computacional

a) Qual o número de operações aritméticas envolvidas em cada uma destas fórmulas?


b) Determine em F P (10, 2, 2, A) os valores dos xi para [a, b] = [0, 1] e n = 6;
c) Em face dos resultados qual das fórmulas lhe parece a melhor do ponto de vista da
precisão?
d) Tente justificar teoricamente os resultados da alínea anterior. Sugestão: Supor que se
comete um erro ǫ no cálculo de h, e que as demais operações aritméticas em ponto
flutuante contribuem com um erro δ cada uma.

42. Calcule a soma sn = nk=1 1/(k2 +k) para os valores de n = 999, 9999, 99999, . . ., efectuando
P
o somatório:

a) pela ordem k = 1, 2, . . ., i.e., por valores decrescentes dos termos;


b) pela ordem k = n, n − 1, . . ., i.e., por valores crescentes dos termos;
c) usando a técnica de Kahan.

Compare com os valores exactos e explique o sucedido.

43. Pretende-se calcular a função f (x) = 1 − cos x para valores de x muito pequenos, |x| ≤ 10−3 ,
por exemplo.

a) Mostre que esta função é bem condicionada para valores de x desta ordem de grandeza.
b) Verifique, contudo, que o cálculo da função pela expressão dada conduz a uma perda
apreciável de dígitos significativos. Apresente um algoritmo alternativo que evite esta
dificuldade.

44. Determine em F P (10, 4, 2, T ) as raízes da equação x2 + 0.7341x + (0.6000)10−4 = 0:

a) Usando a fórmula resolvente habitual para ambas as raízes;


b) Usando a fórmula resolvente habitual para a maior raiz (em valor absoluto) e outra
fórmula para a menor raiz (em valor absoluto) mas que dê maior precisão que a anterior.

45. a) As expressões seguintes são numericamente instáveis para x ≫ 1. Calcule os respectivos


valores para x = 103 , 104 , 105 , . . .
1) f (x) = x − (x2 − 1)1/2 ; 2) f (x) = x/(x + 1) − exp(−1/x);
b) Manipule estas expressões de modo a obter expressões equivalentes mas numericamente
estáveis. Repita os cálculos e tire conclusões.

46. Mostre que f (x) = x(1 − x2 )−1/2 é mal condicionada na proximidade de x = 1. Qual é
a importância deste facto no cálculo da função para valores de x desta ordem? É possível
representar a função de forma a evitar esta dificuldade?

47. a) Calcule o número de condição da função f (x) = (1 − cos x)/x2 ;


b) Mostre que a função é bem condicionada para |x| ≪ 1;
1.9 Problemas 55

c) Verifique que, no entanto, o seu cálculo pela fórmula dada é susceptível a erros de cance-
lamento subtractivo;
d) Produza uma outra fórmula de calcular a função, praticamente equivalente para os valores
de x em causa, mas que não sofra desta desvantagem.

48. a) Mostre que o somatório y dado por (1.4.18) é uma função bem condicionada relativamente
a qualquer das variáveis xi se y não for próximo de zero.
b) Idem, para o produto interno s dado por (1.4.20), se os vectores estiverem longe de ser
ortogonais.

49. a) Determine o número de condição da função, f (x) = sin x para x = 0 e para x = 2π.
b) Não é de estranhar o resultado, dado que esta função é periódica?

50. Aristarco de Samos (cerca de 310–230 a.C.) calculou a relação r entre a distância da Terra
ao Sol e a distância da Terra à Lua recorrendo ao ângulo θ (ver a Figura 1.9.1) na fase
de quarto crescente (ou quarto minguante). Nas condições de medição da época, obteve-se
θ = 87◦ enquanto nos dias de hoje θ = 89◦ 51′ . Calcule os valores de r para os dois casos e
explique a razão de tão grande discrepância face a um erro relativo em θ de ≈ 3%.

51. Mostre que a Definição 1.6.2 contém a Definição 1.6.1 como caso particular.

52. Determine o número de condição da solução x da equação ax + b = 0:

a) Como função de a;
b) Como função de b;
c) Os resultados obtidos não parecem absurdos quando a → 0? Explique.

53. Pretende-se avaliar a sensibilidade do valor z de uma grandeza física que é obtido como
a solução positiva da equação ax3 + x − 1 = 0, sendo a > 0 um coeficiente determinado
experimentalmente e, portanto, sujeito a erros.

a) Mostre que a equação acima tem uma única solução real z e que esta se localiza no
intervalo (0, 1).

Lua

Figura 1.9.1: O raciocínio de Aristarco


de Samos 

Terra Sol
56 Aritmética computacional

b) Diga que erros relativos se podem esperar em z sabendo que os erros experimentais de a
foram estimados em ±2%.

54. Uma forma de datar achados arqueológicos baseia-se nas propriedades do isótopo radioactivo
carbono-14, mais raro que o carbono-13 e o carbono-12, este o mais vulgar e que entra na
composição de toda a matéria orgânica. Admitindo que a percentagem de carbono-14 em
seres vivos se tem mantido constante ao longo dos tempos, a medição dos níveis deste isótopo
em restos mortais de animais ou plantas permite determinar a data da sua morte. O nível
de radioactividade A(t) do carbono-14 obedece à lei
ln 2
A(t) = A0 exp(−αt), com α =
5568
em que A0 e A(t) são os níveis de radioactividade no momento t = 0 e t, respectivamente
(A0 e A(t) em unidades apropriadas, t em anos), e o número 5568 é a semi-vida, em anos,
do carbono-14 (o tempo necessário para reduzir a radioactividade a metade). Analise este
processo de datação, i.e., a determinação da data, com vista a avaliar o seu condicionamento
relativamente a erros de medição nos dados A0 e A(t).

55. Seja y = f (x) e z = g(y) e considere a função composta z = h(x) ≡ g(f (x)). Prove que

cond h(x) ≤ cond f (x) cond g(y)

o que permite concluir que, se h for mal condicionada, então uma (pelo menos) das funções
f e g é mal condicionada.

56. Considere o desenvolvimento em série de Maclaurin da função exponencial



X
exp x = 1 + x + x2 /2! + · · · = xk /k!
k=0

a) Calcule exp(−12) utilizando este desenvolvimento;


b) Idem, mas usando agora o facto de que exp(−12) = 1/ exp(+12);
c) Compare os resultados e explique o sucedido.

57. Considere o desenvolvimento em série de Maclaurin de ln(1 + x), válido para −1 < x ≤ 1:

ln(1 + x) = x − x2 /2 + x3 /3 − x4 /4 + · · ·

a) Quantos termos é necessário reter neste desenvolvimento para obter logaritmos de nú-
meros no intervalo [1, 2] com um erro absoluto inferior a 10−7 usando aritmética exacta?
(Ver a nota a este respeito na Secção 1.8.)
b) Deduza o seguinte desenvolvimento

x3 x5
 
1+x
ln =2 x+ + + ··· , |x| < 1
1−x 3 5
e repita a alínea anterior;
1.9 Problemas 57

c) Compare os resultados e tire conclusões.

58. Calcule no seu computador favorito o valor da expressão

z = (x + y)2 − x2 − 2xy /y 2
 

com x = 100.0 e y = 10−k , para k = 0, 1, 2, . . .. Explique o sucedido e perdoe-lhe. Nota: O


resultado depende fortemente da aritmética do computador utilizado.

59. A série harmónica


1 1 1
sn = 1 + + + ··· +
2 3 n
é divergente. Calcule a sucessão sn no seu computador e explique o sucedido. Nota: O
resultado depende fortemente da aritmética do computador utilizado.

60. O número e tem a seguinte definição


 n
1
e = lim 1+
n→∞ n

Tente obter este limite no seu computador usando valores de n sucessivamente mais elevados,
por exemplo, n = 2, 4, 8, 16, . . . Compare os resultados com o valor exacto e explique o
sucedido.

61. Tente obter no seu computador o valor de limn→∞ (100n /n!), tomando valores de n sucessi-
vamente maiores. O que consegue concluir?

62. a) Escreva um algoritmo para calcular o produto de duas matrizes reais de ordem n seguindo
a Definição 6.1.6.
b) Calcule a respectiva complexidade temporal e espacial.
c) Particularize para o caso do produto de matriz por vector.

63. a) Prove que a complexidade polinomial é estritamente melhor que a complexidade exponen-
cial, i.e., dado um polinómio p(x) qualquer e uma função ax com a > 0, ambos definidos
para x ≥ 0, existe um valor x0 tal que p(x) < ax , ∀x > x0 .
b) Determine o valor de x0 para o caso p(x) = x3 e a = 2. Nota: O cálculo dos zeros de
ax = x3 será abordado no Capítulo 5. Contudo, para efeitos deste problema, qualquer
método expedito é aceitável.
c) Idem, para o caso a = 1.01.
d) O que consegue concluir em termos práticos?
58 Aritmética computacional

Ami lecteur, cet avertissement servira pour te faire


savoir que j’expose au public une petite machine de
mon invention, par le moyen de laquelle seul tu pour-
ras, sans peine quelconque, faire toutes les opérations
de l’arithmétique, et te soulager du travail qui t’a sou-
vent fatigué l’esprit, lorsque tu as opéré par le jeton ou
par la plume: je puis, sans presomption, espérer qu’elle
ne te déplaira pas, après que Monseigneur le Chance-
lier l’a honorée de son estime, et que, dans Paris, ceux
qui sont les mieux versés aux mathématiques ne l’ont
pas jugée indigne de leur approbation. Néanmoins, [. . .]
j’ai cru être obligé de t’éclairer sur toutes les difficultés
que j’ai estimées capables de choquer ton sens lorsque
tu prendras la peine de la considérer.
– B. Pascal (1623-1662)
Lettre dedicatoire a Monseigneur le Chancelier sur le sujet de la
machine nouvellement inventée par le sieur B.P. pour faire toutes
sortes d’operations d’arithmétique par un mouvement reglé sans
plume ni jetons avec un avis nécessaire à ceux qui auront curiosité
de voir la dite machine et s’en servir (1645)
Capítulo 2

Interpolação polinomial

Neste capítulo vamos abordar o tema da interpolação, o qual consiste, na sua versão mais
simples, em fazer passar uma certa curva por pontos dados.

2.1 Introdução
Dados os conjuntos de valores {x0 , x1 , . . . , xn } e {y0 , y1, . . . , yn } procura-se uma função f ,
dita interpoladora, tal que

f (xi ) = yi , i = 0, 1, . . . , n (2.1.1)

Em termos singelos, pretende-se fazer passar uma certa curva por pontos dados tal como
se ilustra na Figura 2.1.1. Aos pontos x0 , x1 , . . . , xn é costume dar o nome de nós de
interpolação, e aos respectivos valores associados y0 , y1 , . . . , yn , o de valores nodais. Admi-
tiremos em todo este capítulo que os nós pertencem a um intervalo limitado [a, b] ⊂ R e
poremos Ω = (a, b) e Ω̄ = [a, b].
Normalmente exige-se que a função f possua certas qualidades emergentes do contexto
em que o problema de interpolação surge e/ou da necessidade de tornar o problema
matematicamente bem posto. Tendo em conta diversas propriedades vantajosas de que
iremos falar dentro em pouco, são os polinómios excelentes candidatos a desempenharem
o papel da função interpoladora f .

2.1.1 Generalidades
Antes do advento dos modernos computadores digitais, o cálculo de certas funções como
ln x, sin x, tan x, etc., era feito através de consulta a tabelas. Estas tabelas, laboriosamente
construídas e resultando por vezes do trabalho de uma vida inteira de matemáticos, só
podiam conter, como é óbvio, um número finito de dados. Tal facto levantava de imediato
a questão de como determinar os valores da função quando o argumento x não coincidia
com nenhum dos valores tabelados. Utilizar o valor mais próximo? E, neste caso, qual

59
60 Interpolação polinomial

y
(xn ; yn )



(x1 ; y1 ) (x2 ; y2 ) 

Figura 2.1.1: Interpolação 


(x0 ; y0 )

o erro cometido? Haverá melhores técnicas? Para responder a estas e outras questões
similares foi desenvolvida uma teoria de interpolação muito completa.
O aparecimento dos computadores veio retirar importância ao cálculo por meio de
tabelas. Hoje qualquer calculadora de bolso oferece, ao simples toque de uma tecla,
muitas das funções que até há bem pouco tempo exigiam a consulta de páginas e páginas
de números alinhados em colunas. No entanto, o interesse da interpolação não diminuiu,
e isto essencialmente pelas duas razões seguintes. A primeira decorre do facto de que a
interpolação é um meio relativamente simples de aproximar certas funções. Por exemplo,
suponhamos que os xi são valores da altitude, e os yi, os valores correspondentes da
temperatura da atmosfera obtidos por medição. Pode haver interesse em associar a estes
valores uma função f que verifique a relação (2.1.1) e que de certo modo represente a
lei que rege a evolução da temperatura da atmosfera com a altitude. A segunda razão
radica no facto de que a interpolação constitui o fundamento de muitos outros métodos
numéricos, pelo que o seu estudo não pode ser dispensado.
É conveniente introduzir neste momento alguma notação de que iremos fazer uso.
Assim, indicaremos a derivada de ordem k de uma função f por f (k) e convencionaremos
que f (0) = f . O conjunto de funções definidas sobre o intervalo Ω e k vezes continuamente
diferenciáveis será designado por C k (Ω). Em particular, o conjunto das funções contínuas
definidas sobre Ω será designado por C 0 (Ω) ≡ C(Ω). Uma função f ∈ C k (Ω) diz-se que
pertence a C k (Ω̄) se existir um conjunto aberto Ω̃ ⊃ Ω̄ e um prolongamento f˜ de f tais
que f˜ ∈ C k (Ω̃). Se f ∈ C(Ω̄) poremos

kf k∞ = max |f (x)| (2.1.2)


x∈Ω̄

e designaremos esta grandeza por norma (de máximo) da função f .1

Problema geral da interpolação. A ideia de interpolar valores de uma função é


extensível também à própria interpolação de valores das derivadas, pelo que o problema
A noção de norma de funções é apresentada no Apêndice A. Contudo, o seu uso neste capítulo pouco
1

vai além do aspecto notacional.


2.1 Introdução 61

geral da interpolação se pode formular da seguinte maneira: determinar a função f que


satisfaz as condições

f (j) (xi ) = yij , j = 0, 1, . . . , mi , i = 0, 1, . . . , n (2.1.3)

em que mi é o número de derivadas a interpolar no nó xi , e os yij são os valores a interpolar


e são considerados como dados. Quando o mi = 0, para i = 0, . . . , n, caímos no caso
anterior e diz-se que a interpolação é do tipo de Lagrange. Se os mi forem todos iguais,
mas diferentes de zero, diz-se que a interpolação é do tipo de Hermite. Notemos que, na
interpolação de Hermite, todas as derivadas até à ordem mi devem ser interpoladas em
cada nó xi ; a situação mais corrente, que merecerá um tratamento específico na Subsecção
2.6.1, corresponde a ter mi = 1, para i = 0, . . . , n, caso em que a interpolação se diz
osculatória. Se apenas interpolarmos algumas derivadas, a interpolação diz-se que é do
tipo de Birkhoff.

Análise e síntese de funções. É oportuna neste momento a seguinte observação. Na


Análise Matemática costuma proceder-se à determinação de propriedades de curvas, por
exemplo verificar se são contínuas, se possuem zeros, caracterizar os seus extremos, etc. É
o que se costuma designar por análise. Neste capítulo abordamos o problema inverso, ou
seja, o de construir curvas que satisfaçam determinadas condições especificadas. Trata-se,
portanto, da síntese de funções, de que a interpolação polinomial é apenas uma das vias
possíveis.

Definição 2.1.1 Diz-se que uma função p é um polinómio na variável x (real ou com-
plexa) se puder ser escrita como uma combinação linear de monómios xi , i = 0, . . . , n,
i.e.,
p(x) = a0 + a1 x + a2 x2 + · · · + an xn
em que os ai são números (reais ou complexos) designados por coeficientes do polinómio.
O grau do polinómio p, denotado por deg p, é o número definido por

deg p = max{i : ai 6= 0, i = 0, . . . , n}

Se ai = 0 para i = 0, . . . , n, então o polinómio diz-se nulo. Se an = 1 o polinómio


denomina-se mónico.
O conjunto dos polinómios de grau ≤ n será designado por Pn , e o conjunto de todos
os polinómios, por P.

Como esta definição implica, um polinómio pode ser calculado recorrendo apenas
a operações aritméticas em número finito. De facto, como os computadores são, do
ponto de vista aritmético, apenas capazes de efectuar as quatro operações elementares
(soma, subtracção, multiplicação e divisão), as únicas funções que permitem calcular são
polinómios ou quocientes de polinómios (i.e., funções racionais). Todas as outras funções,
62 Interpolação polinomial

como o logaritmo, o seno, a tangente, etc., são obtidas por meio de aproximações que
envolvem polinómios. Esta é uma das propriedades que, de entre outras, privilegia os
polinómios.

Grau do polinómio nulo. A atribuição de grau ao polinómio nulo cria uma dificuldade
já que a Definição 2.1.1 é omissa a este respeito. É costume optar por uma das seguintes
soluções: simplesmente não definir o grau para este caso ou convencionar tomá-lo como
igual a −∞, o que, sendo estranho à primeira vista, é, no entanto, justificável (ver o
Problema 2.10.2).

Séries de potências Uma série de potências em x é uma expressão da forma

p(x) = a0 + a1 x + a2 x2 + · · · + an xn + · · ·

É incorrecto, embora sugestivo, dizer que uma série de potências é um “polinómio com in-
finitos termos” já que as propriedades dos polinómios não se transferem automaticamente
para as séries de potências e certos problemas das séries, como a convergência, nem sequer
se colocam aos polinómios.

Exemplo 2.1.1 Verificar se uma dada função é um polinómio.

a) A função f (x) = x3 − x + 1 é obviamente um polinómio de grau 3.


b) A função f (x) = (x − 1)(x − 4)(x + 3)x é um polinómio de grau 4, como facilmente se
verifica efectuando o desenvolvimento do segundo membro da respectiva expressão.
c) A função (
(x2 − 1)/(x − 1) se x 6= 1
f (x) =
2 se x = 1
é, em todo o seu domínio e após simplificação, idêntica a f (x) = x + 1 sendo, portanto, um
polinómio de grau 1.
d) A função f (x) = 2 é um polinómio de grau zero.
e) A função Tn (x) = cos(n arccos x), com x ∈ [−1, 1] , é um polinómio de grau n. Dos
casos apresentados neste exemplo, este é o único que não é evidente e explica o fraseado algo
reservado “ ... se puder ser escrita na forma ..” na Definição 2.1.1, o qual visa marcar bem a
diferença entre uma função e as suas possíveis representações.
Para n = 0 e n = 1 vem imediatamente que

T0 (x) = 1 e T1 (x) = x

Fazendo a mudança de variável cos θ = x, obtemos Tn (cos θ) = cos nθ, e pela fórmula do
co-seno de uma soma, podemos escrever que

Tn+1 (cos θ) = cos(n + 1)θ = cos nθ cos θ − sin nθ sin θ


2.1 Introdução 63

Tn−1 (cos θ) = cos(n − 1)θ = cos nθ cos θ + sin nθ sin θ


Somando ambos os membros destas expressões, e rearranjando convenientemente os termos
da expressão resultante, chegamos a
cos(n + 1)θ = 2 cos nθ cos θ − cos(n − 1)θ
Recuperando a variável x = arccos θ,
cos((n + 1) arccos x) = 2x cos(n arccos x) − cos((n − 1) arccos x)
donde podemos extrair a fórmula de recorrência
Tn+1 (x) = 2xTn (x) − Tn−1 (x), n≥1
Aplicando esta fórmula sucessivamente temos que
T0 (x) = 1
T1 (x) = x
T2 (x) = 2x2 − 1
T3 (x) = 4x3 − 3x
T4 (x) = 8x4 − 8x2 + 1, ...
Por outro lado, é imediato que, se Tn−1 e Tn forem polinómios de grau n − 1 e n, respecti-
vamente, então a fórmula de recorrência acima assegura que Tn+1 é um polinómio de grau
n + 1. Estes polinómios são conhecidos pela designação de polinómios de Chebyshev (de
primeira espécie) os quais são célebres pelas suas propriedades, algumas das quais teremos
oportunidade de referir no Capítulo 11. A Tabela 11.2.2 e a Figura 11.2.1 mostram alguns
destes polinómios.

Uma outra propriedade que nos leva a pensar que os polinómios devem ter boas pro-
priedades para aproximar funções está contida no célebre teorema de Weierstrass, que
recordamos.
Teorema 2.1.1 (Weierstrass) Seja Ω̄ um intervalo finito, e ǫ, um número real positivo
arbitrário. Então, para qualquer função f ∈ C(Ω̄), existe um polinómio p satisfazendo
kf − pk∞ < ǫ.
Demonstração Uma demonstração construtiva recorrendo aos polinómios de Bern-
stein Bn associados à função f e definidos, para o intervalo [0, 1], por
n
!
n k
x (1 − x)n−k ,
X
Bn (f, x) = f (k/n) n≥1 (2.1.4)
k=0 k
pode ser vista em DAVIS (1963) ou em CHENEY (1966).
Por outras palavras, numa vizinhança qualquer de uma função contínua existe sempre
um polinómio. No entanto, os polinómios de Bernstein, apesar das garantias dadas por
este teorema, convergem com demasiada lentidão, o que lhes retira interesse prático como
forma geral de aproximação. O exemplo seguinte vai revelar isto mesmo.
64 Interpolação polinomial

sin(πx)
1

0.8
B3
0.6
Figura 2.1.2: Polinómios de
Bernstein B1 , B2 e B3 associa- B2
dos à função f (x) = sin(πx) 0.4

0.2

B1
00 0.2 0.4 0.6 0.8 1

Exemplo 2.1.2 Aproximação da função sin(πx) no intervalo [0, 1] por polinómios de


Bernstein.

A aplicação directa da expressão (2.1.4) produz os seguintes resultados,

B1 (x) = 0
B2 (x) = 2x(1 − x)

3 3
B3 (x) = x(1 − x)
2
em que se aligeirou a notação omitindo a referência à função f , o que faremos sempre que
daí não resultar ambiguidade.
Embora a definição pudesse induzir, numa leitura apressada, que Bn fosse um polinómio de
grau n, de facto Bn pode ter grau < n, como se vê. A Figura 2.1.2 permite ainda verificar
que os polinómios de Bernstein não são interpoladores, excepto nos nós extremos do intervalo
[0, 1]. Alguns cálculos simples levam-nos aos seguintes valores

kf − B1 k∞ = 1
kf − B2 k∞ = 1/2 = 0.5

kf − B3 k∞ = 1 − 3 3/8 ≈ 0.350481

os quais não são entusiasmantes quanto à rapidez da convergência dos polinómios de Bern-
stein. O Problema 2.10.40, por seu lado, contribui também para reforçar a ideia de que estes
polinómios, embora valiosos para demonstrar construtivamente o teorema de Weierstrass,
não podem ser considerados como uma panaceia para o problema de aproximação.

Um dos objectivos do presente capítulo é mostrar que, em muitas circunstâncias (mas


não em todas!), a interpolação polinomial produz com naturalidade polinómios aproxi-
madores.
2.2 Formas polinomiais 65

2.1.2 Algoritmo de Horner


Como mencionámos atrás, a determinação do valor do polinómio requer apenas um
número finito de operações aritméticas, enquanto funções como ln x, sin x, etc., necessitam
de um número infinito destas operações. Nem por isso deixa de ter interesse procurar as
formas mais eficientes para o cálculo de valores de polinómios dada a frequência com que
estes são utilizados nas aplicações, nomeadamente como aproximações às funções cujo
cálculo requer um número infinito de operações.
A Definição 2.1.1 sugere que este cálculo seja efectuado de acordo com o Algoritmo
2.1.1, no fim do qual y conterá o valor do polinómio no ponto x.
Para um polinómio de grau n este algoritmo requer n somas ou subtracções e 2n
multiplicações, ou seja, tem complexidade temporal Ct = 3n. No entanto, e algo sur-
preendentemente, é possível fazer melhor se utilizarmos o algoritmo de Horner . Para
capturar a essência deste algoritmo basta verificar que um polinómio se pode escrever na
seguinte forma alternativa, exemplificando com n = 3:

p(x) = a3 x3 + a2 x2 + a1 x + a0 = ((a3 x + a2 )x + a1 )x + a0

O estratagema consistiu simplesmente em evidenciar x sucessivamente. O caso geral não


oferece dificuldades, vindo

p(x) = (((an x + an−1 )x + an−2 )x + · · · + a1 )x + a0

Tomando devida atenção à ordem dos cálculos, esta expressão fundamenta o Algoritmo
2.1.2. Como se vê, este algoritmo requer n somas ou subtracções e n multiplicações, i.e.,
tem complexidade temporal Ct = 2n, uma redução apreciável relativamente ao algoritmo
anterior. Concomitantemente, é de esperar que esta redução do número de operações
produza um erro de arredondamento também inferior, o que será uma vantagem acrescida.

2.2 Formas polinomiais


O facto de um polinómio ser definido pela expressão contida na Definição 2.1.1, designada
por forma de potências simples, não deve ser interpretado no sentido de que ela é a única

Algoritmo 2.1.1 Cálculo de polinómios


y = a0 ; w = 1 (inicialização)
for i = 1 to n do
w = wx (w ≡ xi )
y = y + ai w
od
p(x) = y
66 Interpolação polinomial

ou sequer a melhor forma de representar um dado polinómio. Naquela definição, um


polinómio é visto como um elemento de Pn , para qualquer n ≥ deg p e, portanto, como
uma combinação linear dos monómios {1, x, . . . , xn } que, sendo linearmente independentes
(consultar o Apêndice A para o conceito de independência linear aplicado a funções)
constituem uma base de Pn .

Mudança de base
A questão que se pode colocar é saber o que acontece à representação de p quando se
tomam outras bases para Pn . Comecemos com um exemplo simples.
Exemplo 2.2.1 Obter a representação do polinómio p = 1 + 2x + 3x2 ∈ P2 quando se
emprega a base {x − 1, x − 2, (x − 1)(x − 2)}.
Este é um problema de mudança de base, pelo que se torna conveniente a notação da Álgebra
Linear. Assim, podemos escrever que
 
 1
p = 1 2 3 x
x2
Mas, como é fácil verificar,
    
x−1 −1 1 0 1
 x−2  = −2 1 0
   x
(x − 1)(x − 2) 2 −3 1 x2
Invertendo esta relação, obtemos
    
1 1 −1 0 x−1
 x  = 2 −1 0  x−2 
x 2 4 −1 1 (x − 1)(x − 2)
Então,
   
 1 −1 0 x − 1  x − 1
p = 1 2 3 2 −1 0  x−2  = 17 −6 3  x−2 
4 −1 1 (x − 1)(x − 2) (x − 1)(x − 2)
= 17(x − 1) − 6(x − 2) + 3(x − 1)(x − 2)
que constitui a representação de p na nova base.

Algoritmo 2.1.2 Método de Horner


y = an (inicialização)
for i = n − 1 to 0 step − 1 do
y = ai + yx
od
p(x) = y
2.2 Formas polinomiais 67

O procedimento esboçado no Exemplo 2.2.1 pode ser generalizado. Assim, suponha-


mos que temos duas bases b(x) e b̂(x) de Pn . Um polinómio p ∈ Pn pode ser representado
por
p(x) = bT a = b̂T â (2.2.1)
onde organizamos os coeficientes e as bases em vectores coluna
 
a0 b0 (x) â0 b̂0 (x)
     

 a1   b1 (x)   â1 
 
       b̂1 (x) 
a=
 ..  , b =  ..  , â = 
 ..  , b̂ =  . 
 
 .. 
  
 .   .   .   
an bn (x) ân b̂n (x)

Como as bases estão relacionadas por uma matriz T invertível (a matriz de mudança de
bases),
b̂T = bT T, bT = b̂T T−1 (2.2.2)
entre os coeficientes também se verificam as relações

a = Tâ, â = T−1 a (2.2.3)

Estas expressões permitem passar de uma representação de um polinómio numa base a


outra representação noutra base.

2.2.1 Forma de Newton


O exemplo seguinte ilustra a afirmação anterior de que a forma de potências simples pode
não ser a mais indicada.
Exemplo 2.2.2 Construir, utilizando F P (10, 4, 2, A), o polinómio de grau ≤ 1 (uma
recta!) que interpole os valores

x0 = 5000, y0 = 0.1234
x1 = 5001, y1 = −0.8766
O polinómio pretendido obtém-se sem dificuldade do seguinte modo:
y1 − y0
p(x) = y0 + (x − x0 )
x1 − x0
−0.8766 − 0.1234
= 0.1234 + (x − 5000)
5001 − 5000
= 0.1234 − (x − 5000) (a)
= 5000 − x (em F P (10, 4, 2, A)) (b)

Esta fórmula produz em F P (10, 4, 2, A) os valores

p(5000) = 0.0000, p(5001) = −1.000


68 Interpolação polinomial

Um momento de atenção revela que a responsabilidade por este desastre computacional é


imputável à passagem de (a) para (b). Por outras palavras, se os cálculos fossem efectuados
directamente com a expressão (a) teríamos p(5000) = 0.1234 e p(5001) = −0.8766, ou seja,
os valores exactos. Neste caso, afigura-se portanto mais aconselhável manter o polinómio
interpolador expresso pela fórmula

p(x) = a0 + a1 (x − c)

com a0 = 0.1234, a1 = −1 e c = 5000.

A generalização deste resultado a polinómios de grau n conduz a expressões do tipo

p(x) = a0 + a1 (x − c) + · · · + an (x − c)n (2.2.4)

Ao parâmetro c costuma dar-se o nome de centro do polinómio, e a esta representação, a


designação de forma de potências centradas. Quando c = 0, a forma de potências simples
é recuperada.
É interessante notar que (2.2.4) não é mais do que o desenvolvimento em série de
Taylor do polinómio p em torno do centro c, série que possui, neste caso, um número
finito de termos. Os respectivos coeficientes ai podem obter-se por

ai = p(i) (c)/i!, i = 0, 1, . . . , n (2.2.5)

Uma outra generalização da expressão (2.2.4), muito importante no seguimento deste


capítulo, é a forma de Newton, definida por

p(x) = a0 + a1 (x − c1 ) + · · · + an (x − c1 ) · · · (x − cn ) (2.2.6)

Os parâmetros ci continuarão a ser designados por centros, e se os tomarmos todos iguais


voltamos a obter a expressão (2.2.4). Em alternativa, podemos escrever a forma de Newton
do seguinte modo:

a0 1
   

T  a1 
  
(x − c1 ) 
com a = 
 
p(x) = b a,  ..  ,
 b=  .. 
 .  .
 
 
an (x − c1 ) · · · (x − cn )

Esta expressão torna evidente que a forma de Newton emprega como base de Pn os
polinómios {1, (x − c1 ), . . . , (x − c1 ) · · · (x − cn )}.
O algoritmo de Horner é, mediante uma ligeira alteração, aplicável aos polinómios
sob a forma de Newton (ver o Algoritmo 2.2.1). Este algoritmo permite ainda passar de
uma forma de Newton com centros ci para outra, com centros c′i mediante a modificação
2.2 Formas polinomiais 69

realizada no Algoritmo 2.2.2. Deste Algoritmo extraímos que a′i − a′i+1 (c − ci+1 ) = ai . Em
notação matricial temos que
    
1 −(c − c1 ) a′ a0
  0′ 
1 −(c − c2 ) a a 
  
 1   1 
    
.. ..   ..   . 

. .   .  =  .. 


    
1 −(c − cn )  ′ 
 an−1 
 a 
  n−1 
1 a′n an

Observemos que, neste caso,


 
1 −(c − c1 )
1 −(c − c2 )
 
 
.. ..
 
T= . .
 

 

 1 −(c − c )
n 

1

Esta matriz é invertível, pelo que os a′i são necessariamente coeficientes do polinómio rel-
ativos a uma outra base b̂ (em correspondência com os coeficientes âi = a′i , i = 0, . . . , n).
Esta nova base pode ser obtida simplesmente pelas relações (2.2.2). Efectuando os cálcu-
los, chegamos sem dificuldade às expressões
   
b̂0 (x) 1
b̂1 (x) (x − c)
   
   
.. ..
   
b̂ = . = .
   
   
   
(x − c)(x − c ) · · · (x − c
b̂n−1 (x) n−2 )
  
 1
b̂n (x) (x − c)(x − c1 ) · · · (x − cn−1 )

Portanto, o polinómio tem a seguinte representação na nova base

p(x) = â0 + â1 (x − c) + â2 (x − c)(x − c1 ) + · · · + ân (x − c)(x − c1 ) · · · (x − cn−1 )

A aplicação do Algoritmo 2.2.2 permitiu introduzir o centro c e retirar o centro cn . A


sua aplicação repetida, fazendo sucessivamente c = c′n , c′n−1 , . . . , c′1 (atenção à ordem de

Algoritmo 2.2.1 Método de Horner com centros


y = an (inicialização)
for i = n − 1 to 0 step − 1 do
y = ai + y(x − ci+1 )
od
p(x) = y
70 Interpolação polinomial

introdução dos centros), permite passar do polinómio na forma de Newton com centros
c1 , c2 , . . . , cn para a forma de Newton com centros c′1 , c′2 , . . . , c′n , por introdução de um
novo centro de cada vez que o algoritmo é aplicado.

Exemplo 2.2.3 Passar o polinómio p(x) = x3 − x2 + 2 à forma de Newton com centros


1, −1 e 0.

O centro 0 já existe, pelo que não é preciso introduzi-lo. Para introduzir os restantes dois
centros, vamos aplicar o Algoritmo 2.2.2 duas vezes começando com o centro c = −1. Temos,
por conseguinte, que

a′3 = 1
a′2 = −1 + 1(−1 − 0) = −2
a′1 = 0 − 2(−1 − 0) = 2
a′0 = 2 + 2(−1 − 0) = 0

e, portanto, o polinómio pode escrever-se na forma

p(x) = 0 + 2(x + 1) − 2(x + 1)x + (x + 1)x2 = 2(x + 1) − 2(x + 1)x + (x + 1)x2

Voltando a aplicar o algoritmo, agora à forma acabada de obter com c = 1, vem que

a′3 = 1
a′2 = −2 + 1(1 − 0) = −1
a′1 = 2 − 1(1 − 0) = 1
a′0 = 0 + 1(1 + 1) = 2

O polinómio dado assume, pois, a forma

p(x) = 2 + 1(x − 1) − 1(x − 1)(x + 1) + 1(x − 1)(x + 1)(x − 0)


= 2 + (x − 1) − (x − 1)(x + 1) + (x − 1)(x + 1)x

o que completa a dedução.

Algoritmo 2.2.2 Método de Horner (modificado)


a′n = an (inicialização)
for i = n − 1 to 0 step − 1 do
a′i = ai + a′i+1 (c − ci+1 )
od
p(c) = a′0
2.2 Formas polinomiais 71

2.2.2 Factorização de polinómios


Esta técnica de introduzir centros permite obter uma outra forma de representação de
polinómios bastante útil quer do ponto de vista teórico quer do ponto de vista das apli-
cações.
O célebre Teorema Fundamental da Álgebra vai servir de ponto de partida para obter
uma representação de polinómios baseada numa certa factorização.

Teorema 2.2.1 (Teorema Fundamental da Álgebra) Um polinómio de grau n ≥ 1


tem pelo menos um zero.

Demonstração Ver FINE and ROSENBERGER (1997) ou HENRICI (1974).


Notemos que este teorema é aplicável em geral, i.e., o polinómio pode ser complexo e o
zero cuja existência o teorema garante pode também ser complexo. Uma vez assegurada
a existência de um zero, torna-se fácil provar que um polinómio de grau n ≥ 1 tem n
zeros (não necessariamente distintos).

Teorema 2.2.2 Se z1 , z2 , . . . , zk forem zeros distintos do polinómio p de grau n ≥ 1,


então
p(x) = (x − z1 )(x − z2 ) · · · (x − zk )r(x)
em que r é um polinómio.

Demonstração Partindo do polinómio escrito na forma de potências simples, utilize-


mos o algoritmo de Horner para introduzir um centro c qualquer. Então,

p(x) = a′0 + a′1 (x − c) + a′2 (x − c)x + · · · + a′n (x − c)xn−1

ou, uma vez que p(c) = a′0 ,


p(x) = p(c) + (x − c)q(x)
e em que q é um polinómio de grau ≤ n − 1. Pelo Teorema Fundamental da Álgebra, p
tem pelo menos um zero que designaremos por z1 . Fazendo c = z1 e tendo em atenção
que p(z1 ) = 0, obtemos a igualdade

p(x) = (x − z1 )q(x)

Se k = 1 a demonstração está terminada. Se k > 1, então z2 , . . . , zk são necessaria-


mente zeros do polinómio q (porquê?). Repetindo o raciocínio anterior para os zeros
c = z2 , . . . , zk do polinómio q concluímos que o teorema é verdadeiro.
Este teorema tem como corolário imediato que o número de zeros distintos de um
polinómio de grau n é ≤ n e é exactamente igual a n se contarmos multiplicidades (ver
adiante).
Está agora aberta a porta à demonstração da unicidade do polinómio interpolador.
72 Interpolação polinomial

Teorema 2.2.3 Se p e q forem dois polinómios de grau ≤ n que assumem os mesmos


valores num conjunto de nós distintos x0 , x1 , . . . , xn , então os dois polinómios são iguais,
i.e., p = q.
Demonstração Construamos a diferença d dos polinómios p e q, definida por
d(x) = p(x) − q(x)
a qual é obviamente um polinómio de grau ≤ n que se anula nos nós x0 , x1 , . . . , xn . Então,
o Teorema 2.2.2 permite que d seja factorizado da seguinte maneira
d(x) = (x − x0 )(x − x1 ) · · · (x − xn )r(x) (2.2.7)
em que r é um polinómio. Suponhamos que o seu grau é m ≥ 0. Da expressão (2.2.7)
tiramos que o grau de d deve verificar as relações
n ≥ deg d = n + 1 + m
o que é manifestamente falso. Por conseguinte, a representação (2.2.7) não é possível a
menos que r = 0, e, portanto, d = 0 e p = q. Quer isto dizer que o polinómio interpolador
de grau ≤ n que interpola nos nós x0 , x1 , . . . , xn distintos, se existir, é único.
Os Teoremas 2.2.2 e 2.2.3 podem generalizar-se ao caso em que os zeros do polinómio
p não são distintos, para o que precisamos da definição seguinte.
Definição 2.2.1 Diz-se que z é um zero de multiplicidade m do polinómio p se
p(z) = p′ (z) = · · · = p(m−1) (z) = 0 e p(m) (z) 6= 0
Se m = 1 o zero diz-se simples; se m = 2, duplo, etc.
Com esta definição em mente, podemos proceder à generalização do Teorema 2.2.2.
Teorema 2.2.4 Se z1 , z2 , . . . , zk forem respectivamente zeros de multiplicidade m1 , m2 ,
. . . , mk (com ki=1 mi ≤ n), então
P

p(x) = (x − z1 )m1 (x − z2 )m2 · · · (x − zk )mk r(x)


em que r é um polinómio.
Demonstração Resume-se a uma adaptação simples da demonstração do Teorema
2.2.2, pelo que se deixa como exercício.
Identicamente, é possível uma generalização imediata do Teorema 2.2.3.
Teorema 2.2.5 Sejam p e q dois polinómios de grau ≤ n e d = p − q a sua diferença.
Se p e q coincidirem do seguinte modo nos nós x0 , x1 , . . . , xk ,
d(j) (xi ) = 0, j = 0, 1, . . . , mi − 1 e i = 0, 1, . . . , k
Pk
com i=0 mi = n + 1, então p = q.
2.3 Interpolação de Lagrange 73

Demonstração É semelhante à do Teorema 2.2.3 pelo que é deixada como exercício.


Não custa ver que, se os zi forem os zeros (não necessariamente distintos) do polinómio
p de grau n, então p pode escrever-se na forma factorizada
p(x) = an (x − z1 )(x − z2 ) · · · (x − zn ) (2.2.8)
Efectuando o desenvolvimento desta expressão, o polinómio p vem escrito na forma de
potências simples
n
" #
h i
n k n−k
= an xn − s1 xn−1 + · · · + (−1)n sn
X
p(x) = an x + (−1) sk x (2.2.9)
k=1
em que
n
X X X
s1 = zi , s2 = zi zj , s3 = zi zj zk , ··· , sn = z1 z2 · · · zn (2.2.10)
1 1≤i<j≤n 1≤i<j<k≤n

Dada a sua estrutura, estes coeficientes sk são conhecidos por funções simétricas elemen-
tares de ordem k dos zeros do polinómio p. Os coeficientes ak da forma de potências
simples do polinómio p exprimem-se, em termos destas funções, do seguinte modo
an−k /an = (−1)k sk , 1≤k≤n (2.2.11)

2.3 Interpolação de Lagrange


Vimos que o polinómio interpolador, quando existe, é único. O objectivo da presente
secção é demonstrar a sua existência, o que faremos de forma construtiva e recorrendo a
diferentes métodos.

2.3.1 Método de Vandermonde


O primeiro método, aparentemente o mais natural, baseia-se na formação de um sistema
de equações lineares cuja solução fornecerá os coeficientes do polinómio interpolador. De
facto, a exigência de que o polinómio p de grau ≤ n interpole os valores nodais yi nos
nós distintos xi , i = 0, 1, . . . , n, obriga a que os coeficientes deste polinómio na forma de
potências satisfaçam o sistema de equações lineares de ordem n + 1
n
ak xki = yi ,
X
i = 0, 1, . . . , n (2.3.1)
k=0

Como sabemos, para que este sistema tenha solução única é necessário e suficiente que a
respectiva matriz, conhecida por matriz de Vandermonde e definida por
1 x0 . . . xn0
 

1 x1

. . . xn1 
(2.3.2)

V(x0 , . . . , xn ) = 
 .. .. .. .. 
. . . . 
n
1 xn . . . xn
74 Interpolação polinomial

possua um determinante diferente de zero, ou seja,

v(x0 , . . . , xn ) ≡ det V(x0 , . . . , xn ) 6= 0

O próximo teorema vai permitir provar simultaneamente a existência e a unicidade (esta


já demonstrada atrás) do polinómio interpolador.
Teorema 2.3.1 O determinante de Vandermonde tem o valor
n
Y
v(x0 , . . . , xn ) = (xj − xi )
i,j=0
j>i

e, por conseguinte, o polinómio interpolador existe e é único sse os nós de interpolação


forem distintos.
Demonstração Vamos efectuar a demonstração por indução em n. O teorema é
trivialmente verdadeiro para n = 0 e n = 1, pois v(x0 ) = 1 e v(x0 , x1 ) = x1 − x0 .
Suponhamos que ele é verdadeiro para o valor n − 1. Então, multiplicando a primeira
coluna da matriz de Vandermonde por x0 e subtraindo o resultado à segunda coluna,
multiplicando a segunda coluna da matriz de Vandermonde por x0 e subtraindo o resultado
à terceira, etc., chegamos à igualdade
1 0 0 ... 0
 
n−1
1 x1 − x0 x1 (x1 − x0 ) . . . (x1 ) (x1 − x0 ) 


v(x0 , . . . , xn ) = det 
 .. .. .. .. 
. . . ··· .


1 xn − x0 xn (xn − x0 ) . . . (xn )n−1 (xn − x0 )

Desenvolvendo este determinante, temos que


1 x1 . . . (x1 )n−1
 

1 x2

. . . (x2 )n−1 

v(x0 , . . . , xn ) = (x1 − x0 ) · · · (xn − x0 ) det 
 .. .. .. .. 
. . . . 

1 xn . . . (xn )n−1
e, portanto,
n
Y 
v(x0 , . . . , xn ) = (x1 − x0 ) · · · (xn − x0 )v(x1 , . . . , xn ) = (xj − x0 ) v(x1 , . . . , xn )
j=1

Aplicando agora a v(x1 , . . . , xn ) esta mesma expressão e procedendo assim sucessivamente


de modo recursivo obtemos o resultado pretendido.
Embora do ponto de vista teórico nada haja a objectar à construção do polinómio por
esta via, existem duas desvantagens que a tornam pouco recomendável computacional-
mente. A primeira é a de que ela implica resolver um sistema de equações lineares de
2.3 Interpolação de Lagrange 75

ordem n+1 o que, como veremos no Capítulo 6, requer O(n3 ) flops (recordar o que se disse
na Secção 1.7.1), bastante superior ao do método que estudaremos a seguir. A segunda
desvantagem é fatal e decorre do facto de que o sistema de equações (2.3.1) se torna tanto
mais mal condicionado (esta noção será desenvolvida no Capítulo 6) quanto maior for o
grau n do polinómio, verificando-se na prática que este método não permite ir além de
valores de n da ordem da dezena quando se trabalha em aritmética com 6 ou 7 decimais
de precisão, já que os coeficientes ai poderão nestas circunstâncias não ter qualquer dígito
significativo. Pelo que acabamos de dizer resulta imperativo procurar outras formas de
construir o polinómio interpolador.
Em contrapartida, a técnica acima desenvolvida torna mais fácil a generalização da
interpolação a outras famílias de funções que não polinómios e à interpolação no plano e
no espaço (interpolação multidimensional).

2.3.2 Fórmula de Lagrange


Uma via directa para construir o polinómio interpolador e que não sofre dos inconvenientes
referidos baseia-se nos polinómios de Lagrange que passamos a construir.
Introduzamos o polinómio nodal
k
Y
Wk (x) = (x − xi ) = (x − x0 )(x − x1 ) · · · (x − xk ) (2.3.3)
i=0

cujo grau é k + 1 e que, como é evidente, se anula nos nós x0 , . . . , xk (daí a designação).
Por outro lado, o polinómio lk dado por
Wn (x)
lk (x) =
x − xk
n
Y (2.3.4)
= (x − xi ) = (x − x0 ) · · · (x − xk−1 )(x − xk+1 ) · · · (x − xn )
i=0
i6=k

anula-se em todos os nós excepto no nó xk . Em alternativa, o seu valor neste nó pode


determinar-se pela regra de Cauchy,
Wn (x)
lk (xk ) = lim = Wn′ (xk )
x→xk x − xk
Então, o polinómio
lk (x) Wn (x)
Lk (x) = = ′ (2.3.5)
lk (xk ) Wn (xk )(x − xk )
anula-se em todos os nós excepto no nó xk , no qual assume o valor 1. Como iremos ver no
desenvolvimento, estes polinómios desempenham um papel de destaque na interpolação
polinomial.
76 Interpolação polinomial

Definição 2.3.1 Os polinómios

n
Y x − xi
Lk (x) = (2.3.6)
x − xi
i=0 k
i6=k

designam-se por polinómios de Lagrange relativos aos nós x0 , x1 , . . . , xn .

Vamos ver que, recorrendo aos polinómios de Lagrange, a construção do polinómio


interpolador é uma tarefa trivial.

Teorema 2.3.2 (Fórmula de Lagrange) O polinómio p de grau ≤ n que interpola os


valores y0 , y1 , . . . , yn nos nós distintos x0 , x1 , . . . , xn é dado por

L0 (x)
 
n
X   L1 (x) 
 
p(x) = Lk (x)yk = y0 y1 · · · yn 
 .. 

k=0  . 
Ln (x)

Demonstração Atendendo à forma como foram construídos, resulta imediatamente


que os polinómios Lk satisfazem a relação

Lk (xj ) = δkj (2.3.7)

em que δkj é o delta de Kronecker. Nestas condições

n
X n
X
p(xj ) = Lk (xj )yk = δkj yk = yj , j = 0, 1, . . . , n
k=0 k=0

Este polinómio p, cujo grau é evidente ser ≤ n, interpola os valores dados e é, pelo
Teorema 2.2.3, o único polinómio interpolador nestes pontos.

Exemplo 2.3.1 Construir o polinómio interpolador de grau ≤ 3 que interpola os valores


seguintes:
x 0 1 3 4
y 1 −1 1 2
2.3 Interpolação de Lagrange 77

1
L0 L1 L2 L3

0.8

0.6

Figura 2.3.1: Polinómios de 0.4


Lagrange do Exemplo 2.3.1
0.2

00 1 2 3 4
x

Os polinómios de Lagrange associados a estes nós obtêm-se directamente da Definição 2.3.1,

(x − x1 )(x − x2 )(x − x3 ) (x − 1)(x − 3)(x − 4)


L0 (x) = =
(x0 − x1 )(x0 − x2 )(x0 − x3 ) (0 − 1)(0 − 3)(0 − 4)
1
= − (x − 1)(x − 3)(x − 4)
12
(x − x0 )(x − x2 )(x − x3 ) (x − 0)(x − 3)(x − 4)
L1 (x) = =
(x1 − x0 )(x1 − x2 )(x1 − x3 ) (1 − 0)(1 − 3)(1 − 4)
1
= x(x − 3)(x − 4)
6
(x − x0 )(x − x1 )(x − x3 ) (x − 0)(x − 1)(x − 4)
L2 (x) = =
(x2 − x0 )(x2 − x1 )(x2 − x3 ) (3 − 0)(3 − 1)(3 − 4)
1
= − x(x − 1)(x − 4)
6
(x − x0 )(x − x1 )(x − x2 ) (x − 0)(x − 1)(x − 3)
L3 (x) = =
(x3 − x0 )(x3 − x1 )(x3 − x2 ) (4 − 0)(4 − 1)(4 − 3)
1
= x(x − 1)(x − 3)
12
Estes polinómios estão representados na Figura 2.3.1. Portanto, pelo Teorema 2.3.2,
 1 
− 12 (x − 1)(x − 3)(x − 4)
1
6 x(x − 3)(x − 4)
 
p(x) = 1 −1 1 2   − 1 x(x − 1)(x − 4) 

6
1
12 x(x − 1)(x − 3)

que constitui a representação de Lagrange do polinómio interpolador.

Apesar da sua simplicidade, a fórmula de Lagrange pode não ser a representação mais
conveniente do polinómio interpolador. Uma das razões é a de que é possível obter este
polinómio com menos operações aritméticas que as requeridas por esta fórmula. A outra
razão advém do facto de que os polinómios de Lagrange estão associados a um conjunto de
78 Interpolação polinomial

nós, e uma mudança da posição ou do seu número altera completamente estes polinómios.
Ora, sucede frequentemente nas aplicações que o número e a localização dos nós não são
fixados a priori sendo estabelecidos por tentativas, começando-se por utilizar poucos nós
e aumentando-se progressivamente o seu número até se atingir a precisão desejada. O
polinómio interpolador construído por meio da fórmula de Lagrange numa tentativa não
é aproveitado nas tentativas seguintes.

Fórmulas baricêntricas
Uma variante para a fórmula de Lagrange do polinómio interpolador pode ser obtida do
seguinte modo. Introduzindo os pesos baricêntricos
1 1
ωk = = Y
n (2.3.8)
Wn′ (xk )
(x − xi )
i=0
i6=k

vem que
ωk
Lk (x) = Wn (x) (2.3.9)
x − xk
Então, a fórmula de Lagrange para o polinómio interpolador pode escrever-se desta forma
n
X ωk
pn (x) = Wn (x) yk (2.3.10)
k=0 x − xk

a qual é por vezes conhecida por primeira fórmula baricêntrica da interpolação polinomial.
Esta expressão pode ainda ser simplificada se tivermos em atenção que a interpolação
polinomial da função y = f (x) = 1 é sempre exacta. Aplicando (2.3.10) a esta situação,
vem que
n
X ωk
1 = Wn (x) 1
k=0 x − xk

donde
1
Wn (x) = X
n
ωk
k=0 x − xk

Portanto,
n
X ωk
yk
k=0 x − xk
pn (x) = Xn (2.3.11)
ωk
k=0
x − xk
a qual é conhecida como segunda fórmula baricêntrica.
2.3 Interpolação de Lagrange 79

Verifica-se que esta fórmula oferece maior robustez face aos erros de arredondamento
do que a fórmula de Lagrange e daí o seu interesse para valores de n elevados.
A razão da designação de fórmula baricêntrica tem a ver com o facto da expressão
(2.3.11) ser formalmente análoga à fórmula que determina o centro de gravidade (bari-
ωk
centro) dum conjunto de massas x−x k
posicionadas nas abcissas yk .

2.3.3 Fórmula de Newton


Vejamos como é possível tirar partido da forma de Newton (2.2.6) para evitar os inconve-
nientes apontados à fórmula de Lagrange. Para o efeito, tomemos os nós x0 , x1 , . . . , xn−1
como centros do polinómio, pelo que este se pode escrever na forma

pn (x) = a0 + a1 W0 (x) + · · · + an−1 Wn−2 (x) + an Wn−1 (x) (2.3.12)

em que, recordando (2.3.3),


k
Y
Wk (x) = (x − xk )
i=0

são polinómios nodais. Os coeficientes a0 , a1 , . . . , an vão ser determinados de modo a que


pn dado por esta expressão seja o polinómio interpolador nos nós x0 , x1 , . . . , xn dos valores
nodais y0 , y1, . . . , yn . Isto significa que devemos ter

pn (x0 ) = y0 , pn (x1 ) = y1 , ..., pn (xn ) = yn

Assim, os coeficientes do polinómio devem satisfazer o sistema de equações lineares


    
1 0 0 ··· 0 a0 y0
1 W0 (x1 ) 0 ··· 0   a1   y1 
    
    
1 W (x ) W (x )
0 2 1 2 ··· 0  a 
  2  =  y2 
 
. . .. ..  .   . 

 .. .. ..   ..   .. 
 . . .    
1 W0 (xn ) W1 (xn ) · · · Wn−1 (xn ) an yn

Atendendo à definição dos polinómios nodais Wk , este sistema assume a forma


    
1 0 0 ··· 0 a0 y0
1 (x1 − x0 ) 0 ··· 0   a1   y1 
    
    
1 (x − x ) (x − x )(x − x ) ··· 0  a 
2 0 2 0 2 1   2  =  y2 
 
. .. .. ..  .   . 

 .. ..   ..   .. 
 . . . .    
1 (xn − x0 ) (xn − x0 )(xn − x1 ) · · · (xn − x0 ) · · · (xn − xn−1 ) yn an
(2.3.13)
Trata-se de um sistema de equações lineares cuja matriz é triangular inferior. Se os nós
forem distintos, os coeficiente da diagonal principal são todos diferentes de zero pelo que
80 Interpolação polinomial

esta matriz é invertível. Logo o sistema possui solução e esta é única (o que constitui uma
outra demonstração da existência e unicidade do polinómio interpolador).
O sistema (triangular inferior) (2.3.13) pode ser resolvido por substituições descen-
dentes. Daqui decorre que o coeficiente ak depende apenas dos valores x0 , . . . , xk e
y0 , . . . , yk . Tal implica que, se pretendermos construir o polinómio pn+1 que interpola
nos nós x0 , . . . , xn , xn+1 os valores nodais y0 , . . . , yn , yn+1, basta acrescentar ao polinómio
pn , suposto calculado, um termo da forma an+1 Wn (x), ou seja,

pn+1 (x) = pn (x) + an+1 Wn (x) (2.3.14)

a que corresponde adicionar mais uma equação ao sistema (2.3.13). Esta constatação
sugere que o polinómio interpolador se pode construir indutivamente começando com o nó
x0 , acrescentando depois o nó x1 , e assim sucessivamente, aproveitando-se os coeficientes
ak obtidos numa etapa para a etapa seguinte. Vamos mostrar como estes coeficientes se
podem calcular de uma maneira muito prática.

2.3.4 Diferenças divididas


Como ak é o coeficiente do termo de maior ordem do polinómio pk , o qual por construção
interpola os valores y0 , y1, . . . , yk nos nós x0 , x1 , . . . , xk , depende, como vimos, exclusiva-
mente destes parâmetros, o que se costuma indicar pela notação

ak ≡ y[x0 , x1 , . . . , xk ]

Nestas condições, o polinómio interpolador na forma de Newton assume a seguinte ex-


pressão
n
X
pn (x) = y[x0 , x1 , . . . , xk ]Wk−1 (x) (2.3.15)
i=0

Por razões que vão ser esclarecidas a seguir, o coeficiente y[x0 , x1 , . . . , xk ] do polinómio
interpolador na forma de Newton é designado por diferença dividida de ordem k.
Uma constatação imediata é a seguinte: dado que o polinómio interpolador dos valores
y0 , y1 , . . . , yk em nós distintos x0 , x1 , . . . , xk é único, a diferença dividida y[x0 , x1 , . . . , xk ]
é invariante relativamente a permutações dos nós.
Para exemplificar uma forma alternativa de resolver o sistema (2.3.13), tomemos o
caso n = 3 e a matriz aumentada
1 0 0 0 y0
 
1 (x − x ) 0 0 y1 
 1 0 
1 (x2 − x0 ) (x2 − x0 )(x2 − x1 ) 0 y2 
 

1 (x3 − x0 ) (x3 − x0 )(x3 − x1 ) (x3 − x0 )(x3 − x1 )(x3 − x2 ) y3

Uma primeira conclusão é que


y[x0 ] = y0
2.3 Interpolação de Lagrange 81

Agora prosseguimos do seguinte modo: subtraímos a linha 3 à linha 4, a linha 2 à linha


3 e a linha 1 à linha 2:
1 0 0 0 y[x0 ]
 
0 (x − x ) 0 0 y1 − y0 
 1 0 
0 (x2 − x1 ) (x2 − x0 )(x2 − x1 ) 0 y2 − y1 
 

0 (x3 − x2 ) (x3 − x2 )(x2 − x0 + x3 − x1 ) (x3 − x0 )(x3 − x1 )(x3 − x2 ) y3 − y2


Em seguida, dividimos a linha 2 por (x1 − x0 ), a linha 3 por (x2 − x1 ) e a linha 4 por
(x3 − x2 ):
 
1 0 0 0 y[x0 ]
 y1 − y0 
0 1 0 0
 
x1 − x0 


 y2 − y1 
0 1 (x2 − x0 ) 0
 

 x2 − x1 

y3 − y2 
0 1 (x2 − x0 + x3 − x1 ) (x3 − x0 )(x3 − x1 )
 
x3 − x2
Daqui extraímos que
y1 − y0 y[x1 ] − y[x0 ]
y[x0 , x1 ] =
=
x1 − x0 x1 − x0
Em seguida subtraímos a linha 3 à linha 4 e a linha 2 à linha 3, vindo:
1 0 0 0 y[x0 ]
 
0 1 0 0 y[x0 , x1 ] 
 
0 0 (x2 − x0 ) 0 y[x1 , x2 ] − y[x0 , x1 ]
 

0 0 (x3 − x1 ) (x3 − x0 )(x3 − x1 ) y[x2 , x3 ] − y[x1 , x2 ]


Dividindo a linha 3 por (x2 − x0 ) e a linha 4 por (x3 − x1 ) obtemos
 
1 0 0 0 y[x0 ]
0 1 0 0 y[x0 , x1 ]
 

y[x1 , x2 ] − y[x0 , x1 ] 
 

0 0 1 0 
x2 − x0
 
 

y[x2 , x3 ] − y[x1 , x2 ] 
0 0 1 (x3 − x0 )
 
x3 − x1
Então,
y[x1 , x2 ] − y[x0 , x1 ]
y[x0 , x1 , x2 ] =
x2 − x0
Subtraindo a linha 3 à linha 4, vem que
1 0 0 0 y[x0 ]
 
0 1 0 0 y[x0 , x1 ] 
 
0 0 1 0 y[x0 , x1 , x2 ]
 

0 0 0 (x3 − x0 ) y[x1 , x2 , x3 ] − y[x0 , x1 , x2 ]
82 Interpolação polinomial

Dividindo a linha 4 por (x3 − x0 ) resulta que


 
1 0 0 0 y[x0 ]
0 1 0 0 y[x0 , x1 ]
 

 
0 0 1 0 y[x0 , x1 , x2 ] 
 
 y[x1 , x2 , x3 ] − y[x0 , x1 , x2 ] 
0 0 0 1
 
(x3 − x0 )
donde
y[x1 , x2 , x3 ] − y[x0 , x1 , x2 ]
y[x0 , x1 , x2 , x3 ] =
x3 − x0
Finalmente, chegamos a
1 0 0 0 y[x0 ]
 
0 1 0 0 y[x0 , x1 ] 
 
0 0 1 0 y[x0 , x1 , x2 ] 
 

0 0 0 1 y[x0 , x1 , x2 , x3 ]
que nos dá a solução completa do sistema (2.3.13).
O próximo teorema generaliza este resultado para um valor de n qualquer.
Teorema 2.3.3 Os coeficientes ak do polinómio p de grau ≤ n que interpola os valores
y0 , y1 , . . . , yn nos nós distintos x0 , x1 , . . . , xn são dados indutivamente pela expressão
y[x1 , . . . , xk ] − y[x0 , . . . , xk−1 ]
y[x0 , x1 , . . . , xk ] = (2.3.16)
xk − x0
Demonstração Vamos fazer duas demonstrações deste teorema.

(i) O teorema é trivialmente verdadeiro para n = 0 já que p0 (x) = y[x0 ] = y0 , o que


prova que p0 interpola no nó x0 o valor nodal y0 . Suponhamos que é verdadeiro para
um valor de n qualquer. Vamos ver que também é válido para o valor n + 1. Seja
pn (x) = ni=0 y[x0 , x1 , . . . , xk ]Wk−1 (x) o polinómio que interpola nos nós {x0 , . . . , xn } os
P

valores nodais {y0 , . . . , yn } e pn+1 o polinómio


n+1
X
pn+1 (x) = y[x0 , x1 , . . . , xk ]Wk−1 (x)
i=0
Aplicando o método de Horner modificado dado pelo Algoritmo 2.2.2 com c = xn+1 e
ci+1 = xi , i = 0, . . . , n, obtemos
a′n+1 = an+1 = y[x0 , . . . , xn+1 ] = y[xn+1 , x0 , . . . , xn ]
a′n = an + a′n+1 (xn+1 − xn )
= y[x0 , . . . , xn ] + y[xn+1, x0 , . . . , xn ](xn+1 − xn )
y[x0 , . . . , xn ] − y[xn+1 , x0 , . . . , xn−1 ]
= y[x0 , . . . , xn ] + (xn+1 − xn )
xn − xn+1
= y[xn+1 , x0 , . . . , xn−1 ]
2.3 Interpolação de Lagrange 83

onde se recorreu a (2.3.16). Continuando com o método de Horner modificado, deduzimos


que

a′n+1 = y[x0 , . . . , xn+1 ]


a′n = y[xn+1 , x0 , . . . , xn−1 ]
a′n−1 = y[xn+1 , x0 , . . . , xn−2 ]
···

a1 = y[xn+1 , x0 ]
a′0 = y[xn+1 ] = yn+1

Como a′0 = pn+1 (xn+1 ) = yn+1 fica provado que pn+1 interpola no nó xn+1 o valor yn+1 .

(ii) Designemos por pm,k o polinómio de grau ≤ k que interpola os valores ym , ym+1 , . . . , ym+k
nos nós distintos xm , xm+1 , . . . , xm+k . Então, o polinómio

x − x0 xk − x
p(x) = p1,k−1(x) + p0,k−1 (x) (2.3.17)
xk − x0 xk − x0

é um polinómio de grau ≤ k que interpola os valores nodais y0 , y1, . . . , yk nos nós distintos
x0 , x1 , . . . , xk , como facilmente se pode verificar. Dado que este polinómio é único, p
coincide necessariamente com pk . Igualando os coeficientes dos termos de maior grau nos
dois membros da expressão anterior, concluímos que

y[x1 , . . . , xk ] y[x0 , . . . , xk−1 ]


y[x0 , x1 , . . . , xk ] = −
xk − x0 xk − x0

o que prova a validade de (2.3.16).


A expressão (2.3.17) é susceptível de ser reescrita com maior generalidade mediante
uma nova rotulação dos nós. De facto, como não é difícil verificar,

(x − xm )pm+1,k (x) + (xm+k+1 − x)pm,k (x)


pm,k+1 (x) =
xm+k+1 − xm
(2.3.18)
(x − xm )(pm+1,k (x) − pm,k (x))
= pm,k (x) +
xm+k+1 − xm

é o polinómio de grau ≤ k + 1 que interpola nos nós distintos xm , xm+1 , . . ., xm+k+1 os


valores ym , ym+1 , . . ., ym+k+1 . Esta é a forma de Aitken-Neville de construção do polinómio
interpolador a qual se distingue pelo facto de, para produzir o valor do polinómio num
dado ponto x, não requerer o cálculo explícito dos respectivos coeficientes.
O aspecto da expressão (2.3.16) torna conveniente dispor o cálculo das diferenças
divididas sob a forma de uma tabela de diferenças divididas conforme se mostra a seguir
84 Interpolação polinomial

para o caso de 4 nós:

x y[ · ] y[ · , · ] y[ · , · , · ] y[ · , · , · , · ]
x0 y0
y[x0 , x1 ]
x1 y1 y[x0 , x1 , x2 ]
y[x1 , x2 ] y[x0 , x1 , x2 , x3 ]
x2 y2 y[x1 , x2 , x3 ]
y[x2 , x3 ]
x3 y3

Esta tabela limita-se a reorganizar os cálculos efectuados acima para obtenção dos coefi-
cientes do polinómio interpolador na forma de Newton tirando partido do carácter recur-
sivo da expressão (2.3.16).

Exemplo 2.3.2 Determinar o polinómio interpolador do Exemplo 2.3.1 na forma de


Newton.

A tabela de diferenças divididas é para este caso a seguinte:

x y[ · ] y[ · , · ] y[ · , · , · ] y[ · , · , · , · ]
0 1
−2
1 −1 1
1 −1/4
3 1 0
1
4 2

Então, o polinómio interpolador é dado por


1
p(x) = 1 − 2(x − 0) + 1(x − 0)(x − 1) − (x − 0)(x − 1)(x − 3)
4
1
= 1 − 2x + x(x − 1) − x(x − 1)(x − 3)
4
Uma vez que a ordem pela qual os nós são tomados é arbitrária, poderíamos obter tantas
expressões quantas as permutações dos nós, todas elas correspondendo obviamente ao mesmo
polinómio. Se pretendêssemos acrescentar mais algum nó aos anteriores 4 nós, bastaria
colocá-lo no fundo da tabela das diferenças divididas e calcular mais uma linha de valores.
As diferenças divididas anteriormente obtidas não seriam afectadas por este novo cálculo.

Os valores nodais yi não tiveram até aqui qualquer conexão entre si. No entanto, se eles
forem os valores nodais de uma função f , é possível estabelecer uma ligação importante
entre as diferenças divididas de ordem k e a derivada da mesma ordem de f .
2.3 Interpolação de Lagrange 85

Teorema 2.3.4 Sejam f ∈ C k (Ω̄) e x0 , x1 , . . . , xk nós distintos pertencentes ao intervalo


Ω̄. Então, existe um ponto ξ ∈ Ω̄ tal que
1 (k)
f [x0 , x1 , . . . , xk ] = f (ξ)
k!
Demonstração O teorema é verdadeiro para k = 1, pois neste caso reduz-se ao bem
conhecido teorema do valor médio. Para o caso geral, a função

ek (x) = f (x) − pk (x)

em que pk é o polinómio de grau ≤ k que interpola a função f nos nós distintos x0 , x1 , . . . , xk


tem pelo menos k + 1 zeros no intervalo Ω̄. Logo, a função e′k tem pelo menos k zeros
neste intervalo, e′′k tem pelo menos k − 1 zeros, e assim sucessivamente, de modo que a
(k)
função ek tem pelo menos um zero, ξ digamos, em Ω̄. Então, devemos ter que
(k) (k)
ek (ξ) = f (k) (ξ) − pk (ξ) = 0

donde se tira que


(k)
f (k) (ξ) = pk (ξ)
Mas, como facilmente se verifica,
(k)
pk (x) = k! ak = k! f [x0 , x1 , . . . , xk ]

e, portanto, o teorema é verdadeiro.


O intervalo Ω̄ = [a, b] neste teorema pode ser simplesmente tomado de acordo com

a = min xi e b = max xi
0≤i≤k 0≤i≤k

pelo que
ξ ∈ inter (x0 , x1 , . . . , xk )
em que a notação inter (x0 , x1 , . . . , xk ) indica o menor intervalo que contém os nós x0 , x1 ,
. . . , xk .

2.3.5 Interpolação inversa


Sejam, como temos vindo a considerar, x0 , x1 , . . . , xn nós pertencentes ao intervalo Ω̄, e
y0 , y1 , . . . , yn valores nodais de uma função f ∈ C(Ω̄). Se esta função possuir inversa,
como é o caso quando for estritamente monótona, podemos escrever que

x = g(y)

em que se denotou a função inversa por g. Nestas condições nada impede que os nós
x0 , x1 , . . . , xn e os valores nodais y0 , y1 , . . . , yn troquem de papel. Por outras palavras,
86 Interpolação polinomial

y x = g (y )

x = p(y )

Figura 2.3.2: Interpo-


lação inversa

g ( ) p( ) x

é lícito construir o polinómio interpolador que interpole os valores nodais x0 , x1 , . . . , xn


nos nós y0 , y1 , . . . , yn , ou seja, construir o respectivo polinómio interpolador da função g.
Diz-se neste caso que se trata de uma interpolação inversa.
Uma situação em que este ponto de vista é frutuoso é a seguinte. Suponhamos que
pretendíamos determinar o valor de x tal que f (x) = c em que c é um valor dado, mas que
não dispúnhamos da expressão analítica da função inversa g de f , possivelmente por f ser
muito complicada. Uma saída possível para esta dificuldade será a de tentar obter uma
aproximação para g por via da interpolação polinomial. Assim, escolhendo um conjunto
de nós adequado podemos determinar um polinómio interpolador p tal que

p(yi ) = g(yi), i = 0, 1, . . . , n

de modo a que se verifique com a precisão desejada

p(y) ≈ g(y)

Nestas condições, a solução do problema f (x) = c é x = g(c), e podemos obter a aproxi-


mação
x ≈ p(c)
A Figura 2.3.2 e o exemplo seguinte ajudam a compreender esta técnica.

Exemplo 2.3.3 Determinar aproximadamente o zero da função f (x) = ln(1 + x2 ) −


exp(−x) no intervalo [0, 1].

A função f dada é estritamente crescente no intervalo [0, 1]; logo, possui inversa neste in-
tervalo. É fácil ver que f muda de sinal, existindo, portanto, um único zero neste intervalo.
2.4 Erros de interpolação 87

Assim, estamos em posição de aplicar a interpolação inversa. Para tal tomemos, a título de
exemplo, os seguintes nós e valores nodais

x 0.0 0.4 0.6 1.0


y = f (x) −1.00000 −0.52190 −0.24133 0.32527

Para obter o polinómio interpolador da função inversa g vamos formar a tabela de diferenças
divididas (notar a posição relativa dos xi e dos yi ):

y x
−1.00000 0.0
0.83665
−0.52190 0.4 −0.16321
0.71283 0.11704
−0.24133 0.6 −0.00810
0.70597
0.32527 1.0

Nestas condições, o polinómio interpolador (de grau ≤ 3) de g é

p(y) = 0 + 0.83665(y + 1) − 0.16321(y + 1)(y + 0.52190)


+0.11704(y + 1)(y + 0.52190)(y + 0.24133)

Portanto, um simples cálculo fornece o valor

x = g(0) ≈ p(0) = 0.76621

Podemos verificar que


f (0.76621) = −0.00287

Se a precisão deste resultado é ou não suficiente é uma questão que deixaremos em aberto,
já que o objectivo do exemplo é apenas o de ilustrar uma aplicação da interpolação inversa
(o tema será retomado com maior desenvolvimento no Capítulo 5).

2.4 Erros de interpolação


Uma questão que é necessário resolver é a de saber qual o erro cometido quando se
interpola uma função f por um polinómio pn de grau ≤ n utilizando os nós distintos
x0 , x1 , . . . , xn . Por outras palavras, quanto é que um polinómio interpolador se pode
afastar da função interpolada? Existirá convergência quando o número de nós tende para
infinito? Dependerá esta convergência da forma como os nós se distribuem no intervalo
de interpolação?
88 Interpolação polinomial

2.4.1 Análise de erros


O teorema seguinte começa por responder a algumas das questões acabadas de colocar.
Teorema 2.4.1 Seja f ∈ C n+1 (Ω̄) e pn o polinómio de grau ≤ n que interpola f nos nós
distintos x0 , x1 , . . . , xn contidos no intervalo Ω̄. Então, para qualquer ponto x ∈ Ω̄, existe
um valor ξ ∈ Ω̄, dependente de x0 , x1 , . . . , xn , de x e de f , tal que
1
en (x) ≡ f (x) − pn (x) = f (n+1) (ξ)Wn (x) (2.4.1)
(n + 1)!
Demonstração Seja x̄ um ponto qualquer pertencente ao intervalo Ω̄ e distinto de
x0 , x1 , . . . , xn , e pn+1 , o polinómio que interpola a função f nos pontos x0 , x1 , . . . , xn , x̄.
Neste caso, recordando as expressões (2.3.14) e (2.3.15), podemos escrever que

pn+1 (x) = pn (x) + f [x0 , x1 , . . . , xn , x̄]Wn (x)

donde resulta que

f (x̄) = pn+1 (x̄) = pn (x̄) + f [x0 , x1 , . . . , xn , x̄]Wn (x̄)

Introduzindo esta expressão na definição de erro vem que

en (x̄) = f (x̄) − pn (x̄) = f [x0 , x1 , . . . , xn , x̄]Wn (x̄) (2.4.2)

Recorrendo agora ao Teorema 2.3.4 e substituindo a variável x̄ por x chega-se de imediato


ao resultado pretendido.
A expressão (2.4.1) envolve a variável ξ cujo valor é, em geral, desconhecido, pelo que
frequentemente temos de nos contentar com um majorante do erro. Assim, empregando
a norma do máximo, é fácil deduzir que
1
ken k∞ ≤ kf (n+1) k∞ kWn k∞ (2.4.3)
(n + 1)!
Contudo, devemos estar conscientes de que apenas substituímos a dificuldade relativa-
mente ao desconhecimento de ξ por outra dificuldade que é a da determinação da norma
da derivada de ordem n + 1 da função f e da norma do polinómio Wn .
Uma estimativa do erro que por vezes é útil é a seguinte
1
ken k∞ ≤ kf (n+1) k∞ hn+1 (2.4.4)
4(n + 1)
em que h é o espaçamento máximo entre nós consecutivos (ver o Problema 2.10.35). Para
uma malha uniforme, a expressão anterior especializa-se para
(b − a)n+1
ken k∞ ≤ kf (n+1) k∞ (2.4.5)
4(n + 1)nn+1
2.4 Erros de interpolação 89

Exemplo 2.4.1 Pretende-se construir uma tabela para a função f (x) = ln x no intervalo
[1, 2] com nós equidistantes, de modo a que o erro cometido quando se interpola linear-
mente nesta tabela não exceda em valor absoluto (0.5)10−5 . Determinar o espaçamento h
dos nós.

O erro de interpolação linear (n = 1) é majorado, de acordo com a expressão (2.4.3), por

1
ke1 k∞ ≤ kf ′′ k∞ kW1 k∞
2
com W1 (x) = (x − x0 )(x − x1 ). Como se pode verificar, |W1 (x)| tem no intervalo Ω̄ = [1, 2]
um máximo quando x = (x0 + x1 )/2, o qual é igual a h2 /4 com h = x1 − x0 , pelo que

h2 ′′
ke1 k∞ ≤ kf k∞
8
No caso em estudo,
1 1
f ′ (x) = e f ′′ (x) = −
x x2
sendo fácil verificar que, no intervalo em causa, kf ′′ k∞ = 1 e portanto ke1 k∞ ≤ h2 /8.
Como se pretende que ke1 k∞ ≤ (0.5)10−5 , este objectivo pode garantir-se exigindo que
h2 /8 ≤ (0.5)10−5 , ou seja, h ≤ (0.632)10−2 .

Aproveitamos a oportunidade para referir que, nos casos mais complicados em que
não é fácil calcular kf (n+1) k∞ ou um seu majorante aceitável, é usual recorrer a diferenças
finitas (ver o Capítulo 3) para estimar o seu valor.

Rigidez dos polinómios


Como já referimos, a interpolação é apenas um processo relativamente simples de aproxi-
mar uma dada função por polinómios. Uma interrogação que naturalmente se põe nesta
altura é a de saber se o erro tende para zero quando n → ∞, ou, por outras palavras, se o
polinómio interpolador tende para a função interpolada quando n → ∞. A resposta é que
nem sempre tal sucede, o que pode parecer estranho à primeira vista. Pois não garante
o teorema de Weierstrass que uma função contínua pode ser aproximada por polinómios
com a precisão que se quiser? De facto assim é, só que este teorema não afirma que estes
polinómios possam ser obtidos por interpolação.
Um exemplo célebre de não convergência descoberto por Runge (1901) consiste em
interpolar a função
1
f (x) = , x ∈ [−1, 1] (2.4.6)
1 + 25x2
por um polinómio de grau 2n usando os nós equidistantes

xk = k/n, k = −n, . . . , −1, 0, 1, . . . , n


90 Interpolação polinomial

Observa-se que, à medida que n aumenta, o polinómio p2n desenvolve oscilações cada vez
mais acentuadas, pelo que ke2n k∞ não tende para zero e, portanto, p2n não converge para
a função f que está a ser interpolada. Este comportamento é por vezes referido como
denunciando a rigidez dos polinómios para acompanhar a função interpolada.
Uma forma de explicar as oscilações que se verificam ao interpolar com polinómios de
grau elevado é a seguinte: se o polinómio interpolador for pn = an xn + an−1xn−1 + · · ·+ a0 ,
então os coeficientes das suas derivadas são nan , (n − 1)an−1 , . . ., em geral maiores (em
valor absoluto) que os coeficientes de pn , tornando assim possíveis variações e oscilações
importantes.
O que acabamos de ver desfaz qualquer ideia que porventura pudéssemos ter de que
a interpolação polinomial produziria automaticamente polinómios que aproximassem tão
bem quanto fosse preciso qualquer função contínua. Para que tal aconteça é necessário
que a função f possua certas propriedades de regularidade traduzidas no comportamento
de kf (n+1) k∞ e que a localização dos nós seja tal que kWn k∞ tenha também um compor-
tamento adequado. Em palavras singelas, kf (n+1) k∞ e kWn k∞ devem variar com n de tal
modo que o segundo membro da expressão (2.4.3) tenda para zero quando n tende para
infinito.
Um outro aspecto a ter em atenção nas aplicações é o de ser desejável, por vezes, que
a interpolante p reproduza certas propriedades globais da interpolada f , como sejam: a
positividade – se f for positiva, então p também deve ser, a monotonicidade – se f for
monótona, então p também deve ser e a convexidade – se f for convexa, então p também
deve ser. Fica claro do que se disse acima que nenhuma destas propriedade é garantida a
priori pela interpolação polinomial.

2.4.2 Nós de Chebyshev


A expressão (2.4.3) do majorante do erro mostra que este é influenciado por dois ter-
mos: um, kf (n+1) k∞ , que depende da função f mas não dos nós de interpolação, e o
outro, kWn k∞ , que depende da localização dos nós mas não da função interpolada f .
A representação de Wn na Figura 2.4.1 mostra que esta função possui os seus maiores
valores (absolutos) na proximidade dos extremos do intervalo de interpolação. Esta ver-
ificação leva-nos a concluir que os polinómios interpoladores devem ser usados, sempre
que possível, na zona central do respectivo intervalo de interpolação, evitando, portanto,
o seu emprego junto aos extremos deste intervalo. Pela mesma razão, a utilização de
um polinómio interpolador fora do seu intervalo de interpolação, i.e., a utilização como
polinómio extrapolador deve ser rodeada da máxima cautela.
Uma questão interessante é a de saber qual é a posição dos nós que tornam kWn k∞
mínimo. Como vamos ver em seguida, este objectivo é conseguido quando os nós coincidem
com os chamados pontos de Chebyshev. Embora já tenhamos encontrado estes polinómios
no Exemplo 2.1.1, precisamos de deduzir mais algumas das suas propriedades.
Para tal, e tendo como finalidade a simplificação do tratamento, vamos supor que o
2.4 Erros de interpolação 91

W4 0.1

W6
0.05

Figura 2.4.1: Os polinómios nodais W4 ,


W5 e W6 numa malha uniforme no in- -1 -0.5 00 0.5 1
tervalo [−1, 1]
-0.05

W5

-0.1

intervalo de interpolação é [−1, 1]. Se tal não acontecer, podemos usar a transformação
de coordenadas
1−ξ 1+ξ
x=a +b , ξ ∈ [−1, 1] (2.4.7)
2 2
para transformar o intervalo [−1, 1] no intervalo Ω̄ = [a, b] de forma biunívoca.
Teorema 2.4.2 O polinómio de Chebyshev Tn tem os zeros localizados nos pontos
(2k − 1)π
xk = cos , k = 1, . . . , n (2.4.8)
2n
e os extremos localizados nos pontos

x′k = cos , k = 0, . . . , n (2.4.9)
n
nos quais
Tn (x′k ) = (−1)k (⇒ kTn k∞ = 1) (2.4.10)
Demonstração Tendo em atenção a definição dos polinómios de Chebyshev (ver o
Exemplo 2.1.1), não custa verificar que
(2k − 1)π
Tn (xk ) = cos(n arccos xk ) = cos =0
2
Como Tn é um polinómio de grau n, os xk são, portanto, os seus únicos zeros. Convém
sublinhar que estes zeros são reais e pertencem ao intervalo [−1, 1].
92 Interpolação polinomial

Quanto aos extremos, derivando Tn , obtemos


n
Tn′ (x) = sin(n arccos x)
(1 − x2 )1/2
Para os valores de x′k interiores ao intervalo [−1, 1], ou seja, excluindo os casos dos ex-
tremos coincidirem com os pontos ±1 que requerem um tratamento específico mas trivial,
é imediato verificar que Tn′ se anula. Acresce ainda que, nestes pontos,

Tn (x′k ) = cos(n arccos x′k ) = cos(n arccos cos ) = cos kπ = (−1)k
n
Conforme o Problema 2.10.41 mostra, nos extremos do intervalo [−1, 1] também se verifica
que |Tn (±1)| = 1 e, portanto, estes pontos também são extremos de Tn . Assim, todos
os extremos têm o mesmo valor absoluto e alternam em sinal. Fica por provar que os x′k
dados por (2.4.9) são os únicos pontos extremos de Tn , o que se deixa como exercício.
No entanto, como vamos ter oportunidade de descobrir, estes polinómios ainda se
celebrizam por outras propriedades notáveis.
É fácil provar que o coeficiente an de Tn é igual a 2n−1 , pelo que o polinómio T̃n =
2 Tn é mónico, ou seja,
1−n

T̃n (x) = xn + termos de menor grau

Designemos por P̃n [−1, 1] a classe de polinómios mónicos de grau n no intervalo [−1, 1].
Teorema 2.4.3 O polinómio T̃n é, de todos os polinómios em P̃n [−1, 1], o de menor
norma, i.e.,
kT̃n k∞ ≤ kpk∞ , ∀p ∈ P̃n [−1, 1]
Demonstração Pelo Teorema 2.4.1, Tn assume nos pontos x′k dados por (2.4.9) o
seu valor extremo, pelo que os valores extremos de T̃n são iguais a (−1)k 21−n , e, por
conseguinte, kT̃n k∞ = 21−n . Suponhamos, ao contrário do que o teorema afirma, que
existe um polinómio p ∈ P̃n [−1, 1] tal que

kpk∞ < 21−n (2.4.11)

e seja q a diferença q = T̃n − p. É óbvio que deg q ≤ n − 1. Por outro lado,

q(x′k ) = T̃n (x′k ) − p(x′k ) = (−1)k 21−n − p(x′k ) (2.4.12)

Como se admitiu que p satisfaz a relação (2.4.11), podemos sem dificuldade concluir de
(2.4.12) que o polinómio q assume alternadamente sinais diferentes. Então, existem n
pontos no intervalo [−1, 1] em que o polinómio q de grau ≤ n − 1 muda de sinal, ou, por
outras palavras, q tem n zeros, o que implica que q = 0. Então,

21−n = kT̃n k∞ = kpk∞ < 21−n


2.4 Erros de interpolação 93

o que é impossível. Logo, p não pode ter norma inferior à de Tn .


Escolhendo os pontos de Chebyshev (2.4.8), ou seja, os zeros do polinómio Tn+1 , como
nós de interpolação, pode sem dificuldade concluir-se que

Wn (x′k ) = T̃n+1 (x′k ) = ±2−n

donde
kWn k∞ = 2−n (2.4.13)
pelo que
1
en (x) = f n+1 (ξ)Tn+1(x)
2n (n+ 1)!
com ξ ∈ [−1, 1]. Daqui decorre portanto que, quando se tomam os pontos de Chebyshev
(2.4.8) como nós de interpolação, a expressão do majorante do erro (2.4.3) passa a ser
1
ken k∞ ≤ kf (n+1) k∞ em [−1, 1] (2.4.14)
2n (n+ 1)!
(b − a)n+1
ken k∞ ≤ 2n+1 kf (n+1) k∞ em Ω̄ (2.4.15)
2 (n + 1)!
que são mais favoráveis que as correspondentes expressões para o caso de malhas uni-
formes, nomeadamente (2.4.5).
Os extremos (2.4.9), conhecidos como pontos de Chebyshev-Lobatto, também podem
ser utilizados como nós de interpolação com resultados semelhantes aos dos pontos de
Chebyshev (2.4.8). A família de nós de Chebyshev-Lobatto tem a vantagem de incluir os
extremos do intervalo de interpolação o que pode ser útil nalgumas situações.

2.4.3 Efeitos de perturbações nos valores nodais


Vamos agora abordar um aspecto importante que é o de saber qual é a sensibilidade dos
polinómios interpoladores relativamente a perturbações dos valores nodais. Tomemos o
polinómio interpolador na forma de Lagrange,
n
X
p(x) = Lk (x)yk
k=0

Daqui podemos deduzir que


Xn
|p(x)| = Lk (x)yk


k=0
n
X
≤ max |yk | |Lk (x)|
0≤k≤n
k=0
≤ λn (x)kyk∞
94 Interpolação polinomial

onde
kyk∞ = max |yk |
0≤k≤n
é a norma de máximo do vector dos valores nodais e
n
X
λn (x) = |Lk (x)| (2.4.16)
k=0

é designada por função de Lebesgue associada à interpolação a qual depende do número


e da localização dos nós de interpolação. É fácil de ver que λn (x) ≥ 1 (confrontar o
Problema 2.15). Por outro lado,
kpk∞ = max |p(x)|
x∈Ω̄
≤ max λn (x)kyk∞
x∈Ω̄
≤ kλn k∞ kyk∞
≤ Λn kyk∞
onde
Λn = kλn k∞
é a constante de Lebesgue. Deste modo, concluímos que
kpk∞ ≤ Λn kyk∞ (2.4.17)
Consideremos agora que os valores nodais yi que produziram o polinómio interpolador
p são perturbados originando valores nodais ỹi que produzem um polinómio interpolador
p̃. A diferença p̃ − p é ela própria um polinómio interpolador dos valores nodais ỹi − yi
pelo que a expressão (2.4.17) é aplicável vindo
kp̃ − pk∞ ≤ Λn kỹ − yk∞ (2.4.18)
Esta relação mostra que quanto maior for a constante de Lebesgue Λn mais os erros nos
valores nodais são ampliados no polinómio interpolador.
Tal como a função de Lebesgue, a constante de Lebesgue depende do número e da
localização dos nós de interpolação pelo que é legítimo perguntar como é que Λn varia
com o número e a localização dos nós de interpolação. É possível demonstrar que, para
nós equidistantes,
2n+1
Λn ∼ quando n → ∞ (2.4.19)
e n ln n
Este crescimento exponencial con n desaconselha a utilização de polinómios de grau muito
elevado em malhas uniformes. Em contrapartida, para nós de Chebyshev, sabe-se que
2
Λn ∼ ln(n + 1) + 1 quando n → ∞ (2.4.20)
π
um crescimento muito moderado com n, confirmando a boa qualidade desta distribuição
de nós.
2.5 Interpolação com nós equidistantes 95

2.5 Interpolação com nós equidistantes


Em muitas aplicações os nós são equidistantes, pelo que há vantagem em especializar o
formulário deduzido nas secções anteriores para acolher este caso.

2.5.1 Fórmulas de interpolação


Designando por h a distância entre nós sucessivos, podemos escrever que

h = (xn − x0 )/n
xk = x0 + kh, k = 0, 1, . . . , n (2.5.1)

Resulta conveniente introduzir a transformação linear de coordenadas

s = s(x) = (x − x0 )/h, x = x(s) = x0 + sh (2.5.2)

Uma função f (x) é transformada via (2.5.2) numa função f (s) dada por

f (x) = f (x0 + sh) (2.5.3)

e vice-versa, e em que, por economia de notação, se emprega o mesmo símbolo f para


as duas funções. Por vezes usaremos a notação fs para indicar f (s) e fk para f (xk ). É
fácil verificar que, em virtude da sua linearidade, as transformações (2.5.2) preservam o
grau dos polinómios, i.e., um polinómio de grau n em x é transformado num polinómio
do mesmo grau em s, e vice-versa.
O cálculo das diferenças divididas de uma função f pode simplificar-se mediante o
conceito de diferenças conforme se explica na definição seguinte.

Definição 2.5.1 A diferença progressiva de ordem k e passo h da função f no ponto x,


denotada por ∆h f (x), é dada por

∆0h f (x) = f (x)


∆h f (x) = f (x + h) − f (x)
∆k+1 k
h f (x) = ∆(∆h f (x)), k = 1, 2, . . .

Analogamente, a diferença regressiva de ordem k e passo h da função f no ponto x,


denotada por ∇h f (x), é dada por

∇0h f (x) = f (x)


∇h f (x) = f (x) − f (x − h)
∇h f (x) = ∇(∇kh f (x)),
k+1
k = 1, 2, . . .
96 Interpolação polinomial

Finalmente, a diferença central de ordem k e passo h da função f no ponto x, denotada


por δh f (x), é dada por
δh0 f (x) = f (x)
h h
δh f (x) = f (x + ) − f (x − )
2 2
δhk+1 f (x) = δ(δhk f (x)), k = 1, 2, . . .
Sempre que não houver necessidade de explicitar o passo, omitiremos o índice inferior h
nas notações das várias diferenças.
Como vamos ver, existe uma relação íntima entre diferenças divididas e diferenças.
Teorema 2.5.1 A diferença dividida de ordem i da função f nos nós equidistantes xk ,
xk+1 , . . . , xk+i é dada por
1 i
f [xk , xk+1 , . . . , xk+i ] = ∆ fk
i!hi
Demonstração Para i = 0 temos simplesmente que
f [xk ] = f (xk ) = ∆0 f (xk )
e o teorema é trivialmente verdadeiro. A demonstração vai ser completada por indução
em i, ou seja, admitir que ela é verdadeira para um certo valor de i e provar que ela
também é verdadeira para i + 1. Recordando o Teorema 2.3.3, podemos escrever que
f [xk+1 , . . . , xk+i+1 ] − f [xk , . . . , xk+i]
f [xk , xk+1 , . . . , xk+i+1 ] =
xk+i+1 − xk
∆i fk+1 ∆i fk ∆i+1 fk
!
1
= − =
(i + 1)h i!hi i!hi (i + 1)!hi+1
como pretendíamos demonstrar.
Em face deste resultado, o polinómio de grau ≤ n que interpola os valores yk , yk+1,
. . . , yk+n nos nós equidistantes xk , xk+1 , . . . , xk+n pode escrever-se agora na seguinte forma
n
X 1 i i−1Y
p(x) = i
∆ fk (x − xk+j ) (2.5.4)
i=0 i!h j=0

Se preferirmos a variável s introduzida pela expressão (2.5.2) e uma vez que


x − xk+j = (x0 + sh) − [x0 + (k + j)h] = (s − k − j)h
podemos escrever o polinómio interpolador acima na forma alternativa
n i−1
s−k−j
∆i fk
X Y
p(x) = p(x0 + sh) = (2.5.5)
i=0 j=0 j+1
2.5 Interpolação com nós equidistantes 97

O segundo membro desta expressão sugere que se introduza a seguinte função


! (
x 1 se i = 0
= Qi−1 (2.5.6)
i j=0 (x − j)/(j + 1) se i =
6 0
Para x inteiro os valores desta função coincidem com os valores dos coeficientes do de-
senvolvimento binomial, e daí ser conhecida como função binomial. Assim, a expressão
(2.5.5) pode escrever-se mais sinteticamente do seguinte modo
n
!
X s−k i
p(x) = ∆ fk (2.5.7)
i=0 i
ou seja,
(s − k)(s − k − 1) 2
p(x) = fk + (s − k)∆fk + ∆ fk + · · ·
2
(s − k)(s − k − 1) · · · (s − k − n + 1) n
+ ∆ fk (2.5.8)
n!
Esta expressão é conhecida como fórmula de Newton das diferenças progressivas. No caso
vulgar associado a k = 0 temos que
n
!
X s i
p(x) = ∆ f0 (2.5.9)
i=0 i
e, desenvolvendo esta expressão, resulta
s(s − 1) 2 s(s − 1) · · · (s − n + 1) n
p(x) = f0 + s∆f0 + ∆ f0 + · · · + ∆ f0 (2.5.10)
2 n!
Como este polinómio interpola a função f , para valores de s inteiros devemos ter que
n
!
s i
∆ f0 = (I + ∆)n fs = E n f0
X
fs = (2.5.11)
i=0 i
em que, por simplicidade de notação, pusemos

E =I +∆ (2.5.12)
e onde I denota o operador identidade. Este operador E é designado muito naturalmente
por operador de translação progressiva, pois
Ef (x) = (I + ∆)f (x) = f (x) + ∆f (x) = f (x) + f (x + h) − f (x) = f (x + h) (2.5.13)

transformando o valor da função f no ponto x no valor desta função no ponto x + h. Pela


mesma razão, definiremos operador de translação regressiva E −1 por
E −1 f (x) = f (x − h) (2.5.14)
98 Interpolação polinomial

É fácil verificar que a notação E −1 é apropriada, já que

EE −1 f (x) = f (x) e E −1 Ef (x) = f (x)

e, portanto, EE −1 = E −1 E = I, ou seja, E −1 representa de facto o operador inverso de E.


Uma utilização imediata deste operador permite deduzir que, para s inteiro,
s
!
s s s j
E (−1)s−j
X
∆ = (E − 1) =
j=0 j

Por conseguinte, é válida a seguinte expressão explícita para as diferenças de ordem s


s
!
s
X s−j s
∆ fi = (−1) fi+j (2.5.15)
j=0 j

Exemplo 2.5.1 Determinar o polinómio interpolador de menor grau que reproduz os


valores seguintes com idêntico número de dígitos exactos.

x y = f (x) x y = f (x)
0.0 1.0000 0.6 1.1275
0.1 1.0202 0.7 1.1503
0.2 1.0408 0.8 1.1735
0.3 1.0618 0.9 1.1972
0.4 1.0833 1.0 1.2214
0.5 1.1052
Dado que temos 11 nós podemos tentar determinar o polinómio interpolador de grau ≤ 10
associado aos valores da tabela. A finalidade deste exemplo é ajudar a dissipar esta ideia que,
como veremos, é ingénua. De facto, se tivermos em conta que os dados estão contaminados
por um certo erro, pode acontecer que um polinómio de menor grau satisfaça perfeitamente
o objectivo de reproduzir os dados com a precisão indicada. De acordo com o enunciado, o
valor yi está afectado de um erro ei majorado por

|ei | ≤ e com e = (0.5)10−4

As diferenças progressivas virão também contaminadas por um certo erro resultante da pro-
pagação dos erros dos dados. Tendo em atenção que as diferenças são operadores lineares,
podemos escrever que
∆(fi + ei ) = ∆fi + ∆ei
Recorrendo à expressão (2.5.15), também é verdade que
s  
s−j s
X
s
∆ ei = (−1) ei+j
j
j=0
2.5 Interpolação com nós equidistantes 99

Usando a identidade
s  
s s
X s
2 = (1 + 1) =
j
j=0

que resulta da aplicação da fórmula binomial, concluímos que


s   s  
s
X s X s
|∆ ei | ≤ |ei+j | ≤ e = 2s e
j j
j=0 j=0

Esta desigualdade informa-nos que valores das diferenças divididas de ordem s menores ou
iguais ao valor 2s e talvez possam ser atribuídas a erros (qualquer que seja a sua origem) nos
valores da função f dados, não fazendo sentido, se tal se verificar, construir polinómios inter-
poladores que recorram a tais diferenças. Concretizemos o que acabamos de dizer construindo
a tabela de diferenças associada aos valores dados.

x y ∆f ∆2 f ∆3 f ∆4 f ∆5 f p2 (x)
0.0 1.0000 1.0000
202
0.1 1.0202 4 1.0202
206 0
0.2 1.0408 4 1 1.0408
210 1 −3
0.3 1.0618 5 −2 1.0618
215 −1 3
0.4 1.0833 4 1 1.0833
219 0 0
0.5 1.1052 4 1 1.1052
223 1 −1
0.6 1.1275 5 0 1.1276
228 1 −2
0.7 1.1503 6 −2 1.1504
232 −1 3
0.8 1.1735 5 1 1.1736
237 0
0.9 1.1972 5 1.1972
242
1.0 1.2214 1.2214

NOTA: Nesta tabela as diferenças estão multiplicadas por 104 .

Verificamos então que |∆f | > 2e = 10−4 e |∆2 f | > 22 e = 2 × 10−4 mas que |∆3 f | < 23 e =
4×10−4 , e o mesmo para as diferenças seguintes. Portanto, as diferenças de ordem ≥ 3 talvez
possam ser devidas apenas aos erros. Para confirmar se assim é ou não, vamos construir um
polinómio do segundo grau. A questão é agora saber quais os nós a escolher, de entre os
100 Interpolação polinomial

nós dados, para construir este polinómio. À falta de melhor critério, é natural tomar pontos
equidistantes, o que nos conduz à seguinte tabela de diferenças divididas:

x f (x) f [ · , · ] f [ · , · , · ]
0.0 1.0000
0.2104
0.5 1.1052 0.0220
0.2324
1.0 1.2214

O polinómio interpolador pretendido pode obter-se a partir da expressão (2.3.15), vindo

p2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 )


= 1.000 + 0.2104x + 0.0220x(x − 0.5)

Calculando os valores deste polinómio nos nós, arredondados a cinco decimais, obtemos a
coluna indicada por p2 (x) na tabela acima. Como vemos, este polinómio não reproduz todos
os valores nodais, embora por pouco. Somos, deste modo, forçados a tentar um polinómio
de grau 3. Considerando os valores seguintes de entre outros possíveis, obtemos a tabela de
diferenças divididas

x f (x) f[ · , · ] f[ · , · , · ] f[ · , · , · , · ]
0.0 1.0000
0.2060
0.3 1.0618 0.0217857
0.22125 0.0007143
0.7 1.1503 0.0225
0.2370
1.0 1.2214

O respectivo polinómio interpolador é

p3 (x) = 1.0000 + 0.2060x + 0.0217857x(x − 0.3) + 0.0007143x(x − 0.3)(x − 0.7)

Deixa-se como exercício a verificação de que este polinómio reproduz de facto os valores dados.
Concluímos assim que, em vez de um polinómio interpolador de grau 10 como pareceria ser
necessário à primeira vista, um simples polinómio de grau 3 é suficiente.

2.5.2 Algumas relações entre operadores


Introduzimos na subsecção anterior os operadores de diferenças ∆, ∇ e δ, e o operador de
translação progressiva E. Existem muitas e variadas relações envolvendo estes operadores
e também o operador de derivação D. Este operador é definido naturalmente por

D 0 f = f, Df = f ′ , D k+1 f = D(D k f ), k = 0, 1, . . . (2.5.16)


2.5 Interpolação com nós equidistantes 101

Algumas destas relações provam ser bastante úteis nas aplicações pelo que vamos proceder
à sua dedução.
Tomemos como ponto de partida o seguinte desenvolvimento em série de Taylor duma
função f
h2 h3
f (x + h) = f (x) + Df (x)h + D 2 f (x) + D 3 f (x) + · · ·
2! 3!
Esta expressão pode escrever-se simbolicamente da seguinte forma
(hD)2 (hD)3
" #
f (x + h) = I + (hD) + + + · · · f (x)
2! 3!
Convém notar que não sendo hD um número, o parêntesis recto no segundo membro desta
expressão deve ser interpretado apenas como uma forma simbólica e abreviada de indicar
as sucessivas operações sobre a função f . Nesta acepção, é também lícito dizer que, como
f (x + h) = Ef (x),
(hD)2 (hD)3
E = I + (hD) + + + · · · = exp(hD) (2.5.17)
2! 3!
Desta relação e da expressão (2.5.16 ) resulta ainda que
∆2 ∆3 ∆4
hD = ln E = ln(I + ∆) = ∆ − + − +···
2 3 4 (2.5.18)
h2 D 2 h3 D 3 h4 D 4
E = exp(hD) = 1 + hD + + + +···
2! 3! 4!
em que se recorreu aos conhecidos desenvolvimentos em série de Taylor do logaritmo e da
exponencial. Estabelecemos deste modo relações úteis entre as derivadas e as diferenças
progressivas duma função.
Uma outra aplicação do método que estamos a expor é a seguinte. Consideremos a
sucessão de termos positivos y0 , y1 , y2 , . . ., e a série alternante associada

Sn = y 0 − y 1 + y 2 − y 3 + · · · + y n (2.5.19)

que suporemos convergente. Recordando que

y1 = Ey0 , y2 = Ey1 = E 2 y0 , ..., yn = E n y0

podemos escrever (2.5.19) na forma

Sn = (I − E + E 2 − · · · + E n )y0 (2.5.20)

Como se verifica directamente, efectuando as operações,

(I − E + E 2 − · · · + E n )(I + E) = I + E n+1
(I + E)(I − E + E 2 − · · · + E n ) = I + E n+1
102 Interpolação polinomial

donde se extrai que

(I − E + E 2 − · · · + E n ) = (I + E)−1 (I + E n+1 ) = (I + E n+1 )(I + E)−1

Substituindo esta expressão em (2.5.20), vem que

Sn = (I + E)−1 (I + E n+1 )y0 = (I + E)−1 (y0 + E n+1 y0 )

Como se admitiu que a sucessão era convergente, devemos ter que

lim yn = lim E n y0 = 0
n→∞ n→∞

Nestas condições, o limite S da série pode exprimir-se assim

S = lim Sn = (I + E)−1 y0
n→∞

Mas, recorrendo à expressão (2.5.12), também é verdade que


−1
1 ∆

−1
S = (2I + ∆) y0 = I+ y0 (2.5.21)
2 2
Desenvolvendo em série de Taylor o segundo membro desta expressão, resulta que

∆ ∆2 ∆3 (−1)i i
!
1 X
S= I− + − + · · · y0 = i+1
∆ y0 (2.5.22)
2 2 4 8 i=0 2

A passagem da expressão original (2.5.19) da série para esta última expressão (2.5.22)
é conhecida como transformação de Euler. A sua vantagem consiste em que, por vezes,
produz uma aceleração da convergência das séries, querendo dizer com isto que o cálculo
da série por meio de (2.5.22) requer, para uma dada precisão, menos termos do que por
meio de (2.5.19). O exemplo seguinte evidencia esta propriedade.

Exemplo 2.5.2 Aplicar a transformação de Euler ao cálculo de π por meio do desenvol-


vimento do arctan.

Como
x3 x5 x7
arctan x = x − + − + ···
3 5 7
o valor de π/4 = arctan 1 pode calcular-se pela série

π 1 1 1
= 1 − + − + ···
4 3 5 7
Suponhamos que pretendíamos obter este valor com uma precisão de cinco decimais. Como
a série é alternante, o erro ao desprezar os termos a partir do n-ésimo é menor ou igual ao
2.6 Interpolação de Hermite 103

primeiro termo desprezado, tomando ambos em valor absoluto. Portanto, para garantir esta
precisão devemos reter um número de termos tal que

1/(2n + 3) ≤ (0.5)10−5 ⇒ n ≥ 105

Este é um número demasiado elevado, sobretudo se tivermos presente que, com tantos termos,
os erros de arredondamentos ir-se-ão fazer sentir, contaminando seriamente o resultado. Ten-
temos resolver esta dificuldade recorrendo à transformação de Euler. A tabela de diferenças
progressivas para n = 4 é

y ∆ ∆2 ∆3 ∆4
1.000000
−0.666667
0.333333 0.533333
−0.133333 −0.457143
0.200000 0.076190 0.406349
−0.057143 −0.050794
0.142857 0.025397
−0.031746
0.111111

Aplicando a fórmula (2.5.22), obtemos π/4 = 0.774603. No entanto, o termo associado à


quarta diferença (0.406349/25 ) ainda é muito elevado, não garantindo a precisão desejada.
Repetindo os cálculos para vários valores de n, obtemos a seguinte tabela de valores

n 5 10 15 20
π/4 0.774603 0.785145 0.785392 0.785398

O valor correspondente a n = 20 está dentro da tolerância pedida. A aplicação da transfor-


mação de Euler redundou assim num ganho espectacular, que seria ainda mais flagrante se
tivéssemos somado os 10, digamos, primeiros termos da série original e aplicado a transfor-
mação apenas aos restantes (porquê?).

É possível demonstrar que, se uma série for convergente, então a série resultante da
aplicação da transformação de Euler é também convergente, e que, se a série original, além
de convergente, for também alternante, então a série transformada converge geralmente
(embora nem sempre) com maior rapidez.

2.6 Interpolação de Hermite


Como adiantámos na Subsecção 2.1.1, é possível exigir que um polinómio interpole não só
valores da função mas também das suas derivadas, caso em que se diz que a interpolação
é de Hermite.
104 Interpolação polinomial

2.6.1 Interpolação osculatória


Vamos começar por estudar a situação em que se interpolam valores da função e da
sua primeira derivada. Suponhamos então que se pretende construir um polinómio p que
interpole os valores da função f e da respectiva derivada f ′ nos nós distintos x0 , x1 , . . . , xn .
Este polinómio deve, pois, satisfazer as condições
p(xi ) = yi e p′ (xi ) = yi′ , i = 0, 1, . . . , n (2.6.1)
em que pusemos yi = f (xi ) e yi′ = f ′ (xi ), valores estes considerados como dados. Como
a função f e o polinómio interpolador p são tangentes nos nós, esta interpolação recebe
por vezes a designação de osculatória. À semelhança do que fizemos para a interpolação
de Lagrange, vamos escrever o polinómio interpolador na seguinte forma
n
[Uk (x)yk + Vk (x)yk′ ]
X
p(x) = (2.6.2)
k=0

onde as funções Uk e Vk são polinómios a determinar.


Para que o polinómio interpolador p verifique as condições (2.6.1), quaisquer que sejam
os valores dos yi e yi′ , os polinómios Uk e Vk devem verificar as seguintes propriedades
interpolatórias:
Uk (xi ) = δki , Vk (xi ) = 0
(2.6.3)
Uk′ (xi ) = 0, Vk′ (xi ) = δki
Como as expressões (2.6.1) consubstanciam 2(n + 1) condições, é de esperar que o grau
dos polinómios Uk e Vk seja igual a 2n + 1. Vamos tentar chegar às respectivas expressões
ensaiando as seguintes formas
Uk (x) = Rk (x)L2k (x)
(2.6.4)
Vk (x) = Sk (x)L2k (x)
onde Rk e Sk são polinómios de grau ≤ 1 e Lk são os polinómios de Lagrange de grau
n associados aos nós x0 , x1 , . . . , xn . Introduzindo estas relações nas expressões (2.6.3),
obtemos
Rk (xi )L2k (xi ) = δki
Rk′ (xi )L2k (xi ) + 2Rk (xi )Lk (xi )L′k (xi ) = 0
Sk (xi )L2k (xi ) = 0
Sk′ (xi )L2k (xi ) + 2Sk (xi )Lk (xi )L′k (xi ) = δki
É fácil ver que estas relações são identicamente verdadeiras para i 6= k. Para i = k
devemos ter que
Rk (xk ) = 1, Rk′ (xk ) = −2L′k (xk )
Sk (xk ) = 0, Sk′ (xk ) = 1
2.6 Interpolação de Hermite 105

Os polinómios de grau ≤ 1 que satisfazem estas equações são

Rk (x) = 1 − 2L′k (xk )(x − xk )


(2.6.5)
Sk (x) = x − xk

Estas conclusões podem ser coligidas no teorema seguinte.

Teorema 2.6.1 O polinómio de grau ≤ 2n + 1 que interpola os valores y0 , y1 , . . . , yn e


as derivadas y0′ , y1′ , . . . , yn′ nos nós distintos x0 , x1 , . . . , xn é
n h i
(1 − 2L′k (xk )(x − xk ))L2k (x)yk + (x − xk )L2k (x)yk′
X
p(x) =
k=0

Demonstração A dedução acabada de efectuar mostra que o polinómio dado pela


expressão acima satisfaz as condições exigidas por (2.6.1). Por outro lado, o Teorema
2.2.5 garante que o polinómio de grau ≤ 2n + 1 que satisfaz estas condições é único.

Exemplo 2.6.1 Determinar o polinómio interpolador de menor grau que satisfaz as se-
guintes condições:
p(x0 ) = y0 , p′ (x0 ) = y0′
p(x1 ) = y1 , p′ (x1 ) = y1′
em que
x0 = −1, y0 = 2, y0′ = 1
x1 = 1, y1 = 3, y1′ = −1

Como neste caso n = 1, o polinómio interpolador possui grau ≤ 3. Pondo, por simplicidade,
h = x1 − x0 , os polinómios de Lagrange e respectivas derivadas são para este caso

L0 (x) = −(x − x1 )/h, L1 (x) = (x − x0 )/h

L′0 (x) = −1/h, L′1 (x) = 1/h

ou seja, substituindo valores,

L0 (x) = −(x − 1)/2, L1 (x) = (x + 1)/2

L′0 (x) = −1/2, L′1 (x) = 1/2

As expressões (2.6.5) fornecem as relações

R0 (x) = 1 − 2L′0 (x)(x − x0 ) = 1 + 2(x − x0 )/h


R1 (x) = 1 − 2L′1 (x)(x − x1 ) = 1 − 2(x − x1 )/h
S0 (x) = x − x0
S1 (x) = x − x1
106 Interpolação polinomial

donde se deduz que, para o caso presente,

R0 (x) = 1 + (x + 1) = 2 + x
R1 (x) = 1 − (x − 1) = 2 − x
S0 (x) = x + 1
S1 (x) = x − 1

As expressões (2.6.4) permitem finalmente escrever


h 2 i
U0 (x) = R0 (x)L20 (x) = 1 + (x − x0 ) (x − x1 )2 /h2
h
h 2 i
U1 (x) = R1 (x)L21 (x) = 1 − (x − x1 ) (x − x0 )2 /h2
h
V0 (x) = S0 (x)L20 (x) = (x − x0 )(x − x1 )2 /h2
V1 (x) = S1 (x)L21 (x) = (x − x1 )(x − x0 )2 /h2

e, portanto,
U0 (x) = (2 + x)(x − 1)2 /4, U1 (x) = (2 − x)(x + 1)2 /4
V0 (x) = (x + 1)(x − 1)2 /4, V1 (x) = (x − 1)(x + 1)2 /4
Introduzindo estas relações em (2.6.2), chegamos à seguinte expressão
1 3 1 1
p(x) = (2 + x)(x − 1)2 + (2 − x)(x + 1)2 + (x + 1)(x − 1)2 − (x − 1)(x + 1)2
2 4 4 4
para o polinómio interpolador pretendido.

Embora seja possível deduzir fórmulas para interpolação de f, f ′ f ′′ , . . ., a análise


acabada de levar a cabo deixa antever uma certa complexidade. O recurso à forma de
Newton oferece uma via alternativa eventualmente mais atractiva. Para tal basta consi-
derar que os nós x0 , x1 , . . . , xn são substituídos pelos nós x0 , x′0 , x1 , x′1 , . . . , xn , x′n e que
se faz tender x′k para xk de tal modo que

f (xk ) − f (x′k )
lim f [xk , x′k ] = f [xk , xk ] = ′lim = f ′ (xk )

xk →xk xk →xk xk − x′k

Quando, numa fórmula de diferenças divididas como f [xk , xk ], se faz coincidir um ou mais
nós, diz-se que se trata de diferenças divididas confluentes.
O exemplo que apresentamos a seguir ilustra a aplicação desta outra técnica.

Exemplo 2.6.2 Obter na forma de Newton o polinómio de menor grau que interpola os
seguintes valores
x0 = 0, y0 = 1, y0′ = 0
x1 = 1, y1 = 2
x2 = 2, y2 = 4, y2′ = 1
2.6 Interpolação de Hermite 107

Para resolver este problema, vamos construir a tabela de diferenças divididas tendo em consi-
deração que, conforme acabámos de ver, os nós em que a derivada é imposta devem aparecer
como nós duplos.
x y
0 1
0
0 1 1
1 −1/4
1 2 1/2 −1/4
2 −3/4
2 4 −1
1
2 4
Logo,

1
p(x) = 1 + 0(x − 0) + 1(x − 0)(x − 0) − (x − 0)(x − 0)(x − 1)
4
1
− (x − 0)(x − 0)(x − 1)(x − 2)
4
1 1
= 1 + x2 − x2 (x − 1) − x2 (x − 1)(x − 2)
4 4
Aconselhamos o leitor a confirmar que este polinómio satisfaz de facto as condições exigidas
no enunciado.

Pode demonstrar-se, por um processo semelhante ao usado no Teorema 2.4.1 e recor-


rendo à ideia de nós confluentes, que o erro cometido na interpolação de Hermite é dado
por
f (2n+2) (ξ)
en (x) = f (x) − pn (x) = (Wn (x))2 , ξ ∈ Ω̄
(2n + 2)!

2.6.2 Interpolação no plano complexo


Nesta subsecção vamos abordar o problema da construção do polinómio interpolador de
uma função f : C → C, i.e., uma função complexa de variável complexa2 . Como veremos
adiante, esta ‘viagem’ pelo plano complexo permite obter como subproduto o polinómio
interpolador de Hermite.
A função f será suposta analítica (hipótese essencial, como se verá) num domínio
Ω ⊂ C simplesmente conexo. Os nós de interpolação são denotados por z0 , z1 , . . . , zn ∈ Ω,
e o polinómio nodal, por Wn = (z − z0 )(z − z1 ) · · · (z − zn ). A Figura 2.6.1 exemplifica a
situação contemplada.
2
Esta subsecção pressupõe alguma familiaridade com a teoria das funções analíticas. Se tal não for o
caso, ela pode ser omitida sem prejuízo para a compreensão do resto do capítulo.
108 Interpolação polinomial

Im z


 zn
 
 z1

Figura 2.6.1: Notação para a interpo-


lação no plano complexo  z0

Re z

O primeiro resultado consiste numa nova e interessante expressão para as diferenças


divididas.

Teorema 2.6.2 Seja f uma função analítica num domínio simplesmente conexo Ω ⊂ C,
e Γ, um contorno de Jordan (uma curva simples fechada) de Ω contendo os nós distintos
z0 , z1 , . . . , zn no seu interior. Então,

1 f (t)
Z
f [z0 , z1 , . . . , zn ] = dt (2.6.6)
2πi Γ Wn (t)

Demonstração Vamos proceder por indução. A expressão

1 Z f (t)
f (z0 ) = dt
2πi Γ t − z0

é verdadeira pelo teorema de Cauchy, pelo que, tendo em atenção que W0 (t) = t − z0 ,

1 Z f (t)
f [z0 ] ≡ f (z0 ) = dt
2πi Γ W0 (t)

Fica assim provada a validade da expressão (2.6.6) para n = 0. Vamos supor que esta
mesma expressão é válida para um dado valor de n. Então, recorrendo à expressão
2.6 Interpolação de Hermite 109

recursiva (2.3.16) para o cálculo das diferenças divididas, vem que

f [z0 , z1 , . . . , zn , zn+1 ] =
f [z1 , . . . , zn , zn+1 ] − f [z0 , z1 , . . . , zn ]
=
zn+1 − z0
" #
1 1 Z f (t) Z
f (t)
= dt − dt
zn+1 − z0 2πi Γ (z − z1 ) · · · (z − zn+1 ) Γ (z − z0 ) · · · (z − zn )

1 1 Z (z − z0 ) − (z − zn+1 )
= f (t) dt
zn+1 − z0 2πi Γ (z − z0 )(z − z1 ) · · · (z − zn )(z − zn+1 )
1 f (t)
Z
= dt
2πi Γ Wn+1 (t)

Fica assim demonstrado que, se (2.6.6) for válida para um dado valor de n qualquer, é
também válida para o valor n + 1.
O erro de interpolação dado pela expressão (2.4.2) pode agora ser escrito na seguinte
forma
1 Z Wn (z) f (t)
en (z) = f (z) − pn (z) = f [z0 , z1 , . . . , zn , z]Wn (z) = dt (2.6.7)
2πi Γ Wn (t) t − z
Tendo presente que, sendo f uma função analítica,
1 Z f (t)
f (z) = dt
2πi Γ t − z
podemos, portanto, dizer que
1 Z f (t) 1 Z Wn (z) f (t)
pn (z) = f (z) − en (z) = dt − dt
2πi Γ t − z 2πi Γ Wn (t) t − z
1 Wn (t) − Wn (z) f (t)
Z
= dt
2πi Γ Wn (t) t−z
Posto isto, não é difícil formular o seguinte teorema.

Teorema 2.6.3 (Hermite) Nas condições do Teorema 2.6.1, pn dado por

1 Z Wn (t) − Wn (z) f (t)


pn (z) = dt (2.6.8)
2πi Γ Wn (t) t−z
é o polinómio interpolador de f nos nós distintos z0 , z1 , . . . , zn .

Demonstração Para concluir que pn é de facto interpolador basta ver que o erro
de interpolação dado por (2.6.7) é nulo nos nós z0 , z1 , . . . , zn , já que, por construção, o
polinómio nodal tem estes pontos como zeros.
110 Interpolação polinomial

Falta provar que o segundo membro da expressão (2.6.8) define um polinómio de grau
≤ n em z, precaução plenamente justificada pois este segundo membro não tem, pelo
menos à primeira vista, aspecto de ser um polinómio. Substituindo a identidade (ver o
Problema 2.10.18)
n
1 X 1
=
Wn (t) k=0 Wn′ (zk )(t − zk )
em (2.6.8), vem que
n
1 1 (Wn (t) − Wn (z))f (t)
X Z
pn (z) = ′
dt
k=0 2πi Wn (zk ) Γ (t − zk )(t − z)
Invocando o teorema dos resíduos, obtemos
n
" #
X 1 (Wn (t) − Wn (z))f (t) (Wn (t) − Wn (z))f (t)
pn (z) = ′
lim + lim
k=0
Wn (zk ) t→z t − zk t→zk t−z
n
X Wn (z)
= ′
f (zk )
k=0 Wn (zk )(z − zk )
O termo
Wn (z)
Lk (z) = ′
Wn (zk )(z −
zk )
é claramente um polinómio de grau n. De facto, ele não é outro senão o polinómio de
Lagrange associado aos nós z0 , z1 , . . . , zn , constituindo a generalização da expressão (2.3.6)
ao caso complexo.
Como vimos, continua válida no caso complexo a fórmula de Lagrange do polinómio
interpolador
n
X
pn (z) = Lk (z)f (zk )
k=0

Exemplo 2.6.3 Determinar o polinómio que interpola a função f (z) = exp(z) nos pontos
z0 = 0, z1 = 1, z2 = i .
Não oferece dificuldade calcular os polinómios de Lagrange, vindo

L0 = −i (z − 1)(z − i )
1
L1 = (1 + i )z(z − i )
2
1
L2 = − (1 − i )z(z − 1)
2
pelo que
1 1
p(z) = −i (z − 1)(z − i ) + (1 + i )z(z − i )e − (1 − i )z(z − 1)ei
2 2
Para obter uma estimativa do erro, consultar DAVIS (1963).
2.7 Splines 111

Caso de nós múltiplos


Uma observação importante que vamos explorar é a de que a expressão (2.6.6), ao contrário
do que tem vigorado até aqui, não obriga a que os nós z0 , z1 , . . . , zn sejam distintos. Assim,
seja mk a multiplicidade do nó zk e definamos o polinómio nodal Wn naturalmente pela
expressão
Wn (z) = (z − z0 )m0 (z − z1 )m1 · · · (z − zn )mn (2.6.9)
cujo grau é deg Wn = nk=0 mk . Recorrendo ao teorema dos resíduos para pólos zk de
P

ordem mk , o erro de interpolação dado por (2.6.7) pode agora exprimir-se da seguinte
forma
1 Wn (z) f (t)
Z
en (z) = dt
2πi Γ Wn (t) t − z
n
#(mk −1)
(t − zk )mk f (t)
"
1 X
= f (z) + Wn (z)
k=0 (mk − 1)! Wn (t)(t − z) t=zk
n mX
#(j)
k −1
(z − zk )−(mk −j)
"
X 1 f (t)
= f (z) + Wn (z)
k=0 j=0 (mk − 1)! lk (t) t=zk
j!
mX
#(j)
n k −1
(z − zk )j
"
X f (t)
= f (z) + lk (z)
k=0 j=0 lk (t) t=zk
j!

onde fizemos, à semelhança da expressão (2.3.4),

Wn (z)
lk (z) = (2.6.10)
(z − zk )mk

Portanto,
mX #(j)
n k −1
(z − zk )j
"
X f (t)
pn (z) = lk (z) (2.6.11)
k=0 j=0 lk (t) t=zk
j!
é o polinómio que resolve o seguinte problema de interpolação de Hermite,

p(j) (zk ) = f (j) (zk ), j = 0, . . . , mk , k = 0, . . . , n

2.7 Splines
Mencionámos atrás, na Secção 2.4, as dificuldades que podem surgir quando se empregam
polinómios interpoladores de elevado grau e vimos um remédio possível por recurso a
uma escolha mais criteriosa da localização dos nós. Uma outra direcção de ataque a
este problema consiste em prescindir de usar funções interpoladoras em C ∞ (Ω̄). De
facto, verifica-se, talvez com alguma surpresa, que um excesso de regularidade das funções
112 Interpolação polinomial

interpoladoras pode ser prejudicial à convergência. Como, por outro lado, os polinómios
continuam, pela sua simplicidade, a ser computacionalmente atraentes, pode tentar-se
uma solução de compromisso usando polinómios seccionalmente contínuos no intervalo
Ω̄. Estas funções têm vindo modernamente a ser conhecidas pela designação inglesa de
‘splines’ , em virtude da sua origem. Os splines são réguas de madeira utilizadas pelos
desenhadores para traçar curvas suaves que passem por pontos dados. Esta técnica é
muito utilizada nas salas do risco da indústria naval para apurar a forma dos cascos dos
navios a partir de esboços relativamente grosseiros. Ao obrigar essas réguas a passar por
certos pontos, o desenhador está na verdade a construir por meios mecânicos uma função
interpoladora com uma certa regularidade que depende da maior ou menor flexibilidade
das réguas.
A análise revelou que estas réguas produziam curvas cujas equações eram polinómios
do terceiro grau seccionalmente contínuos, concretamente com derivadas contínuas até à
segunda ordem, mas com derivadas descontínuas da terceira ordem em diante. Esta é,
aliás, a principal diferença deste tipo de interpolação relativamente à interpolação clássica
por polinómios. Schoenberg apresentou em 1946 a primeira definição rigorosa deste tipo
de funções tendo a generalização da ideia levado ao seguinte conceito de splines.
Definição 2.7.1 Uma função S é um spline polinomial de grau m (m ≥ 0) relativo aos
nós a = x0 < x1 < · · · < xn = b se verificar as seguintes propriedades:
1. S coincide em cada subintervalo Ωi = [xi−1 , xi ), i = 1, . . . , n com um polinómio de
grau ≤ m.
2. S ∈ C m−1 (Ω̄).
O conjunto dos splines polinomiais de grau m na malha Ωi = [xi−1 , xi ), i = 1, . . . , n será
denotado por Pm,n .
Daqui em diante, e uma vez que só trataremos esporadicamente de outros splines que
não sejam polinomiais, abandonaremos o qualificativo de polinomial.
Empregamos ainda a seguinte notação
hi = xi − xi−1 , h = max hi
1≤i≤n

em que a h se costuma dar o nome de parâmetro da malha. O seu valor dá uma ideia do
refinamento da malha e, no estudo da convergência, preocupamo-nos com o que se passa
quando h → 0.

2.7.1 Splines de grau zero


O spline mais simples corresponde ao caso m = 0. De acordo com a definição, o spline de
grau m = 0 coincide em cada subintervalo Ωi com uma constante e pertence a C −1 (Ω̄).3
3
Interpretaremos esta classe de funções como constituída por funções seccionalmente contínuas cuja
primitiva (anti-derivada) é uma função contínua.
2.7 Splines 113

Designemos por Si o polinómio de grau zero com o qual o spline S de grau zero coincide
em cada subintervalo Ωi = [xi−1 , xi ). É óbvio que

Si (x) = yi, xi−1 ≤ x < xi , i = 1, 2, . . . , n (2.7.1)

e em que yi é o valor do spline no subintervalo Ωi .


A forma destes splines é esquematizada na Figura 2.7.1. Apesar do seu aspecto sin-
gelo, estes splines têm grande interesse teórico (basta recordar que o conceito de integral
à Riemann recorre a este tipo de funções) e prático (como teremos oportunidade de veri-
ficar).
Para construir este spline é preciso tomar uma opção relativamente à escolha dos
valores dos yi . Se o spline interpolar uma função f ∈ C 1 (Ω̄) podemos escolher pontos
ai ∈ Ωi e fazer Si (x) = f (ai ), i = 1, 2, . . . , n. Os casos mais vulgares são tomar o extremo
esquerdo do subintervalo, i.e., ai = xi−1 , ou o extremo direito, i.e., ai = xi , ou o ponto
médio, i.e., ai = (xi−1 + xi )/2. A escolha afecta naturalmente o erro de interpolação.

Teorema 2.7.1 Seja f ∈ C 1 (Ω̄) e S ∈ P0,n . Então, o erro de interpolação de f por S é


majorado por
1
kek∞ ≤ kf ′ k∞ h, ou kek∞ ≤ kf ′ k∞ h
2
no caso de os nós de interpolação coincidirem com os extremos dos subintervalos ou com
os pontos médios dos subintervalos, respectivamente.

Demonstração Basta aplicar o resultado do Teorema 2.4.1 a cada subintervalo. No


subintervalo Ωi temos que
e(x) = f ′ (ξi )(x − ai )
Tomando valores absolutos e majorando, chega-se sem dificuldade às expressões do enun-
ciado do teorema.
Como se vê, existe convergência quando h → 0 e esta é linear em h, havendo vantagem
em considerar os pontos médios dos subintervalos como nós de interpolação. Notemos
que, se os nós puderem ser posicionados livremente, a última expressão acima sugere uma
orientação: tentar concentrá-los nas zonas em que a primeira derivada for maior em valor
absoluto.

2.7.2 Splines de grau um


De acordo com a Definição 2.7.1, a função S coincide em cada subintervalo Ωi com um
polinómio de grau ≤ 1 e S é contínua em todo o intervalo Ω̄. Este spline é, portanto,
constituído por segmentos de recta contínuos nos nós, conforme a Figura 2.7.2 mostra
esquematicamente.
114 Interpolação polinomial

y y1 y y1
  y3

y2 y2
 
y0 y0
 

x0 x1 x2 x3 x x0 x1 x2 x3 x

Figura 2.7.1: Spline de grau 0 Figura 2.7.2: Spline de grau 1

Designemos por Si o polinómio de grau ≤ 1 com o qual o spline de grau um S coincide


em cada subintervalo Ωi . É óbvio que
xi − x x − xi−1
Si (x) = yi−1 + yi , xi−1 ≤ x ≤ xi (2.7.2)
hi hi
em que os yi são os valores nodais do spline. Esta expressão assegura automaticamente a
continuidade do spline, i.e., S ∈ C(Ω̄).
A estimativa do erro é dada pelo teorema seguinte.
Teorema 2.7.2 Seja f ∈ C 2 (Ω̄) e S ∈ P1,n . Então, o erro de interpolação de f por S é
majorado por
1
kek∞ ≤ kf ′′ k∞ h2
8
Demonstração Basta aplicar os resultados do Teorema 2.4.1 e do Exemplo 2.4.1 a
cada subintervalo.

2.7.3 Splines quadráticos


O spline seguinte obtido pondo m = 2 coincide com um polinómio de grau ≤ 2 em cada
subintervalo Ωi e S ∈ C 1 (Ω̄), ou seja, é uma função continuamente diferenciável em Ω̄. É
fácil visualizar este spline quadrático como formado por troços de parábolas que se ligam
de modo contínuo e com tangentes também contínuas.
A construção deste spline é, contudo, menos directa do que a do spline de grau 1.
Como em cada subintervalo Ωi o spline coincide com um polinómio de grau ≤ 2, são
precisos 3 coeficientes para definir este polinómio neste subintervalo e, por conseguinte,
um total de 3n coeficientes. A condição de que o spline interpola nos nós xi−1 , xi os
valores yi−1, yi , fornece 2 equações por cada subintervalo, logo 2n equações no total, e
2.7 Splines 115

o requisito de continuidade da primeira derivada nos nós interiores x1 , . . . , xn−1 dá mais


n−1 equações. Ficamos a dispor, no total, de 3n−1 equações lineares para 3n incógnitas,
o que é insuficiente. Para especificar de forma única este spline torna-se necessário impor
uma condição suplementar que pode ser, por exemplo, a de obrigar a primeira derivada
num dos nós extremos, x0 digamos, a assumir um determinado valor.
Designando por Si o polinómio de grau ≤ 2 com o qual o spline quadrático S coincide
em cada subintervalo Ω̄i = [xi−1 , xi ], podemos afirmar que a derivada Si′ varia linearmente
neste intervalo, pelo que
xi − x x − xi−1
Si′ (x) = mi−1 + mi (2.7.3)
hi hi
em que os mi designam as primeiras derivadas nos nós, i.e.,

mi = Si′ (xi ) = S ′ (xi ), i = 0, 1, . . . , n

A expressão (2.7.3) assegura desde logo que o spline quadrático possui primeiras derivadas
contínuas. Integrando esta expressão e impondo a condição de interpolação

Si (xi−1 ) = S(xi−1 ) = yi−1

obtemos, após manipulações simples, a expressão


x − xi−1 (x − xi−1 )2
 
Si (x) = yi−1 + mi−1 (x − xi−1 ) 1 − + mi (2.7.4)
2hi 2hi
Para que o spline interpole também o valor yi em xi , i.e.,

Si (xi ) = S(xi ) = yi

devemos ter que


hi
Si (xi ) = yi−1 + (mi−1 + mi ) = yi
2

y
y2 y3
 
y1

Figura 2.7.3: Spline quadrático
(m0 = tan θ0 ) y0 0


x0 x1 x2 x3 x
116 Interpolação polinomial

donde resulta que


yi − yi−1
mi = 2 − mi−1 , i = 1, . . . , n (2.7.5)
hi
Assim, se m0 for dado, podemos obter através de (2.7.5) os valores nodais das derivadas
m1 , m2 , . . . , mn , ficando deste modo completamente definida a expressão (2.7.4) de Si . O
aspecto destes splines é esquematizado na Figura 2.7.3.
Contudo, certas dificuldades relacionadas com um comportamento algo instável levam
a que os splines quadráticos sejam pouco utilizados, sobretudo havendo uma alternativa
fácil, como vamos ver a seguir.

2.7.4 Splines cúbicos


O spline correspondente a m = 3, conhecido como spline cúbico coincide, em cada subin-
tervalo Ωi , com um polinómio de grau ≤ 3 e possui derivadas contínuas até à segunda
ordem em Ω̄. Estas propriedades, aliadas à facilidade de construção e à relativa esta-
bilidade de comportamento, justificam a sua maior divulgação e popularidade. Vejamos
como se podem obter as expressões que definem este tipo de spline.
Designemos por Si o polinómio de grau ≤ 3 com o qual o spline cúbico S coincide em
cada subintervalo Ω̄i = [xi−1 , xi ]. É óbvio que a segunda derivada Si′′ (x) é um polinómio
de grau ≤ 1 em Ω̄i pelo que pode ser escrita na forma (notar a semelhança com a expressão
(2.7.3))
xi − x x − xi−1
Si′′ (x) = Mi−1 + Mi (2.7.6)
hi hi
com Mi = Si′′ (xi ) = S ′′ (xi ), i = 0, 1, . . . , n. Aos parâmetros Mi costuma dar-se o nome
de momentos. A vantagem de tomar (2.7.6) como ponto de partida para a construção
do spline cúbico é a de que a continuidade das segundas derivadas fica automaticamente
assegurada. Integrando esta expressão duas vezes obtemos
(xi − x)3 (x − xi−1 )3 xi − x x − xi−1
Si (x) = Mi−1 + Mi + ci + di (2.7.7)
6hi 6hi hi hi
onde os ci e os di são constantes de integração. Estas determinam-se impondo as condições
de interpolação
Si (xi−1 ) = yi−1, Si (xi ) = yi (2.7.8)
Após alguma álgebra simples, chegamos às seguintes relações
ci = yi−1 − Mi−1 h2i /6, di = yi − Mi h2i /6
as quais, introduzidas em (2.7.7), dão
(xi − x)3 (x − xi−1 )3
Si (x) = Mi−1 + Mi (2.7.9)
6hi 6hi
2
h2i x − xi−1
! !
hi xi − x
+ yi−1 − Mi−1 + yi − Mi
6 hi 6 hi
2.7 Splines 117

Para concluir a construção do spline cúbico falta determinar os valores dos momentos, o
que se faz impondo a condição de continuidade das primeiras derivadas nos nós,
Si′ (xi −) = Si+1

(xi +), i = 1, . . . , n − 1 (2.7.10)
Derivando (2.7.9), temos que
(xi − x)2 (x − xi−1 )2 yi − yi−1 hi
Si′ (x) = −Mi−1 + Mi + − (Mi − Mi−1 ) (2.7.11)
2hi 2hi hi 6
e, por conseguinte,
Si′ (xi −) = (yi − yi−1 )/hi + hi Mi−1 /6 + hi Mi /3

Si+1 (xi +) = (yi+1 − yi)/hi+1 − hi+1 Mi /3 − hi+1 Mi+1 /6
Introduzindo estas relações em (2.7.10) e agrupando termos, vem que
hi hi + hi+1 hi+1 yi+1 − yi yi − yi−1
Mi−1 + Mi + Mi+1 = − , i = 1, . . . , n − 1 (2.7.12)
6 3 6 hi+1 hi
Estas expressões formam um sistema de equações lineares nos momentos. Como há n + 1
incógnitas, M0 , M1 , . . . , Mn , e n − 1 equações, temos de impor duas condições suple-
mentares que são ditadas pelo contexto, sendo vulgares as que passamos a expor.

Spline completo. Este caso corresponde à situação em que as primeiras derivadas nos
nós extremos são conhecidas,
S1′ (x0 ) = y0′ , Sn′ (xn ) = yn′ (2.7.13)
com y0′ e yn′ dados. Então, as condições suplementares são facilmente extraídas de (2.7.11),
vindo
(y1 − y0 )/h1 − h1 M1 /6 − h1 M0 /3 = y0′
(2.7.14)
(yn − yn−1 )/hn + hn Mn−1 /6 + hn Mn /3 = yn′
O spline assim obtido costuma ser designado por spline completo.

Spline natural. Na ausência de qualquer informação específica nos nós extremos é


frequente optar pelas condições
S1′′ (x0 ) = M0 = 0, Sn′′ (xn ) = Mn = 0 (2.7.15)
dizendo-se neste caso que o spline é natural. Contudo, a imposição destas condições
artificiais reduz a precisão do spline (a menos que f ′′ (x0 ) = f ′′ (xn ) = 0, como é evidente)
o que deve ser tido em consideração.
118 Interpolação polinomial

Spline periódico. Se a função a interpolar for periódica no intervalo Ω̄, então, para
assegurar a periodicidade do spline cúbico, devemos exigir que
y0 = yn
(2.7.16)
S (x0 ) = S ′ (xn ),

M0 = Mn
em que as duas últimas equações representam as condições suplementares. A imposição
destas condições tem como consequência nefasta a destruição da estrutura tridiagonal do
sistema de equações. No entanto, o Problema 6.11.50 aponta para um remédio possível.

Continuidade da terceira derivada em x1 e xn−1 . As duas equações que faltam


podem ser obtidas impondo a continuidade da terceira derivada do spline nos nós x1 e
xn−1 , ou seja, fazendo
(3) (3) (3)
S1 (x1 −) = S2 (x1 +), Sn−1 (xn−1 −) = Sn(3) (xn−1 +) (2.7.17)

Equações resolventes. Em todos os casos acabamos por obter um sistema de n + 1


equações lineares com n + 1 incógnitas como pretendíamos. Se este sistema tem solução
única, ou não, é um problema que não abordaremos na sua generalidade, limitando-nos
a estudar, a título de exemplo, o caso do spline completo. Para este spline o sistema de
equações resultante das expressões (2.7.10) e (2.7.14) escrito na forma matricial é
    
2 λ0 0 ··· 0 M0 b0
µ1 2 λ1 ··· 0 M1 b1
    
   
 .. .. .. .. .. .. ..
    
 . . . . . . = . (2.7.18)
   
   
    
0
 · · · µn−1 2 λn−1  Mn−1 
 

b 
 n−1 
0 ··· 0 µn 2 Mn bn

em que pusemos, por economia de notação,


6 y1 − y0
 
λ0 = 1, b0 = − y0′
h1 h1
6 yn − yn−1
 

µn = 1, bn = y −
hn n hn
e, para i = 1, . . . , n − 1,
hi+1
λi =
hi + hi+1
hi
µi = = 1 − λi
hi + hi+1
!
6 yi+1 − yi yi − yi−1
bi = −
hi + hi+1 hi+1 hi
2.7 Splines 119

Trata-se, como facilmente se verifica, de um sistema cuja matriz é de diagonal es-


tritamente dominante por linhas, a qual, como se demonstrará no Capítulo 6, é sempre
invertível. Por conseguinte, o sistema (2.7.18) tem sempre solução única qualquer que seja
o segundo membro. Acresce que a matriz deste sistema é tridiagonal, circunstância que,
como veremos no referido capítulo, torna a obtenção dos momentos uma tarefa relativa-
mente fácil e requerendo apenas O(n) flops. Uma vez conhecidos os momentos, estamos
na posse de toda a informação necessária à construção do spline cúbico.
As boas propriedades do spline cúbico, nomeadamente a resistência a oscilações es-
púrias, encontram justificação teórica no teorema seguinte.
Teorema 2.7.3 (Holladay) Sejam dados os nós a = x0 < x1 < · · · < xn = b e os
valores nodais y0 , y1, . . . , yn . Então, de todas as funções f ∈ C 2 (Ω̄) que interpolam estes
valores, o spline cúbico natural é a única função que torna mínimo o valor de
Z b
2
J(f ) = [f ′′ (x)] dx
a

Demonstração Antes de passar à demonstração é conveniente interpretar o resultado


acabado de anunciar. Tendo em conta que o valor de f ′′ (x) é um indicador da curvatura
da função f , o valor de J(f ) representa uma espécie de ‘curvatura média’ de f no intervalo
Ω̄. O enunciado diz-nos que o spline cúbico natural é, de todas as curvas interpoladoras
com derivadas contínuas até à segunda ordem, aquela que é mais ‘direita’. Por outro lado,
sendo J(f ) proporcional à energia de deformação à flexão de uma viga elástica (a régua
flexível referida atrás), o teorema diz-nos que esta energia é mínima quando a deformada
for um spline cúbico natural.
Designando por e = f − S o erro de interpolação de f por S, decorre de imediato das
hipóteses do teorema que
Z b Z b Z b
′′ 2 ′′ 2
J(f ) = [S (x)] dx + [e (x)] dx + 2 S ′′ (x)e′′ (x) dx
a a a

Por outro lado,


Z b n Z xi
S ′′ (x)e′′ (x) dx = S ′′ (x)e′′ (x) dx
X
a i=1 xi−1

Recorrendo a integração por partes, vem que


Z xi  x i Z xi
′′ ′′ ′′ ′
S (x)e (x) dx = S (x)e (x) − S ′′′ (x)e′ (x) dx
xi−1 xi−1 xi−1

Atendendo à continuidade de S ′′ e ao facto de se tratar de um spline natural, i.e., de ser


S ′′ (a) = S ′′ (b) = 0, podemos concluir que
n  x i n h i
S ′′ (x)e′ (x) S ′′ (xi )e′ (xi ) − S ′′ (xi−1 )e′ (xi−1) = 0
X X
=
i=1 xi−1 i=1
120 Interpolação polinomial

Além disso, como S ′′′ é uma função constante no subintervalo Ωi , e pondo S ′′′ (x) = Si′′′
neste subintervalo, também é verdade que
Z xi Z xi
S ′′′ (x)e′ (x) dx = Si′′′ e′ (x) dx = Si′′′ [e(xi ) − e(xi−1 )] = 0
xi−1 xi−1

Concluímos deste modo que


Z b Z b
′′ 2 2
J(f ) = [S (x)] dx + [e′′ (x)] dx (2.7.19)
a a

Ora, como o último integral do segundo membro desta expressão nunca é negativo, vem
que Z b Z b
′′ 2 2
J(S) = [S (x)] dx ≤ J(f ) = [f ′′ (x)] dx
a a
Para demonstrar a unicidade basta notar que o sinal de igualdade nesta relação só se
verifica se e′′ = 0. Como e ∈ C 2 (Ω̄), tal implica que a sua expressão seja da forma
e(x) = A + Bx. Mas como e se anula em todos os nós, mormente nos nós extremos, é
forçoso que e = 0. Fica assim provado que J(S) < J(f ) para f 6= S.
A expressão (2.7.19), escrita na forma
Z b Z b Z b
′′ 2 ′′ 2 2
[f (x)] dx − [S (x)] dx = [f ′′ (x) − S ′′ (x)] dx (2.7.20)
a a a

é conhecida como primeira relação integral dos splines cúbicos.

Erros de interpolação
A dedução de estimativas dos erros de interpolação com splines cúbicos é um tema que
está fora do âmbito deste texto. O leitor interessado poderá consultar as referências. No
entanto, é útil conhecer os principais resultados, pelo menos para servir como termo de
comparação com as interpolações de Lagrange ou de Hermite.
Teorema 2.7.4 Seja f ∈ C 4 (Ω̄) e S o spline cúbico satisfazendo qualquer das condições
suplementares referidas nesta subsecção. Então,
5
kf − Sk∞ ≤ kD 4f k∞ h4
384
√ !
3 1
kD(f − S)k∞ ≤ + kD 4 f k∞ h3
216 24
1 1
 
kD 2 (f − S)k∞ ≤ + (h/h) kD 4 f k∞ h2
12 3
1 
kD 3 (f − S)k∞ ≤ 1 + (h/h)2 kD 4 f k∞ h
2
em que
h = min hi
1≤i≤n
2.7 Splines 121

1.2
1
1

0.8 0.8

0.6 0.6
0.4
0.4
0.2
0.2
-1 -0.5 00 0.5 1
-0.2 -1 -0.5 00 0.5 1
-0.4
-0.2

(a) Malha com 7 nós (b) Malha com 11 nós

Figura 2.7.4: Interpolação da função de Runge por splines em malhas uniformes no in-
tervalo [−1, 1]

Demonstração Consultar as referências indicadas.


Com vista a ter uma ideia da qualidade da interpolação por splines vamos aplicá-los
ao caso da função de Runge (2.4.6).
Vamos começar por tomar 7 pontos de interpolação uniformemente distribuídos no
intervalo [−1, 1]. Os resultados, mostrados na Figura 2.7.4(a), permitem extrair algumas
conclusões:

• O spline linear, apesar da sua modéstia, acompanha o andamento geral de f .

• O spline quadrático, obtido com m0 = 0, tem um comportamento razoável no


intervalo [−1, 0] mas desenvolve oscilações violentas no intervalo [0, 1], confirmando
a alusão feita atrás quanto à sua propensão para a instabilidade.

• O spline cúbico, construído como spline natural, tem o melhor comportamento,


como seria de esperar, embora exiba ainda ligeiras oscilações.

O aumento do número de pontos de interpolação para 11, considerado na Figura 2.7.4(b),


confirma estas conclusões. A escala do gráfico já não consegue agora fazer a distinção
entre o spline cúbico e a função f .
122 Interpolação polinomial

2.7.5 Splines com tensão


Os splines de grau k verificam, em cada subintervalo, a equação diferencial

dk+1 S
(x) = 0, x ∈ Ωi
dk+1 x
Esta observação serve como ponto de partida para definir outras classes de splines baseadas
em modificações a esta equação diferencial com vista a obter certas propriedades dese-
jáveis. Vamos exemplificar esta ideia para o caso de splines cúbicos com tensão. A
equação diferencial que define esta classe de splines é

d4 S 2
2d S
(x) − τi 2 (x) = 0, x ∈ Ωi (2.7.21)
d4 x dx
em que τi designa, por analogia com o modelo físico das réguas flexíveis, a tensão no
subintervalo Ωi e cujos valores estão à nossa disposição para controlar a forma do spline.
Se τi = 0 para i = 1, . . . , n recuperamos o spline cúbico normal e se τi = ∞ para
i = 1, . . . , n, obtemos o spline de grau um. Por conseguinte, valores elevados da tensão
tenderão a produzir splines com menor curvatura.
A solução de (2.7.21) não é difícil, obtendo-se após algumas manipulações, a expressão
seguinte
1
Si (x) = [Mi−1 sinh(τi (xi − x)) + Mi sinh(τi (x − xi−1 ))]
τi2
sinh(τi hi )
! !
Mi−1 xi − x Mi x − xi−1
+ yi−1 − 2 + yi − 2 (2.7.22)
τi hi τi hi

que substitui (2.7.9). Como se vê, o spline deixou de ser polinomial. Os valores nodais dos
momentos Mi determinam-se estabelecendo as condições de continuidade das primeiras
derivadas (2.7.10) e impondo as condições suplementares nos nós extremos. Omitimos
os detalhes já que o procedimento é em tudo semelhante ao seguido atrás para o spline
cúbico.

2.8 Representação de curvas


Nesta secção vamos aproveitar as ideias desenvolvidas para a interpolação polinomial para
representar curvas e não apenas funções.

2.8.1 Representação paramétrica


Uma das formas mais utilizadas na construção de curvas consiste em partir das respectivas
equações paramétricas e proceder a uma interpolação apropriada. Consideremos o caso
2.8 Representação de curvas 123

de curvas planas (as curvas no espaço tridimensional não oferecem dificuldades adicionais)
dadas pelas equações paramétricas
)
x = p(t)
t ∈ [0, 1]
y = q(t)

em que p e q são polinómios apropriados e t é um parâmetro descritivo da curva que, por


simplicidade, se tomou no intervalo [0, 1]. Se interpretarmos t como um ‘tempo’, então
estas equações representam a trajectória de uma partícula no plano.
Esta curva passará pelos pontos de coordenadas cartesianas (xk , yk ), para k = 0, . . . , n,
sse os polinómios p e q interpolarem estes valores, ou seja, se verificarem as condições
)
p(tk ) = xk
k = 0, . . . , n
q(tk ) = yk

o que reduz o problema à construção de dois polinómios interpoladores p e q de graus


≤ n.
Um problema prático que surge é o de saber como fixar os valores dos tk já que, do
ponto de vista teórico, quaisquer valores distintos no intervalo [0, 1] serviriam, nomeada-
mente os dados pela distribuição uniforme tk = k/n. Todavia, tal escolha corresponderia
ao emprego de nós equidistantes para construir os polinómios p e q, o que sabemos não ser,
em geral, a melhor opção. Uma alternativa aceitável e simultaneamente mais de acordo
com a ideia de que o parâmetro natural para descrição de curvas é o comprimento do
arco, consiste na sua aproximação pelo comprimento da linha poligonal que une os pontos
(xk , yk ), a saber
h i1/2
σj = (xj − xj−1 )2 + (yj − yj−1)2 , j = 1, . . . , n
k
X
sk = σj , tk = sk /sn , k = 1, . . . , n
j=1

em que, como é óbvio, t0 = 0 e tn = 1.

2.8.2 Curvas de Bézier


As formas tradicionais de representação de curvas apelam a parâmetros cujo significado
geométrico nem sempre é tão directo quanto seria desejável. Na síntese de curvas uti-
lizando o computador em modo interactivo, como sucede frequentemente em Gráfica
Computacional, há vantagem em adoptar representações que permitam um controlo geo-
metricamente intuitivo da curva.
Um caso que se tem revelado com sucesso é o das curvas de Bézier que recorrem a
uma representação envolvendo os polinómios de Bernstein (2.1.4). Embora estes, como
se sublinhou atrás, não exibam propriedades de aproximação particularmente atraentes,
124 Interpolação polinomial

permitem preservar certas propriedades globais como sejam a monotonicidade, a convex-


idade, etc., que são muito importantes na modelação geométrica. Concretamente, estas
curvas são representadas por
n
)
x = k=0 ψk,n (t)xk
P
Pn t ∈ [0, 1] (2.8.1)
y = k=0 ψk,n (t)yk

em que os ψk,n são os polinómios


!
n k
ψk,n (t) = t (1 − t)n−k (2.8.2)
k
e os (xk , yk ) são as coordenadas cartesianas dos chamados pontos de controlo Pk da curva.
Os ψk,n são, como se vê de imediato, os termos do desenvolvimento de ((1 − t) + t)n .
Registamos ainda as seguintes propriedades destes polinómios.
Teorema 2.8.1 Os polinómios ψk,n gozam das seguintes propriedades:
1. são positivos, i.e., ψk,n (t) ≥ 0, ∀t ∈ [0, 1];
2. ψ0,n (0) = ψn,n (1) = 1;
3. ψk,n e ψn−k,n são simétricos um do outro relativamente ao centro t = 1/2 do intervalo
[0, 1];
4. ψk,n tem um único máximo no intervalo [0, 1] situado no ponto t = k/n;
Pn
5. k=0 ψk,n (t) = 1;
6. os ψk,n podem ser calculados pela fórmula recursiva
ψk,n = (1 − t)ψk,n−1 + tψk−1,n−1
em que se convenciona fazer ψk,n = 0, sempre que k < 0 ou k > n;
7. as primeiras derivadas de ψk,n podem ser calculados por

ψk,n = n (ψk−1,n−1 − ψk,n−1 )

Demonstração É fácil pelo que se deixa como exercício.


Recorrendo a esta última propriedade, deduz-se que as componentes do vector tangente
à curva de Bézier são
n−1
dx X
= n ψk,n−1 (t)(xk+1 − xk )
dt k=0
n−1
dy X
= n ψk,n−1 (t)(yk+1 − yk )
dt k=0
2.9 Notas e referências 125

P2
P1 P1
P3 P3

P0 P0
P2

Figura 2.8.1: Cúbicas de Bézier

Em particular, temos que

dx dx
(0) = n(x1 − x0 ), (1) = n(xn − xn−1 )
dt dt
dy dy
(0) = n(y1 − y0 ), (1) = n(yn − yn−1 )
dt dt
pelo que no extremo t = 0 a curva de Bézier passa por P0 com uma tangente na direcção
de P0 para P1 e no extremo t = 1 passa por Pn com uma tangente na direcção de Pn−1
para Pn .
A Figura 2.8.1 mostra o caso n = 3, as célebres cúbicas de Bézier, cuja definição,
obtida a partir de (2.8.1), é dada por

x = (1 − t)3 x0 + 3t(1 − t)2 x1 + 3t2 (1 − t)x2 + t3 x3


y = (1 − t)3 y0 + 3t(1 − t)2 y1 + 3t2 (1 − t)y2 + t3 y3

2.9 Notas e referências


1. O material relativo a interpolação com polinómios de classe C ∞ é clássico, constando de
qualquer texto sobre métodos numéricos. Em DAVIS (1963) e em SENDOV and ANDREEV
(1994) podem encontrar-se exposições mais avançadas.

2. Segundo KNUTH (1998), o método de Horner para calcular polinómios foi publicado em 1819
por W. G. Horner, mas já era utilizado por Newton em 1699 e até conhecido na China no
século XIII. Nesta referência são desenvolvidas vários métodos para calcular polinómios,
nomeadamente generalizações do algoritmo de Horner e extensões ao caso de aritmética
complexa.

3. O artigo BERRUT and TREFETHEN (2004) apresenta uma defesa interessante das fórmulas
baricêntricas bem como alguns resultados teóricos úteis e referências adicionais.
126 Interpolação polinomial

4. Os splines são tratados com mais desenvolvimento em AHLBERG et al. (1967) e em SCHU-
MAKER (1981), onde são apresentadas definições mais gerais desta classe de funções. Tam-
bém PRENTER (1975) e SCHULTZ (1973) são obras com interesse do ponto de vista das
aplicações de splines na construção de soluções aproximadas de equações diferenciais e inte-
grais. de BOOR (1978) segue um tratamento mais prático e inclui numerosos programas.

5. A aplicação da interpolação à construção de curvas e superfícies é um tema de grande im-


portância em Gráfica Computacional. Para um estudo mais desenvolvido podem consultar-se
as referências MORTENSON (1985), YAMAGUCHI (1988) e PIEGL and TILLER (1995).

2.10 Problemas
1. A demonstração de que uma função f não é um polinómio não é tão trivial como parece
à primeira vista. De facto, como podemos assegurar que sin x, por exemplo, não pode ser
expressa numa soma finita de monómios? A via geralmente adoptada é a de que, se f violar
alguma das propriedades que os polinómios possuem, então não pode ser um polinómio.

a) Determinar todos os polinómios periódicos, i.e., todos os p ∈ P tais que p(x + T ) = p(x),
∀x e para um certo período T > 0 e provar que sin x, cos x, tan x, . . . , não são polinómios.

b) Provar que x não é um polinómio.

2. Sejam p e q polinómios não nulos.

a) Demonstre que

deg(p + q) ≤ max(deg p, deg q)


deg(pq) = deg p + deg q

b) Dê exemplos em que a desigualdade estrita se verifica na primeira destas relações.


c) Mostre que a convenção deg 0 = −∞ é a única compatível com a extensão das relações
acima ao caso de polinómios nulos.
d) Sendo assim, prove que pq = 0 implica que p = 0 ou q = 0.

3. O Algoritmo de Horner pode não ser o mais indicado quando o polinómio p assume formas
especiais. Considere o caso p = xn , i.e., p é a potência n de x.

a) Com base na representação binária de n = ki=0 ni 2i deduza uma forma alternativa de


P
calcular p e mostre que o número de multiplicações é ≤ 2k ≤ 2 log2 n, sendo portanto
mais eficiente. Exemplifique para o caso x23 .
b) Apresente um pseudo-programa que, dado n, calcula p = xn por este método.

Nota: Potências elevadas de números naturais surgem com frequência em criptografia, por
exemplo, cálculos do tipo 15794732106 (mod 594161) onde qualquer ganho de eficiência é bem
vindo.
2.10 Problemas 127

4. Escreva o polinómio p(x) = 1 + x − x2 + 2x4 na forma de Newton com centros em c1 = −1,


c2 = 0, c3 = 1 e c4 = 2.

5. Determine o quociente e o resto da divisão do polinómio p(x) = x4 + x3 − 2x2 + 3 por x2 − 1,


empregando o algoritmo de Horner.

6. Explique a seguinte disposição de cálculos para o algoritmo de Horner aplicado à obtenção


de p(2) com p(x) = 3x3 − x2 + 6x + 5:

3 −1 6 5
6 10 32
5 16 37

e, portanto, p(2) = 37.

7. a) Demonstre que se c for um centro duplo, i.e., se

p(x) = a0 + a1 (x − c1 ) + a2 (x − c1 )(x − c2 ) + · · ·

com c1 = c2 = c, então p′ (c) = a1 . Generalize este resultado do seguinte modo: se


c1 = c2 = · · · = ck+1 = c, então

p(j) (c) = j!aj , j = 0, 1, . . . , k

b) Calcule a derivada do polinómio p(x) = 2 − x + x2 − 4x3 no ponto x = 2 recorrendo a


este resultado.

8. Demonstre que um polinómio é uma função mal condicionada na vizinhança de um zero


múltiplo.

9. Considere o cálculo do valor de um polinómio pelo método de Horner (Algoritmo 2.1.2) em


aritmética de precisão finita, nas condições admitidas na Subsecção 1.4.2 e para argumento
x e coeficientes ak com representação exacta (para simplificar a análise).

a) Prove que o valor obtido ỹ verifica


n
X
ỹ = fl(p(x)) = ak xk (1 + θk ), com |θk | ≤ γ2k+1 , k = 0, . . . , n − 1, |θn | ≤ γ2n
k=0

ou seja, o valor obtido é igual ao valor exacto de um polinómio cujos coeficientes cons-
tituem ligeiras perturbações dos coeficientes originais.
b) Mostre que o erro relativo é majorado por
n
ỹ − y |q(|x|)| X
y ≤ γ2n |p(x)| ,
com q(x) = |ak |xk
k=0

c) Que majorante resulta se ak ≥ 0, k = 0, . . . , n e x ≥ 0?


128 Interpolação polinomial

d) E se (−1)k ak ≥ 0, k = 0, . . . , n e x ≤ 0?
e) O que conclui nos restantes casos?

10. Sejam p = 2x4 − 4x3 + 5x + 1 e zi os seus zeros.


P4 k
a) Calcule, sem obter explicitamente os zeros, as seguintes quantidades: σk = i=1 zi ,
k = 1, . . . , 3;
b) Determine o polinómio mónico cujos zeros são 2zi , i = 1, . . . , 4.

11. Mostre que o determinante de Vandermonde v(x0 , . . . , xn ) é positivo para quaisquer nós
x0 < · · · < xn e é nulo quando houver coincidência de nós.

12. Determine o polinómio interpolador dos valores (0,1), (1,3) e (2,2):

a) na forma de Lagrange;
b) na forma de Newton com centros nos nós.

13. Sejam f, g ∈ C 1 (Ω̄) e considere a função F (x) = g[a, b]h(x) − h[a, b]g(x).

a) Mostre que F [a, b] = 0;


b) Demonstre a seguinte versão generalizada do teorema do valor médio: existe um ξ ∈ (a, b)
tal que
g[a, b]h′ (ξ) = h[a, b]g′ (ξ)
e, se os denominadores forem diferentes de zero,

h[a, b] h(b) − h(a) h′ (ξ)


= = ′
g[a, b] g(b) − g(a) g (ξ)

c) Recupere o teorema usual do valor médio de Lagrange.

14. Com f (x) = ln x, calcule f (1.2) por interpolação cúbica, sendo dados os seguintes valores:

x 0.5 1.0 1.5 2.0


f (x) −0.693147 0.0 0.405465 0.693147

Obtenha um majorante para o erro de interpolação e compare-o com o erro efectivamente


cometido.

15. Sejam Lk os polinómios de Lagrange associados a um conjunto de nós x0 , . . . , xn distintos.

a) Demonstre que os Lk satisfazem a seguinte relação


n
X
pk (xi )Li (x) = pk (x), k = 0, 1, . . . , n
i=0
2.10 Problemas 129

b) e que, em particular,
n
X n
X
Li (x) = 1, (xi )k Li (x) = xk
i=0 i=0

c) Prove que os Lk que não mudam de sinal no intervalo de interpolação são apenas os que
possuem grau ≤ 1.

16. Particularize a segunda fórmula baricêntrica para o caso de nós equidistantes xk = x0 + kh


com k = 0, 1, . . . , n e obtenha a seguinte expressão para o polinómio interpolador
 
Pn k n yk
k=0 (−1)
k x − xk
pn (x) =  
Pn k
n 1
k=0 (−1)
k x − xk

17. Deduza as seguintes expressões para as derivadas dos polinómios de Lagrange


n
X 1
L′i (x) = Li (x)
xi − xk
k=0
k6=i
n
X 1
L′i (xj ) = Li (xj ) , i 6= j
xi − xk
k=0
k6=i
n n
X 1 X
L′i (xi ) = =− L′i (xj )
xi − xk
k=0 j=0
k6=i j6=i

Sugestão: Tomar logaritmos na expressão (2.3.1) e derivar.


18. Seja f uma função racional da forma f (x) = P (x)/Q(x), em que P e Q são polinómios com
as seguintes propriedades: deg P ≤ deg Q, deg Q = m ≥ 1 e Q possui m zeros distintos
x0 , x1 , . . . , xm−1 .

a) Demonstre que
m−1
X P (xi ) 1
f (x) =
Q′ (xi ) x − xi
i=0

b) Use esta expressão para deduzir que


m−1
X P (xi ) 1
f (k) (x) = (−1)k k!
Q′ (xi ) (x − xi )k+1
i=0

c) Aplique esta fórmula para obter um majorante no intervalo [0, 1] de |f (4) (x)| quando
f (x) = 1/(x2 − 4).
130 Interpolação polinomial

d) Demonstre que
n
1 X 1
= ′
Wn (x) Wn (xi )(x − xi )
i=0

19. Considere funções (não necessariamente polinómios) Wn e vi tais que

Wn (xi ) = 0, Wn′ (xi ) 6= 0, vi (xi ) = 0, vi′ (xi ) 6= 0; i = 0, . . . , n


vi (xj ) 6= 0, i 6= j

a) Mostre que a função


vi′ (xi ) Wn (x)
Li (x) =
Wn′ (xi ) vi (x))
satisfaz a condição interpolatória (2.3.7) e que, portanto, a função
n
X
φn (x) = Li (x)yi
i=0

interpola os valores yi nos nós xi , i = 0, . . . , n.


Qn
b) Recupere o caso da interpolação polinomial tomando vi (x) = x−xi e Wn (x) = i=0 vi (x).

Nota: Esta constitui uma via para generalizar a fórmula de interpolação de Lagrange.

20. Construa a tabela de diferenças divididas relativa aos seguintes valores da função y = sinh x:

x 0.0 0.4 0.8 1.2 1.6


y 0.0 0.41075 0.88811 1.50946 2.37557

Determine o respectivo polinómio interpolador, calcule o seu valor para x = 1.0 e compare-o
com o valor da função interpolada.

21. Mostre que o cálculo do valor do polinómio interpolador pela fórmula de Lagrange requer
2n2 + 3n somas ou subtracções, 2n2 + n − 1 multiplicações e n + 1 divisões.

22. Mostre que o cálculo da tabela de diferenças divididas requer n(n + 1) somas ou subtracções
e n(n + 1)/2 divisões.

23. Construa a tabela de diferenças divididas para os seguintes valores:

x 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8


y 0.076 0.086 0.094 0.100 0.106 0.111 0.115 0.119

Considerando que os valores de y foram obtidos por arredondamento de valores exactos,


determine o grau do polinómio interpolador de grau mínimo que permite reproduzir os
valores dados com idêntico número de decimais correctos. Construa um desses polinómios e
verifique que assim sucede.
2.10 Problemas 131

24. Prove que


n n
X f (xi ) X f (xi )
f [x0 , . . . , xn ] = =
Wn′ (xi ) (xi − x0 ) · · · (xi − xi−1 )(xi − xi+1 ) · · · (xi − xn )
i=0 i=0

e mostre que as diferenças divididas não dependem da ordem dos nós x0 , . . . , xn , i.e., todas
as permutações destes nós conduzem ao mesmo valor da diferença dividida de ordem n.
25. Produza uma demonstração alternativa do Teorema 2.3.4 baseada no facto de a função
F (z) = f (z) − pn (z) − f [x0 , x1 , . . . , xn , x]Wn (z) possuir n + 2 zeros.
26. Mostre que a forma de Newton do polinómio que verifica as seguintes condições de interpo-
lação
p(0) = y0 , p′ (0) = y0′ , p′′ (0) = 0
p(1) = y1 , p′ (1) = y1′ , p′′ (1) = 0
é p(x) = a0 + a1 x + a2 x2 + a3 x3 + a4 x3 (x − 1) + a5 x3 (x − 1)2 , com
a0 = y0
a1 = y0′
a2 = 0
a3 = y1 − y0 − y0′
a4 = 3(y0 − y1 ) + 2y0′ + y1′
a5 = −6(y0 − y1 ) − 3(y0′ + y1′ )

27. a) Demonstre que as diferenças (progressivas, regressivas ou centrais) de ordem k ≤ n de


um polinómio de grau n são, quando consideradas como funções de x, polinómios de grau
n − k.
b) Mostre, em particular, que as diferenças de ordem n são constantes, e as de ordem ≥ n+1
são nulas.
28. Empregando interpolação inversa, calcule o valor de x para o qual tan x = 0.4, sendo dados
os valores
x 0.1 0.2 0.3 0.4 0.5
tan x 0.10033 0.20271 0.30934 0.42279 0.54630
29. Mostre como se pode construir a parábola interpoladora nos nós distintos x0 , x1 , x2 a partir
das rectas interpoladoras nos nós x0 , x1 e nos nós x1 , x2 .
30. Demonstre que se a função f interpolar os valores (xi , yi ) para i = 0, 1, . . . , k − 1, e a função
g interpolar os valores (xi , yi ) para i = 1, 2, . . . , k, então a função h dada por
xk − x x − x0
h(x) = f (x) + g(x)
xk − x0 xk − x0
interpola os valores (xi , yi ) para i = 0, 1, . . . , k. Mostre que este resultado é uma generaliza-
ção da forma de Aitken-Neville.
132 Interpolação polinomial

31. a) A partir da forma de Aitken-Neville (2.3.18), prove que o valor no ponto x = 0 do


polinómio interpolador se pode calcular pela fórmula de recorrência
xm+k+1 pm,k (0) − xm pm+1,k (0) xm (pm,k (0) − pm+1,k (0))
pm,k+1 (0) = = pm,k (0) +
xm+k+1 − xm xm+k+1 − xm
b) Mostre que os cálculos são susceptíveis de serem organizados de um modo análogo ao da
tabela de diferenças divididas.
32. Prove que a estimativa do erro (2.4.3) é optimal, i.e., não pode ser melhorado dado que existe
pelo menos uma função para a qual esta expressão é verificada como uma igualdade.
33. Considere a interpolação de uma função f ∈ C 3 (Ω̄) por um polinómio do segundo grau que
interpola a função nos pontos equidistantes a, a + h e a + 2h = b. Demonstre que
h3
ke2 k∞ ≤ √ kf (3) k∞
9 3
34. Considere a interpolação de uma função f ∈ C 4 (Ω̄) por um polinómio do terceiro grau que
interpola a função nos pontos equidistantes a, a + h, a + 2h e a + 3h = b. Demonstre que
h4 (4)
ke3 k∞ ≤ kf k∞
24
35. a) Prove a seguinte estimativa para o polinómio nodal
n! n+1
kWn k∞ ≤ h , n≥1
4
em que h é o espaçamento máximo entre nós consecutivos. Sugestão: Considere, por
simplicidade, os nós ordenados do seguinte modo x0 < x1 < · · · < xn , suponha que
x ∈ [xi , xi+1 ], deduza em seguida que k(x − xi )(x − xi+1 )k∞ ≤ h2 /4 e majore os restantes
termos de forma óbvia.
b) Com base neste resultado deduza a expressão (2.4.4).
36. Considere a interpolação numa malha uniforme no intervalo Ω̄ = [−1, 1], em que os nós são
dados por xi = (2i − n)/n, i = 0, . . . , n.
a) Prove a seguinte estimativa  n
3 2
kWn k∞ ≥
n e
Sugestão: Ter em atenção que
n n n
Y 2i − n Y 1 2i − n Y 2i + 1
kWn k∞ = max x − n ≥

1 − n − n = 2 − n
x∈Ω̄
i=0 i=0 i=0
  
1 3 31 (2n)!
= 2− 2− ··· =
n n nn n!nn+1 2n
e empregar a fórmula de Stirling de aproximação do factorial

n! = nn exp(−n) 2πn exp(θn /(12n)), 0 < θn < 1
2.10 Problemas 133

b) Compare o resultado obtido acima para kWn k∞ com o caso de nós de Chebyshev. Para
n = 20, por exemplo, o que conclui?

37. Empregando a transformação de Euler, calcule


1 1 1
S =1− + − + ···
9 25 49
com seis decimais exactos (S ≈ 0.91596559).

38. Aplique a transformação de Euler às seguintes séries geométricas:

a) Sn = ∞ k 1 P∞ k
P
k=0 (−1/2) ⇒ Sn = 2 k=0 (1/4)

b) Sn = ∞ k 1 P∞ k
P
k=0 (−1/3) ⇒ Sn = 2 k=0 (1/3)

c) Sn = ∞ k 1 P∞ k
P
k=0 (−1/4) ⇒ Sn = 2 k=0 (3/8)
d) Concluia que a série transformada converge melhor no caso a), na mesma no caso b) e
pior no caso c). Nota: Ver a Definição 5.1.3 para um significado rigoroso de ‘melhor’
convergência.

39. Sejam f, g ∈ C[0, 1].

a) Prove que Bn (f + g) = Bn (f ) + Bn (g).


b) Prove que, se f > g, i.e., f (x) > g(x), ∀x ∈ [0, 1], então Bn (f ) > Bn (g).

40. Seja f ∈ C[0, 1] e Bn o polinómio de Bernstein que lhe está associado. Demonstre que

a) Bn (f, x) é interpolador nos nós x = 0 e x = 1, i.e., Bn (f, 0) = f (0), Bn (f, 1) = f (1)


b) Idem, que
n  
X
k n k
Bn (f, x) = ∆ f (0) x
k
k=0
Sugestão: Rever o que se disse na Secção 2.5 e recorrer ao binómio de Newton para
desenvolver o termo (1 − x)n−k .
c) Aplique o resultado da alínea anterior ao caso em que f (x) = x2 para chegar a
1 n−1 2
Bn (x) = x+ x
n n
e concluir que limn→∞ Bn (x) = x2 , mas que
1
kBn k∞ =
4n

d) Qual o valor de n para garantir um erro de aproximação inferior a 10−5 ? O que conclui
deste resultado?

41. Demonstre as seguintes propriedades dos polinómios de Chebyshev:


134 Interpolação polinomial

a) Tn contém só potências pares ou só potências ímpares de x consoante n for par ou ímpar,


respectivamente.
b) Tn (x) são funções pares se n for par, e funções ímpares se n for ímpar;
(
+1 se n for par
c) Tn (1) = 1 para n = 0, 1, . . . e Tn (−1) =
−1 se n for ímpar

42. Determine o polinómio que interpola os seguintes valores

x f (x) f ′ (x)
−1.0 1.0 1.0
0.0 2.0 0.0
1.0 3.0 1.0

43. Considere o seguinte problema de interpolação de Birkhoff: determinar um polinómio de


grau ≤ 2 que satisfaça

p(x0 ) = y0 , p′ (x0 ) = y0′


p′ (x1 ) = y1′
p(x2 ) = y2

Deduza as condições para que este problema tenha solução única.

44. Mostre que a interpolação de Hermite de uma função f ∈ C 4 [x0 , x1 ] e da sua primeira
derivada nos nós x0 e x1 conduz ao seguinte polinómio interpolador

p(x) = f (x0 ) + (x − x0 )f ′ (x0 ) + (x − x0 )2 f [x0 , x0 , x1 ] + (x − x0 )2 (x − x1 )f [x0 , x0 , x1 , x1 ]

e deduza que o erro satisfaz a relação

h4
kek∞ ≤ kf (4) k∞ com h = x1 − x0
384

45. Qual é o polinómio interpolador que interpola a função f e as suas primeiras n derivadas no
ponto x0 ? Que relação tem com a série de Taylor de f ?

46. a) Deduza a seguinte fórmula para o polinómio interpolador que interpola f e as suas M
derivadas em dois nós a e b:
M  (j)
M +1
X f (x) (x − a)j
p2M +1 (x) = (x − b)
(x − b)M +1 x=a j!
j=0
M  (j)
M +1
X f (x) (x − b)j
+ (x − a)
(x − a)M +1 x=b j!
j=0

b) Repita o Exemplo 2.6.1 recorrendo à expressão anterior.


2.10 Problemas 135

c) Faça M → ∞ na expressão da alínea a) e obtenha aquilo que se costuma designar por


desenvolvimento de Taylor em torno de dois pontos.

47. Diga se a função seguinte é um spline ou não, e, no caso afirmativo, qual o seu grau.

2 0≤x≤1
x + 1,

f (x) = 2x, 1≤x≤2

 2
x − 2x + 4, 2≤x≤3

48. Mostre que o spline de grau um satisfaz as propriedades de positividade, monotonicidade e


convexidade.

49. O Teorema 2.7.2 pressupõe que f ∈ C 2 . Deduza que o erro de interpolação da função
f (x) = x1/2 por splines lineares numa malha uniforme é dado por

h1/2
kek∞ =
4
o que evidencia a influência da (falta de) regularidade na ordem de convergência.

50. Diga se a função seguinte pode ser um spline cúbico ou não, e, no caso afirmativo, quais os
valores que os parâmetros a, b, c podem assumir.

2 −1 ≤ x ≤ 0
x ,

f (x) = ax3 + bx2 + cx, 0≤x≤1

2 − x, 1≤x≤2

51. a) Construa o spline quadrático S que interpola a função f (x) = sin(πx/2) nos nós 0, 1/4,
1/2, 3/4, 1.
b) Calcule S, S ′ e S ′′ nos pontos médios dos subintervalos e compare-os com os valores
exactos.

52. Prove que a derivada de um spline quadrático é um spline de grau um.

53. Os perfis alares da série NACA de quatro dígitos (esquematizados na Figura 2.10.1, onde
se empregam coordenadas normalizadas, ver ABBOTT and von DOENHOFF (1959)) são
definidos a partir de uma linha central que é um spline quadrático que interpola os pontos
indicados e que possui um máximo de valor µ para x = p.

a) Deduza que a linha média é dada por



2 x(2p − x) se 0 ≤ x ≤ p
y(x) = p µ
(1−p)2
(1 − 2p + x(2p − x)) se p ≤ x ≤ 1

b) Para que valor de p é que não há descontinuidade na segunda derivada?


136 Interpolação polinomial

Figura 2.10.1: Geometria


do perfil NACA do Pro- (p, µ)

blema 2.10.53
(0, 0) • •
(1, 0) x

54. Mostre que o segundo membro das equações (2.7.12) se pode escrever, em alternativa, do
seguinte modo
yi+1 − yi yi − yi−1
− = (hi + hi+1 )y[xi−1 , xi , xi+1 ]
hi+1 hi

55. Forme o sistema de equações (2.7.18) para o caso do spline cúbico natural.

56. Em certos casos é vantajoso construir o spline cúbico em termos das primeiras derivadas
mi = S ′ (xi ) em vez dos momentos Mi = S ′′ (xi ).

a) Mostre que a equação do spline no intervalo Ω̄i = [xi−1 , xi ], i = 1, . . . , n é

(x − xi−1 )(x − xi )2 (x − xi )(x − xi−1 )2


Si (x) = mi−1 + m i
h2i h2i
h 2 i (x − x )2
i
+ yi−1 1 + (x − xi−1 ) 2
hi hi
h 2 i (x − xi−1 )2
+ yi 1 − (x − xi )
hi h2i

Sugestão: Recorra às expressões do Exemplo 2.6.1.


b) Estabeleça as condições de continuidade das segundas derivadas nos nós e obtenha as
equações que os mi devem satisfazer.
c) Forme o sistema de equações que determina os valores destes parâmetros para o caso do
spline natural.

57. Seja S ∈ P1,n o spline linear que interpola a função f ∈ C(Ω̄). Mostre que:

a) kSk∞ = max0≤i≤n |S(xi )| = max0≤i≤n |f (xi )| ≤ kf k∞ ;


b) kf − Sk∞ ≤ 2kf − sk∞ , ∀s ∈ P1,n ;
c) kf − Sk∞ ≤ 2 inf s∈P1,n kf − sk∞ , i.e., o erro de interpolação de f pelo spline linear não
é pior que o dobro do erro da melhor aproximação de f por splines lineares.

58. Demonstre que o segundo membro das equações resolventes do spline cúbico completo satis-
faz a relação bi = 3yi′′ + O(h), no caso de malha não-uniforme, e bi = 3yi′′ + O(h2 ), no caso
de malha uniforme.
2.10 Problemas 137

59. Pretende-se interpolar a função sin(πx/2) no intervalo [0, 1/2] por um spline cúbico numa
malha uniforme. Calcule o número mínimo de nós a usar para garantir que os erros não
excedam 0.5 × 10−4 nos valores da função e 0.5 × 10−3 nos valores da primeira derivada.
60. Explicite as condições de continuidade (2.7.17).
61. Sejam dados os nós a = x0 < x1 < · · · < xn = b e os valores nodais y0 , y1 , . . . , yn . Demonstre
que, de todas as funções f ∈ C(Ω̄) que interpolam estes valores, o spline de grau um é a
única função que torna mínimo o valor de
Z b
 ′ 2
J(f ) = f (x) dx
a

Nota: Este resultado é o equivalente do Teorema de Holladay para os splines de grau um.
62. Obtenha as expressões das curvas de Bézier para n = 1 (segmentos de Bézier) e para n = 2
(quadrática de Bézier).
63. a) Construa a cúbica de Bézier para os pontos de controlo
P0 = (x0 , y0 ) = (0, 0)

P1 = (x1 , y1 ) = ( 3/2, 1/2)

P2 = (x2 , y2 ) = (1/2, 3/2)
P3 = (x3 , y3 ) = (x2 , y2 )

b) Diga, qualitativamente, qual a disposição dos pontos de controlo para gerar uma cúbica
de Bézier com a forma de ∞.
64. a) Construa a cúbica de Bézier que pretende aproximar o quarto de circunferência de raio
unitário e centro na origem recorrendo aos pontos de controlo
P0 = (x0 , y0 ) = (1, 0)
P1 = (x1 , y1 ) = (1, 1)
P2 = (x2 , y2 ) = (0, 1)

b) Determine o máximo erro radial.


65. a) Determine a forma dos polinómios de Bézier de modo a que a curva passe pelos pontos
P0 = (x0 , y0 ) e P1 = (x1 , y1 ) com tangentes t0 e t1 , respectivamente (curva de Ferguson-
Coons).
b) A especificação das tangentes através de dois pontos auxiliares revela-se mais prática em
Gráfica Computacional. Assim, sejam Q0 e Q1 dois pontos auxiliares tais que
t0 = λ(Q0 − P0 )
t1 = λ(Q1 − P1 )
em que λ é um factor de normalização à nossa disposição. Determine as expressões da
curva de Ferguson-Coons.
138 Interpolação polinomial

c) Obtenha, com λ apropriado, o caso particular da cúbica de Bézier.

66. Prove que se f (x) for uma função convexa, então também o polinómio de Bernstein Bk,n (f, x)
é uma função convexa.

67. Prove que a curva de Bézier está contida no convexo envolvente dos pontos P0 , P1 , . . . Pn ,
uma propriedade muito útil para o controlo da curva. Nota: O convexo envolvente de
um conjunto de pontos {P0 , P1 , . . . , Pn } (no plano) é o conjunto definido P por {(x, y) =
(α0 x0 + α1 x1 + · · · + αn xn , α0 y0 + α1 y1 + · · · + αn yn )}, com os αi ≥ 0 e ni=0 αi = 1.
Capítulo 3

Derivação numérica

Neste capítulo vão ser estudados métodos para obter aproximações às derivadas de funções
recorrendo basicamente à ideia de interpolação. O objectivo é deduzir as chamadas fór-
mulas de diferenças finitas e estimar os respectivos erros.

3.1 Introdução
Em muitas circunstâncias torna-se necessário obter valores das derivadas de uma função
sem recorrer à respectiva expressão analítica por esta não ser conhecida ou por ser dema-
siado complicada. Um exemplo da primeira situação é o da determinação da velocidade
de um corpo a partir das suas posições medidas em instantes de tempo sucessivos ou o do
cálculo da derivada de uma função cujos valores são dados por tabelas ou simplesmente
por uma rotina de computador que fornece o valor da função. Para se convencer da
necessidade de evitar a derivação por via analítica, considere o leitor a seguinte função
 
f (x) = exp (x + ln(sin(x2 + arctan(1 + x3 )1/2 ) + 1))x (3.1.1)

e imagine (imagine apenas!) que era necessário calcular, sem recurso a programação
simbólica, a segunda derivada! Situações análogas a esta surgem nomeadamente em
problemas de optimização em que é necessário determinar extremos de funções cujas
expressões podem assumir formas bastante complexas. Por estas razões é conveniente
dispor de técnicas alternativas à derivação analítica que sejam simultaneamente fáceis
de usar e que permitam obter valores com a precisão necessária. Estas técnicas são
genericamente designadas por derivação numérica e constituem o tema deste capítulo.
É possível fundamentar a obtenção de derivadas substituindo a função a derivar por
uma outra que de algum modo a aproxime mas cuja derivação seja mais simples. Como
candidatos a funções aproximadoras surgem com toda a naturalidade os polinómios, não
só pelas propriedades referidas no capítulo anterior mas também porque a derivação deste
tipo de funções é uma tarefa sem dificuldade. Assim, para determinar o valor das derivadas

139
140 Derivação numérica

de uma função f num ponto x dado, sendo conhecidos os valores nodais yi = f (xi ) nos
n + 1 nós distintos xi , i = 0, 1, . . . , n procede-se do seguinte modo:

• construir o respectivo polinómio interpolador pn ;

• tomar as derivadas deste como aproximações às derivadas de f .

Recordando o que dissemos na Secção 2.4, o erro de interpolação polinomial vem dado
por
en (x) = f (x) − pn (x) (3.1.2)
e pode escrever-se, tendo presente a expressão (2.4.2), na forma

en (x) = f [x0 , x1 , . . . , xn , x]Wn (x) (3.1.3)

em que Wn é o polinómio nodal


n
Y
Wn (x) = (x − x0 ) · · · (x − xn ) = (x − xi ) (3.1.4)
i=0

Continuaremos a designar por Ω̄ = [a, b] o menor intervalo que contém os nós de interpo-
lação.

3.2 Derivadas de primeira ordem


Consideremos então o problema de determinar o valor da primeira derivada de uma função
f num ponto x dado. Como referimos, a técnica mais usual consiste em construir um
polinómio interpolador pn e calcular analiticamente a respectiva derivada, esperando deste
modo obter uma aproximação suficientemente boa, ou seja, tomar f ′ (x) ≈ p′n (x). Por
derivação de (3.1.2) e tendo em conta (3.1.3), vem que o erro envolvido é

e′n (x) = f ′ (x) − p′n (x)


(3.2.1)
= f [x0 , x1 , . . . , xn , x, x]Wn (x) + f [x0 , x1 , . . . , xn , x]Wn′ (x)

Admitindo que f ∈ C n+2 (Ω̄), o Teorema 2.3.4 permite-nos obter uma outra forma de
exprimir e′n , talvez mais esclarecedora,

1 1
e′n (x) = f (n+2) (ξ)Wn (x) + f (n+1) (η)Wn′ (x), ξ, η ∈ Ω̄ (3.2.2)
(n + 2)! (n + 1)!

Felizmente, em duas situações especiais mas com interesse prático corrente, esta expressão
pode ser simplificada.
3.2 Derivadas de primeira ordem 141

O ponto x é um dos nós. Suponhamos que o ponto em que se pretende obter o valor
da derivada coincide com o nó xi . Neste caso, tendo em atenção a definição de Wn dada
pela expressão (3.1.4), o primeiro termo do segundo membro de (3.2.2) anula-se, vindo

1
e′n (xi ) = f (n+1) (η)Wn′ (xi )
(n + 1)!
n
1
f (n+1) (η) (xi − xj )
Y
= (3.2.3)
(n + 1)! j=0
j6=i

O ponto x é um zero de Wn′ . Seja x̄ um zero de Wn′ , i.e, Wn′ (x̄) = 0. Então, resulta
de (3.2.2) que o erro se exprime por

1
e′n (x̄) = f (n+2) (ξ)Wn (x̄) (3.2.4)
(n + 2)!

Em certos casos, o ponto x̄ está disposto simetricamente em relação aos nós, o que
implica imediatamente que estes sejam em número par e que, portanto, n seja ímpar.
Assim, devido à simetria, temos que

xn−i − x̄ = x̄ − xi , i = 0, 1, . . . , (n − 1)/2

n (n−1)/2
Y Y
Wn (x) = (x − xi ) = (x − xi )(x − xn−i )
i=0 i=0

Mas, por outro lado,

x − xi = (x − x̄) + (x̄ − xi )
x − xn−i = (x − x̄) + (x̄ − xn−i ) = (x − x̄) − (x̄ − xi )

daqui resultando que


(n−1)/2
[(x − x̄)2 − (x̄ − xi )2 ]
Y
Wn (x) =
i=0

Ora,  
D (x − x̄)2 − (x̄ − xi )2 = 2(x − x̄)
pelo que este termo se anula quando x = x̄. A expressão do erro simplifica-se, obtendo-se
então
(n−1)/2
′ 1 (n+2)
(−(x̄ − xi )2 )
Y
en (x̄) = f (ξ) (3.2.5)
(n + 2)! i=0

Vejamos agora alguns casos particulares com maior aplicação.


142 Derivação numérica

3.2.1 Diferenças finitas de primeira ordem


Consideremos que n = 1. Neste caso a função f é substituída pelo polinómio p1 interpo-
lador nos nós x0 e x1 , e a derivada f ′ (x), pelo valor da derivada deste polinómio no ponto
x. Assim, temos que

p1 (x) = f (x0 ) + f [x0 , x1 ](x − x0 )


p′1 (x) = f [x0 , x1 ]

Aplicando a expressão (3.2.2) para obter o erro cometido, vem para este caso que
1 1
e′1 (x) = f (3) (ξ)W1 (x) + f (2) (η)W1′ (x), ξ, η ∈ [x0 , x1 ] (3.2.6)
6 2
No ponto x = x0 , temos que
f (x1 ) − f (x0 )
f ′ (x0 ) ≈ p′1 (x0 ) = f [x0 , x1 ] =
x1 − x0
Pondo h = x1 − x0 (o parâmetro h costuma ser conhecido por passo) e usando a notação
Dh f (x) para indicar a derivada aproximada da função f no ponto x, podemos escrever
que
f (x0 + h) − f (x0 )
Dh f (x0 ) = f [x0 + h, x0 ] = (3.2.7)
h
Esta expressão é conhecida pela designação de diferença finita progressiva de primeira
ordem, a qual, neste caso particular, não é outra coisa senão a diferença dividida de
primeira ordem relativa aos pontos x0 e x0 + h.
Decorre de (3.2.6) que o erro em x0 é dado por
1
e′1 (x0 ) = − hf ′′ (η) (3.2.8)
2
Se f ∈ C 2 [x0 , x1 ], o erro tende pois para zero com a primeira potência de h, ou seja, é de
O(h).
Outro caso com interesse corresponde a n = 1 e x = x1 . É fácil concluir, permutando
os papéis de x0 e x1 , que
f (x1 ) − f (x1 − h)
Dh f (x1 ) = f [x1 , x1 − h] = (3.2.9)
h
Esta fórmula é conhecida pelo nome de diferença finita regressiva de primeira ordem e, tal
como há pouco, coincide com a diferença dividida de primeira ordem relativa aos pontos
x1 − h e x1 . O erro vem agora dado por
1
e′1 (x1 ) = hf ′′ (η) (3.2.10)
2
3.2 Derivadas de primeira ordem 143

ou seja, é de O(h) como para as diferenças finitas progressivas. Notemos que os η que
aparecem nas expressões (3.2.8) e (3.2.10) não assumem necessariamente o mesmo valor.
Consideremos agora n = 1 e x̄ = (x0 +x1 )/2, ou seja, o ponto x̄ ocupa uma posição cen-
tral relativamente aos nós. Repetindo a mesma sequência de cálculos dos casos anteriores,
chegamos sem dificuldade à expressão

f (x̄ + h/2) − f (x̄ − h/2)


Dh f (x̄) = f [x̄ + h/2, x̄ − h/2] = (3.2.11)
h

a qual é conhecida como fórmula de diferença finita central de primeira ordem. Agora,
como W1′ (x) = 2x − (x0 + x1 ) temos que W1′ (x̄) = 0 e a expressão (3.2.6) do erro permite
concluir que
1
e′1 (x̄) = − h2 f (3) (ξ) (3.2.12)
24
Para funções f ∈ C 3 [x0 , x1 ], o erro tende agora para zero com h2 , ou seja, é de O(h2 ) o
que representa uma melhoria relativamente às fórmulas anteriores.

Exemplo 3.2.1 Calcular a primeira derivada da função f (x) = exp(sin x) no ponto


x = 0.5 utilizando as diferenças finitas de primeira ordem com h = 0.01.

a) Diferenças progressivas. Pela expressão (3.2.7) temos que

f (0.5 + 0.01) − f (0.5) 1.629344 − 1.6151460


Dh f (0.5) = = = 1.4198
0.01 0.01

O valor exacto é f ′ (0.5) = 1.417424 pelo que cometemos um erro e = −(0.2376)10−2 .


b) Diferenças regressivas. A aplicação da expressão (3.2.9) fornece

f (0.5) − f (0.5 − 0.01) 1.615146 − 1.600996


Dh f (0.5) = = = 1.4150
0.01 0.01

e o erro é, portanto, e = (0.2124)10−2 .


c) Diferenças centrais. A expressão (3.2.11) dá

f (0.5 + 0.005) − f (0.5 − 0.005) 1.622239 − 1.608065


Dh f (0.5) = = = 1.4174
0.01 0.01

Agora, o erro cometido é e = (0.24)10−4 , francamente melhor que os anteriores. Fica assim
confirmado o que se disse relativamente à superioridade das diferenças centrais.
Nota: Este tipo de fenómeno, em que a convergência possui uma ordem superior à normal
em certos pontos especiais, os zeros de Wn′ , costuma ser designado por superconvergência. O
Problema 3.9.16 revela outro caso.
144 Derivação numérica

3.2.2 Diferenças finitas de segunda ordem


Todas as fórmulas deduzidas até aqui foram baseadas em interpolação linear. Vejamos o
que se consegue quando se passa a usar polinómios interpoladores de segundo grau, i.e.,
n = 2. O polinómio p2 e a sua derivada p′2 são dados por

p2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ) (3.2.13)


p′2 (x) = f [x0 , x1 ] + f [x0 , x1 , x2 ](x − x0 + x − x1 ) (3.2.14)

e (3.2.2) produz a expressão para o erro

1 (4) 1
e′2 (x) = f (ξ)W2 (x) + f (3) (η)W2′ (x) (3.2.15)
24 6
Consoante a posição do ponto x relativamente aos nós x0 , x1 e x2 , assim se conseguem
obter diferentes fórmulas. Se x = x0 vem que

Dh f (x0 ) = f [x0 , x1 ] + f [x0 , x1 , x2 ](x0 − x1 ) (3.2.16)

cujo erro deduzido de (3.2.15) é dado por

1
e′2 (x0 ) = f (3) (η)(x0 − x1 )(x0 − x2 ) (3.2.17)
6
No caso especial de os nós serem equidistantes, com h = x1 − x0 = x2 − x1 , as expressões
(3.2.16) e (3.2.17) particularizam-se, vindo

−3f (x0 ) + 4f (x0 + h) − f (x0 + 2h)


Dh f (x0 ) = (3.2.18)
2h
1
e′2 (x0 ) = h2 f (3) (η) (3.2.19)
3
As expressões (3.2.16) e (3.2.18) são conhecidas por diferenças finitas progressivas de
segunda ordem. Uma observação pertinente é a de que, apesar de empregarem três pontos
de interpolação e, portanto, mais informação sobre a função f , estas fórmulas apresentam
uma estimativa de erro menos favorável que a da fórmula da diferença finita central de
primeira ordem. Este facto revela a influência benéfica decorrente da posição simétrica
do ponto onde se calcula a derivada relativamente aos nós.
Se fizermos x = x2 chegamos à fórmula de diferenças finitas regressivas de segunda
ordem e respectivo erro, análogas a (3.2.16) e (3.2.17),

Dh f (x2 ) = f [x0 , x1 ] + f [x0 , x1 , x2 ](2x2 − x0 − x1 ) (3.2.20)


1
e′2 (x2 ) = f (3) (η)(x2 − x1 )(x2 − x0 ) (3.2.21)
6
3.3 Derivadas de segunda ordem 145

e a (3.2.18) e (3.2.19)
3f (x2 ) − 4f (x2 − h) + f (x2 − 2h)
Dh f (x2 ) = (3.2.22)
2h
1
e′2 (x2 ) = h2 f (3) (η) (3.2.23)
3
Por outro lado, se x = x1 , um processo em tudo semelhante conduz-nos às seguintes
relações,

Dh f (x1 ) = f [x0 , x1 ] + f [x0 , x1 , x2 ](x1 − x0 ) (3.2.24)


1
e′2 (x1 ) = f (3) (η)(x1 − x0 )(x1 − x2 ) (3.2.25)
6
Se os nós forem equidistantes, então podemos concluir, após algumas manipulações sim-
ples, que
f (x1 + h) − f (x1 − h)
Dh f (x1 ) = (3.2.26)
2h
expressão que não é outra senão a da diferença central de primeira ordem já obtida atrás
por (3.2.11) e cujo erro é dado agora por
1
e′2 (x1 ) = − h2 f (3) (η) (3.2.27)
6

3.3 Derivadas de segunda ordem


As técnicas expostas na secção anterior generalizam-se facilmente ao cálculo de derivadas
de ordem superior. Vejamos como se deve proceder para o caso das segundas derivadas.
É claro que o primeiro polinómio a considerar deverá ser de grau n = 2 interpolando nos
nós x0 , x1 e x2 , donde

p2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 )


p′′2 (x) = 2f [x0 , x1 , x2 ]

e, por conseguinte,
f ′′ (x) ≈ p′′2 (x) = 2f [x0 , x1 , x2 ]
para qualquer x ∈ inter (x0 , x1 , x2 ). Se os nós forem equidistantes, a expressão anterior
conduz a esta outra
f (x − h) − 2f (x) + f (x + h)
Dh2 f (x) = (3.3.1)
h2
Passemos agora à análise dos erros. Retomando a expressão (3.2.1), temos para o
presente caso que

e′2 (x) = f [x0 , x1 , x2 , x, x]W2 (x) + f [x0 , x1 , x2 , x]W2′ (x)


146 Derivação numérica

Derivando novamente esta expressão, vem que


e′′2 (x) = f [x0 , x1 , x2 , x, x, x]W2 (x) + 2f [x0 , x1 , x2 , x, x]W2′ (x) + f [x0 , x1 , x2 , x]W2′′ (x)
(3.3.2)
Se x coincidir com algum dos nós resulta que W2 (x) = 0 e a expressão anterior pode
escrever-se, substituindo as diferenças divididas por derivadas, do seguinte modo
1 (4) 1 (3)
f (ξ)W2′ (x) +
e′′2 (x) = f (η)W2′′(x), ξ, η ∈ Ω̄ (3.3.3)
12 6
No caso de os nós serem equidistantes, não oferece dificuldade concluir que
1 2 (4)
e′′2 (x0 ) = h f (ξ) − hf (3) (η) (3.3.4)
6
1 2 (4)
e′′2 (x2 ) = h f (ξ) + hf (3) (η) (3.3.5)
6
ou seja, o erro é de O(h).
Quando x = x1 , i.e., quando a segunda derivada for calculada por diferenças finitas
centrais, os termos envolvendo W2 (x) e W2′′ (x) em (3.3.2) anulam-se, vindo nesta circun-
stância
1
e′′2 (x1 ) = − h2 f (4) (η) (3.3.6)
12
e, então, o erro é de O(h2 ), mais uma vez se revelando a vantagem das diferenças finitas
centrais.
Na Tabela 3.3.1 compilamos as fórmulas apresentadas neste capítulo, bem como al-
gumas outras que poderiam ter sido deduzidas utilizando os mesmos métodos. Esta
tabela inclui fórmulas com variadas disposições de nós (equidistantes) para diferenças fi-
nitas progressivas, regressivas e centradas com as expressões dos respectivos erros. Em
ABRAMOWITZ and STEGUN (1968) e em KOPAL (1961) são incluídas tabelas mais
completas.
Exemplo 3.3.1 Uma partícula move-se sobre o eixo dos x, tendo-se registado as seguin-
tes posições ao longo do tempo t:
t 0.0 0.2 0.4 0.6 0.8 1.0
x 0.0 0.1987 0.3894 0.5646 0.7174 0.8415
Pretende-se determinar a aceleração nos instantes t = 0.0 e t = 0.6.
Como se sabe, a aceleração é a segunda derivada da posição em ordem ao tempo. O problema
resume-se, pois, a obter x′′ (0.0) e x′′ (0.6) a partir dos valores medidos. Para calcular o
primeiro valor vamos utilizar a fórmula da Tabela 3.3.1 (com k = 2, n = 2)
2! 1
Dh2 x(0.0) = (x(0) − 2x(0.2) + x(0.4))
2! 0.22
1
= (0.0 − 2 × 0.1987 + 0.3894) = −0.2000
0.04
3.3 Derivadas de segunda ordem 147

Tabela 3.3.1: Coeficientes das fórmulas de diferenciação numérica com nós xi = x0 + ih


n
k! 1 X
f (k) (xj ) ≈ ai f (xi )
n! hk i=0

Primeira derivada (k = 1)
j a0 a1 a2 a3 a4 erro
0 −1 1 − 12 hf (2)
1
1 −1 1 2
hf (2)
1 2 (3)
0 −3 4 −1 3
hf
1 2 (3)
1 −1 0 1 −6h f
1 2 (3)
2 1 −4 3 3
hf
1 3 (4)
0 −11 18 −9 2 −4h f
1 3 (4)
1 −2 −3 6 −1 12
hf
1 3 (4)
2 1 −6 3 2 − 12 hf
1 3 (4)
3 −2 9 −18 11 4
hf
1 4 (5)
0 −50 96 −72 32 −6 5
hf
1 4 (5)
1 −6 −20 36 −12 2 − 20 hf
1 4 (5)
2 2 −16 0 16 −2 30
hf
1 4 (5)
3 −2 12 −36 20 6 − 20 h f
1 4 (5)
4 6 −32 72 −96 50 5
hf
Segunda derivada (k = 2)
j a0 a1 a2 a3 a4 erro
0 1 −2 1 −hf (3)
1 2 (4)
1 1 −2 1 − 12 hf
2 1 −2 1 hf (3)
11 2 (4)
0 6 −15 12 −3 12
hf
1 2 (4)
1 3 −6 3 0 − 12 hf
1 2 (4)
2 0 3 −6 3 − 12 h f
11 2 (4)
3 −3 12 −15 6 12
hf
0 35 −104 114 −56 11 − 56 h3 f (5)
1 3 (5)
1 11 −20 6 4 −1 12
hf
1 4 (6)
2 −1 16 −30 16 −1 90
hf
1 3 (5)
3 −1 4 6 −20 11 − 12 hf
5 3 (5)
4 11 −56 114 −104 35 6
hf

NOTA: As derivadas na expressão do erro são calculadas num


ponto ξ ∈ [x0 , xn ]
148 Derivação numérica

Para o cálculo do segundo valor usaremos duas fórmulas do mesmo quadro para efeitos de
comparação.
2! 1
Dh2 x(0.6) = [x(0.4) − 2x(0.6) + x(0.8)]
2! 0.22
0.3894 − 2 × 0.5646 + 0.7174
= = −0.5600
0.04
2! 1
Dh2 x(0.6) = [−x(0.2) + 16x(0.4) − 30x(0.6) + 16x(0.8) − x(1.0)]
4! 0.22
−0.1987 + 16 × 0.3894 − 30 × 0.5646 + 16 × 0.7174 − 0.8415
=
0.48
= −0.5612
Os dois valores calculados para Dh2 x(0.6) são muito próximos. As estimativas de erro relativas
a este exemplo são objecto do Problema 3.9.20.

3.4 Matrizes de derivação


Até aqui a dedução das fórmulas de diferenças finitas foi baseada na forma de Newton
do polinómio interpolador. Nada impede, e por vezes até há vantagem, em escrever o
polinómio interpolador na forma de Lagrange
n
X
p(x) = Li (x)yi , com yi = f (xi ) (3.4.1)
i=0

Neste caso, podemos dizer que


n
f ′ (x) ≈ p′ (x) = L′i (x)yi
X
(3.4.2)
i=0

Como se vê, os valores nodais yi aparecem de forma explícita e não implicitamente através
das diferenças divididas, como atrás.
Os valores das derivadas nos nós podem obter-se agora como se segue:
n
f ′ (xj ) ≈ yj′ = p′ (xj ) = L′i (xj )yi
X
(3.4.3)
i=0

Introduzindo a matriz de derivação D(1) definida por


(1)
dij = L′i (xj ), i, j = 0, 1, . . . , n (3.4.4)
a expressão (3.4.2) transforma-se em
y0 y0′
   
 ′
 y1   y1 
 
y′ = D(1) y, com y = 
 ..  ,
 ′
y =
 .. 
 (3.4.5)
 .  . 
yn yn′
3.4 Matrizes de derivação 149

O Problema 2.10.17 dá expressões gerais para os coeficientes da matriz D(1) .

Exemplo 3.4.1 Deduzir a matriz D(1) para n = 1 e n = 2, com nós equidistantes no


intervalo [−1, 1].

No primeiro caso temos x0 = −1 e x1 = 1, W1 = (x + 1)(x − 1). Efectuando os cálculos


necessários obtemos
   ′   
(1) −1/2 1/2 y0 −1/2 1/2 y0
D = , pelo que ′ =
−1/2 1/2 y1 −1/2 1/2 y1

No segundo caso, x0 = −1, x1 = 0 e x2 = 1, W2 = (x + 1)x(x − 1). Agora, temos que


   ′   
−3/2 2 1/2 y0 −3/2 2 1/2 y0
D(1) = −1/2 0 1/2 , pelo que y1′  = −1/2 0 1/2 y1 
1/2 −2 3/2 y2′ 1/2 −2 3/2 y2

É interessante observar que estes resultados constavam já da Tabela 3.3.1, agora simplesmente
referidos ao intervalo [−1, 1] e escritos de forma mais compacta.

Para as segundas derivadas poderíamos repetir o processo acabado de desenvolver. No


entanto, como a segunda derivada é a derivada da primeira derivada, é legítimo escrever
 2
y′′ = D(1) y′ , y′′ = D(2) y com D(2) = D(1)

Exemplo 3.4.2 Repetir o Exemplo 3.4.1 para as segundas derivadas.

No primeiro caso temos


 
(2) (1) 2 0 0
D = (D ) =
0 0

o que não deve causar surpresa pois as derivadas de segunda ordem de um polinómio de grau
≤ 1 são nulas. Para o segundo caso temos que
 
1 −2 1
D(2) = (D(1) )2 = 1 −2 1
1 −2 1

que é precisamente a fórmula das diferenças finitas centrais para as segundas derivadas.
150 Derivação numérica

3.5 Derivação com splines


É possível, através da utilização de splines, obter fórmulas de diferenciação numérica de
elevada precisão. Consideremos, a título de exemplo, o spline cúbico cuja equação é, como
vimos na Subsecção 2.7.4,
(xi − x)3 (x − xi−1 )3
Si (x) = Mi−1 + Mi
6hi 6hi
2
h xi − x h2 x − xi−1
+ (yi−1 − Mi−1 i ) + (yi − Mi i )
6 hi 6 hi
para x ∈ [xi−1 , xi ]. As derivadas desta função são dadas por
(xi − x)2 (x − xi−1 )2 yi − yi−1 hi
Si′ (x) = −Mi−1 + Mi + + (Mi−1 − Mi )
2hi 2hi hi 6
xi − x x − x i−1
Si′′ (x) = Mi−1 + Mi
hi hi
Então, fazendo
Dh f (x) = S ′ (x) e Dh2 f (x) = S ′′ (x)
obtemos as desejadas fórmulas de diferenciação numérica.
Uma desvantagem que pode ser apontada a este método é a de que a construção do
spline, envolvendo a solução de um sistema de equações lineares, pode torná-lo computa-
cionalmente caro e, por ventura, colocá-lo em inferioridade face a outras alternativas.
A opção terá pois que ter em conta necessariamente os vários aspectos do problema,
nomeadamente precisão pretendida versus custo computacional.

3.6 Influência de erros na função f


Nesta secção vamos analisar o que se passa no cálculo de derivadas por via numérica
quando os valores da função f não são conhecidos exactamente. Por exemplo: f é cal-
culada por uma expressão aproximada; os valores de f são obtidos experimentalmente e,
como tal, contaminados por erros de medição; f é calculada em aritmética de precisão
finita, etc.

3.6.1 Influência de perturbações em f


É conveniente perceber um aspecto essencial da derivação por métodos numéricos apro-
ximados que rodeia esta operação de uma certa delicadeza. A essência desta dificuldade
radica no seguinte: duas funções podem diferir entre si tão pouco quanto se queira e,
no entanto, as suas derivadas serem bastante diferentes. O exemplo que apresentamos a
seguir vai ajudar a compreender este fenómeno perturbador.
3.6 Influência de erros na função f 151

Exemplo 3.6.1 Mostrar que a convergência das funções não implica necessariamente a
das derivadas.

Consideremos a função f (x) = 1 no intervalo [0, 1], cuja derivada é obviamente f ′ (x) = 0. A
família de funções
x
gǫ (x) = 1 + ǫ sin 2
ǫ
aproxima a função f quando ǫ → 0 tão bem quanto se queira. De facto,
x
|f (x) − gǫ (x)| = |ǫ| sin 2 ≤ |ǫ|

ǫ
e, portanto,
kf − gǫ k∞ ≤ ǫ

Contudo, como
1 x
gǫ′ (x) = cos 2
ǫ ǫ
temos que
1 x
|f ′ (x) − gǫ′ (x)| = cos 2
|ǫ| ǫ
Esta relação mostra que, quando ǫ → 0, as derivadas de gǫ e de f divergem, apesar de estas
funções convergirem! Dito por palavras singelas: a derivada de uma função “com ruído”, gǫ ,
pode diferir bastante da derivada da respectiva função “limpa de ruído”, f .

Este exemplo revela que a operação de derivação é potencialmente instável: pequenas


perturbações na função podem acarretar grandes perturbações nas derivadas.

3.6.2 Influência dos erros de arredondamento


As expressões do erro deduzidas nas secções anteriores mostram que, se as derivadas
apropriadas da função f forem limitadas, a derivada calculada pelas fórmulas de diferenças
finitas converge para o valor exacto com uma certa potência do parâmetro h. No entanto,
se tivermos em conta os erros de arredondamento, esta situação altera-se radicalmente
como vamos ver.

Exemplo 3.6.2 Mostrar a influência dos erros de arredondamento.

Consideremos o cálculo da derivada da função f (x) = sin x no ponto x = 0.5 pelas fórmulas
das diferenças finitas progressivas, regressivas e centrais. Os resultados obtidos para diferentes
valores de h utilizando F P (2, 24, 6, A) estão resumidos no quadro seguinte.
152 Derivação numérica

Erro (em valor absoluto)


Diferenças finitas
h progressivas regressivas centrais
(0.100) (0.2249)10−1 (0.2541)10−1 (0.1462)10−2
(0.200)10−1 (0.4736)10−2 (0.4854)10−2 (0.5913)10−4
(0.400)10−2 (0.9602)10−3 (0.9621)10−3 (0.9537)10−6
(0.800)10−3 (0.2077)10−3 (0.2021)10−3 (0.2801)10−5
(0.160)10−3 (0.9596)10−4 (0.2766)10−3 (0.9030)10−4
(0.320)10−4 (0.6548)10−3 (0.2766)10−3 (0.1891)10−3
(0.640)10−5 (0.2517)10−2 (0.6796)10−2 (0.2139)10−2
(0.128)10−5 (0.7174)10−2 (0.3939)10−1 (0.1611)10−1

Como se vê, o erro diminui numa primeira fase com h mas, abaixo de um certo valor deste
parâmetro, dependente da fórmula utilizada, começa a crescer.

Analisemos do ponto de vista teórico este efeito, considerando, para concretizar ideias,
o caso das diferenças finitas centrais. De acordo com as expressões (3.2.11) e (3.2.12)
podemos dizer que
f (x + h) − f (x − h) 1 (3)
f ′ (x) = − f (ξ)h2 (3.6.1)
2h 6
Como admitimos que há erros de arredondamento, em vez dos valores exactos da função
f , o que efectivamente usamos na fórmula das diferenças finitas são valores aproximados.
Denotando estes por f˜, teremos que
˜ = f (x) + ẽ(x)
f(x)

em que ẽ(x) representa o erro de arredondamento cometido. Introduzindo esta relação


em (3.6.1) obtemos

˜ + h) − f˜(x − h) ẽ(x + h) − ẽ(x − h) h2


f(x
f ′ (x) = − − f (3) (ξ)
2h 2h 6
˜ ˜
f(x + h) − f (x − h)
= +E (3.6.2)
2h
em que pusemos
ẽ(x + h) − ẽ(x − h) h2 (3)
E=− − f (ξ) (3.6.3)
2h 6
O significado deste E é o do erro final cometido no cálculo da derivada, o qual, como se
reconhece, é composto de duas partes distintas: uma, proveniente da fórmula de diferenças
finitas e proporcional a h2 , e outra, resultante dos erros de arredondamento e proporcional
a 1/h. Como os erros de arredondamento não tendem necessariamente para zero com h,
acontece que este tipo de erros será predominante quando h → 0. A Figura 3.6.1 mostra
qualitativamente o andamento de |E| com h.
3.6 Influência de erros na função f 153

jE j

Total
Diferenças
Figura 3.6.1: Variação do
nitas
erro |E| com h

Arredondamento

h
Esta discussão e o aspecto da Figura 3.6.1 sugerem que deve haver um valor de h para
o qual o erro total E é mínimo e, portanto, deveria ser este o valor a usar. Infelizmente,
como na expressão (3.6.3) não são conhecidos nem a função ẽ nem o valor de ξ, torna-se
inviável obter o valor de h óptimo por minimização de E tomado como função de h. No
entanto, é possível empreender uma análise que, embora aproximada, poderá dar alguma
indicação sobre a ordem de grandeza do valor óptimo de h, o que talvez seja suficiente
em termos práticos. Assim, admitamos as seguintes hipóteses:

kf (3) k∞ ≤ M3 , |ẽ(x + h) − ẽ(x − h)| ≤ 2ǫ

em que M3 designa um majorante das terceiras derivadas e ǫ é um parâmetro que depende


da forma como a função f é calculada. De um modo geral, o valor de ǫ será, em termos
relativos, da ordem de grandeza da unidade de arredondamento do computador utilizado.
Então, aceitando estas premissas, podemos dizer que
ǫ M3 2
|E| ≤ + h (3.6.4)
h 6
O valor mínimo do segundo membro desta expressão é obtido para o valor de h que anula
a respectiva primeira derivada, ou seja, quando
1/3


h= (3.6.5)
M3
Este valor de h pode ser tomado como uma estimativa para o valor óptimo desde que as
hipóteses que aceitamos sejam razoavelmente verificadas. Nesta condições, substituindo
este resultado em (3.6.4), vem que

32/3 1/3 2/3


|E| ≤ M3 ǫ (3.6.6)
2
expressão que mostra o efeito da imprecisão ǫ no erro final E.
154 Derivação numérica

Deixamos ao leitor o cuidado de verificar se os valores assim previstos são consistentes,


pelo menos em termos de ordem de grandeza, com os dados do Exemplo 3.6.2.
Chamamos ainda a atenção para o facto de que o valor do passo h não pode ser tal
que fl(x ± h) = fl(x), i.e., que o computador seja incapaz de distinguir estas abcissas e
forneça o valor zero para as derivadas. Acontece que o valor h óptimo está normalmente
acima deste limite último.

3.7 Extrapolação de Richardson


Mostrámos na secção anterior que os erros de arredondamento limitam seriamente a pre-
cisão que é possível obter com as fórmulas de derivação numérica. Vamos ver que existe
um processo de minorar, mas não eliminar totalmente, o efeito da aritmética de precisão
finita.
Para concretizar ideias, consideremos a fórmula de diferenças finitas progressivas de
primeira ordem (3.2.7). Admitindo que f tem a regularidade necessária, o erro pode ser
expresso, em alternativa a (3.2.8), por

f (x + h) − f (x)
e(x) ≡ f ′ (x) − Dh f (x) = f ′ (x) −
h

1 1
= − f ′′ (x)h − f ′′′ (x)h2 + · · · = − ci hi
X
(3.7.1)
2 3! i=1

ou seja, o erro é dado por uma série de potências do passo h em que os coeficientes ci
envolvem as derivadas f (i) sendo, por isso, difíceis de calcular em geral. Nestas condições,
∞ ∞
Dh f (x) = f ′ (x) + ci hi = ci hi , com c0 = f ′ (x)
X X
(3.7.2)
i=1 i=0

O processo de extrapolação de Richardson consiste em considerar a derivada dada, não


por (3.7.2), mas por uma série truncada a partir de um certo termo,
k
ci hi
X
Dh f (x) ≈ (3.7.3)
i=0

e ajustar um polinómio, em h e de grau ≤ k, aos valores obtidos para uma sucessão


decrescente {hi }ki=0 . O valor deste polinómio no ponto h = 0 é c0 o qual fornece nat-
uralmente uma aproximação, em princípio melhor, para f ′ (x). O facto de h = 0 não
pertencer ao intervalo de interpolação justifica a designação (de extrapolação) adoptada
para o método.
Designemos por Dm,k o valor extrapolado usando os seguintes nós de interpolação,
hm , hm+1 , . . . , hm+k . A fórmula de Aitken-Neville (ver o Problema 2.10.31) permite obter
3.8 Notas e referências 155

este valor sem necessidade de construir explicitamente o polinómio interpolador, vindo


hm+k+1 Dm,k − hm Dm+1,k
Dm,k+1 = (3.7.4)
hm+k+1 − hm
Uma sucessão frequentemente utilizada é hi = h0 /2i , i = 0, 1, 2, . . ., ou seja, proce-
dendo por bissecções sucessivas de um intervalo original h0 .

Exemplo 3.7.1 Aplicar o processo de extrapolação de Richardson ao cálculo de f ′ (0)


com f (x) = exp x e empregando diferenças finitas centrais e bissecção dos passos.
Este exemplo difere do caso anteriormente tratado num pormenor interessante. O erro vem
agora dado por
f (x + h) − f (x − h)
e(x) ≡ f ′ (x) − Dh f (x) = f ′ (x) −
2h

1 1 X
= − f (3!) (x)h2 − f (5) (x)h4 + · · · = − ck h2k
3! 5!
k=1

ou seja, o erro envolve apenas potências pares do passo h. Por razões de eficácia faz, pois,
todo o sentido considerar polinómios em h2 em vez de h. A fórmula correspondente a (3.7.4)
é, portanto,
h2m+k+1 Dm,k − h2m Dm+1,k Dm+1,k − Dm,k
Dm,k+1 = 2 = Dm+1,k +
hm+k+1 − hm 2 (hm /hm+k+1 )2 − 1

em que hi = h0 /2i . A tabela seguinte mostra os resultados obtidos com h0 = 0.4 e traba-
lhando com os 8 dígitos indicados.
m hm Dm,0 Dm,1 Dm,2 Dm,3
0 .40 1.0268808 0.99994667 0.99999979 1.0000002
1 .20 1.0066802 0.99999647 1.0000002
2 .10 1.0016674 0.99999993
3 .05 1.0004168
Como se vê, D1,2 e D0,3 aparecem com valores idênticos, sinal de que não se consegue ir
mais longe com os 8 dígitos de precisão utilizados. O leitor pode verificar que seria possível
atingir este valor com D9,0 , mas para tal seria necessário trabalhar com cerca de 16 dígitos
de precisão!

3.8 Notas e referências


1. Convém ter em atenção a existência de sistemas de computação simbólica como sejam o
Axiom (JENKS and SUTOR (1992)), o Maple (CHAR et al. (1991)) e o Mathematica (WOL-
FRAM (1988)), entre outros, capazes de produzir as expressões das derivadas de funções. O
recurso a estes programas pode ser atractivo relativamente à derivação numérica.
156 Derivação numérica

Como curiosidade, a derivada da função (3.1.1) com que abrimos este capítulo é
 . p  2  !
cos(g(x)) 2x + 3x2 2 arctan(1 + x3 ) 1 + 1 + x3
"
f ′ (x) = 1+ x
sin((g(x)) + 1
#
+ x + ln(sin(g(x)) + 1) exp ((x + ln(sin(g(x)) + 1)) x)

g(x) = x2 +
p
arctan(1 + x3 )

expressão que é apresentada tal qual foi produzida pelo Maple sem qualquer retoque!
A título de exemplo, temos que, a partir desta expressão, f ′ (1) = 10.633215, enquanto uma
simples aplicação de diferenças finitas centrais com h = 0.01 produz f ′ (1) = 10.631255. A
discrepância entre os dois valores verifica-se a partir do quarto dígito pelo que dificilmente
se justificaria o recurso à expressão exacta da derivada.

2. Também se deve ter presente como possível alternativa a chamada derivação algorítmica ou
derivação automática cujo objectivo consiste em partir do programa que calcula a função a
derivar para produzir automaticamente um programa que calcula as derivadas sem passar
pelas expressões destas (consultar GRIEWANK (2000), por exemplo).

3. O processo de extrapolação de Richardson é uma técnica geral, utilizável sempre que o


erro possa ser expresso por uma série envolvendo um dado parâmetro do método utilizado.
Teremos oportunidade de voltar a encontrar esta técnica noutras situações, não confinadas
exclusivamente ao caso da diferenciação numérica, como seja o método de integração de
Romberg (ver o Capítulo 4).

3.9 Problemas
1. Explique em detalhe a dedução da expressão (3.2.1).

2. Considere a seguinte tabela de valores para a função y = cosh x:

x 0.1 0.2 0.3 0.4


y 1.0050 1.0201 1.0453 1.0811

Determine os valores de f ′ (0.2) e f ′′ (0.2) pelas várias fórmulas de diferenças finitas e compare
os resultados com os valores exactos.

3. Obtenha o valor de f ′ (1.0) para a função f (x) = exp(−x) usando diferenças finitas pro-
gressivas e passo h = 0.001. Determine o erro efectivamente cometido e compare-o com o
majorante teórico.

4. a) Mostre que as fórmulas das diferenças finitas progressivas de primeira ordem (3.2.7) e do
respectivo erro (3.2.8) se podem obter a partir do desenvolvimento em série de Taylor de
f (x + h) em torno de x.
3.9 Problemas 157

b) Proceda de modo semelhante para o caso das diferenças finitas regressivas de primeira
ordem.

5. Combinando de forma conveniente os desenvolvimentos em série de Taylor de f (x + h) e


f (x − h) em torno de x, deduza as fórmulas das diferenças finitas centrais (3.2.11) e do
respectivo erro (3.2.12).

6. Pretende-se aproximar f ′′ (x) por uma fórmula do tipo

f ′′ (x) ≈ a1 f (x + h) + b1 f ′ (x + h) + a2 f (x − h) + b2 f ′ (x − h)

a) Determine os coeficientes desta fórmula de modo a que ela seja exacta para polinómios
do maior grau possível.
b) Deduza a expressão do erro.

7. Considere a seguinte tabela de valores para a função y = sinh x:

x 0.398 0.399 0.400 0.401 0.402


y 0.40859 0.40967 0.41075 0.41183 0.41292

a) Calcule o valor de f ′ (0.4) utilizando a fórmula de diferenças centrais e valores de h = 0.001


e h = 0.002.
b) Compare os resultados com o valor exacto e explique por que é que o resultado com
h = 0.001 não é muito melhor que o obtido com h = 0.002.

8. Repita os Exemplos 3.4.1 e 3.4.2 para o caso de nós equidistantes de h num intervalo [a, b]
qualquer. Confirme com a Tabela 3.3.1. Sugestão: Recorra à transformação de coordenadas
(2.4.7).

9. São conhecidos os valores f (x0 ), f ′ (x0 ) e f (x1 ) e pretende-se calcular f ′ (x1 ).

a) Determine a respectiva expressão, baseada em interpolação polinomial;


b) Determine uma expressão para o o majorante do erro.
c) Qual o valor do espaçamento máximo para obter por esta via derivadas da função f (x) =
x sinh(x) no intervalo [0, 1] com um erro absoluto ≤ 10−2 .

10. Utilizando cinco pontos igualmente espaçados, xi = x0 + ih, i = 0, . . . , 4 deduza as seguintes


expressões de diferenças finitas centrais para o cálculo aproximado da

a) terceira derivada:
f (x4 ) − 2f (x3 ) + 2f (x1 ) − f (x0 )
f (3) (x2 ) ≈
2h3
b) quarta derivada:

f (x4 ) − 4f (x3 ) + 6f (x2 ) − 4f (x1 ) + f (x0 )


f (4) (x2 ) ≈
h4
158 Derivação numérica

c) Prove que ambas as expressões produzem erros de O(h2 ). Sugestão: Empregue um


processo análogo ao que conduziu a (3.2.2) e (3.3.2).

11. a) Repita, para os casos das diferenças finitas progressivas e regressivas, a análise efectuada
na Secção 3.6 e obtenha as respectivas expressões equivalentes a (3.6.4), (3.6.5) e (3.6.6).
b) Idem, para o caso das derivadas de segunda ordem com a fórmula de diferenças finitas
centrais (3.3.1).
c) O que conclui em termos da precisão que é possível obter.

12. Considere a função f (x) = exp(i ωx). Mostre que a derivação numérica com diferenças finitas
de primeira ordem e passo h introduz não só um erro de amplitude mas também um erro de
fase, ambos piorando com ωh.

13. Conhecem-se os valores da função f nos nós xi = (i − 3/2)h com i = 0, . . . , 3.

a) Deduza a fórmula de diferenças finitas que recorre a estes valores nodais para obter uma
aproximação para f ′ (0).
b) Obtenha a respectiva expressão do erro.

14. Conhecem-se os valores f (0), f (h), f (2h).

a) Deduza a fórmula de diferenças finitas que recorre a estes valores nodais para obter uma
aproximação para f ′ (h/2);
b) Obtenha a respectiva expressão do erro.

15. A partir do polinómio interpolador nos pontos x0 , x1 , x2 , em que x1 − x0 = h e x2 − x1 = αh:

a) Obtenha as fórmulas de diferenças finitas para as primeiras derivadas nos nós;


b) Deduza a seguinte fórmula de aproximação da segunda derivada:
 
′′ 2 f (x0 ) f (x1 ) f (x2 )
f (x) ≈ 2 − +
h 1+α α α(1 + α)

c) Verifique que, quando α = 1, se recuperam as fórmulas para nós equidistantes e, nomeada-


mente, as das diferenças finitas centrais.

16. Considere o polinómio interpolador com os nós de interpolação equidistantes x0 = −h, x1 = 0


e x2 = h e o problema de obter a partir dele uma aproximação para f ′ (x) (rever as expressões
(3.2.13), (3.2.14) e (3.2.15)).

a) Deduza a expressão para o erro nesta derivada e mostre que ele é de O(h2 ), em geral;
b) Evidencie, no entanto, que o erro pode ser de O(h3 ) em certos pontos especiais, i.e., pode
haver superconvergência nestes pontos, e calcule a respectiva posição.
c) Tomando f (x) = sin(x) e h = 0.1, calcule f ′ (x) nos nós x0 , x1 e x2 e nos pontos de
superconvergência.
3.9 Problemas 159

17. Um corpo desloca-se ao longo de uma recta (que podemos tomar como o eixo dos xx) e a
respectiva velocidade v foi calculada por diferenças finitas regressivas de primeira ordem a
partir das posições x em sucessivos instantes de tempo t, tendo-se obtido os seguintes valores:

t (s) 0.1 0.2 0.3 0.4 0.5


v (m/s) − 1.195 1.380 1.555 1.721

Sabendo que os erros experimentais nos valores de x não excedem ±0.1%, estime o erro (em
valor absoluto) cometido no valor da velocidade para t = 0.4.

18. Dispõe-se de uma tabela de senos cujo intervalo de tabulação é 0.001 graus e em que os valores
são apresentados com seis decimais exactos. Pretende-se construir a partir desta tabela uma
outra de co-senos por diferenciação numérica com diferenças centrais. Admitindo que os
únicos erros envolvidos são os presentes nos dados, diga:

a) Qual o intervalo de tabulação que se deve usar na tabela de co-senos?


b) Aproximadamente quantos decimais exactos têm as entradas desta tabela?
c) Em face dos resultados, acha que o método sugerido para obter a tabela de co-senos é
aconselhável?

19. Deduza as seguintes fórmulas de Markov que permitem exprimir as derivadas da função f
em termos das diferenças progressivas
 
′ 1 2 1 3 1 4
hf (x0 ) = ∆ − ∆ + ∆ − ∆ + · · · f (x0 )
2 3 4
 
11 5
h2 f ′′ (x0 ) = ∆2 − ∆3 + ∆4 − ∆5 + · · · f (x0 )
12 6

Sugestão: Talvez ajude recordar a expressão (2.5.18).

20. Deduza estimativas do erro para os casos tratados no Exemplo 3.3.1:

a) Dh2 x(0.0);
b) Dh2 x(0.6). Que dificuldade surge neste caso?

21. Na solução numérica de equações diferenciais há necessidade de aproximar por diferenças


finitas termos do tipo (a(x)u′ (x))′ .

a) Prove que, com um erro de O(h2 ),


1 
(au′ )′i ≈

ai+1/2 ui+1 − (ai+1/2 + ai−1/2 )ui + ai−1/2 ui−1
h2

b) Diga se há ou não convergência quando h → 0 no caso


 
′ ′ 1 ai+1 + ai ai + ai−1
(au )i ≈ 2 ui+1 − 2ai ui + ui−1
h 2 2
160 Derivação numérica

22. Calcule, pelo método sugerido no Exemplo 3.4.2, as matrizes de derivação:

a) das terceiras derivadas para o caso n = 3;


b) das terceiras derivadas para o caso n = 4;
c) das quartas derivadas para o caso n = 4.

Sugestão: Talvez ajude tirar partido da Tabela 3.3.1.

23. a) Obtenha uma fórmula de aproximação para f ′ (x) com um erro O(h4 ) a partir da fórmula
das diferenças centrais melhorada por aplicação da extrapolação de Richardson usando
passos h e rh.
b) Aplique-a ao caso de f ′ (0) com f (x) = ln(1+x), h = 0.01, r = 0.25 e compare o resultado
com o valor exacto.
c) Considere o caso particular r = 1/2. A fórmula resultante coincide com alguma das
listadas na Tabela 3.3.1?

24. Em muitas circunstâncias é útil conhecer a taxa de convergência das derivadas do polinómio
interpolador pn para as derivadas da função interpolada f quando o intervalo de interpolação
Ω̄ = [a, b] diminui de comprimento.

a) Seja então pn o polinómio de grau ≤ n que interpola f ∈ C n+1 [a, b] em n+1 nós distintos.
(m)
Demonstre que pn interpola f (m) em n + 1 − m pontos distintos.
b) Obtenha a estimativa

kf (m) − p(m)
n k∞ ≤ cn,m (b − a)
n+1−m
kf (n+1) k∞

em que cn,m > 0 é uma constante que pode depender de n e m mas não de f .
Capítulo 4

Integração numérica

Este capítulo vai tratar do cálculo de valores aproximados de integrais de uma função real
de variável real e, tal como o Capítulo 3, fará uso intensivo da interpolação polinomial.

4.1 Introdução
Designaremos de um modo geral por integração numérica o processo de obter valores
aproximados para o integral de uma função f no intervalo Ω̄ = [a, b] da recta real R, ou
seja, obter aproximações para
Z b
I(f ; Ω̄) = f (x) dx
a

Admitiremos naturalmente que a função integranda f é integrável (à Riemann) no inter-


valo Ω̄ = [a, b]. No presente capítulo, exceptuando a Secção 4.8, onde o caso de intervalos
infinitos merecerá um tratamento específico, Ω̄ será sempre suposto limitado. Se o inter-
valo de integração for óbvio ou se a integranda também não oferecer dúvidas, usaremos
as notações mais aligeiradas I(f ) ou, simplesmente, I.
A necessidade de se recorrer a métodos aproximados para calcular I provém normal-
mente de uma das seguintes situações:

• A expressão analítica de f não é conhecida – é o que acontece quando esta função


é dada por tabelas ou obtida por medições de grandezas físicas;

• A expressão analítica de f é dada, mas a primitiva desta função

– ou não é conhecida e, portanto, a forma usual de determinação do integral não


é viável;
– ou é conhecida mas demasiado ‘complicada’ e, portanto, esta forma não se
revela económica;

161
162 Integração numérica

– ou, simplesmente, não tem expressão fechada.


No presente capítulo vamos estudar alguns dos métodos mais correntes de integração
numérica que permitem resolver as dificuldades acabadas de mencionar. Como sucede
com a derivação numérica, a chave para a solução do problema consiste essencialmente em
aproximar a função f por outra função cujo integral seja fácil de calcular. Este objectivo
é conseguido recorrendo, por exemplo, a polinómios interpoladores de f . Assim, seja pn
o polinómio interpolador de grau ≤ n da função f nos nós distintos x0 < x1 < · · · < xn ,
pertencentes ao intervalo Ω̄. Definindo h por
h = max |xi − xi−1 |
1≤i≤n

é razoável esperar que o valor


Ih (f ) = I(pn )
seja, sob certas condições, um valor aproximado de I(f ). Nomeadamente, o erro cometido
neste processo é
Eh (f ) = I(f ) − Ih (f ) = I(f ) − I(pn ) = I(f − pn )
em que a última passagem se justifica pela linearidade do operador de integração. Como
vemos, o erro depende da maior ou menor aproximação do polinómio pn a f e adiante
apresentaremos estimativas desta importante grandeza.

Mudança do intervalo de integração


Muitas vezes é necessário aplicar uma mudança de variável no integral. Uma das fi-
nalidades deste procedimento no contexto da integração numérica é a de transformar
o intervalo de integração [a, b] num dos intervalos normalizados ou de referência usuais
[−1, 1] ou [0, 1]. Assim, seja T uma transformação de variáveis que permite transformar
o intervalo [α, β] no intervalo [a, b], o que se costuma indicar pela notação
x = T (ξ) com T : [α, β] → [a, b]
e admitamos que esta transformação é bijectiva. Então, como sabemos do Cálculo,
Z b Z β
I= f (x) dx = f (T (ξ))J(ξ) dξ (4.1.1)
a α
em que J(ξ) = T ′ (ξ) é o jacobiano da transformação. A menos que haja motivos que
aconselhem a proceder diferentemente, é em geral suficiente tomar T como um isomor-
fismo, i.e., uma transformação linear invertível. Registamos, para futuro uso, as fórmulas
de transformação aplicáveis neste caso:
(
T (ξ) = a(1 − ξ)/2 + b(1 + ξ)/2
se [α, β] = [−1, 1] (4.1.2)
J(ξ) = (b − a)/2
(
T (ξ) = a(1 − ξ) + bξ
se [α, β] = [0, 1] (4.1.3)
J(ξ) = b − a
4.2 Regras básicas 163

4.2 Regras básicas


Seja, como habitualmente, pn o polinómio de grau ≤ n que interpola a função f nos nós
distintos x0 , x1 , . . . , xn pertencentes a Ω̄. Recordando o que dissemos na Subsecção 2.3.1,
este polinómio pode representar-se na seguinte forma
n
X
pn (x) = f (xi )Li (x)
i=0

em que os Li são os polinómios de Lagrange associados a estes nós. Sendo assim, é fácil
ver que
Z b n
X Z b
Ih (f ) = I(pn ) = pn (x) dx = f (xi ) Li (x) dx
a i=0 a

Pondo Z b
Ai = Li (x) dx (4.2.1)
a
podemos escrever que
n
X
Ih (f ) = Ai f (xi ) (4.2.2)
i=0

Esta expressão costuma designar-se por regra de integração ou fórmula de quadratura,


e os Ai por coeficientes ou pesos dessa regra. Consoante o valor de n e a localização
dos nós no intervalo Ω̄, assim se obtêm diferentes regras de integração. Como vemos, o
cálculo exacto do integral foi substituído pelo cálculo de uma soma ponderada de valores
da função integranda.
O emprego de polinómios interpoladores para construir regras de integração justifica
que se introduza o seguinte conceito.
Definição 4.2.1 Uma regra de integração diz-se de grau (de exactidão) d se integrar
exactamente todos os polinómios de grau ≤ d e existir pelo menos um polinómio de grau
d + 1 que não é por ela integrado exactamente.
Como veremos oportunamente, o grau de uma regra de integração está intimamente
relacionado com a sua precisão. Uma conclusão imediata é a de que o grau de exactidão
da fórmula (4.2.2) quando os pesos são calculados pela expressão (4.2.1) é, por construção,
≥ n. Um majorante para o grau de exactidão de uma regra do tipo (4.2.2) é estabelecido
pelo teorema seguinte.

Teorema 4.2.1 O grau de exactidão de uma regra de integração Ih da forma (4.2.2) que
utilize os n + 1 nós distintos x0 , x1 , . . . , xn não pode exceder 2n + 1.

Demonstração Consideremos o polinómio nodal

Wn (x) = (x − x0 )(x − x1 ) · · · (x − xn )
164 Integração numérica

Então, é evidente que


Ih (Wn2 ) = 0

mas, por outro lado,


Z b
I(Wn2 ) = (Wn (x))2 dx > 0
a

Logo, a função Wn2 não pode ser integrada exactamente por esta regra. Como Wn2 é um
polinómio de grau 2(n + 1) = 2n + 2, a conclusão segue-se imediatamente.
Uma questão que tem interesse é a de saber se este valor–limite para o grau de exac-
tidão pode ser realizado por alguma regra. A resposta é afirmativa, mas os pormenores
só poderão ser dados mais adiante, quando abordarmos o estudo das regras de Gauss.

4.2.1 Dedução das fórmulas


Vamos deduzir alguns casos particulares de regras de integração, correspondentes a dife-
rentes escolhas de polinómios interpoladores.

Regras do rectângulo

Comecemos pelo caso mais simples, o do polinómio de grau n = 0 que interpola a função
f no ponto x0 . Então,
p0 (x) = f (x0 )

e, portanto,
Z b
Ih (f ) = I(p0 ) = f (x0 ) dx = (b − a)f (x0 )
a

O valor exacto do integral foi deste modo substituído pelo valor da área de um rectângulo
de lado b − a e altura f (x0 ). Por este motivo estas fórmulas de integração são conhecidas
por regras do rectângulo. Se fizermos coincidir x0 com o extremo esquerdo do intervalo,
i.e., x0 = a, obtemos a regra do rectângulo à esquerda

Ih (f ) = (b − a)f (a) (4.2.3)

Se tomarmos x0 = b teremos naturalmente a regra do rectângulo à direita

Ih (f ) = (b − a)f (b) (4.2.4)

É fácil verificar que ambas estas regras do rectângulo possuem grau zero.
4.2 Regras básicas 165

y = f (x) y = f (x) y = f (x)


y y y

 

a a a a+b
b x b x 2 b x

Figura 4.2.1: Interpretação geométrica das regras do rectângulo à esquerda, do rectângulo


à direita e do ponto médio

Regra do ponto médio


Uma outra escolha natural será fazer x0 = (a + b)/2, obtendo-se a regra do ponto médio
a+b
Ih (f ) = (b − a)f ( ) (4.2.5)
2
Conforme se pode verificar, esta regra é de grau um. Esta ocorrência serve também
como alerta para o facto de que o grau de exactidão de uma regra de integração não
tem de coincidir necessariamente com o grau do polinómio interpolador utilizado na sua
construção, embora esteja com ele naturalmente relacionado.
A Figura 4.2.1 mostra esquematicamente o significado geométrico das regras do rectân-
gulo e do ponto médio.

Regra do trapézio
Se passarmos aos polinómios interpoladores de grau n = 1 cuja forma de Newton é
p1 (x) = f (x0 ) + f [x0 , x1 ](x − x0 )
teremos que
Z b
Ih (f ) = I(p1 ) = [f (x0 ) + f [x0 , x1 ](x − x0 )] dx
a
1
 
= (b − a) f (x0 ) + f [x0 , x1 ](b + a − 2x0 )
2
Escolhendo x0 = a e x1 = b, obtemos a regra do trapézio
b−a
Ih (f ) = [f (a) + f (b)] (4.2.6)
2
A justificação desta designação encontra-se patente na Figura 4.2.2. Também não é difícil
concluir que o grau desta regra é um.
166 Integração numérica

y  y
y = f (x)

y = f (x) 
 

a a a+b
b x 2 b x

Figura 4.2.2: Interpretação geométrica das regras do trapézio e de Simpson

Regra de Simpson
Continuando a aumentar o grau do polinómio interpolador, passamos agora ao caso n = 2.
O polinómio interpolador da função f nos pontos x0 , x1 , x2 é

p2 (x) = f (x0 ) + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 )

Tomando x0 = a, x1 = (a + b)/2, x2 = b e efectuando os cálculos necessários, aliás,


simples, chegamos à expressão
" #
b−a a+b
Ih (f ) = I(p2 ) = f (a) + 4f ( ) + f (b) (4.2.7)
6 2

Esta fórmula constitui a célebre regra de integração de Simpson, que é explicada grafica-
mente na Figura 4.2.2. A sua construção garante que o respectivo grau é pelo menos
dois mas é possível verificar que este é de facto três, como se verá adiante.
O caso geral, i.e., com nós desigualmente espaçados é deixado para o Problema 4.11.5.

Regras de Newton-Cotes
Todas as regras apresentadas até aqui têm uma característica comum, que é a de recor-
rerem a polinómios interpoladores da função integranda em nós equidistantes no intervalo
de integração. Estas regras de integração podem ser deduzidas de forma sistemática e
constituem a família de regras de Newton-Cotes. A Tabela 4.2.1 reúne algumas destas
regras. Uma versão mais completa pode ser consultada nas referências ABRAMOWITZ
and STEGUN (1968) e KOPAL (1961).
Como podemos observar, a partir das regras com n = 8 aparecem pesos com sinais
positivos e negativos. Do ponto de vista do efeito dos erros de arredondamento, esta
característica é nociva já que promove o aparecimento de cancelamento subtractivo. Por
esta razão, as fórmulas de Newton-Cotes de grau elevado não são muito aconselháveis.
4.2 Regras básicas 167

Tabela 4.2.1: Fórmulas de Newton-Cotes


n
!
b−a X
Ih (f ) = ai f (xi ) , xi = a + i(b − a)/n
d i=0

NOTA: Os coeficientes ai são simétricos, i.e., an−i = ai .

n d a0 a1 a2 a3 a4
1 2 1
2 6 1 4
3 8 1 3
4 90 7 32 12
5 288 19 75 50
6 840 41 216 27 272
7 17280 751 3577 1323 2989
8 28350 989 5888 −928 10496 −4540

4.2.2 Erros de integração


Para poder escolher qual a regra de integração a utilizar num dado caso concreto é con-
veniente dispor de estimativas do erro cometido que possam orientar essa escolha. Como
vimos em 2.4.1, o polinómio interpolador satisfaz a relação

f (x) = pn (x) + f [x0 , x1 , . . . , xn , x]Wn (x)

com Wn (x) = (x − x0 )(x − x1 ) · · · (x − xn ). Então, o erro de integração é dado por


Z b
Eh (f ) = I(f ) − Ih (f ) = f [x0 , x1 , . . . , xn , x]Wn (x) dx (4.2.8)
a

Há duas situações típicas e com interesse prático em que esta expressão pode sofrer uma
simplificação notável, as quais passamos a descrever.
A primeira ocorre quando o polinómio Wn não muda de sinal no intervalo Ω̄. Neste
caso, invocando o teorema do valor médio para integrais, podemos dizer que
Z b
Eh (f ) = f [x0 , x1 , . . . , xn , η] Wn (x) dx, eta ∈ Ω̄ (4.2.9)
a

Admitindo que f ∈ C n+1 (Ω̄), por força do Teorema 2.4.1, vem que

1 b
Z
Eh (f ) = f (n+1) (ξ) Wn (x) dx (4.2.10)
(n + 1)! a
168 Integração numérica

Uma conclusão imediata que podemos extrair desta expressão é a de que o grau de exac-
tidão das respectivas regras de integração é igual a n, coincidente, portanto, com o grau
do polinómio interpolador utilizado na sua construção.
A segunda situação a que aludimos acima verifica-se quando
Z b
Wn (x) dx = 0 (4.2.11)
a

Neste caso estamos impedidos de recorrer ao teorema do valor médio para simplificar a
expressão (4.2.8). Todavia, tendo em atenção a definição e a propriedade de simetria (ver
o Problema 2.10.24) das diferenças divididas, podemos empregar a identidade facilmente
verificável

f [x0 , x1 , . . . , xn , x] = f [x0 , x1 , . . . , xn , xn+1 ] + f [x0 , x1 , . . . , xn , xn+1 , x](x − xn+1 )

em que xn+1 é um ponto arbitrário cuja especificação será feita mais adiante. Introduzindo
esta relação em (4.2.8), temos que
Z b
Eh (f ) = f [x0 , x1 , . . . , xn , xn+1 ]Wn (x) dx
a
Z b
+ f [x0 , x1 , . . . , xn , xn+1 , x](x − xn+1 )Wn (x) dx
a

e, tendo em atenção a hipótese (4.2.11),


Z b
Eh (f ) = f [x0 , x1 , . . . , xn , xn+1 , x]Wn+1 (x) dx
a

em que Wn+1 (x) = Wn (x)(x − xn+1 ). Se for possível escolher xn+1 de modo a que Wn+1
possua um único sinal em Ω̄, podemos novamente aplicar o teorema do valor médio ao
integral no segundo membro da expressão acima, vindo
Z b
Eh (f ) = f [x0 , x1 , . . . , xn+1 , η] Wn+1 (x) dx (4.2.12)
a

Se f ∈ C n+2 (Ω̄), então concluímos que

1 b
Z
Eh (f ) = f (n+2) (ξ) Wn+1 (x) dx (4.2.13)
(n + 2)! a

O grau de exactidão da fórmula é agora igual a n + 1, uma unidade superior ao do grau


do polinómio usado na construção da regra de integração, o que pode ser considerado um
bónus inesperado se a regularidade da integranda f assim o permitir.
Apliquemos estas estimativas de erro às regras de integração mais usuais.
4.2 Regras básicas 169

Regras do rectângulo. Temos neste caso que n = 0 com W0 (x) = x − a para a regra
do rectângulo à esquerda, e W0 (x) = x−b para a regra do rectângulo à direita. Em ambos
os casos W0 não muda de sinal em Ω̄, pelo que podemos aplicar a expressão (4.2.10), vindo
para a regra do rectângulo à esquerda
b 1
Z

Eh (f ) = f (ξ) (x − a) dx = f ′ (ξ)(b − a)2 (4.2.14)
a 2
e para a regra do rectângulo à direita,
Z b 1
Eh (f ) = f ′ (ξ) (x − b) dx = − f ′ (ξ)(b − a)2 (4.2.15)
a 2
Para a regra do ponto médio vem que W0 (x) = x − x0 em que x0 = (a + b)/2 e,
portanto, esta função muda de sinal no intervalo Ω̄. Contudo,
Z b Z b
W0 (x) dx = (x − x0 ) dx = 0
a a

pelo que podemos tentar a segunda variante da análise do erro apresentada atrás. Esco-
lhendo x1 = x0 resulta que
W1 (x) = (x − x0 )2
pelo que esta função é de sinal único (positivo) no intervalo Ω̄. Logo, estamos em condições
de aplicar a expressão (4.2.13), vindo
1 ′′
Eh (f ) = f (ξ)(b − a)3 (4.2.16)
24
A regra do ponto médio tem, pois, grau de exactidão igual a um.

Regra do trapézio. Como neste caso W1 (x) = (x − a)(x − b) tem um único sinal no
intervalo Ω̄ e Z b Z b
1
W1 (x) dx = (x − a)(x − b) dx = − (b − a)3
a a 12
resulta que
1
Eh (f ) = − f ′′ (ξ)(b − a)3 (4.2.17)
12
Assim, a regra do trapézio é de grau um, tal como a do ponto médio. Por outro lado, uma
comparação das expressões dos erros destas duas fórmulas (4.2.16) e (4.2.17) não favorece
a regra do trapézio, já que esta necessita de dois valores da integranda contra apenas um
da regra do ponto médio para uma estimativa de erro que até é pior. Deste modo parece
não haver qualquer vantagem da regra do trapézio quando comparada com a do ponto
médio. No entanto, há situações em que tal conclusão não é verdadeira, nomeadamente
no caso das regras compostas a considerar mais adiante.
170 Integração numérica

Regra de Simpson. Temos agora que W2 muda de sinal em Ω̄, mas


Z b Z b a+b
W2 (x) dx = (x − a)(x − )(x − b) dx = 0
a a 2
Fazendo
a+b
x3 = x1 =
2
resulta que
!2
a+b
W3 (x) = (x − x0 )(x − x1 )(x − x2 )(x − x3 ) = (x − a) x − (x − b)
2
é uma função com sinal único (negativo) no intervalo Ω̄. Então, efectuando os cálculos
necessários,
!2
b b a+b 1
Z Z
W3 (x) dx = (x − a) x − (x − b) dx = − (b − a)5
a a 2 120
e, por conseguinte,
1 (4)
f (ξ)(b − a)5
Eh (f ) = − (4.2.18)
2880
O grau de exactidão da regra de Simpson é, portanto, três, uma unidade acima do grau
do polinómio usado na sua construção.
Exemplo 4.2.1 Calcular um valor aproximado do seguinte integral
Z 1
I= exp(−x2 ) dx
0

pelas regras:
a) do rectângulo à esquerda; b) do rectângulo à direita; c) do ponto médio; d) do trapézio;
e) de Simpson.
Determinar o erro cometido. (Nota: Em ABRAMOWITZ and STEGUN (1968) I =
0.74682413)
a) Regra do rectângulo à esquerda. A expressão (4.2.3) fornece imediatamente

Ih (f ) = (b − a)f (a) = f (0) = 1.0

O erro, calculado directamente pela diferença entre o valor exacto e o valor aproximado, é

Eh (f ) = 0.7468243 − 1.0 = −0.2531759

b) Regra do rectângulo à direita. Pela expressão (4.2.4) e de modo idêntico temos que

Ih (f ) = (b − a)f (b) = f (1) = 0.3789447


Eh (f ) = 0.3789303
4.3 Regras com valores das derivadas 171

c) Regra do ponto médio. A expressão (4.2.5) permite obter


a+b
Ih (f ) = (b − a)f ( ) = f (0.5) = 0.7788008
2
Eh (f ) = −(0.3197667)10−1

d) Regra do trapézio. Utilizando a expressão (4.2.6) obtemos


b−a
Ih (f ) = [f (a) + f (b)] = 0.5[f (0) + f (1)] = 0.6839397
2
Eh (f ) = (0.6288441)10−1

e) Regra de Simpson. Pela expressão (4.2.7) vem que


b−a a+b
Ih (f ) = [f (a) + 4f ( ) + f (b)]
6 2
1
= [f (0) + 4f (0.5) + f (1)] = 0.7471806
6
Eh (f ) = −(0.3562990)10−3

Como era de esperar, a regra de Simpson produz o melhor resultado. Não deixa de ser
interessante verificar que os erros das regras do ponto médio e do trapézio estão sensivelmente
na proporção indicada pelas respectivas expressões dos erros (4.2.16) e (4.2.17).

4.3 Regras com valores das derivadas


Todas as regras de integração deduzidas até aqui foram construídas recorrendo a polinómios
interpoladores da função integranda. Porém, nada impede o emprego de polinómios que
interpolem também as derivadas da função integranda. Para exemplificar, consideremos
o caso da interpolação de Hermite em que a integranda e a sua primeira derivada são
interpoladas nos nós distintos x0 , x1 , . . . , xn . Recordando o que se disse na Secção 2.6.1,
o polinómio interpolador para este caso escreve-se
n
[Ui (x)f (xi ) + Vi (x)f ′ (xi )]
X
p2n+1 (x) =
i=0

Então,
n
[Ai f (xi ) + Bi f ′ (xi )]
X
I(p2n+1 ) =
i=0
com Z b Z b
Ai = Ui (x) dx e Bi = Vi (x) dx
a a
Verificamos, assim, que aparecem agora dois conjuntos de pesos Ai e Bi associados res-
pectivamente aos valores da integranda e aos valores da sua derivada.
172 Integração numérica

Para exemplificar a construção desta nova família de regras, consideremos o caso em


que se tomam para nós os extremos do intervalo [−1, 1]. Uma vez obtidas as expressões
para este intervalo, podemos, através das transformações (4.1.1) e (4.1.2), passá-las para
um intervalo [a, b] qualquer. As expressões dos polinómios Ui e Vi foram obtidas no
Exemplo 2.6.1, pelo que simples integrações fornecem os pesos
Z 1 1Z 1
A0 = U0 (x) dx = (2 + x)(x − 1)2 dx = 1
−1 4 −1
1 1
Z 1 Z
A1 = U1 (x) dx = (2 − x)(x + 1)2 dx = 1
−1 4 −1
1 1 1
Z 1 Z
B0 = V0 (x) dx = (x + 1)(x − 1)2 dx =
−1 4 −1 3
1 1 1 1
Z Z
B1 = V1 (x) dx = (x − 1)(x + 1)2 dx = −
−1 4 −1 3
Então,
1 1
Ih (f ) = f (−1) + f (1) + f ′ (−1) − f ′ (1)
3 3
Não oferece dificuldade verificar que, para o intervalo [a, b], esta fórmula conduz à ex-
pressão
b−a (b − a)2 ′
Ih (f ) = [f (a) + f (b)] + [f (a) − f ′ (b)] (4.3.1)
2 12
A leitura do segundo membro desta igualdade mostra-nos que esta regra pode ser consi-
derada uma regra do trapézio a que se adicionou uma correcção correspondente ao termo
envolvendo as derivadas. Por este motivo, a regra (4.3.1) é por vezes conhecida como
regra do trapézio corrigida.
O erro desta regra é dado pela seguinte expressão, cuja demonstração deixamos como
exercício,
(b − a)5 (4)
Eh (f ) = f (ξ) (4.3.2)
720
Trata-se, como se vê, de uma regra de grau três.
Atendendo às dificuldades que o cálculo de derivadas frequentemente apresenta, as
regras de integração que recorrem a valores das derivadas não são tão utilizadas como as
que envolvem apenas valores da função integranda. Dito por outras palavras, só nos casos
em que f ′ (a) e f ′ (b) forem de cálculo fácil é que a regra do trapézio corrigida se afigura
vantajosa (ver, no entanto, a Secção 4.5 onde se descreve uma situação interessante para
esta regra).

4.4 Regras de Gauss


A construção das regras de integração deduzidas até aqui envolvia as seguintes fases:
fixação do número e localização dos nós, determinação do polinómio interpolador e cálculo
4.4 Regras de Gauss 173

dos pesos. Foi possível deste modo obter regras cujo grau de exactidão era igual ou
superior em uma unidade ao grau do polinómio interpolador utilizado na sua construção.
No entanto, o Teorema 4.2.1 deixa aberta a possibilidade de conseguir graus de exactidão
iguais a 2n − 1 com fórmulas de n nós. O objectivo desta secção é o de mostrar como é
que tais regras podem ser construídas.

4.4.1 Dedução das fórmulas


Assim, procuraremos deduzir fórmulas do tipo1
n
X
Ih (f ) = Ai f (xi ) (4.4.1)
i=1

que possuam o maior grau possível. A ideia–chave para obter estas fórmulas de máximo
grau consiste em não fixar a priori a localização dos nós, mas jogar com esta localização
no sentido de obter o grau de exactidão máximo. Ficamos assim com 2n parâmetros à
nossa disposição, os n nós xi e os n pesos Ai da expressão (4.4.1), os quais poderão ser
determinados de modo a que esta regra integre exactamente todos os polinómios de grau
≤ 2n − 1. As regras de integração assim deduzidas são conhecidas genericamente por
regras de Gauss.
Este objectivo é realizável. Se recorrermos ao polinómio osculador para aproximar f
temos que (recordar o que se disse na Secção 4.3),
n
[Ai f (xi ) + Bi f ′ (xi )]
X
Ih (f ) = (4.4.2)
i=1

com
Z b Z b
Ai = Ui (x) dx = [1 − 2L′i (xi )(x − xi )] L2i (x) dx (4.4.3)
a a
Z b Z b
Bi = Vi (x) dx = (x − xi )L2i (x) dx (4.4.4)
a a

Pela própria forma como foram estabelecidas, estas regras são de grau 2n−1. Uma questão
que se pode levantar é a seguinte: será possível dispor os nós de integração x1 , . . . , xn de
modo a que os pesos Bi que afectam os valores das derivadas se anulem? Se assim for,
teremos obtido uma regra de integração com n pontos e de grau 2n − 1, o qual é, de
acordo com o Teorema 4.2.1, o máximo possível com fórmulas do tipo (4.4.1).
Ora, recorrendo à expressão (2.3.5) e denotando por Ψn o polinómio nodal

Ψn (x) = (x − x1 ) · · · (x − xn )
1
Nesta secção os pontos de integração serão x1 , . . . , xn e não x0 , x1 , . . . , xn , como nas secções anteriores.
174 Integração numérica

resulta que o anulamento dos pesos Bi implica que


1 b
Z
Bi = ′
Li (x)Ψn (x) dx = 0, i = 1, . . . , n (4.4.5)
Ψn (xi ) a

Esta expressão mostra que o polinómio nodal Ψn deve ser ortogonal a todos os polinómios
de Lagrange Li . Como estes polinómios formam uma base de Pn−1 (Ω̄), conclui-se daqui
que Ψn deve ser ortogonal a todos os polinómios de grau ≤ n − 1. Dito por outras
palavras: os pontos de integração xi das regras de Gauss são os zeros de certos polinómios
ortogonais.
Uma propriedade vantajosa das regras de Gauss, a juntar às já reveladas, e que con-
trasta com as regras de Newton-Cotes, é a seguinte.

Teorema 4.4.1 Os pesos das regras de Gauss são positivos, i.e.,

Ai > 0, i = 1, . . . , n

Demonstração Tendo em atenção a condição (4.4.5) de anulamento dos pesos Bi , a


expressão (4.4.3) simplifica-se para
Z b
Ai = L2i (x) dx (4.4.6)
a

o que implica de imediato que Ai > 0.


A expressão (4.4.6) pode parecer estar em contradição com (4.2.1). Tal não é o caso,
conforme se pode demonstrar (ver o Problema 4.11.11).
O resultado do Teorema 4.4.1 é geral, i.e., não depende do facto de termos tomado
como ponto de partida a expressão (4.4.2) para construir a regra de integração. O teorema
seguinte vai confirmar esta asserção.

Teorema 4.4.2 Para que a regra (4.4.1) possua um grau de exactidão igual a 2n − 1, é
necessário e suficiente que o polinómio nodal Ψn satisfaça a relação
Z b
Ψn (x)q(x) dx = 0, ∀q ∈ Pn−1 (Ω̄)
a

i.e., seja ortogonal a todos os polinómios q de grau ≤ n − 1.

Demonstração Comecemos pela condição de necessidade, ou seja, a de que, se a regra


for de grau 2n − 1, então a expressão do enunciado tem de ser verdadeira. Seja então q
um polinómio de grau ≤ n − 1. A função Ψn (x)q(x) é um polinómio de grau ≤ 2n − 1 e
a regra (4.4.1) deve integrá-la exactamente, pelo que
Z b n
X
Ψn (x)q(x) dx = Ai Ψn (xi )q(xi ) = 0
a i=1
4.4 Regras de Gauss 175

pois, por construção, Ψn (xi ) = 0 para todos os pontos de integração.


Passemos agora à condição de suficiência. Seja p um polinómio qualquer de grau
≤ 2n − 1 e escrevamo-lo na forma

p(x) = Ψn (x)q(x) + r(x)

em que q é o quociente da divisão de p por Ψn , e r, o resto. É claro que q e r são


polinómios de grau ≤ n − 1 e que p(xi ) = r(xi ) , i = 1, . . . , n. Por outro lado, atendendo
à ortogonalidade de Ψn relativamente aos q, temos que
Z b Z b Z b Z b
p(x) dx = Ψn (x)q(x) dx + r(x) dx = r(x) dx
a a a a

donde se conclui que


I(p) = I(r) (4.4.7)
A regra (4.4.1), uma vez que é obtida à custa do polinómio interpolador nos nós x1 , . . . , xn ,
é exacta para todos os polinómios de grau ≤ n − 1, qualquer que seja a localização destes
nós no intervalo Ω̄, desde que os pesos sejam apropriadamente calculados. Por isso
n
X n
X
I(r) = Ih (r) = Ai r(xi ) = Ai p(xi ) = Ih (p) (4.4.8)
i=1 i=1

Mas, conjugando as expressões (4.4.7) e (4.4.8), vem que


Z b n
X
I(p) = p(x) dx = Ai p(xi ) = Ih (p)
a i=1

o que prova que a regra (4.4.1) é exacta para todos os polinómios de grau ≤ 2n − 1.
Podemos resumir o que acabámos de demonstrar dizendo que os nós de integração das
regras de Gauss devem ser os zeros do polinómio mónico de grau ≤ n, que é ortogonal a
Pn−1 (Ω̄). Estes polinómios ortogonais são os polinómios de Legendre, cujas propriedades
serão estudadas no Capítulo 11. De momento basta-nos referir que o polinómio de Legen-
dre de grau n associado ao intervalo Ω̄ possui n zeros reais e distintos situados no interior
deste intervalo.
Assim, o problema de determinar os n nós de integração foi transferido para o cálculo
dos zeros do polinómio de Legendre de grau n. Uma vez na posse destes zeros, os pesos
de integração podem determinar-se pela expressão (4.2.1).

4.4.2 Erros de integração


Consideremos o polinómio interpolador de Hermite Hn que satisfaz as seguintes condições
)
Hn (xi ) = f (xi )
i = 1, . . . , n
Hn′ (xi ) = f ′ (xi )
176 Integração numérica

O erro de interpolação com este polinómio é dado por


eh (x) = f (x) − Hn (x) = f [x1 , x1 , . . . , xn , xn , x](Ψn (x))2
Com a regra de Gauss com n nós Ih (f ) = I(Hn ) e o erro de integração é, portanto,
expresso por
Z b
Eh (f ) = I(f ) − Ih (f ) = f [x1 , x1 , . . . , xn , xn , x](Ψn (x))2 dx
a

Uma vez que (Ψn (x))2 ≥ 0 podemos aplicar o teorema do valor médio, vindo
Z b
Eh (f ) = f [x1 , x1 , . . . , xn , xn , ξ] (Ψn (x))2 dx
a

Relacionando diferenças divididas com derivadas (ver o Teorema 2.3.4), chegamos à se-
guinte igualdade para o erro das regras de Gauss
Eh (f ) = cn (b − a)2n+1 f (2n) (ξ) (4.4.9)
com cn = ab (Ψn (x))2 dx/ [(b − a)2n+1 (2n)!] e ξ ∈ [a, b]. É possível demonstrar que esta
R

constante cn toma o valor


(n!)4
cn = (4.4.10)
(2n + 1)((2n)!)3
A expressão (4.4.9) confirma o facto já conhecido de que as regras de Gauss com n
pontos possuem um grau de exactidão igual a 2n−1. Estas são, pois, as regras que possuem
maior grau de exactidão para um dado número de pontos de integração e tenderão por isso
a ser as mais económicas do ponto de vista computacional. O seu emprego foi inicialmente
travado pelo facto de os nós de integração e os pesos serem números irracionais, pouco
atraentes quando os cálculos eram feitos manualmente. Como este aspecto é irrelevante
quando se usam computadores, para os quais todos os números são tratados da mesma
maneira, as regras de Gauss têm vindo a ganhar popularidade crescente.

4.4.3 Regras de Gauss com peso


Frequentemente o integral I(f ) aparece sob uma forma ligeiramente modificada, designa-
damente Z b
I(f ) = w(x)f (x) dx (4.4.11)
a
em que w é uma função peso cujas propriedades nos levam a considerá-la em separado
2

da função f . Como supomos que w é uma função dada e fixa, é conveniente que a sua
2
Uma função w definida sobre o intervalo [a, b] diz-se que é uma função peso se verificar as seguintes
condições:
R
b
• w ∈ C(a, b); w não muda de sinal; 0 < a w(x) dx < ∞.

4.4 Regras de Gauss 177

influência nas regras de integração se faça através dos pesos, mantendo a forma (4.4.1).
A dedução das regras de Gauss para este caso não difere substancialmente do descrito
atrás, pelo que nos limitamos a listar os casos mais vulgares.

Regras de Gauss-Legendre. Estas regras correspondem ao caso em que

w(x) = 1 e [a, b] = [−1, 1] (4.4.12)

Este é precisamente o caso que estudamos em pormenor, notando apenas o emprego do


intervalo normalizado [−1, 1]. Os polinómios ortogonais associados a esta função peso
e a este intervalo são, como se disse, os polinómios de Legendre, razão pela qual estas
regras são conhecidas como regras de Gauss-Legendre. Na Tabela 4.4.1 apresentamos os
valores dos nós e dos pesos para algumas destas regras. As referências STROUD (1971),
ABRAMOWITZ and STEGUN (1968) e KRYLOV (1962) contêm tabelas mais completas.

Regras de Gauss-Jacobi. Estas regras correspondem ao caso

w(x) = (1 − x)α (1 + x)β , α, β > −1, [a, b] = [−1, 1] (4.4.13)

Os polinómios ortogonais associados são os polinómios de Jacobi, pelo que estas regras
são conhecidas pelo nome de regras de Gauss-Jacobi .

Regras de Gauss-Chebyshev de primeira espécie. Quando se tomam na regra de


Gauss-Jacobi α = β = −1/2, obtém-se a função peso

w(x) = (1 − x2 )−1/2 (4.4.14)

cujos polinómios ortogonais associados são os polinómios de Chebyshev de primeira espécie


Tn . Os nós de integração são, como vimos, os zeros destes polinómios que, conforme
demonstrámos em 2.4.2, são dados por

2i − 1
xi = cos π, i = 1, . . . , n
2n
sendo os pesos da regra de integração obtidos por
π
Ai =
n
Curiosamente, os pesos são todos iguais.
178 Integração numérica

Tabela 4.4.1: Abcissas e pesos das regras de Gauss-Legendre no intervalo [−1, 1]

NOTA: Os pontos de integração estão dispostos simetricamente em relação à origem,


pelo que só se apresentam as abcissas positivas.

n xi Ai
1 √ 0 2
2 3/3 1
3 √0 8/9
3/5 5/9
 √ 1/2  √ 
4 (3 ± 4.8)/7 1 ∓ 5/54 /2
5 0 128/225
 √ 1/2  √ 
5 ± 40/7 /3 3.22 ∓ 1.3 0.7 /9
6 0.2386191861 0.4679139346
0.6612093865 0.3607615730
0.9324695142 0.1713244924
7 0 0.4179591837
0.4058451514 0.3818300505
0.7415311856 0.2797053915
0.9491079123 0.1294849662
8 0.1834346425 0.3626837834
0.5255324099 0.3137066459
0.7966664774 0.2223810345
0.9602898565 0.1012285363
9 0 0.3302393550
0.3242534234 0.3123470770
0.6133714327 0.2606106964
0.8360311073 0.1806481607
0.9881602395 0.0812743883
10 0.1488743390 0.2955242247
0.4333953941 0.2692667193
0.6794095683 0.2190863625
0.8650633667 0.1494513492
0.9739065285 0.0666713443
4.4 Regras de Gauss 179

Regras de Gauss-Chebyshev de segunda espécie. Quando se tomam na regra de


Gauss-Jacobi α = β = 1/2, obtém-se a função peso
w(x) = (1 − x2 )1/2 (4.4.15)
cujos polinómios ortogonais associados são os polinómios de Chebyshev de segunda espécie.
Os nós de integração são, como vimos, os zeros destes polinómios que são dados por
i+1
xi = cos π, i = 1, . . . , n
n+1
sendo os pesos da regra de integração dados por
2
π i+1

Ai = sin π
n+1 n+1

Regras de Gauss-Laguerre. Neste caso, a função peso e o intervalo de integração são


w(x) = xα exp(−x), α > −1, [a, b] = [0, +∞) (4.4.16)
Os polinómios ortogonais associados são os polinómios de Laguerre, e, portanto, estas
regras são designadas por regras de Gauss-Laguerre.

Regras de Gauss-Hermite. A função peso e o intervalo são


w(x) = exp(−x2 ), [a, b] = (−∞, +∞) (4.4.17)
Os polinómios ortogonais associados são os polinómios de Hermite, pelo que estas regras
são designadas por regras de Gauss-Hermite.
Exemplo 4.4.1 Aplicar a regra de Gauss-Legendre com 3 pontos ao cálculo de
Z 1
I(f ) = cos x dx
0
Como as regras de Gauss-Legendre da Tabela 4.4.1 se referem ao intervalo [−1, 1] há que
proceder à transformação de variável estipulada em (4.1.2). Após alguns cálculos simples
obtemos neste caso que x = (1 + ξ)/2, e, por conseguinte,
1 1 1+ξ
Z
I(f ) = cos dξ
2 −1 2
Os pontos e pesos de integração são

ξ1 = − 3/3, A1 = 5/9
ξ2 = √
0, A2 = 8/9
ξ3 = 3/3, A3 = 5/9
Portanto,
1
Ih (f ) = [A1 f (ξ1 ) + A2 f (ξ2 ) + A3 f (ξ3 )] = 0.8414714
2
Como I(f ) = 0.8414710, o erro cometido é Eh (f ) = −(0.4)10−6 . A estimativa (4.4.9) permite
obter |Eh (f )| ≤ (0.50)10−6 , que é um valor bastante realista.
180 Integração numérica

4.4.4 Regras de Gauss com nós nos extremos do intervalo


Em certas situações, a integranda f assume valores conhecidos a priori num ou em ambos
os extremos do intervalo de integração Ω̄ = [a, b]. Geralmente tais valores são nulos, pelo
que é natural querer usar esses pontos como nós de integração já que daí não advém
qualquer acréscimo de custo computacional.

Regras de Gauss-Radau
Comecemos por estudar o caso em que se utiliza o extremo esquerdo do intervalo Ω̄ = [a, b]
como nó de integração predefinido. Neste caso, faz sentido tomar uma regra de integração
do tipo
n
X
Ih (f ) = Af (a) + Ai f (xi )
i=1

O grau de exactidão desta regra é ≤ 2n. Para confirmar este resultado, consideremos
o polinómio p = (x − a)(Ψn (x))2 de grau 2n + 1. É fácil ver que Ih (p) = 0 e I(p) > 0 e
que, por conseguinte, a regra não é exacta para este polinómio.
Para que esta regra tenha o maior grau de exactidão possível, os nós de integração
devem ser os zeros do polinómio (x − a)Ψn (x) ortogonal a Pn−1 (Ω̄) (ver o Teorema 4.4.2).
O seguinte resultado mostra como é fácil construir este polinómio.

Teorema 4.4.3 Seja {pi }ni=0 uma família de polinómios ortogonais. Então,

ψi (x) = pi (x) + αi pi−1 (x), i = 1, . . . , n, αi = −pi (a)/pi−1 (a)

verifica
ψi (a) = 0, ψi ⊥ Pi−2 (Ω̄)

Demonstração A primeira parte do teorema é evidente, bastando chamar a atenção


para o facto de que pi−1 (a) 6= 0, pois os extremos do intervalo não podem ser zeros dos
polinómios ortogonais.
A segunda parte demonstra-se verificando que, ∀p ∈ Pi−2 (Ω̄),
Z b Z b Z b
w(x)ψi (x)p(x) dx = w(x)pi (x)p(x) dx + αi w(x)pi−1 (x)p(x) dx = 0
a a a

pois pi , pi−1 ⊥ Pi−2 (Ω̄).


Seja p ∈ P2n (Ω̄), o qual escreveremos da seguinte maneira,

p = ψn+1 q + r, com q ∈ Pn−1 (Ω̄), r ∈ Pn−2 (Ω̄)

Um raciocínio semelhante ao utilizado na demonstração do Teorema 4.4.2 (ver o Problema


4.11.12) permite concluir que a regra de integração proposta tem grau de exactidão igual
a 2n.
4.4 Regras de Gauss 181

Estas regras de integração são conhecidas pela designação de regras de Gauss-Radau.


Consoante a função peso w utilizada, assim teremos regras de Gauss-Legendre-Radau,
regras de Gauss-Chebyshev-Radau, etc.

Exemplo 4.4.2 Deduzir a fórmula de Gauss-Legendre-Radau para o intervalo [−1, 1] e


n=2.

Trata-se de obter as abcissas e os pesos da fórmula de integração


Z b
I(f ) = f (x)p(x) dx ≈ Ih (f ) = Af (−1) + A1 f (x1 ) + A2 f (x2 )
a

Os nós de integração são, como se disse acima, os zeros do polinómio de grau 3 ortogonal a
P2 (Ω̄) que tem −1 como zero pois este ponto de integração é fixado a priori neste tipo de
regras. Pelo Teorema 4.4.3, podemos escrever que

ψ3 (x) = P3 (x) + α3 P2 (x), α3 = −P3 (−1)/P2 (−1)

em que os Pi são os polinómios de Legendre (ver a Tabela 11.2.1). Então,


1 1
ψ3 (x) = (5x3 − 3x) + (3x3 − 1)
2 2
Os zeros deste polinómio são
1 √ 1 √
x1 = −1, x2 = (1 − 6), x3 = (1 + 6)
5 5
A determinação dos pesos pode fazer-se estabelecendo o sistema de equações Ih (xi ) = I(xi ),
com i = 0, . . . , 2, ou seja,

A + A1 + A2 = 2
−A + A1 x1 + A2 x2 = 0
A + A1 x21 + A2 x22 = 2/3

Trata-se de um sistema de equações algébricas lineares fácil de resolver. A sua solução é


2 1 √ 1 √
A= , A1 = (16 + 6), A2 = (16 − 6)
9 18 18
O grau desta regra é 4.

Regras de Gauss-Lobatto
Quando se tomam ambos os extremos do intervalo de integração Ω̄ = [a, b] como nós de
integração predefinidos, somos levados a considerar regras do tipo
n
X
Ih (f ) = Af (a) + Bf (b) + Ai f (xi )
i=1
182 Integração numérica

O grau de exactidão desta regra é ≤ 2n + 1. Para confirmar este resultado, e à


semelhança do que fizemos atrás, consideremos o polinómio p = (x − a)(x − b)(Ψn (x))2 de
grau 2n + 2. É fácil ver que Ih (p) = 0 e I(p) > 0, o que mostra que a regra não é exacta
para este polinómio.
Para que esta regra tenha o maior grau de exactidão possível, os nós de integração
devem ser os zeros do polinómio (x − a)(x − b)Ψn (x) ortogonal a Pn−1 (Ω̄) (ver o Teorema
4.4.2).
O seguinte resultado não deve constituir surpresa.

Teorema 4.4.4 Seja {pi }ni=0 uma família de polinómios ortogonais. Então,

ψi (x) = pi (x) + αi pi−1 (x) + βi pi−2 (x), i = 2, . . . , n

com αi e βi apropriados, verifica

ψi (a) = ψi (b) = 0, ψi ⊥ Pi−3 (Ω̄)

Demonstração A demonstração é análoga à do teorema anterior.


Seja agora p ∈ P2n+1 (Ω̄), o qual escreveremos da seguinte maneira,

p = ψn+2 q + r, com q ∈ Pn−1 (Ω̄), r ∈ Pn−2 (Ω̄)

Um raciocínio semelhante ao utilizado na demonstração do Teorema 4.4.2 (ver o Problema


4.11.12) permite chegar à conclusão de que a regra de integração proposta tem grau de
exactidão igual a 2n + 1.
Estas regras de integração são conhecidas pela designação de regras de Gauss-Lobatto
e, consoante a função peso w utilizada, assim teremos regras de Gauss-Legendre-Lobatto,
regras de Gauss-Chebyshev-Lobatto, etc.

4.5 Regras compostas


De acordo com o que vimos atrás, a busca de maior precisão passa pela utilização de
fórmulas de grau cada vez maior. Este modo de proceder nem sempre será o mais indicado,
pois a integranda pode não possuir a regularidade necessária que permita usufruir da plena
precisão das fórmulas, ou podem aparecer pesos de sinal negativo, como sucede nas regras
de Newton-Cotes de grau elevado. Uma alternativa às fórmulas de alto grau de exactidão
reside no emprego das chamadas regras compostas, cujo princípio passamos a expor.
Observando as expressões do erro das várias fórmulas, verificamos que em todas elas
este depende de uma certa potência do comprimento b − a do intervalo de integração
Ω̄ = [a, b]. Então, uma redução do comprimento do intervalo tenderá a reduzir o erro
tanto mais quanto maior for o expoente de b − a na expressão do erro. A exploração desta
ideia conduz às regras compostas que consistem basicamente em subdividir o intervalo Ω̄
4.5 Regras compostas 183

em N subintervalos Ω̄i = [ai−1 , ai ], com i = 1, . . . , N, a0 = a, aN = b e aplicar em cada


um destes subintervalos uma das regras de integração deduzidas atrás, ou seja, partir da
propriedade do integral
Z b N Z
X ai N
X
I(f ; Ω̄) = f (x) dx = f (x) dx = I(f ; Ω̄i )
a i=1 ai−1 i=1

e calcular cada um dos N integrais do segundo membro por integração numérica. Vejamos
alguns dos casos mais utilizados supondo, nesta secção, que os subintervalos são todos de
igual comprimento h = (b−a)/N, i.e., as malhas são uniformes. As malhas não-uniformes
não oferecem dificuldades de maior.

Regras do rectângulo compostas. Consideremos a regra do rectângulo à esquerda.


Neste caso, a fórmula resultante é óbvia, vindo
N
X N
X N
X
Ih (f ; Ω̄) = Ih (f ; Ω̄) = hf (ai−1 ) = h f (ai−1 ) (4.5.1)
i=1 i=1 i=1

O erro cometido é a soma dos erros cometidos em cada subintervalo, pelo que, tendo em
conta a expressão (4.2.14), podemos dizer que
N N N
1 ′ 2 h2 X
f ′ (ξi )
X X
Eh (f ; Ω̄) = Eh (f ; Ω̄i ) = f (ξi )h = (4.5.2)
i=1 i=1 2 2 i=1
Mas, admitindo que f ∈ C 1 (Ω̄) e invocando o teorema do valor médio para somatórios de
valores duma função, podemos escrever que
N
b−a
f ′ (ξi) = Nf ′ (ξ) = f ′ (ξ)
X
, ξ∈Ω
i=1 h
pelo que a expressão (4.5.2) se reduz a
b−a ′
Eh (f ) =
f (ξ)h (4.5.3)
2
Um raciocínio totalmente semelhante leva-nos a obter as expressões equivalentes para
a regra do rectângulo à direita composta, as quais são
N
X N
X
Ih (f ) = hf (ai ) = h f (ai ) (4.5.4)
i=1 i=1
b−a ′
Eh (f ) = −f (ξ)h (4.5.5)
2
Das expressões (4.5.3) e (4.5.5) podemos concluir que, se f ∈ C 1 (Ω̄), então estas regras
de integração produzem um erro que tende para zero com h. Notemos que, ao passar da
expressão do erro da fórmula básica para a fórmula composta, houve um decréscimo de
uma unidade no expoente de h, facto que também se irá verificar para as outras regras
que iremos deduzir em seguida.
184 Integração numérica

Regra do ponto médio composta. A regra do ponto médio composta também não
oferece dificuldade, pelo que nos limitamos a apresentar as fórmulas finais,
N
X
Ih (f ) = h f (ai−1 + h/2) (4.5.6)
i=1
b − a ′′
Eh (f ) = f (ξ)h2 (4.5.7)
24
A convergência desta regra é quadrática em h para funções f ∈ C 2 (Ω̄).

Regra do trapézio composta. Neste caso, temos que


N
X h
Ih (f ) = [f (ai−1 ) + f (ai )]
i=1 2
N −1
" #
1 X 1
= h f (a) + f (ai ) + f (b) (4.5.8)
2 i=1 2
A circunstância de esta regra utilizar valores da integranda nos extremos dos subinterva-
los faz com que o valor à direita dum subintervalo coincida com o valor à esquerda do
subintervalo seguinte, daqui resultando uma importante economia computacional. O erro
vem agora dado por
b − a ′′
Eh (f ) = − f (ξ)h2 (4.5.9)
12
Esta expressão, quando comparada com a equivalente (4.5.7), mostra que a regra do
trapézio composta não se apresenta numa posição tão desfavorável relativamente à regra
do ponto médio composta, como acontecia com as respectivas regras básicas.

Regra de Simpson composta. É fácil, e deixa-se como exercício, obter as expressões


N −1 N
" #
h X X
Ih (f ) = f (a) + f (b) + 2 f (ai ) + 4 f (ai−1 + h/2) (4.5.10)
6 i=1 i=1
b − a (4)
Eh (f ) = − f (ξ)h4 (4.5.11)
2880
Agora, se a função f ∈ C 4 (Ω̄), o erro tende para zero com h4 , uma convergência bastante
rápida, portanto.

Regra do trapézio corrigida composta. A terminar esta série de regras compostas


vamos deduzir as expressões correspondentes à regra do trapézio corrigida. Atendendo a
(4.3.1) vem que
N N
hX h2 X
Ih (f ) = [f (ai−1 ) + f (ai )] + [f ′ (ai−1 ) − f ′ (ai )]
2 i=1 12 i=1
4.5 Regras compostas 185

e, portanto, admitindo que f ∈ C 1 (Ω̄), os valores de f e f ′ no extremo direito de um


subintervalo coincidem com os valores correspondentes no extremo esquerdo do intervalo
seguinte, pelo que
N −1
h2
" #
1 1
f (ai ) + f (b) + [f ′ (a) − f ′ (b)]
X
Ih (f ) = h f (a) + (4.5.12)
2 i=1 2 12

A desvantagem da necessidade do cálculo de derivadas da função f fica agora reduzida


aos extremos do intervalo Ω̄ = [a, b], e a correcção introduzida permite ter uma expressão
do erro mais favorável do que a da regra do trapézio composta, conforme vamos ver. De
facto, seguindo o processo adoptado para as outras regras compostas, podemos concluir
que
b − a (4)
Eh (f ) = f (ξ)h4 (4.5.13)
720
Para funções f ∈ C 4 (Ω̄) a convergência é de quarta ordem. Uma aplicação sagaz desta
regra às funções f periódicas neste intervalo conduz à seguinte regra de integração
N
X
Ih (f ) = h f (ai )
i=1

que não é outra senão a regra do trapézio composta aplicada a este tipo de funções. A
expressão (4.5.13) evidencia que, nestas condições, i.e., se f ∈ C 4 (Ω̄) e f for periódica
neste intervalo, a regra do trapézio é mais precisa do que habitualmente.
Exemplo 4.5.1 a) Aplicar a regra do trapézio composta com 5 subintervalos iguais ao
integral Z 1
I(f ) = ln(1 + sin x) dx
0

e determinar um majorante para o erro cometido. b) Repetir a alínea anterior para o caso
da regra do trapézio corrigida.

a) A expressão (4.5.8) dá imediatamente, com h = 1/5 = 0.2,

Ih (f ) = 0.2[0.5f (0) + f (0.2) + f (0.4) + f (0.6) + f (0.8) + 0.5f (1.0)]


= 0.360776446

Estimando o erro por (4.5.9), e tendo em atenção que


cos x 1
f ′ (x) = , f ′′ (x) = −
1 + sin x 1 + sin x
e, por conseguinte kf ′′ k∞ < 1, vem logo que

0.22
|Eh (f )| ≤ = (0.33)10−2
12
186 Integração numérica

Concluímos assim que o valor do integral calculado tem pelo menos dois decimais exactos.
b) Como
f ′ (0) = 1 e f ′ (1) = 0.293408
temos que a correcção a fazer é, pela expressão (4.5.12),

h2 ′
[f (0) − f ′ (1)] = (0.2355307)10−2
12
vindo agora o valor do integral dado por

Ih (f ) = 0.36077646 + (0.2355307)10−2 = 0.3631317

Para a estimativa do erro precisamos das derivadas


cos x
f (3) (x) =
(1 + sin x)2
cos2 x + sin x + 1
f (4) (x) = −
(1 + sin x)3

Não é difícil obter o majorante kf (4) k∞ ≤ 3, pelo que o erro, estimado via expressão (4.5.13),
vem agora majorado por
0.24
|Eh (f )| ≤ 3 × = (0.67)10−5
720
Esta estimativa garante que o resultado obtido com a regra do trapézio corrigida tem pelo
menos cinco decimais exactos, uma melhoria significativa sobretudo se tivermos em conta que
foi conseguida apenas com dois valores adicionais (as derivadas nos extremos do intervalo).

Terminamos esta secção com uma observação a propósito do cálculo dos pontos de
integração das regras compostas que, aliás, é aplicável também noutras situações. A
fórmula que intuitivamente ocorre é ai = ai−1 + h para i = 1, . . . , N, a qual não poderia
ser mais económica do ponto de vista do número de operações aritméticas requeridas.
Todavia, ela não é a melhor em termos de precisão, sendo preferível usar a expressão,
analiticamente equivalente, ai = a + (i(b − a))/N. O Problema 1.9.41 ajuda a perceber
porquê.

4.5.1 Integração com splines


Um processo de obter fórmulas de integração com aspecto semelhante ao das fórmulas
compostas consiste em recorrer a splines em vez de polinómios de classe C ∞ (Ω̄). De
facto, a utilização do spline de grau zero, consoante a posição escolhida para os nós
de interpolação, permite obter as várias fórmulas do rectângulo, e o spline de grau um
reproduz a regra do trapézio composta. No entanto, os splines de ordem superior dão
origem a regras diferentes.
4.6 Convergência da integração numérica 187

Tomemos, para exemplificar, o spline cúbico. Esta função é, como deduzimos na


Subsecção 2.7.4, dada por

(xi − x)3 (x − xi−1 )3


Si (x) = Mi−1 + Mi
6hi 6hi
2
h2i x − xi−1
! !
hi xi − x
+ yi−1 − Mi−1 + yi − Mi
6 hi 6 hi

Sendo assim, podemos determinar que


Z xi hi h3
Si (x) dx = (yi−1 + yi) − i (Mi−1 + Mi )
xi−1 2 24

Somando as contribuições de cada subintervalo [xi−1 , xi ] chega-se a


n
h3
" #
b hi
Z
(yi−1 + yi ) − i (Mi−1 + Mi )
X
I(S) = S(x) dx =
a i=1 2 24

Então, se interpolarmos a função f por um spline e aplicarmos esta expressão, obtemos


um valor aproximado para I(f ), fazendo Ih (f ) = I(S).

4.6 Convergência da integração numérica


Embora seja possível extrair das expressões dos erros de integração alguma informação
sobre a convergência da integração numérica, i.e., saber se Ih (f ) tende ou não para I(f )
quando h → 0, é conveniente analisar este aspecto com mais cuidado. O teorema se-
guinte estabelece condições suficientes de convergência para uma vasta classe de regras
de integração.

Teorema 4.6.1 Se f ∈ C(Ω̄) e se


n
X
Ih (f ) = Ai f (xi ) com Ai ≥ 0, i = 0, 1, . . . , n
i=0

e o grau de Ih for uma função positiva e crescente com n, então o processo de integração
numérica é convergente, i.e., limh→0 Ih (f ) = I(f ).

Demonstração Seja p um polinómio que é integrado exactamente pela regra de inte-


gração Ih , i.e., Ih (p) = I(p). Neste caso, é verdadeira a seguinte sequência de expressões

Eh (f ) = I(f ) − Ih (f ) = I(f ) − I(p) + Ih (p) − Ih (f )


Z b n
X
= (f (x) − p(x)) dx + Ai (p(xi ) − f (xi ))
a i=0
188 Integração numérica

Tomando valores absolutos e majorando o segundo membro da expressão resultante, vem


que
 n
X 
|Eh (f )| ≤ (b − a) + |Ai | kf − pk∞
i=0

Mas, como o grau da regra Ih é pelo menos igual a zero, tal implica que esta regra integra
exactamente a constante 1, e daí que
Z b n
X n
X
1 dx = b − a = Ai = |Ai |
a i=0 i=0

tendo-se usado na última passagem a hipótese de os pesos não serem negativos. Então

|Eh (f )| ≤ 2(b − a)kf − pk∞

Dado um ǫ > 0 qualquer, o teorema de Weierstrass garante que é possível escolher p de


tal modo que kf − pk∞ ≤ ǫ e, portanto, |Eh (f )| ≤ 2(b − a)ǫ. Como o grau de exactidão
da regra de integração Ih (f ) cresce com o número de pontos de integração, é sempre
possível encontrar uma regra de integração de grau suficientemente elevado que integre p
exactamente, conforme é exigido na demonstração. Por conseguinte, o erro de integração
|Eh (f )| tenderá para zero com h.
A positividade dos pesos de integração é uma propriedade importante, daí que uma
regra de integração com pesos não-negativos seja, por vezes, designada como uma regra
positiva. Por outro lado, é possível demonstrar, o que não faremos por exceder o âmbito
deste texto, que a positividade dos pesos é uma condição necessária para assegurar a
convergência de regras de integração para funções contínuas. Recordamos que as regras
de Gauss gozam desta propriedade, mas as de Newton-Cotes não.

4.7 Integração adaptativa


Nesta secção vamos estudar métodos que garantem que a integração numérica produz um
erro inferior a uma tolerância dada, ou seja, que se verifique a condição

|Eh (f )| = |I(f ) − Ih (f )| < ǫ

em que ǫ é o erro aceitável tendo em conta os objectivos do problema específico em análise.


Para concretizar, consideremos o caso da regra do ponto médio composta, já que a
generalização a outras regras não oferece dificuldades adicionais. O erro de integração Ei
no subintervalo Ω̄i = [ai−1 , ai ] é, como vimos na Secção 4.5,

1 ′′
Ei = f (ξi)h3i (4.7.1)
24
4.7 Integração adaptativa 189

com ξi ∈ Ω̄i e hi = ai − ai−1 . Como o erro depende do valor da segunda derivada de f , é


natural que se devam escolher subintervalos mais pequenos nas zonas em que esta segunda
derivada for maior. O problema está em que o ponto ξi em que a segunda derivada deve ser
calculada é desconhecido. Esta dificuldade poderia ser torneada apelando a majorantes
de f ′′ no intervalo Ω̄i , i.e., substituir (4.7.1) por uma condição mais fraca

1
|Ei | ≤ Mi h3i , com |f ′′(ξi )| ≤ Mi (4.7.2)
24
Ora, a obtenção a priori de majorantes realistas de derivadas não é, em geral, uma
tarefa fácil. Torna-se, deste modo, necessário desenvolver algoritmos que seleccionem
automaticamente os comprimentos hi dos subintervalos sem que o utilizador tenha de se
preocupar com os valores das derivadas da função f , encarregando-se o próprio algoritmo
de descobrir com maior ou menor aproximação o respectivo andamento.

4.7.1 Métodos adaptativos


Os algoritmos desenvolvidos com base na ideia acabada de expor são designados por
adaptativos. de que apresentaremos algumas variantes.

Método adaptativo não-iterativo


Suponhamos que o intervalo Ω̄ = [a, b] foi dividido em N subintervalos Ω̄i = [ai−1 , ai ],
i = 1, . . . , N. A aplicação da regra do ponto médio ao subintervalo genérico Ω̄i envolve
a estimativa de erro (4.7.1) em que apenas não é conhecido o valor da segunda derivada.
Para calcular uma aproximação desta grandeza é lícito recorrer a uma fórmula apropriada
de diferenças finitas das que foram apresentadas no Capítulo 3. Na posse deste valor
podemos então comparar o erro estimado para este subintervalo, |Ei | digamos, com o erro
admissível neste subintervalo. É usual estabelecer o erro admissível no subintervalo Ω̄i de
acordo com a seguinte expressão

hi
|Ei | < ǫi ≡ ǫ (4.7.3)
b−a
cujo significado corresponde a atribuir a cada subintervalo um erro proporcional ao res-
pectivo comprimento (o Problema 4.11.28 dá algum suporte a este critério). Então, se
a condição (4.7.3) for verificada, o valor do integral no respectivo subintervalo é aceite.
Se, pelo contrário, esta condição for violada, i.e., se nalgum subintervalo o erro exceder
o valor tolerado, este subintervalo é subdividido em mi subintervalos de comprimento h̄i ,
de tal maneira que a soma dos erros cometidos em cada um dos novos subintervalos não
ultrapasse o valor ǫi , i.e.,
1
mi |Di |h̄3i < ǫi (4.7.4)
24
190 Integração numérica

em que Di representa o valor da segunda derivada estimada por uma fórmula apropriada
de diferenças finitas e é suposto não variar apreciavelmente no subintervalo Ω̄i . Como
h̄i = hi /mi , a expressão (4.7.4) dá origem à seguinte relação para o cálculo de mi :
!1/2
(b − a)|Di |
mi > hi
24ǫ
Após se ter determinado o número de subintervalos, aplica-se a cada um deles a regra
do ponto médio aceitando como bom o valor do integral daí resultante. Deste modo, o
algoritmo colocará subintervalos mais pequenos nas zonas em que a segunda derivada for
maior. Dado que não se volta a verificar se o novo valor satisfaz o critério do erro, este
método adaptativo diz-se não-iterativo.
Apresentamos no Algoritmo 4.7.1 uma versão completa do método adaptativo não-
iterativo, chamando a atenção para uma utilização mais cuidadosa da tolerância do erro
do que aquela que descrevemos atrás tendo em vista uma maior economia no número
de subdivisões e, consequentemente, do número de cálculos da integranda. Basicamente,
o erro que não é ‘gasto’ num subintervalo fica disponível para ser usado nos restantes
subintervalos.

Método adaptativo iterativo


O algoritmo que vamos descrever não limita o número de níveis das subdivisões a efectuar
nem recorre a diferenças finitas para estimar as derivadas. Assim, seja Ei o erro de
integração no subintervalo Ω̄i = [ai−1 , ai ] de comprimento hi . Temos, portanto, que
1
Ei = Di h3i (4.7.5)
24
A estimativa de Di faz-se agora procedendo do seguinte modo: subdivide-se o intervalo
Ω̄i em dois subintervalos de comprimento igual, aplica-se a cada um deles a regra de
integração e somam-se os valores obtidos para cada subintervalo. Seja Ēi o novo erro
dado por
2 1
Ēi ≈ D̄i (hi /2)3 = D̄i h3i (4.7.6)
24 96
em que se admitiu que o valor de D̄i é aproximadamente o mesmo em cada um dos novos
subintervalos e daí o simples aparecimento do factor 2 na expressão acima. Aceitaremos
também, e esta hipótese é crucial para a validade do método, que D̄i ≈ Di , ou seja, que as
segundas derivadas não variam apreciavelmente no subintervalo Ω̄i . Denotando por Ii o
valor exacto do integral no subintervalo Ω̄i , por I˜i o valor aproximado neste subintervalo,
e por I¯i o valor aproximado após a respectiva subdivisão, podemos escrever que
1
Ii − I˜i ≈ Di h3i (4.7.7)
24
1
Ii − I¯i ≈ Di h3i (4.7.8)
96
4.7 Integração adaptativa 191

Subtraindo membro a membro estas relações, vem que

1
I¯i − I˜i ≈ Di h3i
32
Se extrairmos Di desta expressão e substituirmos em (4.7.6), obtemos

1
Ēi = Ii − I¯i ≈ (I¯i − I˜i ) (4.7.9)
3

Algoritmo 4.7.1 Método adaptativo não-iterativo


comment: S = Ih (f ; Ω̄)
Escolher o valor de N (subintervalos iguais)
Fixar a tolerância ǫ do erro
h = (b − a)/N
a0 = a
S=0 (acumulador para Ih (f ; Ω̄))
for i = 1 to N do
Ω̄i = [ai−1 , ai ]
ai = a + ih
ǫi = ǫh/(b − ai−1 )
Calcular Si = Ih (f ; Ω̄i )
Obter a estimativa do erro Ei
if |Ei | < ǫi
then
S = S + Si
ǫ = ǫ − |Ei | (saldo da tolerância do erro)
else
Calcular mi
h̄i = h/mi
ā0 = ai−1
for j = 1 to mi do (subdividir Ω̄i )
āj = ā0 + j h̄i ,
Ω̄i,j = [āj−1 , āj ]
Calcular S̄j = Ih (f ; Ω̄i,j )
S = S + S̄j
od
Obter a estimativa do erro Ei
ǫ = ǫ − |Ei | (saldo da tolerância do erro)
fi
od
192 Integração numérica

Ficamos assim na posse de uma estimativa para o erro de integração no subintervalo Ω̄i .
Se o valor do erro não ultrapassar o erro tolerado para este subintervalo, o qual, seguindo
o mesmo princípio adoptado atrás, é dado por
hi
ǫi = ǫ
b−a
aceitamos o valor do integral para este subintervalo. Se tal não suceder, efectuamos nova
subdivisão a metade, e assim sucessivamente. Este algoritmo é um algoritmo adaptativo
iterativo que tenderá a situar mais pontos de integração nos locais em que a segunda
derivada for maior. Como se vê, permite mais flexibilidade que o algoritmo anterior,
embora naturalmente à custa de uma programação mais elaborada.
Embora tenhamos recorrido à regra do ponto médio para efeitos de exposição deste
método, verifica-se que as regras do trapézio e de Simpson são mais vantajosas neste
contexto, pois aproveitam os valores da integranda calculados em subdivisões anteriores
para as subdivisões subsequentes, conduzindo a um menor número global de cálculos da
integranda para uma dada precisão.

4.7.2 A fórmula de Euler-Maclaurin


A fórmula da soma de Euler-Maclaurin que vamos apresentar nesta secção estabelece uma
ligação importante entre o integral de uma função num intervalo e um somatório de valores
da mesma função em pontos equidistantes desse intervalo. Mais adiante apresentaremos
exemplos que elucidam a utilidade de uma tal relação.
Consideremos o seguinte integral
Z b
I(f ) = φ0 (x)f (x) dx (4.7.10)
a

com φ0 uma função dada e f uma função com derivadas contínuas até à ordem que o
contexto tornar necessária. Efectuando uma integração por partes em (4.7.10), obtemos
Z b h ib Z b
I(f ) = φ0 (x)f (x) dx = φ1 (x)f (x) − φ1 (x)f ′ (x) dx (4.7.11)
a a a

em que φ1 é uma função que deve satisfazer a equação diferencial φ′1 = φ0 . Repetindo o
processo de integração por partes no integral do segundo membro de (4.7.11), temos que
Z b h ib Z b
φ1 (x)f ′ (x) dx = φ2 (x)f ′ (x) − φ2 (x)f ′′ (x) dx (4.7.12)
a a a

em que também se deve ter φ′2 = φ1 . Introduzindo (4.7.12) em (4.7.11) podemos escrever
que
Z b h ib h ib Z b
I(f ) = φ0 (x)f (x) dx = φ1 (x)f (x) − φ2 (x)f ′ (x) + φ2 (x)f ′′ (x) dx (4.7.13)
a a a a
4.7 Integração adaptativa 193

Prosseguindo nesta via não é difícil obter a expressão geral seguinte


Z b
I(f ) = φ0 (x)f (x) dx (4.7.14)
a
n h ib Z b
k−1 (k−1) n
φn (x)f (n) (x) dx
X
= (−1) φk (x)f (x) + (−1)
a a
k=1

em que as funções φk devem satisfazer as condições

φ′k = φk−1, k = 1, 2, . . . (4.7.15)

A expressão (4.7.14) tem a estrutura de uma fórmula de integração envolvendo apenas


os valores da integranda e das suas derivadas nos extremos do intervalo de integração. De
facto, é legítimo estabelecer a seguinte família de regras de integração
n h ib
(−1)k−1 φk (x)f (k−1) (x)
X
Ih (f ) = (4.7.16)
a
k=1
Z b
n
Eh (f ) = (−1) φn (x)f (n) (x) dx (4.7.17)
a

As relações (4.7.15) não fixam de modo único as funções φk , pelo que há alguma
liberdade de escolha com vista a obter um resultado final com uma determinada forma
considerada vantajosa.
A fórmula de Euler-Maclaurin resulta da escolha especial que vamos passar a descrever.
O intervalo é Ω̄ = [a, b] = [0, 1] e φ0 = 1, donde decorre de imediato que

φ1 (x) = x + c1

A expressão (4.7.14) sugere, e o resultado final irá confirmar, que se proceda do seguinte
modo. A constante c1 será determinada impondo que φ1 (1) = −φ1 (0), o que dá c1 = 1/2
e, portanto,
1 1
φ1 (x) = x − , φ1 (1) = −φ1 (0) =
2 2
Atendendo às condições (4.7.15), deduzimos que
2
1 1

φ2 (x) = x− + c2
2 2
donde resulta que φ2 (1) = φ2 (0). Por razões que se tornarão claras imediatamente, a
constante c2 será determinada impondo que ab φ2 (x) dx = 0. Então, c2 = −1/24, e, por
R

conseguinte, temos que


2
1 1 1 1

φ2 (x) = x− − , φ2 (1) = φ2 (0) =
2 2 24 12
194 Integração numérica

Assim sendo, os valores de φ3 nos extremos do intervalo têm de ser iguais, pois
Z b Z b
φ3 (1) − φ3 (0) = φ′3 (x) dx = φ2 (x) dx = 0
a a

pelo que é lícito impor φ3 (1) = φ3 (0) = 0 para determinar a constante de integração.
Continuando deste modo, podemos concluir que, em geral,
)
φ2k (1) = φ2k (0)
k = 1, 2, . . . , n (4.7.18)
φ2k+1 (1) = φ2k+1 (0) = 0
Alguns cálculos laboriosos mas sem dificuldade especial fornecem a relação
Z 1
I(f ) = f (x) dx (4.7.19)
0
n
1 B2k h (2k−1) i
(1) − f (2k−1) (0) − Rn
X
= [f (1) + f (0)] − f
2 k=1 (2k)!

Os B2k são os chamados números de Bernoulli, cujos valores são


1 1 1 1
B2 = , B4 = − , B6 = , B8 = − , ...
6 30 42 30
e Rn é o resto, cuja expressão é
Z 1
Rn = p2n+1 (x)f (2n+1) (x) dx (4.7.20)
0

É de salientar a ausência, em (4.7.19), dos termos envolvendo derivadas de ordem par.


Apliquemos agora a expressão (4.7.19) a um intervalo genérico [xi , xi+1 ] com xi+1 −xi =
h. Neste caso, recorrendo à transformação de variáveis (4.1.3), que dá x = xi + hξ,
chegamos à expressão
Z xi+1 Z 1
Ii (f ) = f (x) dx = h f (ξ) dξ (4.7.21)
xi 0
n
h B2k 2k h (2k−1)
  i
(xi+1 ) − f (2k−1) (xi ) − Rn
X
= f (xi ) + f (xi+1 ) − h f
2 k=1 (2k)!

onde Z xi+1
2n+1
Rn = h p2n+1 (x)f (2n+1) (x) dx (4.7.22)
xi
Tomando esta expressão para i = 0, 1, . . . , n − 1, somando as respectivas contribuições
e tendo em atenção a hipótese de continuidade das derivadas, obtemos a expressão da
fórmula de Euler-Maclaurin pretendida:
n−1
xn 1 1
Z  X 
I(f ) = f (x) dx = h f (x0 ) + f (xk ) + f (xn )
x0 2 k=1 2
n−1
B2k 2k h (2k−1) i
(xn ) − f (2k−1) (x0 ) − Rn
X
− h f (4.7.23)
k=1 (2k)!
4.7 Integração adaptativa 195

onde o resto Rn é dado por


Z xn
Rn = h2n+1 p2n+1 (x)f (2n+1) (x) dx (4.7.24)
x0

Notemos que esta fórmula é assimptótica, i.e., limh→0 Rn = 0 (com n fixo), mas não
convergente em n pois limn→∞ Rn = 0 (com h fixo) não é necessariamente verdadeira.
O primeiro termo do segundo membro de (4.7.23) não é mais do que a regra do
trapézio composta aplicada ao intervalo [x0 , xn ] com subintervalos de igual comprimento
h. Os restantes termos englobam, por esta razão, o erro cometido quando se utiliza esta
regra para calcular o integral do primeiro membro. Se representarmos o valor aproximado
do integral por Ih (f ), como temos vindo a fazer, podemos dizer que

Eh (f ) = I(f ) − Ih (f ) = c2 h2 + c4 h4 + · · · (4.7.25)

em que c2 , c4 , . . . são parâmetros que dependem das derivadas de ordem ímpar de f nos
extremos do intervalo, mas não de h. Esta expressão vai servir como ponto de partida
para o método de Romberg a estudar na subsecção seguinte.
Entretanto vamos exemplificar a utilização da fórmula de Euler-Maclaurin um pouco
ao invés do que é habitual, já que a empregaremos para deduzir uma expressão analítica
(exacta) e não para obter uma aproximação numérica.
Exemplo 4.7.1 Calcular a soma dos quadrados dos primeiros n números naturais.
O valor pretendido é
n
X
2 2 2
Sn = 1 + 2 + 3 + · · · = k2
k=1
Facilmente se reconhece a semelhança desta expressão com a que figura no segundo membro
da fórmula de Euler-Maclaurin quando nesta se faz h = 1. De facto, efectuando uma simples
alteração de limites de integração, podemos escrever neste caso que
Z xn+1 h1 n
X 1 i
f (x) dx = f (x0 ) + f (xk ) + f (xn+1 )
x0 2 2
k=1
1 h
(1) (1)
i 1 h
(3) (3)
i
− f (xn+1 ) − f (x0 ) + f (xn+1 ) − f (x0 )
12 720
1 h i
− f (5) (xn+1 ) − f (5) (x0 ) + · · ·
30240
Escolhendo a função f do seguinte modo

f (x) = x2 , f ′ (x) = 2x, f ′′ (x) = 2, f (3) (x) = f (4) (x) = · · · = 0

e introduzindo estes resultados na fórmula acima, chegamos a


n
(n + 1)3 h1 X 1 i 1
= ×0+ k2 + (n + 1)2 − [2(n + 1) − 0]
3 2 2 12
k=1
196 Integração numérica

Após algumas simplificações obtemos a expressão


n
X n(n + 1)(2n + 1)
Sn = k2 =
6
k=1

que nos dá a soma dos quadrados dos primeiros n números naturais.

4.7.3 Método de Romberg


O método de integração de Romberg é um método iterativo que, embora não estritamente
adaptativo, permite controlar o erro e por isso se inclui nesta secção. Baseia-se essencial-
mente na utilização da regra do trapézio composta juntamente com a estimativa do erro
através da fórmula de Euler-Maclaurin. (Um processo alternativo de deduzir este método,
baseado no processo de Richardson, é apresentado no Problema 4.11.30.)
Assim, consideremos uma sucessão de aplicações da regra do trapézio composta em
que o número de intervalos é sucessivamente aumentado para o dobro em cada aplicação.
Concretamente ponhamos
hk−1 b−a
h = h0 = b − a, hk = = k , k = 1, 2, . . . (4.7.26)
2 2
e seja Tk,0 o valor obtido pela aplicação da regra do trapézio composta com 2k subintervalos
de comprimento hk . De acordo com (4.7.25), o erro tem a seguinte expressão

Ek = I − Tk,0 = c2 h2k + c4 h4k + · · · (4.7.27)

onde as constantes c2 , c4 , . . . dependem das derivadas da integranda mas não do parâmetro


hk . Notemos que nesta expressão apenas figuram potências pares de hk . Em face do que
dissemos, podemos escrever que
!2 !4
hk hk
Ek+1 = I − Tk+1,0 = c2 + c4 +··· (4.7.28)
2 2

Eliminando a constante c2 entre (4.7.27) e (4.7.28), facilmente se chega à seguinte igual-


dade
4Tk+1,0 − Tk,0
I= + O(h4k )
4−1
Esta relação mostra que o valor
4Tk+1,0 − Tk,0
Tk,1 =
4−1
difere do valor exacto do integral a menos de um termo de ordem h4k , donde se conclui que
Tk,1 proporciona em princípio uma melhor aproximação. Obtemos deste modo uma nova
4.8 Integrais impróprios 197

sucessão {Tk,1 } que converge para o valor exacto I(f ) com maior rapidez. Se repetirmos
este processo com os novos valores Tk,1 acabados de achar, chegaremos a uma nova sucessão
{Tk,2 } cujo erro será O(h6k ). Não é difícil concluir que é válida a seguinte expressão geral

4m Tk+1,m−1 − Tk,m−1
Tk,m = , m = 1, 2, . . . (4.7.29)
4m − 1

ou, ainda,
Tk+1,m−1 − Tk,m−1
Tk,m = Tk+1,m−1 + , m = 1, 2, . . . (4.7.30)
4m − 1
Por cada incremento do valor de m ganhamos uma potência de h2k na expressão do
erro, ou seja,
I = Tk,m + O(h2m+2
k )

A precisão do algoritmo de Romberg é, assim, limitada apenas pela regularidade da função


integranda e pelos erros de arredondamento. Os cálculos que realizam este processo podem
dispor-se num quadro triangular sugestivo, conforme a Figura 4.7.1 mostra. As entradas
neste quadro podem calcular-se, como se pode depreender da expressão (4.7.29), quer por
colunas quer por linhas.

T0,0

T1,0 T0,1

Figura 4.7.1: Quadro de T2,0 T1,1 T0,2


Romberg T3,0 T2,1 T1,2 T0,3
.. .. .. .. ..
. . . . .
Tk,0 Tk−1,1 Tk−2,2 · · · · · · T0,m

A análise que levámos a cabo mostra que as colunas e as diagonais deste quadro
convergem para o valor exacto do integral.

4.8 Integrais impróprios


A aplicação das regras de integração que desenvolvemos neste capítulo não é imediata
quando a integranda for singular ou o intervalo de integração for infinito, sendo por isso
conveniente um tratamento específico destes casos. É o que faremos de modo muito breve
nesta secção.
198 Integração numérica

4.8.1 Integrandas com singularidades


Todas as expressões do erro que apresentámos anteriormente para as várias regras de inte-
gração mostram que este depende da regularidade da integranda, traduzida na existência
de derivadas finitas de uma certa ordem. Quando a integranda for singular, esta condição
é violada e é de esperar que uma aplicação imediatista das regras de integração conduza
a erros comparativamente mais elevados que poderão não ser aceitáveis. Vamos, então,
apresentar algumas técnicas que permitem manter ou pelo menos não deixar degradar a
precisão das integrações numéricas com integrandas singulares. Para facilitar a exposição
e uma vez que tal não acarreta na prática qualquer perda de generalidade, consideraremos
que o integral a calcular está escrito na forma
Z b
I(f ) = w(x)f (x) dx
a

e que a singularidade da integranda é transportada pela função w e se localiza exclusi-


vamente nos extremos do intervalo de integração. A função f será suposta tão regular
quanto o necessário.
Se a função w for daquelas para as quais já existam regras de integração deduzidas, a
dificuldade está por natureza resolvida. É o que acontece, por exemplo, com certas regras

de Gauss, quando w(x) = ln x (ver ABRAMOWITZ and STEGUN (1968)), w(x) = x
(ver KRYLOV (1962)) e outras funções peso simples.

Integração por partes

Para exemplificar o modo como a integração por partes pode ser útil no presente contexto,
consideremos o seguinte integral
Z 1
I(f ) = x−1/2 cos x dx
0

em que naturalmente w(x) = x−1/2 e f (x) = cos x. A integração por partes permite
escrever que
h i1 Z 1
I(f ) = 2x1/2 cos x + 2x1/2 sin x dx
0 0
Z 1
1/2
= 2 cos 1 + 2x sin x dx
0

O integral no segundo membro desta expressão já não é singular e podemos, por con-
seguinte, recorrer às regras de integração usuais. A integranda possui primeira derivada
finita, mas a segunda derivada é ainda infinita para x = 0, o que degradará a precisão.
4.8 Integrais impróprios 199

Um remédio para este problema é voltar a efectuar uma nova integração por partes, vindo
Z 1
I(f ) = 2 cos 1 + 2x1/2 sin x dx
0
1
4 3/2 Z 1
4 3/2
 
= 2 cos 1 + x sin x − x cos x dx
3 0 0 3
4 4 1 3/2
Z
= 2 cos 1 + sin 1 − x cos x dx
3 3 0
e assim sucessivamente, tantas vezes quantas as necessárias.

Mudança de variável
Por vezes uma simples mudança da variável de integração permite eliminar a singulari-
dade. Para analisarmos esta técnica consideremos o integral
Z 1
I(f ) = w(x)f (x) dx
0

em que w apresenta uma singularidade situada no extremo esquerdo do intervalo de


integração e f é suposta tão regular quanto o necessário. Aplicando uma transformação
de variável biunívoca x = T (ξ) obtemos, de acordo com as expressões (4.1.1) e tomando
por simplicidade T (0) = 0,
Z T −1 (1)
I(f ) = w(T (ξ))f (T (ξ))J(ξ) dξ
0
Z T −1 (1)
= g(ξ) dξ, com g(ξ) = w(T (ξ))f (T (ξ))J(ξ)
0

A ideia é construir uma transformação x = T (ξ) cujo jacobiano se anule no extremo


esquerdo do intervalo, de modo a ‘compensar’ a singularidade de w, i.e., tal que J(ξ) >
0, ∀ξ ∈ (0, 1] e limξ→0 g(ξ) seja finito.
Vejamos alguns exemplos de aplicação desta técnica.
R1
Exemplo 4.8.1 Regularizar o integral I(f ) = 0 x1/2 cos(x) dx por transformação de
variável.

A mudança de variável x = T (ξ) = ξ 2 permite transformar este integral no seguinte


Z 1
I(f ) = 2ξ 2 cos(ξ 2 ) dξ
0

Assim, este último integral é agora regular e está em condições de ser determinado pelas
regras usuais. A aplicação da regra do trapézio composta com uma malha uniforme de N
200 Integração numérica

subintervalos produz os seguintes resultados, em que a linha (a) corresponde à integração


com a integranda original e a linha (b) com a integranda regularizada.

N =4 N =8 N = 16 N = 32
(a) 0.502203 0.521268 0.527768 0.530008
(b) 0.525295 0.529657 0.530812 0.531105
(c) 0.528558 0.531031 0.531192 0.531120

O resultado exacto é I(f √) = 0.5312026831 . . .. O erro evolui do seguinte modo: no caso


(a) |Eh/2 (f )/Eh (f ) ≈ 2 2 e no caso (b) |Eh/2 (f )/Eh (f ) ≈ 4. Enquanto este último valor
é explicado pela expressão (4.7.25), o valor correspondente ao caso (a) carece de alguma
elaboração. Como se vê, a integranda ξ 1/2 cos(ξ) 6∈ C 1 [a, b] pelo que aquela expressão do
erro não é aplicável. Para integrandas com singularidade do tipo ξ 1/2 f (ξ) com f ∈ C ∞ [a, b]
é possível demonstrar que Eh (f ) = O(h3/2 ) (ver FOX (1967) ou LYNESS and NINHAM
(1967)), ou seja, a taxa de convergência vem prejudicada relativamente ao caso normal. É
interessante verificar que os resultados numéricos acima estão muito próximos das previsões
teóricas.
Tirando partido da vantagem em regularizar a integranda, podemos imaginar que, quanto
mais regularizadora for a transformação, melhores serão os resultados. Neste sentido, tente-
mos a transformação x = T (ξ) = ξ(1− ξ)2 , a qual foi escolhida para produzir uma integranda
g com primeiras derivadas nulas nos extremos do intervalo de integração, como é fácil confir-
mar. Os resultados obtidos constam da linha (c) da tabela acima e não é difícil constatar que,
agora, |Eh/2 (f )/Eh (f )| ≈ 16 de acordo com (4.7.25) aplicada a funções com primeiras deriva-
das nulas nos extremos do intervalo de integração. A regularização da integranda melhorou,
assim, a taxa de convergência.

R1
Exemplo 4.8.2 Regularizar uma singularidade logarítmica I(f ) = 0 ln x f (x) dx.

Neste caso, uma singularidade logarítmica pode ser regularizada mediante a mudança de
variável x = T (ξ) = ξ 2 a qual conduz a
Z 1
I(f ) = 4 ξ ln ξ f (ξ 2 ) dξ
0

Como ξ ln ξ → 0 quando ξ → 0, este último integral é regular com a integranda ξ ln ξ f (ξ) ∈


C[0, 1] mas ξ ln ξ f (ξ) 6∈ C 1 [0, 1] o que talvez justifique uma transformação ainda mais
regularizadora, como, por exemplo, x = T (ξ) = ξ 3 . Deixam-se os detalhes como exercício.

Como se adivinha, a técnica de mudança de variável pode requerer alguma engenho-


sidade para descobrir a transformação que permite passar de um integral singular para
outro que seja regular. As transformações que descrevemos a seguir são das mais fre-
quentes nas aplicações.
4.8 Integrais impróprios 201

Transformação polinomial. Consiste na generalização das transformações empregues


nos Exemplos 4.8.1 e 4.8.2. Introduzamos a função
Z ξ
c(ξ) = ξ l (1 − ξ)m dxξ, com l, m inteiros não-negativos
0

Então, a transformação de coordenadas é dada por


!
l+m+1
x = T (ξ) = c(ξ)/c(1), c(1) = (l + 1) , J(ξ) = ξ l (1 − ξ)m /c(1)
m
em que c(1) foi obtido recorrendo ao integral de Euler de primeira espécie (ver GRAD-
SHTEYN and RYZHIK (1980)). É fácil verificar que, quanto maior for l mais regu-
larizadora é esta transformação junto ao extremo esquerdo do intervalo de integração e
quanto maior for m mais regularizadora é junto ao extremo direito. De facto, l e m podem
ser escolhidos de modo a ter valores da integranda e das suas sucessivas derivadas nulos
em qualquer dos extremos do intervalo de integração.

Transformação IMT. A transformação IMT (das iniciais dos respectivos autores IRI
et al. (1987)) leva a regularização tão longe quanto é possível, anulando a função inte-
granda e todas as suas derivadas nos extremos do intervalo de aplicação. A transformação
de coordenadas é determinada recorrendo à função
Z ξ
c(ξ) = exp(−1/(t(1 − t)) dt
0

e tomando
x = T (ξ) = c(ξ)/c(1), J(ξ) = exp(−1/(ξ(1 − ξ))/c(1)
A função transformada g(ξ) = w(T (ξ))f (T (ξ))J(ξ) verifica, se w for suficientemente
regular,
g (k) (0) = g (k) (1) = 0, k = 0, 1, 2, . . .
A regularização permite, nas presentes circunstâncias, que w exiba singularidades algébri-
cas do tipo ξ α ou (1 − ξ)β com α, β > −1.
Dado o facto de todas as derivadas se anularem nos extremos do intervalo de integração,
a regra do trapézio corrigida composta numa malha uniforme torna-se particularmente
vantajosa pelo que é esta a utilizada conjuntamente com a transformação IMT.

Subtracção da singularidade
Se a primitiva de w for conhecida é possível usar o seguinte estratagema, que consiste
essencialmente em somar e subtrair a mesma quantidade ao integral. Concretamente, se
a singularidade estiver situada no extremo esquerdo do intervalo [a, b],
Z b Z b Z b
I(f ) = w(x)f (x) dx = w(x)[f (x) − f (a)] dx + f (a) w(x) dx
a a a
202 Integração numérica

O primeiro integral do segundo membro, uma vez que f é suposta contínua, é regular,
podendo ser calculado pelas regras usuais. O segundo integral pode ser determinado
analiticamente. Consideremos um exemplo para ilustrar esta técnica. Seja
Z 1
I(f ) = x−1/2 exp x dx
0

Então, de acordo com o que dissemos,


Z 1 Z 1
I(f ) = x−1/2 (exp x − 1) dx + x−1/2 dx
0 0
Z 1
= x−1/2 (exp x − 1) dx + 2
0

A regra de Cauchy permite confirmar que a integranda do integral que resta pertence a
C[0, 1] mas não a C 1 [0, 1].
Um refinamento desta técnica consiste em subtrair não f (a), mas uma função g que
tenda para f (a) quando x → a e que reforce mais a regularidade do integral resultante.
Por exemplo, o desenvolvimento em série de Taylor

x2
g(x) = f (a) + f ′ (a)x + f ′′ (a) +···
2
truncado a partir de uma ordem conveniente satisfaz este critério.

4.8.2 Intervalos infinitos


Exceptuando alguns casos evidentes, como as regras de Gauss-Hermite, as fórmulas de
integração deduzidas neste capítulo não são estritamente válidas para intervalos infinitos.
Tem, pois, interesse, tal como acontece com os integrais singulares, desenvolver técnicas
especialmente adaptadas a esta situação. Para efeito do que vamos dizer, consideraremos
que o intervalo de integração é [a, +∞) e que a integranda f é regular.

Mudança de variável
A transformação x = ln(1/ξ) permite transformar o integral
Z ∞
I(f ) = f (x) dx
0

neste outro
1 f (− ln ξ)
Z
I(f ) = dξ
0 ξ
Se a função f (− ln ξ)/ξ for regular, então a dificuldade original está vencida. Caso con-
trário apenas trocamos a dificuldade do intervalo infinito pela de uma integranda singular.
4.9 Influência de erros na integranda 203

Uma outra transformação que transforma o intervalo [0, +∞) no intervalo finito [a, b]
e que por vezes é útil é a seguinte
a + bx ξ−a
ξ= ⇐⇒ x = −
1+x ξ−b
Notemos, no entanto, que o jacobiano é infinito quando ξ = b, o que tem de ser devida-
mente ponderado.

Truncatura do intervalo
Uma técnica expedita, mas que frequentemente proporciona bons resultados, é fazer
Z ∞ Z c Z ∞
I(f ) = f (x) dx = f (x) dx + f (x) dx
0 0 c

e desprezar simplesmente o segundo integral no segundo membro desta expressão. É


claro que este processo deve ser legitimado através de uma estimativa do valor do integral
desprezado.

Exemplo 4.8.3 (DAVIS and RABINOWITZ (1984)) Calcular com um erro inferior a
(0.5)10−6 o integral Z ∞
I(f ) = exp(−x2 ) dx
0

Como para x ≥ c > 0 se tem x2 ≥ cx, podemos escrever que


Z ∞ Z ∞
exp(−x2 ) dx ≤ exp(−cx) dx
c c
 ∞
1 1
= − exp(−cx) = exp(−c2 )
c c c

Se c = 4, este integral é inferior a (2.8)10−8 , abaixo, portanto, da precisão pretendida. Então


basta agora calcular o integral
Z 4
I(f ) = exp(−x2 ) dx
0

com um erro inferior a (0.5)10−6 − (2.8)10−8 , para o que podemos recorrer às técnicas de
integração adaptativa estudadas na Secção 4.7.

4.9 Influência de erros na integranda


Em muitas circunstâncias os valores da integranda estão contaminados por erros por terem
sido obtidos por medição ou por terem sido calculados em aritmética de precisão finita.
204 Integração numérica

Tal implica, neste último caso, que, em vez do valor Ih (f ), o que na realidade obtemos é
o valor
n
!
I˜h (f ) = fl
X
Ai f (xi )
i=0

Admitindo que os valores da função com que efectivamente trabalhamos são f˜(xi ) =
f (xi )(1 + δi ), em que os δi são os erros relativos cometidos qualquer que seja a sua origem
(experimental ou aritmética finita), portanto quantidades geralmente muito pequenas,
podemos escrever que
I˜h (f ) = Ih (f˜)
Quer isto dizer que tudo se passa como se, em vez de f se empregasse efectivamente
uma função perturbada f˜ na fórmula de integração numérica. Sendo assim, não oferece
dificuldade obter
n
X
˜ − Ih (f )| ≤
|I˜h (f ) − Ih (f )| = |Ih (f) Ai kf˜ − f k∞


i=0

Se admitirmos que a regra de integração é positiva e de grau de exactidão ≥ 0, i.e., integra


constantes exactamente, podemos deduzir que
n
X n
X
Ai = |Ai | = b − a
i=0 i=0

e, por conseguinte,
|I˜h (f ) − Ih (f )| ≤ (b − a)kf˜ − f k∞ (4.9.1)
No caso dos erros de arredondamento e uma vez que, na pior das hipóteses, os δi
crescem linearmente com n, esta relação mostra que a sua influência não será catastrófica
para os valores correntes de n, sendo apenas de esperar alguma degradação quando se
empregam muitos pontos de integração. A situação é, pois, bastante diversa daquela
que se verifica com a derivação numérica, onde os erros de arredondamento podem ser
determinantes abaixo de certos valores do parâmetro h.
Notemos, todavia, que, se as regras de integração não forem positivas, os valores dos
pesos Ai podem crescer com o número n de pontos de integração e neste caso já não é
válida a conclusão que acabamos de extrair. É o que se passa com as regras de Newton-
Cotes, razão pela qual estas regras não são muito indicadas para graus elevados. Como
vimos atrás na Secção 4.2, alguns dos coeficientes já são negativos a partir da regra de 9
pontos. O efeito da presença de pesos negativos pode ser melhor entendido se analisarmos
o que se passa em termos de erros relativos.
Da relação (4.9.1) decorre que, se Ih (f ) 6= 0,

|I˜h (f ) − Ih (f )| kf˜ − f k∞
Pn
i=0 |Ai |

|Ih (f )| |Ih (f )|/kf k∞ kf k∞
4.10 Notas e referências 205

É pois natural, designar a quantidade


Pn
i=0 |Ai |
cond Ih (f ) =
inf f ∈C(Ω̄) |Ih (f )|/kf k∞

por número de condição da regra de integração. Em geral esta grandeza, tal como está
definida, pode assumir valores ilimitados conforme se pode ver tomando, por exemplo,
f = Wn com Wn o polinómio nodal, que produz kf k∞ > 0 mas Ih (f ) = 0. Um indicador
mais interessante é o minorante que se obtém considerando funções f constantes, ou seja,
Pn
|Ai |
cond Ih (f ) ≥ Pi=0
n
| i=0 Ai |
Para regras positivas tem-se que cond Ih (f ) ≥ 1. Para regras não positivas, este minorante
pode assumir valores apreciáveis revelando grande sensibilidade da regra de integração a
perturbações na integranda.

4.10 Notas e referências


1. A referência DAVIS and RABINOWITZ (1984) é talvez a mais completa relativamente à in-
tegração numérica unidimensional. Esta obra inclui em apêndice o artigo de M. Abramowitz
“On the Practical Evaluation of Integrals” (1952), cuja leitura recomendamos.

2. Os volumes STROUD and SECREST (1966) e ? contêm muita informação de natureza


prática, nomeadamente tabelas completas de coordenadas e pesos de numerosas regras de
integração.

3. Para o cálculo de integrais múltiplos, assunto que não abordamos mas que tem enorme
interesse nas aplicações, aconselha-se ENGELS (1980), KROMMER and UEBERHUBER
(1998) e STROUD (1971). Esta última referência contém uma enorme variedade de regras
de integração para os domínios mais correntes.

4.11 Problemas
1. a) Prove que o grau de exactidão é invariante relativamente às transformações de coorde-
nadas (4.1.2) e (4.1.3).
b) Mostre que tal não acontece com outras transformações, tomando, por exemplo, T (ξ) =
ξ 2 com ξ ∈ [0, 1].
R1
2. Determine o valor aproximado do integral I = 0 x sin x dx empregando as regras do rectân-
gulo, do ponto médio, do trapézio e de Simpson. Compare os resultados com o valor exacto
(arredondado a seis decimais) I = 0.301169.
R1
3. a) Empregue a regra do trapézio para calcular o integral I = 0 x exp(−x2 ) dx.
206 Integração numérica

b) Obtenha um majorante para o erro e o erro efectivamente cometido.


4. Repita o problema anterior
a) com a regra de Simpson;
b) com a regra de Gauss de dois pontos.
c) Compare os resultados calculando os erros relativos em cada caso.
5. a) Deduza a seguinte expressão para a regra de Simpson com nós genericamente espaçados
       
1 h1 h0 h1
Ih (f ) = 2h0 + h1 (1 − f (x0 ) + h0 3 + + h1 3 + f (x1 )
6 h0 h1 h0
   
h0
+ 2h1 + h0 1 − f (x2 ) , com h0 = x1 − x0 , h1 = x2 − x1
h1
b) Qual a expressão do erro?
c) Tomando o limite h0 → 0+, obtenha a regra de integração seguinte que emprega f (x0 ),
f ′ (x0 ) e f (x2 ):
h1
Ih (f ) = (f (x0 ) + h1 f ′ (x0 ) + 2f (x2 ))
6
6. Considere o caso em que Wn possui um único sinal no intervalo [a, b].
a) Demonstre então que
Z b
Eh (xn+1 ) = Wn (x) dx
a
e que, portanto, o erro de integração vem dado pela expressão
1
Eh (f ) = f (n+1) (ξ)Eh (xn+1 )
(n + 1)!
b) Confirme que este resultado conduz à expressão (4.2.17) para a regra do trapézio.
7. Considere a seguinte fórmula de integração
Z 1
I(f ) = f (x) dx ≈ Ih (f ) = f (−a) + f (+a)
−1

Determine o valor da abcissa a de modo a facultar a esta regra o maior grau possível. Neste
caso, qual é o grau da fórmula? Que regra é esta?
8. Pretende-se construir uma regra de integração para integrais do tipo
Z 1
I(f ) = xf (x) dx, f ∈ C ∞ [0, 1]
0
com a seguinte forma
Ih (f ) = A0 f (0) + A1 f (1/2) + A2 f (1)
Determine os pesos A0 , A1 e A2 de modo a que esta regra tenha o maior grau possível, e
indique o respectivo valor.
4.11 Problemas 207

9. Determine os pesos da regra


Z 1
I(f ) = f (x) dx ≈ Ih (f ) = A0 f (0) + A1 f (1) + B0 f ′ (0) + B1 f ′ (1)
0

de modo a possuir o maior grau possível. Verifique que a regra assim obtida não é outra
senão a regra do trapézio corrigida.

10. a) Deduza os valores que os pesos A0 e A1 e a abcissa a da regra de integração seguinte


devem ter de modo a tornar o respectivo grau o maior possível.
Z 1
I(f ) = f (x) dx ≈ Ih (f ) = A0 [f (−1) + f (1)] + A1 [f (−a) + f (a)]
−1

b) Calcule o grau desta fórmula e identifique-a como uma regra de Gauss-Legendre-Lobatto.


c) Deduza os resultados das alíneas anteriores seguindo o método do Exemplo 4.4.2.

11. Mostre que, para as regras de Gauss,


Z b Z b
Ai = Li (x) dx = L2i (x) dx
a a

e que, portanto, não há incompatibilidade entre as fórmulas (4.2.1) e (4.4.6). Sugestão: Li


é um polinómio de grau n − 1; logo, é integrado exactamente pela regra de Gauss com n
pontos.

12. Prove a seguinte generalização do Teorema 4.4.2: é condição necessária e suficiente para a
regra (4.4.1) com os pesos dados por (4.2.1) ter grau de exactidão n + k com k ≤ n − 1 que
Ψn seja ortogonal a Pk (Ω̄).

13. Mostre que a regra de Simpson é uma regra de Gauss-Lobatto.

14. Considere integrais do tipo


Z 1
I(f ) = w(x)f (x) dx com w(x) = ln(1/x)
0

a) Recorrendo aos polinómios ortogonais relevantes, deduza as seguintes regras de Gauss

n xi Ai
1  1/4√  1
1 106 343
√ 
2 14 5 − 3  4 / 212 + 9 106
1

106 343
√ 
2 14 5 + 3 4 / 212 − 9 106

b) Mostre que, para n = 1, o erro é dado por


7 ′′
Eh (f ) = − f (ξ) com ξ ∈ [0, 1]
288
208 Integração numérica

15. Seja f ∈ C ∞ , e Ih a regra do ponto médio.

a) Desenvolvendo f em série de Maclaurin, mostre que o erro de integração no intervalo


[−1, 1] é dado por
1 1
Eh (f ) = I(f ) − 2f (0) = f (2) (0) + f (4) (0) + · · ·
3 60
b) Deduza a expressão correspondente para o caso de um intervalo [a, b] qualquer.
R1
16. Pretende-se calcular pela regra do trapézio composta o integral I = 0 exp(exp(−x)) dx
com quatro decimais exactos. Quantos pontos se devem usar?

17. a) Demonstre que se a função f ∈ C 2 (Ω̄), e f ′′ (x) > 0 no intervalo Ω̄ e Mh (f ) for o valor
aproximado de I(f ) obtido pela regra do ponto médio, e Th (f ), o obtido pela regra do
trapézio (ambas simples ou compostas), então

Mh (f ) ≤ I(f ) ≤ Th (f )

b) Que sucede se f ′′ (x) < 0 no intervalo Ω̄?


c) Que hipóteses devem ser verificadas para que seja válida a afirmação: “o erro cometido
na aplicação de Th (f ) pode ser estimado por Mh (f ) − Th (f ), sendo o erro associado a
Mh (f ) metade deste valor e de sinal contrário”?

18. Deduza, à semelhança de (4.7.9), a seguinte fórmula para o caso da regra de Simpson:
1 ¯ ˜
Ēi = Ii − I¯i ≈ (Ii − Ii )
15

19. O comprimento L de uma curva de equação y = f (x) entre as abcissas x = a e x = b é dado


por
Z b
1/2
1 + (f ′ (x))2

L= dx
a

a) Determine o comprimento da curva y = exp x entre x = 0 e x = 1 usando a regra de


Simpson composta com 2 e com 4 subintervalos.
b) Apresente uma estimativa do erro cometido recorrendo ao resultado do problema anterior.

20. Seja S = ∞
Pn
k=1 1/k a série harmónica, e Sn = k=1 1/k a respectiva soma parcial. Aplicando
P
a regra do rectângulo à esquerda composta com h = 1 à função f (x) = 1/x, mostre que
Sn ≥ ln(n + 1) e que, portanto, a série harmónica é divergente.

21. a) Calcule pela regra do trapézio composta com 4 subintervalos o integral


Z 1  
1
I= exp − dx
0 x(1 − x)

b) Esta classe de regras é particularmente interessante para este caso. Porquê?


4.11 Problemas 209

22. Demonstre que a soma dos cubos dos primeiros n inteiros é Sn = (n(n + 1)/2)2 .

23. A regra de Newton-Cotes de 4 pontos é também conhecida por regra de Simpson dos 3/8.
Mostre que esta regra se pode deduzir da seguinte maneira: 1) aplicar ao intervalo [a, b] a
regra do trapézio simples obtendo o valor Th ; 2) subdividir o intervalo em três subintervalos
iguais de comprimento (b − a)/3 e aplicar a regra do trapézio composta obtendo Th/3 ; 3)
eliminar o termo principal do erro entre estas duas fórmulas, à semelhança do que foi feito
na Subsecção 4.7.1.

24. a) Usando splines quadráticos, deduza a seguinte regra de integração para malhas uniformes:
Z 2h
h
I(f ) = f (x) dx ≈ [f (0) + 4f (h) + f (2h)]
0 3

b) Qual o grau desta regra?


c) Generalize ao caso de n subintervalos, obtendo
Z nh
h2
 
f (0) f (nh)
I(f ) = f (x) dx ≈ h + f (h) + · · · + f ((n − 1)h) + + (m0 − mn )
0 2 2 12

d) Esta expressão assemelha-se à da regra do trapézio composta corrigida. Podemos concluir


que se trata da mesma regra?

25. Conhecem-se os seguintes valores de uma função f ∈ C ∞ [0, 1]

x 0.2 0.4 0.6 0.8 1.0


f (x) 0.19867 0.38942 0.56464 0.71736 0.84147

a) Calcule, pela regra de Newton-Cotes com 5 pontos, uma aproximação para o respectivo
integral no intervalo [0.2, 1.0] sabendo que o erro desta regra é

(b − a)7 (6)
Eh = − f (ξ)
1935360
b) Repita a alínea anterior usando a regra de Simpson composta com 2 subintervalos.
c) Será possível concluir qual dos resultados é melhor, sendo conhecido que kf (k) k∞ ≤ 3k ,
k = 0, 1, . . .?

26. Seguindo a metodologia utilizada na dedução da expressão (4.7.14) e da expressão (4.7.23)


(fórmula de Euler-Maclaurin),

a) redescubra a regra do trapézio simples e o respectivo erro;


b) idem, a regra do trapézio corrigida.

27. Considere o integral Z 1


I(f ) = ln(1/x)f (x) dx
0
210 Integração numérica

a) Deduza, recorrendo à expressão (4.7.14), a seguinte regra de integração


Z 1
1
Ih (f ) = [3f (0) + f (1)], Eh (f ) = φ2 (x)f (2) (x) dx
4 0

em que φ2 = 12 x2 ln x − 34 x2 + 34 x;
b) Mostre que a regra é de grau 1 e deduza a expressão para o erro
5 ′′
Eh (f ) = f (ξ), ξ ∈ [0, 1]
72
c) Aplique os resultados obtidos ao caso em que f (x) = exp(x/2), comparando o erro
efectivamente cometido com a estimativa deduzida.

28. a) Verifique que o erro das regras de integração compostas pode ser majorado por
N
ci hpi ,
X
|Eh | ≤ com ci ≥ 0 e p ≥ 1
i=1

b) Demonstre que a minimização do segundo membro desta expressão conduz a um erro em


cada subintervalo proporcional ao respectivo comprimento e, portanto, em concordância
com o critério adoptado na integração adaptativa.

29. Demonstre que a coluna Tk,1 da tabela de Romberg corresponde à utilização da regra de
Simpson composta, i.e., Tk,1 é o resultado da aplicação desta regra com subintervalos de
comprimento hk .

30. Considere os valores T0,0 , T1,0 , . . . , Tk,0 obtidos pelo método de Romberg e proceda como se
indica: ajuste um polinómio interpolador de grau ≤ k a estes valores tomando como nós de
interpolação os valores dados pela expressão (4.7.26) e extrapole para zero este polinómio
recorrendo à fórmula de Aitken-Neville (ver o Problema 2.10.31) o que não é senão uma
aplicação do processo de Richardson. Prove que se chega deste modo à expressão (4.7.29).
R1√
31. Considere o cálculo do integral I = 0 sin x dx pela regra de Simpson aplicada

a) directamente ao integral tal como é dado;



b) efectuando primeiro a transformação de variável ξ = x;
c) Qual a vantagem deste último procedimento?
R1
32. a) Calcule aproximadamente o integral I = 0 (ln x) cos x dx recorrendo à técnica da sub-
tracção da singularidade e a uma regra de Gauss para a parte regular;
R π/2
b) Idem, para I = 0 ln(sin x) dx.
R π/2
33. Calcule o integral I = 0 sin(x2 )/x7/3 dx com um erro inferior a 10−3 , recorrendo à
integração por partes para obter uma integranda suficientemente regular e à regra do ponto
médio composta.
4.11 Problemas 211

R∞ √ √
34. Calcule o integral I = 0 exp(−x)/ x dx com um erro inferior a 10−5 . Nota: I = π.
R∞
35. Calcule o integral I = 0 sin(x)/(1 + x2 ) dx com um erro inferior a 10−3 .

36. Considere regras de integração cujo erro tem a forma seguinte


Z 1
I(f ) = f (x) dx = Ih (f ) + cn f (n) (ξ), ξ ∈ [−1, 1]
−1

Para obter uma estimativa do respectivo erro, Lanczos advogou o seguinte método: ad-
mitir que f (n) é aproximadamente constante no intervalo em questão, ou seja, supor que
f (n+1) (x) ≈ 0 (hipótese essencial, como se verá) e empregar a função auxiliar g = (xf )′ .
Assim:

a) Mostre que

I(g) = f (1) + f (−1), Ih (g) = Ih (f ) + Ih (xf ′ )


Eh (g) = I(g) − Ih (g) = f (1) + f (−1) − Ih (f ) − Ih (xf ′ )

e, portanto, o erro de integração da função g pode ser calculado.


b) Prove que, de acordo com a hipótese feita sobre f (n) (x),
1
Eh (f ) ≈ Eh (g)
n+1
R1
c) Aplique esta estimativa de Lanczos ao cálculo de I(f ) = 0 (1 + x2 )−1/2 dx pela regra de
Gauss-Legendre com 3 pontos e compare-a com o erro efectivamente cometido.
d) Indique uma função para a qual este processo não é válido.

37. Nos casos em que a integranda f é obtida por medições experimentais, os valores de f (xi )
usados para obter Ih (f ) podem conter erros aleatórios apreciáveis, muito superiores aos erros
resultantes da integração numérica ou dos erros de arredondamento. Denotando por δi o erro
experimental que contamina o valor f (xi ), verifique que o erro de integração produzido pelos
erros experimentais é dado por
XN
e= Ai δi
i=0
Neste caso faz sentido inquirir se há alguma combinação de pesos que, de alguma forma,
minimize |e|. Um processo que pode ser adoptado é o seguinte: aplicar a desigualdade de
Schwarz (ver o Apêndice A) para chegar a
N
! N !
X X
2 2 2
e ≤ Ai δi
i=0 i=0

Mostre que a minimização do segundo membro desta desigualdade conduz a pesos todos
iguais. Quais as regras de integração aconselháveis neste caso?
Capítulo 5

Equações não-lineares

Neste capítulo iremos estudar alguns dos métodos mais utilizados para obter, por via
aproximada, as soluções de equações não-lineares.

5.1 Introdução
O problema a resolver pode resumir-se deste modo: determinar os valores z que tornam
nulo o valor da função f , ou seja, resolver a equação
f (x) = 0
Embora alguns dos métodos que vamos apresentar se generalizem sem dificuldade ao caso
complexo, a exposição será centrada exclusivamente sobre funções reais de variável real,
i.e., f : R → R. Exigiremos ainda que f possua regularidade suficiente, variando esta
consoante os métodos. Vejamos alguns casos típicos de equações não-lineares.
Exemplo 5.1.1 Equações não-lineares.
As funções seguintes, com domínios e regularidades diversos, são representativas do tipo
de funções não-lineares cujos zeros podem ser calculados pelos métodos a desenvolver neste
capítulo:
f (x) = sin x − x2 , f ∈ C ∞ (R)
f (x) = x4 − x2 − 2(1 + x)1/2 , f ∈ C ∞ (R+ )
f (x) = exp x − |x|3/2 − 2, f ∈ C 1 (R)
Ao contrário do que sucede, por exemplo, com as equações algébricas lineares, quadráticas e
cúbicas, não se conhecem fórmulas explícitas para as soluções destas equações, pelo que há
necessidade de recorrer a métodos para obter aproximações.
Não nos devemos esquecer que, dada uma equação não-linear, nada está garantido a
priori sobre a existência de zeros, o seu número, a sua localização, etc., pelo que o estudo
destes aspectos faz geralmente parte do problema.

212
5.1 Introdução 213

y
y = f (x)
y = f (x)
y = f (x)

Figura 5.1.1: Multiplici-


dade de zeros: a) zero
simples; b) zero duplo; c)
zero triplo   
x

a) b) c)

5.1.1 Raízes e zeros


As definições seguintes consolidam alguma nomenclatura.

Definição 5.1.1 Se f (z) = 0, então diz-se que z é uma raiz da equação f (x) = 0 ou que
z é um zero da função f .

De acordo com esta definição, um zero de f é um ponto em que esta função assume o
valor zero. No entanto, conforme a Figura 5.1.1 mostra, uma função pode aproximar-se
de zero de modos bem diferentes. No caso a) a função cruza o eixo dos xx, mudando de
sinal. No caso b) a função toca o eixo dos xx mas não muda de sinal. Finalmente, no
caso c) a função cruza o eixo dos xx e muda de sinal, mas fá-lo de modo a que o zero seja
um seu ponto de tangência com o eixo dos xx. Para distinguir estas várias situações é
conveniente introduzir o conceito de multiplicidade de um zero.

Definição 5.1.2 A multiplicidade de um zero z da função f é o supremo m dos valores


k tais que
|f (x)|
lim =c<∞
x→z |x − z|k

Se m = 1, o zero diz-se simples, se m = 2 o zero diz-se duplo, etc.

Contudo, a multiplicidade de um zero não é necessariamente um número inteiro, con-


forme o exemplo seguinte irá mostrar.

Exemplo 5.1.2 Determinar a multiplicidade de zeros.

a) O ponto z = 1 é um zero simples de f (x) = x2 − 1, pois como

f (x) = x2 − 1 = (x + 1)(x − 1)
214 Equações não-lineares

temos que

2 se k=1
|x2

− 1| |x + 1|
lim k
= lim = 0 se k<1
x→1 |x − 1| x→1 |x − 1|k−1 
∞ se k>1

b) O ponto z = 1 é um zero duplo de f (x) = x2 − 2x + 1, já que

f (x) = x2 − 2x + 1 = (x − 1)2

1 se k=2
|x2 − 2x + 1|

lim = lim |x − 1|2−k = 0 se k<2
x→1 |x − 1|k x→1 
∞ se k>2

c) O ponto z = 0 é um zero de multiplicidade m = 1/2 de f (x) = x1/2 . De facto,



1 se k = 1/2
|x1/2 |

1/2−k
lim = lim |x |= 0 se k < 1/2
x→0 |xk | x→0 
∞ se k > 1/2

d) O ponto z = 1 é um zero simples de f (x) = x1/2 − 1, pois



1/2 se k=1
|x1/2 |x1/2 1|1−k

− 1| −
lim k
= lim 1/2
= 0 se k<1
x→1 |x − 1| x→1 |x + 1| 
∞ se k>1

e) O ponto z = 0 é um zero de multiplicidade m = 1/2 da função f (x) = |x|1/2 ln |x|. De


facto, pondo k = 1/2 − ǫ, tem-se que
(
|x|1/2 ln |x| ǫ 0 se ǫ > 0
lim 1/2− ǫ = lim |x| ln |x| =
x→0 |x| x→0 ∞ se ǫ ≤ 0

Como o supremo dos valores k = 1/2 − ǫ para ǫ > 0 é 1/2, fica provada a afirmação feita.

Agora podemos compreender melhor a afirmação coloquial de que na vizinhança de


um zero z de multiplicidade m a função f se ‘comporta’ como (x − z)m . Por outro lado,
se f tiver regularidade suficiente, é possível relacionar a multiplicidade dos zeros com as
derivadas desta função.

Teorema 5.1.1 Se z for um zero da função f , e se f for m vezes continuamente dife-


renciável no ponto z, então a multiplicidade de z é m sse

f (z) = f ′ (z) = · · · = f (m−1) (z) = 0 e f (m) (z) 6= 0


5.1 Introdução 215

Demonstração Suponhamos que f é m vezes continuamente diferenciável em z. Pelo


desenvolvimento em série de Taylor em torno deste ponto temos que

f (m−1) (z) f (m) (ξ)


f (x) = f (z) + f ′ (z)(x − z) + · · · + (x − z)m−1 + (x − z)m
(m − 1)! m!

para ξ ∈ inter (x, z). Então, se as condições do teorema se verificarem, resulta que

1 (m)
f (x) = f (ξ)(x − z)m
m!

Pela continuidade de f (m) na vizinhança de z podemos dizer que

f (x) f (m) (ξ) f (m) (z)


lim = lim =
x→z (x − z)m x→z m! m!

Daqui inferimos que a multiplicidade de z é pelo menos m. Vamos agora demonstrar que,
se as hipóteses do teorema forem verdadeiras, então a multiplicidade de z não pode ser
superior a m. Para qualquer ǫ > 0 temos que

|f (x)| |f (m) (ξ)|


lim = lim =∞
x→z |x − z|m+ǫ x→z m!|x − z|ǫ

o que viola a Definição 5.1.2. Está assim demonstrado que as condições do teorema são
suficientes para que z seja um zero de multiplicidade m.
Passemos agora à demonstração da necessidade. Se a multiplicidade do zero z for m,
então, recorrendo novamente à fórmula de Taylor,

f (x) f ′ (z) f (m) (ξ)


= + · · · + com ξ ∈ inter (x, z)
(x − z)m (x − z)m−1 m!

Passando ao limite x → z ambos os membros desta igualdade, temos que

f (x) f ′ (z) f (m) (ξ)


lim = lim + · · · + lim
x→z (x − z)m x→z (x − z)m−1 x→z m!

Por definição, este limite deve ser finito e diferente de zero, o que nos leva, portanto, a
concluir que
f ′ (z) = · · · = f (m−1) (z) = 0, f (m) (z) 6= 0

A demonstração fica assim completa.


216 Equações não-lineares

5.1.2 Iterações e convergência


Uma vez que está posta de lado a possibilidade de existência de fórmulas resolventes
para a generalidade das equações não-lineares, há que recorrer a outros métodos, os quais
assumem em geral um carácter iterativo. Concretamente, estes métodos partem do conhe-
cimento de s valores aproximados x0 , x1 , . . . , xs−1 da raiz z e com estes constroem uma
nova aproximação xs desejavelmente melhor. Este processo ou esquema iterativo pode
representar-se pela fórmula de iteração

xk = gk (xk−1 , . . . , xk−s ), com k = s, s + 1, . . . (5.1.1)

em que gk é uma função apropriada específica do método em questão conhecida por


função de iteração. Se esta função gk não depender de k, ou seja, se a forma da função
se mantiver de iteração para iteração, o método iterativo diz-se estacionário. No caso
contrário, o método diz-se não-estacionário. Adiante apresentaremos exemplos de um e
outro tipos.
O esquema iterativo (5.1.1) gera, quando aplicado repetidamente, uma sucessão de
valores xk aos quais correspondem os erros

ek = z − xk (5.1.2)

Obviamente, é de interesse que os métodos iterativos sejam convergentes, significando


com isto que se deve verificar

lim xk = z, ou seja lim ek = 0


k→∞ k→∞

Por outro lado, é útil qualificar a rapidez com que uma sucessão converge para o seu
limite. As definições seguintes vão nesse sentido.

Definição 5.1.3 Sejam {xk } e {x′k } duas sucessões que convergem para os limites z e z ′ ,
respectivamente, de tal modo que

|e′k |
lim =c<∞
k→∞ |ek |

Então, se:

• c > 1, diz-se que {x′k } converge pior que {xk };

• c = 1 diz-se que {x′k } converge como {xk };

• 0 < c < 1, diz-se que {x′k } converge melhor que {xk };

• c = 0, diz-se que {x′k } converge mais rapidamente que {xk }.


5.1 Introdução 217

Por vezes emprega-se a notação x′k = o(xk ) para indicar que {x′k } converge mais
rapidamente que {xk }, i.e., c = 0, e a notação x′k = O(xk ) caso {x′k } converja como {xk }
ou melhor, i.e., c > 0.
Para caracterizar a rapidez da convergência costuma usar-se as noções de convergência-
Q, convergência-R e ordem de convergência cujas definições passamos a apresentar.

Definição 5.1.4 Diz-se que uma sucessão {xk } converge para z:


a) Q-linearmente, se existir um número real M ∈ (0, 1) e um número natural N tais que
|ek+1 |
≤ M, ∀k ≥ N (5.1.3)
|ek |

b) Q-supralinearmente, se existir uma sucessão {Mk }, com Mk > 0 e limk→∞ Mk = 0,


tal que
|ek+1 |
≤ Mk , ∀k (5.1.4)
|ek |
c) com ordem de convergência-Q igual a p > 1, se existirem números reais 0 < m ≤ M <
∞ e um número natural N tais que
|ek+1|
m≤ ≤ M, ∀k ≥ N (5.1.5)
|ek |p
Se, além disso,
|ek+1 |
lim =c (5.1.6)
k→∞ |ek |p

diz-se que c é a constante de erro assimptótico .

A designação de convergência-Q decorre do facto de se empregarem quocientes dos


erros na respectiva definição. Por outro lado, o caso a) pode ser visto como uma par-
ticularização do caso c) e o valor de p assim definido é único, como se pode facilmente
demonstrar (ver BREZINSKI (1977)).
Se p = 1, a convergência diz-se de primeira ordem ou linear ; se p = 2, de segunda
ordem ou quadrática, e assim por diante. Deve, todavia, ter-se presente que a Definição
5.1.4 não esgota todas as possibilidades, i.e., há sucessões cujo comportamento escapa ao
figurino desta definição (ver a este propósito o Problema 5.13.3 e a Definição 5.1.5 mais
adiante).
A expressão (5.1.6) na definição acima costuma por vezes escrever-se na forma assimp-
tótica
|ek+1 | ∼ c|ek |p
que nos indica o modo como o erro evolui quando o número de iterações for suficientemente
grande.
218 Equações não-lineares

Quanto maior for a ordem de convergência de um método iterativo menor será, em


princípio, o número de iterações necessárias para atingir uma dada precisão. Contudo,
não se deve daqui inferir precipitadamente que uma maior ordem de convergência conduz
automaticamente a tempos de cálculo menores, já que estes tempos dependem ainda de
outro parâmetro determinante, que é o esforço computacional requerido em cada iteração.
Chamamos a atenção para o facto de que os parâmetros m, M, N e p na definição
acima podem depender da função f e do zero z em causa, i.e., um mesmo método pode
exibir diferentes ordens de convergência e constantes de erro em diferentes zeros duma
mesma função.
As designações acabadas de introduzir recebem do teorema seguinte uma justificação
rigorosa.

Teorema 5.1.2 Seja {ek } uma sucessão que satisfaz alguma das condições da Definição
5.1.4.
a) Se {ek } convergir Q-linearmente, então {ek } converge para zero qualquer que seja o
valor de eN .
b) Se {ek } convergir Q-supralinearmente, então converge para zero qualquer que seja o
valor de e0 .
c) Se p > 1, {ek } converge para zero desde que o valor eN seja suficientemente pequeno.

Demonstração Para simplificar a notação e sem perda de generalidade consideremos


que N = 0, o que é sempre possível mediante uma renumeração adequada dos termos da
sucessão {ek }.
Caso a). Tendo em conta que
|ek | |ek−1 | |e1 |
|ek | = ··· |e0 |
|ek−1 | |ek−2 | |e0 |
obtemos a seguinte estimativa
|ek | ≤ M k |e0 | (5.1.7)
Como 0 < M < 1, concluímos que limk→∞ |ek+1 | ≤ limk→∞ M k |e0 | = 0. Está assim
provada a convergência para esta situação.
Caso b). Denotando por K o primeiro valor do índice para o qual se verifica MK < 1,
podemos escrever que
 
k−1
|ek | |ek−1| |eK−1| Y
|ek | = ··· |eK | ≤  Mj  |eK |, k>K (5.1.8)
|ek−1 | |ek | |eK | j=K

donde resulta que limk→∞ ek = 0 qualquer que seja eK .


Caso c). Temos agora que
|ek+1| ≤ M|ek |p
5.1 Introdução 219

Pondo, para obter uma expressão mais simples,

δk = M 1/(p−1) |ek | ou seja, |ek | = M −1/(p−1) δk

vem que
δk+1 ≤ δkp
Aplicando esta relação sucessivamente com k = 0, 1, . . ., chegamos a
2 k
δ1 ≤ δ0p , δ2 ≤ δ0p , ..., δk ≤ δ0p (5.1.9)

ou seja,
h i pk
|ek | ≤ M 1/(1−p) |e0 |M 1/(p−1) (5.1.10)
Então, se
δ0 < 1, i.e., |e0 | < M 1/(1−p) (5.1.11)
a sucessão {ek } converge para zero. Além disso, esta última relação dá significado rigoroso
à expressão ‘|e0 | suficientemente pequeno’. Por outro lado, não oferece dificuldade ver que

|ek+1 | ≤ |ek |δk

Esta expressão mostra que, se a condição (5.1.11) for verificada, todas as sucessivas iter-
ações xk se situam no intervalo definido por {x : |x − z| ≤ |e0 | ≡ |x0 − z|}.
A necessidade de ter ou não estimativas iniciais ‘suficientemente próximas’ do zero
pretendido leva-nos a distinguir entre os métodos de convergência local em que esta exi-
gência é requerida e os métodos de convergência global em que a convergência não está
dependente da qualidade das estimativas iniciais.
A noção de convergência-Q é, por vezes, demasiado forte. Em particular, este tipo
de convergência tende a ter um erro assimptoticamente monotónico (em valor absoluto),
como se depreende do Teorema 5.1.2, o que nem sempre é verdade para as sucessões
geradas por métodos iterativos. Daí o interesse da definição que se segue, mais fraca,
como veremos.

Definição 5.1.5 Diz-se que uma sucessão {xk } converge para z:


a) R-linearmente, se existirem números reais c ∈ (0, ∞) e M ∈ (0, 1) e um número
natural N tais que
|ek | ≤ cM k , ∀k ≥ N (5.1.12)

b) R-supralinearmente, se existir um número real c ∈ (0, ∞) e uma sucessão {Mk }, com


Mk > 0 e limk→∞ Mk = 0, tais que
k
Y
|ek | ≤ c Mj , ∀k (5.1.13)
j=0
220 Equações não-lineares

c) com ordem de convergência-R igual a p > 1, se existirem números reais c ∈ (0, ∞) e


M ∈ (0, 1) e um número natural N tais que
k
|ek | ≤ cM p , ∀k ≥ N (5.1.14)

A designação de convergência-R decorre do seguinte facto. Da expressão (5.1.12)


deduz-se que
lim |ek |1/k ≤ M
k→∞

ou seja, M constitui assimptoticamente um majorante para |ek |1/k . De (5.1.14) também


resulta que
k
lim |ek |1/p ≤ M
k→∞
cuja interpretação é semelhante.
A afirmação feita atrás de que a convergência-Q é mais forte que a convergência-R é
justificada pelo seguinte teorema.

Teorema 5.1.3 A convergência-Q implica a convergência-R.

Demonstração Continuemos a tomar N = 0 por comodidade.


Caso a). Verificamos imediatamente que a expressão (5.1.7) é idêntica à expressão (5.1.12)
com c = |e0 |.
Caso b). A relação (5.1.4) permite escrever que
|ek+1 | ≤ Mk |ek |, ∀k
Por indução, obtemos
k−1
Y
|ek | ≤ |e0 | Mj , ∀k
j=0

pelo que, tomando c = |e0 |, obtemos precisamente (5.1.13).


Caso c). De (5.1.5) deduzimos que
|ek+1| ≤ M|ek |p
e, por um processo em tudo semelhante ao usado no Teorema 5.1.2, concluimos a validade
de (5.1.14).
Em geral, o contexto indica de que tipo de convergência se está a falar; sempre que
nada se disser, subentenderemos que se trata de convergência-Q.
Os métodos iterativos que vamos estudar produzem uma sucessão {xk } que, dese-
javelmente, converge para a raiz exacta z. No entanto, esta é desconhecida pelo que há
interesse em avaliar o tipo de convergência sem ter que recorrer ao valor de z. O próximo
teorema dá uma achega a este problema.
5.1 Introdução 221

Teorema 5.1.4 Seja {xk } uma sucessão.


a) Se existir um número M ∈ (0, 1) e um número natural N tais que

|xk+1 − xk | ≤ M|xk − xk−1 |, ∀k > N

então {xk } converge R-linearmente.

b) Se existir um número A ∈ (0, ∞), um número p > 1 e um número natural N tais que

|xk+1 − xk | ≤ A|xk − xk−1 |p , ∀k > N

então {xk } possui convergência-R com ordem de convergência igual a p.

Demonstração Caso a). Para abreviar a notação, ponhamos

∆k = |xk+1 − xk |

Então, deduzimos sem dificuldade que


k−1
X ∞
X
|xk − xj | ≤ |xk − xk−1 | + · · · + |xj+1 − xj | = ∆i ≤ ∆i , ∀k > j
i=j i=j

Mas, pela hipótese do teorema,


∆k+1 ≤ M∆k
pelo que, por indução,
∆k ≤ ∆N M k−N , k>N
Sendo assim,

M j−N
|xk − xj | ≤ ∆N M −N M i = ∆N
X
(5.1.15)
i=j 1−M
Daqui decorre que limj→∞ |xk − xj | = 0, (k > j), uniformemente em k. Logo {xk } é uma
sucessão de Cauchy, por conseguinte, convergente em R. Denotemos por z o seu limite.
Fazendo k → ∞ em (5.1.15), podemos escrever que

M −N
|ej | = |xj − z| ≤ ∆N Mj
1−M
Confrontando esta expressão com (5.1.12), vemos que basta tomar c = ∆N M −N /(1 − M)
para concluir que {xk } converge R-linearmente.
Caso b). Agora temos que
∆k+1 ≤ A∆pk
pelo que, por indução,
 pj
∆N +j ≤ A1/(1−p) ∆N A1/(p−1)
222 Equações não-lineares

Após manipulações simples, podemos deduzir que


i
 p−N
∆i ≤ A1/(1−p) M p , com M = ∆N A1/(p−1) <1

Então, tal como atrás,


∞ ∞ ∞
1/(1−p) pi 1/(1−p) pj i j
M p −p
X X X
|xk − xj | ≤ ∆i ≤ A M ≤A M
i=j i=j i=j

i j
Mas, para i > j > k suficientemente grandes, pi − pj ≥ i − j, pelo que M p −p ≤ M i−j , o
que permite escrever
A1/(1−p) pj
|xk − xj | ≤ M (5.1.16)
1−M
Daqui decorre que limj→∞ |xk − xj | = 0, (k > j), uniformemente em k. Logo {xk } é uma
sucessão de Cauchy, por conseguinte, convergente em R. Denotemos por z o seu limite.
Fazendo k → ∞ em (5.1.16), podemos escrever que
j
|ej | = |xj − z| ≤ cM p

em que fizemos c = A1/(1−p) /(1 − M). Confrontando esta expressão com (5.1.14) concluí-
mos que {xk } tem convergência-R com ordem igual a p.
Este teorema tem um grande valor prático: ele mostra que se pode obter informação
sobre o tipo de convergência através das quantidades xk+1 − xk calculadas ao longo das
iterações.

5.2 Método da bissecção


5.2.1 Descrição do método
Seja f uma função contínua no intervalo finito I = [a, b] e tal que f (a) e f (b) possuam
sinais diferentes. Então, esta função possui pelo menos um zero neste intervalo. O método
da bissecção consiste em construir subintervalos Ik = [ak , bk ] ⊂ I = [a, b] por divisões
sucessivas a meio e relativamente aos quais também se verifique que f (ak ) e f (bk ) tenham
sinais diferentes. Deste modo vamos confinando um zero da função f a intervalos tão
pequenos quanto desejarmos.
O algoritmo que concretiza este método é o seguinte. Ponhamos

I0 = [a0 , b0 ] = I = [a, b], Ik = [ak , bk ], k = 1, 2, . . .

e seja xk+1 o ponto médio do intervalo Ik , i.e.,


ak + bk
xk+1 =
2
5.2 Método da bissecção 223

y = f (x)
y

Figura 5.2.1: Método da


bissecção
xk+1
ak ak+1

bk x
bk+1

Consideremos as seguintes três situações. Se f (xk+1 ) = 0, então xk+1 é um zero e o


algoritmo termina aqui. Se f (ak ) e f (xk+1 ) tiverem sinais diferentes, faça-se

ak+1 = ak e bk+1 = xk+1

de modo a que o novo subintervalo Ik+1 = [ak+1 , bk+1 ] contenha um zero de f . Se, pelo
contrário, forem f (bk ) e f (xk+1 ) a ter sinais diferentes, então ponha-se

ak+1 = xk+1 , bk+1 = bk

Deste modo garante-se que, em qualquer das duas últimas situações, o novo subintervalo
Ik+1 = [ak+1 , bk+1 ] contém pelo menos um zero de f . Pela forma como foi construído, este
subintervalo tem um comprimento que é metade do comprimento do subintervalo que o
precedeu. Portanto,
1
|ak+1 − bk+1 | = |ak − bk | (5.2.1)
2
A Figura 5.2.1 ilustra esquematicamente a aplicação do método o qual se encontra também
desenvolvido no Algoritmo 5.2.1.

5.2.2 Erros e convergência


A simplicidade do método da bissecção torna intuitiva a análise da respectiva convergên-
cia. Todavia, é útil proceder a uma análise rigorosa que apresentamos no teorema seguinte.
Teorema 5.2.1 Seja f ∈ C[a, b] e tal que f (a) e f (b) tenham sinais diferentes. Então,
a sucessão {xk } determinada pelo método da bissecção converge para um zero de f neste
intervalo, e o erro satisfaz a relação
b−a
|ek | ≤ (5.2.2)
2k
224 Equações não-lineares

Demonstração A sucessão {ak }, k = 0, 1, . . . é não-decrescente e limitada superior-


mente por b, e a sucessão {bk }, k = 0, 1, . . . é não-crescente e limitada inferiormente por
a. Então, ambas as sucessões convergem e denotemos por ā e b̄ os respectivos limites.
Pela forma como o método foi elaborado podemos dizer que

ak < xk+1 < bk e lim |ak − bk | = 0


k→∞

e, portanto,
ā = lim ak = b̄ = lim bk = lim xk+1 (5.2.3)
k→∞ k→∞ k→∞

Por outro lado, atendendo ao modo de construção dos intervalos,

f (ak )f (bk ) < 0, k = 0, 1, . . .

Como f é contínua, temos que


  
0 ≥ lim [f (ak )f (bk )] = lim f (ak ) lim f (bk ) = f (ā)f (b̄) = [f (ā)]2 = [f (b̄)]2 ≥ 0
k→∞ k→∞ k→∞

Destas desigualdades concluímos que f (ā) = f (b̄) = 0 e que, por conseguinte, ā = b̄ é um


zero da função f .

Algoritmo 5.2.1 Método da bissecção


Estipular um intervalo [a, b] tal que f (a)f (b) < 0
Fixar as tolerâncias τ e τ ′ (ver a Secção 5.11)
Fixar um limite kmax para o contador k das iterações
a0 = a; b0 = b (inicialização)
fa = f (a); fb = f (b)
for k = 0 to kmax do
hk = (bk − ak )/2
xk+1 = ak + hk
fm = f (xk+1 )
if fm = 0 then exit fi
if fa fm < 0 then
ak+1 = ak ; bk+1 = xk+1 ; fb = fm
else
ak+1 = xk+1 ; bk+1 = bk ; fa = fm
fi
if hk < τ + τ ′ |xk+1 | then exit fi
od
Aviso: teste de convergência não satisfeito
5.2 Método da bissecção 225

Recordando a expressão (5.1.2), o erro cometido vem majorado por


1
|ek+1 | ≤ |ak − bk |
2
Aplicando sucessivamente a relação (5.2.1), chegamos a (5.2.2), como queríamos demons-
trar.

Exemplo 5.2.1 Determinar a raiz positiva da equação f (x) = x2 − 2 = 0 com um erro


inferior a 10−4 .

Este √exemplo é escolhido pela sua simplicidade e por se conhecer a solução exacta, que é
z = 2 ≈ 1.4142. Tomando I = [a, b] = [0, 2], verificamos que f (0) = −2 e f (2) = 2 pelo
que estamos dentro das condições exigidas pelo Teorema 5.2.1. O número n de iterações
a efectuar para garantir um erro |en | ≤ ǫ pode ser estimado por intermédio da expressão
(5.2.2), vindo
ln(|a − b|/ǫ) ln(2 × 104 )
n≥ = = 14.3
ln 2 ln 2
Logo n = 15 é suficiente. O desenvolvimento do cálculo do zero é apresentado no quadro
seguinte.

k ak f (ak ) bk f (bk ) xk+1 |ek+1 |


0 0.0 −2.0 2.0 2.0 1.0 0.4142
1 1.0 −1.0 2.0 2.0 1.5 (0.8579)10−1
2 1.0 −1.0 1.5 0.25 1.25 0.1642
3 1.25 −0.4375 1.5 0.25 1.375 (0.3921)10−1
4 1.375 −0.1094 1.5 0.25 1.4375 (0.2329)10−1
5 1.375 −0.1094 1.4375 (0.6641)10−1 1.4063 (0.7914)10−2
6 1.4063 −(0.2246)10−1 1.4375 (0.6641)10−1 1.4219 (0.7686)10−2
7 1.4063 −(0.2246)10−1 1.4219 (0.2180)10−1 1.4141 (0.1136)10−3
8 1.4141 −(0.3836)10−4 1.4219 (0.2180)10−1 1.4180 (0.3786)10−2
9 1.4141 −(0.3836)10−4 1.4180 (0.1072)10−1 1.4161 (0.1886)10−2
10 1.4141 −(0.3836)10−4 1.4161 (0.5198)10−2 1.4151 (0.8864)10−3
11 1.4141 −(0.3836)10−4 1.4151 (0.2508)10−2 1.4146 (0.3864)10−3
12 1.4141 −(0.3836)10−4 1.4146 (0.1093)10−2 1.4143 (0.8644)10−4
13 1.4141 −(0.3836)10−4 1.4143 (0.2445)10−3 1.4142 (0.1356)10−4
14 1.4142 −(0.3836)10−4 1.4143 (0.2445)10−3

Como se vê, o critério do erro é satisfeito logo a partir da iteração 13, em boa concordância
com o valor estimado acima. Convém reparar que a convergência não é monótona.

Este exemplo permite realçar duas características importantes do método da bissecção.


A primeira é a de que a convergência é certa para uma vasta classe de funções, as funções
contínuas (desde que calculadas sem erros de arredondamento!). Neste sentido, o método
da bissecção é um método global. A segunda é a de que a convergência poderá ser bastante
226 Equações não-lineares

y = f (x)
y

Figura 5.3.1: Método da


falsa posição
xk+1
ak ak+1

bk x
bk+1

lenta. Por esta razão, o método da bissecção é utilizado frequentemente apenas como fase
preparatória de localização de zeros num intervalo suficientemente pequeno onde seja
possível o arranque de outros métodos mais rápidos mas cuja convergência dependa de
uma boa aproximação inicial.
Apesar de ser convergente, o método da bissecção tem um comportamento que, em
geral, não é enquadrável pela Definição 5.1.4. De facto, como é fácil ver por simples
inspecção de (5.2.2), este método possui apenas convergência-R linear.

5.3 Método da falsa posição


5.3.1 Descrição do método
A única informação sobre a função f que o método da bissecção utiliza é o seu sinal, o que
é muito pouco. É de esperar que se recorrermos a mais informação sobre o andamento de f
possamos conceber métodos mais rápidos. No método da falsa posição (também conhecido
pela designação latina de regula falsi ) procede-se do mesmo modo que no método da
bissecção excepto que o ponto xk+1 se determina não como o ponto médio do intervalo,
mas como a intersecção da secante que passa pelos pontos (ak , f (ak )) e (bk , f (bk )) com o
eixo dos xx, conforme se mostra na Figura 5.3.1.
A equação desta secante pode escrever-se nas seguintes formas alternativas

y = f (ak ) + f [ak , bk ](x − ak ) (5.3.1)


y = f (bk ) + f [ak , bk ](x − bk ) (5.3.2)

pelo que a sua intersecção com o eixo dos xx ocorre no ponto xk+1 dado por qualquer das
5.3 Método da falsa posição 227

seguintes expressões

f (ak )
xk+1 = ak − (5.3.3)
f [ak , bk ]
f (bk )
xk+1 = bk − (5.3.4)
f [ak , bk ]
ak f (bk ) − bk f (ak )
xk+1 = (5.3.5)
f (bk ) − f (ak )

Como se adopta o mesmo princípio na escolha dos subintervalos, f (ak ) e f (bk ) possuem
sinais diferentes, e, por conseguinte, o denominador da expressão (5.3.5) é constituído
por duas parcelas com o mesmo sinal. Este facto implica que não são de recear efeitos
nefastos resultantes dos erros de arredondamento numa subtracção de dois números ten-
dencialmente muito pequenos e semelhantes em valor absoluto. Ou seja, está evitado o
aparecimento de cancelamento subtractivo.

Variantes do método da falsa posição


O método da falsa posição tende a desenvolver uma convergência lenta quando um dos
extremos, ak ou bk , se imobiliza. Suponhamos, para exemplificar, que bk = bk−1 = bk−2 ,
i.e., é o extremo direito que se imobiliza. Para evitar este inconveniente pode usar-se
a seguinte modificação: empregar os pontos (ak+1, f (ak+1 )) e (bk , f (bk )/2) para traçar
a nova secante em vez dos pontos (ak+1 , f (ak+1)) e (bk , f (bk )). A Figura 5.3.2 mostra
qualitativamente o efeito assim produzido. Convém realçar que a secante continua a ser
definida por pontos acima e abaixo do eixo dos xx tal como na versão original, garantindo
a existência de um zero no intervalo seleccionado. Esta variante é por vezes conhecida
pela designação de método de Illinois, pois, segundo consta, foi originado no centro de
computação da Universidade de Illinois.
Uma outra variante, conhecida como método de Pegasus, é em tudo semelhante ao
método de Illinois excepto que a nova secante é construída com os pontos (ak+1 , f (ak+1 ))
e (bk , ck f (bk )) com ck = f (ak )/(f (ak ) + f (ak+1)). Como ck tende para o valor 1/2, as
eficácias destas duas variantes são praticamente idênticas.

5.3.2 Erros e convergência


O teorema seguinte fornece condições suficientes para a convergência do método da falsa
posição e uma estimativa do erro.

Teorema 5.3.1 Seja f uma função convexa ou côncava no intervalo I = [a, b] com f (a)
e f (b) de sinais diferentes. Então, o método da falsa posição possui convergência-Q linear
para o zero de f neste intervalo.
228 Equações não-lineares

y = f (x)
y f (b k )

f (b k )= 2
Figura 5.3.2: Método de
Illinois
xk+1 xk+2
ak ak+1 ak+2

bk x
bk+1
bk+2

Demonstração Vamos desenvolver a demonstração para o caso de f ser convexa,


já que para funções côncavas o tratamento é inteiramente análogo. A sucessão {xk }
determinada pelo algoritmo é não-decrescente e limitada à direita por b. Logo, converge
para um limite x̄ e, se este valor verificar f (x̄) = 0, o método da falsa posição converge
para o único (porquê único?) zero de f no intervalo [a, b]. Vejamos se assim acontece ou
não. Suponhamos que o limite x̄ não verifica f (x̄) = 0. Então, existem valores de N e
ǫ > 0 tais que
|f (xn )| ≥ ǫ para n > N
Por outro lado, de (5.3.4) tira-se que
f (b) f (b)
xn+1 − b = − = −(b − xn )
f [b, xn ] f (b) − f (xn )
Se M for um majorante de |f | no intervalo [a, b], então
M
 
|xn+1 − b| ≤ |xn − b|
M +ǫ
Por aplicação repetida desta expressão, deduzimos que
k
M

|xn+k − b| ≤ |xn − b|
M +ǫ
pelo que somos levados a concluir que
x̄ = lim xk = b
k→∞

Mas as hipóteses do teorema e a própria construção do algoritmo garantem que se verifica


f (xk )f (b) ≤ 0 e, por conseguinte,
0 ≥ lim f (xk )f (b) = [f (b)]2 > 0
k→∞
5.4 Método da secante 229

o que é uma contradição. Portanto, a sucessão {xk } tem de convergir para o zero da
função f no intervalo [a, b].
Passemos agora ao estudo do erro. Recordando o que se disse na Subsecção 2.4.1,
podemos escrever que

f (z) = 0 = f (b) + f [b, xk ](z − b) + f [b, xk , z](z − b)(z − xk ) (5.3.6)

Por outro lado, a expressão (5.3.2) fornece a relação

f (xk+1 ) = 0 = f (bk ) + f [xk , bk ](xk+1 − bk ) (5.3.7)

Subtraindo (5.3.6) e (5.3.7) membro a membro e tendo em atenção que b = bk , facilmente


obtemos
f [b, xk , z]
ek+1 = (b − z)ek
f [b, xk ]
Passando ao limite,

|ek+1| f [b, x , z]
k
|f [b, z, z]|
lim = lim (b − z) = |(b − z)| = M (5.3.8)
k→∞ |ek | k→∞ f [b, xk ] |f [b, z]|

A constante de erro assimptótico M é, como vamos provar, inferior a um. Desenvolvendo


as diferenças divididas, obtemos as expressões

f (z) − f (b) f [z, z] − f [b, z]


f [b, z] = , f [b, z, z] =
z−b z−b
que, substituídas em (5.3.8), dão

f [z, z] f ′ (z)
M =1− =1− ′
f [b, z] f (ξ)

com ξ ∈ (z, b). Como, por hipótese, f é convexa, podemos afirmar que 0 6= f ′ (z) < f ′ (ξ),
o que implica imediatamente que M < 1.

5.4 Método da secante


5.4.1 Descrição do método
Basicamente, o método da secante consiste em, partindo de duas iterações quaisquer
(xk−1 , f (xk−1 )) e (xk , f (xk )), obter o valor seguinte xk+1 como a intersecção da secante
que passa pelos referidos pontos com o eixo dos xx. Assim, este método apenas difere do
da falsa posição por não se exigir que os valores da função nos extremos dos subinterva-
los tenham sinais diferentes (ver a Figura 5.4.1). Esta simplificação do algoritmo pode
230 Equações não-lineares

yk 1

Figura 5.4.1: Método da


yk
secante


xk 1 xk xk+1 x

y = f (x)

trazer como consequência que o método da secante deixe de convergir em certas situações.
Todavia, quando converge, fá-lo com uma ordem de convergência superior a um, como
veremos mais adiante.
A expressão que permite obter xk+1 é semelhante à (5.3.3), à (5.3.4) ou à (5.3.5).
Pondo por simplicidade yk = f (xk ), temos que

yk xk−1 − yk−1 xk
xk+1 = (5.4.1)
yk − yk−1

É claro que agora, não havendo a certeza de que yk e yk−1 tenham sinais contrários, a
expressão acima pode originar cancelamento subtractivo. Uma expressão equivalente a
(5.4.1) mas menos sensível a erros de arredondamento é
yk
xk+1 = xk − (5.4.2)
f [xk−1 , xk ]

Esta expressão pode ser escrita nesta outra forma equivalente mas mais elucidativa
yk
xk+1 = xk + hk com hk = − (5.4.3)
f [xk−1 , xk ]

que é susceptível da seguinte leitura: o novo valor xk+1 obtém-se do anterior xk adicio-
nando a este uma correcção hk a calcular de acordo com a fórmula acima. O Algoritmo
5.4.1 esquematiza este método.

5.4.2 Erros e convergência


O teorema seguinte dá-nos condições suficientes que garantem a convergência do método
da secante e revela a respectiva ordem de convergência.
5.4 Método da secante 231

Teorema 5.4.1 Se todas as iterações estiverem contidas numa vizinhança (a, b) suficien-
temente pequena do zero z da função f ∈ C 2 [a, b], então o método da secante é conver-
gente, e o erro satisfaz a relação

|ek+1 | ≤ M|ek ||ek−1|

com
M2
M= , 0 < m1 ≤ |f ′ (ξ)| < M1 e |f ′′ (ξ)| ≤ M2
2m1

para todo o ξ ∈ [a, b], e a ordem de convergência é p = (1 + 5)/2 ≈ 1.618.
Demonstração Como sabemos, a interpolação linear da função f nos pontos xk−1 e
xk fornece a identidade

0 = f (z) = f (xk ) + f [xk , xk−1 ](z − xk ) + f [xk , xk−1, z](z − xk )(z − xk−1 )

donde se tira que o zero z é expresso por


f (xk ) f [xk , xk−1 , z]
z = xk − − (z − xk )(z − xk−1 )
f [xk , xk−1 ] f [xk , xk−1 ]
Mas, tendo em conta (5.4.2), a expressão acima transforma-se na seguinte
f [xk , xk−1 , z]
z = xk+1 − (z − xk )(z − xk−1 )
f [xk , xk−1 ]
da qual resulta que
f [xk , xk−1 , z]
ek+1 = − ek ek−1
f [xk , xk−1 ]

Algoritmo 5.4.1 Método da secante


Estipular valores iniciais x0 e x1
Fixar as tolerâncias τ e τ ′ (ver a Secção 5.11)
Fixar um limite kmax para o contador k das iterações
f0 = f (x0 ); f1 = f (x1 )
for k = 1 to kmax do
dk = (fk − fk−1)/(xk − xk−1 )
hk = −fk /dk xk+1 = xk + hk
if xk+1 = xk then exit fi
fk+1 = f (xk+1 )
if |hk | < τ + τ ′ |xk+1| then exit fi
od
Aviso: teste de convergência não satisfeito
232 Equações não-lineares

Recordando a relação entre diferenças divididas e derivadas, podemos pôr que

1
f [xk , xk−1 ] = f ′ (ξk ) e f [xk , xk−1 , z] = f ′′ (ηk )
2
com ξk ∈ inter (xk , xk−1 ) e ηk ∈ inter (xk , xk−1 , z). Portanto,

f ′′ (ηk )
ek+1 = − ek ek−1 (5.4.4)
2f ′ (ξk )

Tomando os valores absolutos de ambos os membros desta expressão e majorando de


forma óbvia, vem que

M2
|ek+1 | ≤ |ek ||ek−1 | = M|ek ||ek−1| (5.4.5)
2m1

Utilizando a notação uk = M|ek |, a relação anterior transforma-se nesta outra com aspecto
ligeiramente mais simples
uk+1 ≤ uk uk−1 (5.4.6)
Admitiremos que os pontos x0 e x1 pertencem a uma vizinhança suficientemente próxima
do zero no sentido de que
u0 ≤ 1 e u1 ≤ δ < 1
Então, recorrendo à expressão (5.4.6), deduzimos que

u2 ≤ δ, u3 ≤ δ 2 , u4 ≤ δ 3 , ..., uk ≤ δ γk (5.4.7)

em que os γk satisfazem a seguinte relação de recorrência

γk+1 = γk + γk−1, k = 1, 2, . . . ; γ0 = 0, γ1 = 1 (5.4.8)

As relações (5.4.7) e (5.4.8) permitem concluir que limk→∞ uk = 0 e que, portanto, o


método da secante converge.
Os números γk gerados pela relação (5.4.8) são os célebres números de Fibonacci , e
não é difícil demonstrar a fórmula de Binet
 √ !k √ !k 
1  1+ 5 1− 5 
γk = √ −
5 2 2

Em particular, são verdadeiras as igualdades



γk+1 1+ 5
p ≡ lim = , p2 − p − 1 = 0 (5.4.9)
k→∞ γk 2
5.5 Método de Newton 233

yk

Figura 5.5.1: Método de


Newton


xk xk+1 x

y = f (x)

Uma vez demonstrada a convergência do método, regressamos a (5.4.4) para dizer que

|ek+1 | f ′′ (z)
lim = A, com A = (5.4.10)


k→∞ |ek ||ek−1 | 2f (z)

Mas, como é fácil ver,


!1/p
|ek+1| |ek+1 | |ek |1/p |ek+1 | |ek |
lim = lim p
= lim (5.4.11)
k→∞ |ek ||ek−1 | k→∞ |ek | |ek−1 | k→∞ |ek |p |ek−1 |p
donde se conclui que
|ek+1 |
lim = c, com c = Ap−1
k→∞ |ek |p

o que prova que a ordem de convergência é, de facto, igual a p.


A hipótese |f ′ (ξ)| > 0 implica que o zero z é simples, pelo que este teorema não
contempla o caso de zeros múltiplos.

5.5 Método de Newton


5.5.1 Descrição do método
Nos métodos da falsa posição e da secante, a curva y = f (x) era aproximada por uma sua
secante. No método de Newton ou de Newton-Raphson, como por vezes é chamado, esta
curva é aproximada pela sua tangente, e a intersecção desta com o eixo dos xx é tomada
como o novo valor da aproximação ao zero de f . A Figura 5.5.1 mostra esquematicamente
este processo.
A equação da tangente à curva y = f (x) que passa pelo ponto xk é
y = f (xk ) + f ′ (xk )(x − xk )
234 Equações não-lineares

e, portanto, a sua intersecção com o eixo dos xx ocorre na posição

f (xk )
xk+1 = xk − (5.5.1)
f ′ (xk )

Tal como fizemos para o método da secante, a expressão acima pode ser escrita nesta
outra forma
f (xk )
xk+1 = xk + hk com hk = − ′ (5.5.2)
f (xk )
que é susceptível de ser lida de maneira idêntica.
Então, dada uma estimativa inicial x0 , esta fórmula gera um sucessão {xk } que pre-
sumivelmente convergirá para o zero z da função f . Antes de passarmos ao estudo deste
aspecto convém notar que, como agora são necessários valores da derivada, a realização
deste método implica que se tenha de programar, além da função f , a sua derivada f ′ .
Se f for uma função com expressão analítica muito complicada, o cálculo da derivada e
a respectiva programação não serão tarefas agradáveis, factor que deve ser tomado em
consideração na escolha deste método. Do lado positivo, podemos adiantar que o método
converge quadraticamente, sendo, portanto, superior neste aspecto aos métodos apresen-
tados até este momento. Como veremos no Capítulo 10, a sua generalização a sistemas
de equações não-lineares revela-se mais fácil que a dos restantes métodos.

5.5.2 Erros e convergência


A primeira observação a fazer é a de que o método de Newton, tal como o da secante,
nem sempre é convergente. No teorema seguinte apresentamos condições suficientes que
garantem a convergência.

Teorema 5.5.1 Seja [a, b] um intervalo tal que z, x0 ∈ (a, b), f ∈ C 2 [a, b] e

0 < m1 ≤ |f ′ (x)|, |f ′′ (x)| ≤ M2 , ∀x ∈ [a, b]

Então, o erro satisfaz a relação

M2
|ek+1 | ≤ M|ek |2 , com M =
2m1

e, se |Me0 | < 1, o método de Newton converge.

Demonstração Desenvolvendo a função f em série de Taylor em torno de xk , temos


que

′ f ′′ (ξk )
0 = f (z) = f (xk ) + f (xk )(z − xk ) + (z − xk )2 , ξk ∈ inter (z, xk )
2
5.5 Método de Newton 235

donde se extrai que


f (xk ) f ′′ (ξk )
z = xk − − (z − xk )2
f ′ (xk ) 2f ′ (xk )
Recordando a expressão (5.5.1), podemos escrever que

f ′′ (ξk )
z − xk+1 = ek+1 = − (ek )2
2f ′ (xk )
Tomando valores absolutos, majorando o segundo membro e introduzindo as condições
do enunciado do teorema, chega-se sem dificuldade à conclusão pretendida. O Teorema
5.1.2 assegura-nos que a sucessão {ek } tem como limite zero e, por conseguinte, o método
de Newton converge. Além disso,
|ek+1| |f ′′ (ξk )| |f ′′(z)|
c = lim = lim =
k→∞ |ek |2 k→∞ |2f ′ (xk )| |2f ′(z)|
e pelas hipóteses do teorema este valor é finito. Logo, a ordem de convergência do método
é p = 2, o que completa a demonstração.
As hipóteses deste teorema restringem-no ao caso de zeros simples. Se o zero não for
simples, a ordem do método de Newton degrada-se, sendo possível demonstrar que, para
zeros duplos, a convergência é apenas linear (ver o Problema 5.13.14). O exemplo seguinte
mostra quão rápida pode ser a convergência quadrática.

Exemplo 5.5.1 Vamos retomar o problema do Exemplo 5.2.1 relacionado com a deter-
minação da solução de f (x) = x2 − 2 = 0, aplicando agora o método de Newton.

A fórmula de iteração é (ver o Problema 5.13.10)


 
1 2
xk+1 = xk + , k = 0, 1, . . .
2 xk

Tomando como estimativa inicial x0 = 1.0, obtêm-se os seguintes valores

k 0 1 2 3 4
xk 1.0 1.5 1.4167 1.4142 1.4142

Vejamos como podemos deduzir uma estimativa do erro. Dado que f (x) = x2 − 2 temos que
f ′ (x) = 2x e f ′′ (x) = 2. Tomando o intervalo [a, b] = [1, 1.5] vem, em face do Teorema 5.5.1,
que
|f ′′ (1.5)|
M= = 0.5
|2f ′ (1)|
É também fácil deduzir da expressão (5.1.10) que
1 n
|en | ≤ |M e0 |2
M
236 Equações não-lineares

yk 2
y
yk 1

Figura 5.6.1: Método de


Muller xk+1 xk

xk 2 xk 1 x

y = f (x)

yk

Tomando para majorante pessimista do erro inicial o valor |e0 | ≤ b − a = 0.5, calculamos as
seguintes estimativas

|e3 | ≤ 2(0.25)8 = (0.3)10−4 e |e4 | ≤ 2(0.25)16 = (0.5)10−9

O valor de x3 está, pois, dentro da tolerância pretendida. A diminuição do valor do erro


da iteração 3 para a 4 dá uma imagem elucidativa do que significa, em termos práticos, a
convergência ser quadrática.

5.6 Método de Muller


Os métodos apresentados até agora têm como característica comum aproximar a função
y = f (x) por uma recta, secante ou tangente a esta curva. Esta ideia pode ser generalizada
no sentido de usar polinómios de grau superior para aproximar a função f . É claro que,
sendo preciso determinar analiticamente a intersecção do polinómio aproximador com o
eixo dos xx, não há grande margem de escolha, já que os únicos candidatos viáveis são os
polinómios de segundo grau. O método de Muller consiste precisamente em interpolar a
função y = f (x) por uma parábola passando e tomar a intersecção desta com o eixo dos
xx como uma nova aproximação do zero. Vejamos em pormenor como se concretiza esta
ideia.
Consideremos três pontos (xk , f (xk )), (xk−1 , f (xk−1 )) e (xk−2 , f (xk−2 )), conforme mostra
a Figura 5.6.1. O polinómio interpolador é, como sabemos,

p(x) = f (xk ) + f [xk , xk−1 ](x − xk ) + f [xk , xk−1 , xk−2 ](x − xk )(x − xk−1 )

Dado que
(x − xk )(x − xk−1 ) = (x − xk )2 + (x − xk )(xk − xk−1 )
5.7 Utilização de interpolação inversa 237

a parábola interpoladora pode escrever-se na seguinte forma

p(x) = yk + ck (x − xk ) + dk (x − xk )2

em que, por simplicidade, se fez

yk = f (xk )
dk = f [xk , xk−1 , xk−2 ]
ck = f [xk , xk−1 ] + dk (xk − xk−1 ) = f [xk , xk−1 ] + f [xk , xk−2 ] − f [xk−1 , xk−2 ]

Esta parábola intersecta o eixo dos xx nos pontos a determinados por

−ck ± (c2k − 4yk dk )1/2


a = xk +
2dk
Uma forma equivalente, mas menos susceptível a erros de arredondamento, é
2yk
a = xk − (5.6.1)
ck ± (c2k − 4yk dk )1/2
Esta expressão fornece dois valores, um correspondendo ao sinal +, e o outro, ao
sinal −, pelo que se põe naturalmente a questão de saber qual deles se deve tomar. É
usual escolher o sinal que produza o maior valor absoluto para o denominador no segundo
membro desta expressão, de modo a que xk+1 obtido desta maneira difira o menos possível
de xk ; por outras palavras, optar por efectuar uma correcção prudente.
Se, em virtude do que se disse atrás, durante a pesquisa de zeros reais aparecerem
iterações intermédias produzindo valores complexos, é corrente, para evitar ter de imple-
mentar o algoritmo em aritmética complexa, desprezar simplesmente a parte imaginária
de xk+1 .
O aparecimento de valores complexos pode, no entanto, constituir uma vantagem
do método de Muller quando se pretende obter zeros complexos de funções reais, pois
permite o aparecimento de aproximações complexas durante as iterações mesmo que se
tenha partido de estimativas iniciais reais, mais fáceis de estabelecer.
Pode demonstrar-se que, se os valores iniciais x0 , x1 e x2 estiverem suficientemente
próximos do zero procurado, o método de Muller converge, e a ordem de convergência é
p ≈ 1.84, quase idêntica à do método de Newton com a vantagem adicional de não recorrer
a derivadas. Tal demonstração está, todavia, fora do âmbito deste texto, remetendo-se o
leitor interessado para as referências, por exemplo YOUNG and GREGORY (1972).

5.7 Utilização de interpolação inversa


Em certas situações há conveniência em trocar os papéis das variáveis x e y. Assim,
supondo que a função f possui inversa e denotando-a por g, temos que à equação y = f (x)
238 Equações não-lineares

passa a corresponder a relação inversa


x = g(y) (5.7.1)
Então, o zero z é calculado por z = g(0). É claro que a solução do problema inicial
por meio deste estratagema não se simplifica automaticamente, mas pode acontecer que
a aproximação de g em vez de f traga algumas vantagens. Um momento de reflexão
permite-nos concluir que se g for aproximada por interpolação linear, i.e., por secantes
ou tangentes, nada de novo surge relativamente aos métodos da secante ou de Newton.
Para haver alguma diferença, esta deve aparecer quando se interpola g por polinómios
de segundo grau como no método de Muller. Vejamos que de facto assim é. A parábola
interpoladora de g nos pontos (yk−2, xk−2 ), (yk−1, xk−1 ) e (yk , xk ) é
x = xk + g[yk , yk−1](y − yk ) + g[yk , yk−1, yk−2](y − yk )(y − yk−1 )
A intersecção desta curva com o eixo dos xx obtém-se fazendo simplesmente y = 0 nesta
equação, donde se extrai que
xk+1 = xk − g[yk , yk−1]yk + g[yk , yk−1, yk−2]yk yk−1 (5.7.2)
Se tivermos em conta as expressões das diferenças divididas
g(yk ) − g(yk−1) 1
g[yk , yk−1] = =
yk − yk−1 f [xk , xk−1 ]
" #
g[yk−1, yk−2] − g[yk , yk−1] 1 1 1
g[yk , yk−1, yk−2] = = −
yk−2 − yk yk−2 − yk f [xk−1 , xk−2 ] f [xk , xk−1 ]
Introduzindo estas relações em (5.7.2), vem que
" # " #
yk yk yk−1 1 1
xk+1 = xk − + − (5.7.3)
f [xk , xk−1 ] yk−2 − yk f [xk−1 , xk−2 ] f [xk , xk−1 ]
Podemos ver que o primeiro parêntesis do segundo membro desta expressão corresponde
exactamente ao método da secante, constituindo o segundo termo, portanto, uma cor-
recção de segunda ordem. Nesta expressão, contrariamente ao que sucedia com o método
de Muller, o valor de xk+1 é obtido sem qualquer ambiguidade e, se os valores iniciais
forem reais, a sucessão {xk } é também real.
É possível demonstrar (ver RABINOWITZ (1970)) que este método converge nas
condições habituais com uma ordem de convergência p ≈ 1.84, idêntica à do método de
Muller.

5.8 Método do ponto fixo


Todos os métodos estudados até este momento se reportavam à equações não-lineares
f (x) = 0. Nesta secção vamos abordar a solução de equações não-lineares escritas numa
forma alternativa por vezes mais interessante.
5.8 Método do ponto fixo 239

5.8.1 Descrição do método


A equação será desta feita escrita na forma

x = g(x) (5.8.1)

É bom reconhecer que este modo de colocar o problema não constitui qualquer restrição
relativamente ao caso f (x) = 0, pois é sempre possível transformar esta equação numa do
tipo (5.8.1), pondo, por exemplo,

x = x + f (x) ≡ g(x)

Esta é apenas uma das transformações possíveis, não sendo, portanto, a única nem ne-
cessariamente a mais adequada para um dado caso concreto. Acresce que em muitos
problemas é a equação (5.8.1) que aparece de um modo natural.
A expressão (5.8.1) sugere imediatamente o seguinte esquema iterativo

xk+1 = g(xk ), k = 0, 1, . . . (5.8.2)

de que a Figura 5.8.1 mostra o significado geométrico, exibindo dois casos distintos: um
em que se verifica convergência, e outro, em que o processo diverge. Esta diferença de
comportamento será explicada mais adiante.
O ponto z solução de (5.8.1) é um ponto que a função g transforma nele próprio,
ou, por outras palavras, um ponto que permanece fixo sob a transformação g. Por esta
razão, os métodos de solução de equações baseados nas expressões (5.8.1) e (5.8.2) são
conhecidos genericamente por métodos iterativos de ponto fixo.

5.8.2 Erros e convergência


Antes de passarmos ao estudo da convergência deste método é necessário introduzir a
seguinte definição.
Definição 5.8.1 Uma função g diz-se contractiva no intervalo I = [a, b] se existir uma
constante M com 0 ≤ M < 1 tal que

|g(x1 ) − g(x2 )| ≤ M|x1 − x2 |

para todos os x1 , x2 ∈ I.
Notemos que a própria formulação desta definição implica que uma função contractiva é
necessariamente contínua. A verificação da contractividade nem sempre é fácil. Um dos
casos mais simples e simultaneamente dos mais interessantes na prática ocorre quando
g ∈ C 1 (I) e em que a aplicação do teorema do valor médio nos conduz a

g(x1 ) − g(x2 ) = g ′ (ξ)(x1 − x2 ), com ξ ∈ inter (x1 , x2 )


240 Equações não-lineares

y y y=x
y=x

 
y = g (x)

y = g (x)

xk xk+1 x xk xk+1 x

(a) Convergente (b) Divergente

Figura 5.8.1: Método do ponto fixo

Portanto, se |g ′(ξ)| < 1 para todo o ξ ∈ I, a função g é contractiva. Nestas condições


podemos tomar para M o valor
M = max |g ′(x)|
x∈I

O resultado seguinte é uma das versões mais simplificadas do célebre teorema do ponto
fixo.

Teorema 5.8.1 Se existir um intervalo I = [a, b] tal que g(I) ⊂ I e relativamente ao qual
a função g é contractiva, então esta função possui um único ponto fixo neste intervalo,
e a sucessão {xk } gerada por (5.8.2) converge para este ponto fixo qualquer que seja a
estimativa inicial x0 ∈ I.

Demonstração Vamos começar por demonstrar que as condições enunciadas garantem


a existência do ponto fixo. Introduzamos a função auxiliar h(x) = g(x) − x, que verifica,
uma vez que g(I) ⊂ I, as desigualdades óbvias

h(a) = g(a) − a ≥ 0 e h(b) = g(b) − b ≤ 0

Como h é contínua em I, existe (pelo menos) um valor z tal que h(z) = g(z) − z = 0.
Fica deste modo provada a existência de (pelo menos) um ponto fixo.
Passemos à demonstração da sua unicidade. Suponhamos que existem dois pontos
fixos, z e z ′ . Então, devemos ter, por definição, que

z = g(z) e z ′ = g(z ′ )
5.8 Método do ponto fixo 241

Subtraindo membro a membro estas igualdades, tomando valores absolutos e majorando,


vem que
|z − z ′ | = |g(z) − g(z ′ )| ≤ M|z − z ′ |
Esta relação implica imediatamente que (1−M)|z −z ′ | ≤ 0, e, portanto, como 0 ≤ M < 1,
concluímos que z = z ′ , ou seja, o ponto fixo é único.
Estudemos em seguida a convergência do método iterativo. O erro ek+1 = z − xk+1
satisfaz as relações evidentes

|ek | = |z − xk | = |g(z) − g(xk−1)| ≤ M|z − xk−1 | ≤ M|ek−1 | (5.8.3)

Aplicando esta relação repetidamente, temos que

|ek | ≤ M|ek−1 | ≤ M 2 |ek−2 | ≤ · · · ≤ M k |e0 |

e, por conseguinte, uma vez que M < 1, limk→∞ |ek | = 0. Concluímos assim que o método
do ponto fixo é convergente para qualquer x0 ∈ I.
Se a função g ∈ C 1 (I), temos que

ek+1 = z − xk+1 = g ′(ξk )(z − xk ) = g ′ (ξk )ek , com ξk ∈ inter (xk , z) (5.8.4)

pelo que
|ek+1 | = |g ′ (ξk )||ek−1|
No caso de se verificar convergência, podemos escrever que

lim |ek+1|/|ek | = lim |g ′(ξk )| = |g ′(z)| (5.8.5)


k→∞ k→∞

Deste modo, a convergência do método é Q-linear se 0 < |g ′(z)| < 1, e Q-supralinear, se


|g ′(z)| = 0.
Um ponto fixo que possua uma vizinhança na qual g é contractiva e para o qual o
processo iterativo (5.8.2) é convergente diz-se que é um ponto de atracção ou atractor da
função g; caso contrário, diz-se que é um ponto de repulsão ou repulsor. Um ponto fixo
atractivo é como um ‘buraco negro’: as iterações que se aproximem demasiado dele são
inexoravelmente atraídas.
Exemplo 5.8.1 Aplicar o método de iteração de ponto fixo à solução da equação x =
cos x no intervalo I = [a, b] = [0, π/2], garantindo uma precisão de quatro decimais.

Em primeiro lugar asseguremo-nos de que as condições de convergência do método são veri-


ficadas. Pondo g(x) = cos x e como

g(a) = cos 0 = 1 > 0 e g(b) = cos(π/2) = 0 < π/2

e g é monotónica no intervalo I, concluímos que g(I) ⊂ I. Além disso, como g′ (x) = − sin x,
temos que |g′ (x)| < 1 numa vizinhança suficientemente pequena da raiz, vizinhança que
242 Equações não-lineares

neste caso podemos tomar como o intervalo (aberto) (0, π/2). Estão assim reunidas todas as
condições de convergência. O cálculo das sucessivas iterações fornece os resultados do quadro
seguinte:
k xk k xk
0 1.0 10 0.74424
1 0.54030 15 0.73837
2 0.85755 20 0.73918
3 0.65429 25 0.73907
4 0.79348 30 0.73909
5 0.70137
Analisemos o erro. Da expressão (5.8.5) podemos deduzir que

|en | ≈ |g′ (z)|n |e0 |

Como |g′ (0.74)| = sin(0.74) ≈ 0.67, se tomarmos a estimativa, algo pessimista, |e0 | ≤ 1.0,
temos que
|e30 | ≈ (0.67)30 = (0.61)10−5
o que garante os quatro decimais pedidos. Observemos que o valor |g′ (z)| ≈ 0.67 produz uma
convergência relativamente lenta.

5.8.3 Aceleração de Aitken


Se g ′ (z) 6= 0, a convergência do método iterativo de ponto fixo é linear, o que, em ter-
mos práticos e como pudemos constatar, pode frequentemente significar que é lenta. No
entanto, é possível acelerar a convergência por um processo devido a Aitken.
Aplicando (5.8.4) duas vezes, à iteração k e à iteração k + 1, vem que

z − xk+1 = g ′(ξk )(z − xk )


z − xk+2 = g ′(ξk+1 )(z − xk+1 )

Para k suficientemente grande e havendo convergência, podemos dizer que g ′ (ξk ) ≈


g ′(ξk+1 ) ≈ g ′(z) e, por isso, são válidas as seguintes relações

z − xk+1 ≈ c(z − xk )
(5.8.6)
z − xk+2 ≈ c(z − xk+1 )

em que c denota o valor (aproximadamente comum) c ≈ g ′(ξk ) ≈ g ′ (ξk+1) ≈ g ′ (z).


Eliminando z entre as duas relações (5.8.6) obtemos
xk+2 − xk+1
c≈
xk+1 − xk
Esta fórmula permite estimar o valor de c sem necessidade de recorrer a estimativas
de g ′(z), as quais envolveriam o valor do ponto fixo z, que é precisamente a incógnita
5.8 Método do ponto fixo 243

do problema. Introduzindo este valor de c em (5.8.6) e após alguns cálculos simples,


chegamos à expressão
(∆xk )2
z ≈ xk −
∆2 xk
em que ∆ é o operador de diferenças progressivas (recordar a Definição 2.5.1). É claro
que, dado o seu carácter meramente aproximado, não deve esta expressão interpretar-se
como sendo miraculosamente capaz de fornecer o valor exacto do ponto fixo z. Todavia,
é de esperar que a sucessão {x′k } calculada através da fórmula de Aitken

(∆xk )2
x′k = xk − (5.8.7)
∆2 xk
possa convergir melhor que a sucessão original {xk }. Vejamos se assim acontece ou não.
É fácil deduzir que a sucessão dos erros satisfaz a relação
(∆ek )2
e′k = ek − (5.8.8)
∆2 ek
a qual, após algumas manipulações simples produz
ek+2 − e2k+1 /ek
e′k = (5.8.9)
ek+2 /ek − 2ek+1 /ek + 1
O denominador do segundo membro desta expressão, uma vez que admitimos que a
sucessão {xk } converge para z, possui um limite dado por

lim (ek+2 /ek − 2ek+1 /ek + 1) = (c − 1)2


k→∞

Por outro lado, o numerador pode escrever-se na forma

e2
!
ek+2 ek+1
ek+2 − k+1 = − ek+1 (5.8.10)
ek ek+1 ek
o que permite de imediato concluir que tende para zero. Quer isto dizer que a fórmula
de Aitken transforma uma sucessão linearmente convergente {xk } noutra, {x′k }, também
convergente. Falta, contudo, saber, à luz da Definição 5.1.3, quão rápida é a convergência
da sucessão transformada, o que requer uma análise mais cuidada da expressão (5.8.10).
Partindo de um desenvolvimento em série de Taylor, verificamos que
1
ek+1 = z − xk+1 = g(z) − g(xk ) = g ′ (z)(z − xk ) − g ′′ (ξk )(z − xk )2 (5.8.11)
2
Portanto, o erro ek evolui ao longo das iterações de acordo com uma expressão do tipo

ek+1 = (c + dk ek )ek (5.8.12)


244 Equações não-lineares

em que pusemos, por simplicidade de notação, dk = −g ′′ (ξk )/2 com ξk ∈ inter (z, xk ).
Estes valores dk tendem, como se conclui imediatamente, para o valor d = −g ′′ (z)/2.
Introduzindo (5.8.12) em (5.8.10) e após algumas simplificações, chegamos à relação

e2 ek+1 ek+1
 
ek+2 − k+1 = dk+1 − dk e2k
ek ek ek
Passando ao limite, vem que

e2
!
lim ek+2 − k+1 /e2k = c(c − 1)d
k→∞ ek

e, por conseguinte, regressando à expressão (5.8.9),

e′k c 1 g ′(z) ′′
lim = d = − g (z)
k→∞ e2k c−1 2 g ′(z) − 1
Este resultado permite deduzir que

e′k+1 e′k+1 /e2k+1


2
ek+1

lim = lim = c2 = (g ′(z))2
k→∞ e′k k→∞ e′k /e2k ek
Daqui podemos concluir o seguinte: a fórmula de Aitken transforma uma sucessão linear-
mente convergente noutra, também linearmente convergente, mas cuja constante de erro
assimptótico é mais favorável, i.e., c2 em vez de c, ou seja, {x′k } converge melhor que {xk }.
Uma vez que a sucessão transformada {x′k } tem convergência linear, nada impede que
voltemos a aplicar a esta sucessão a transformação de Aitken obtendo-se aquilo que se
designa por transformação de Aitken iterada e que é dada pela fórmula

(∆xk,m )2
xk,m+1 = xk,m − , k, m = 0, 1, . . .
∆2 xk,m

na qual xk,0 ≡ xk .

5.8.4 Método de Steffensen


Como acabámos de ver, o método de iteração de ponto fixo possui em geral convergência
linear, inferior à de outros métodos como, por exemplo, o da secante ou o de Newton.
Contudo, é possível melhorar a sua ordem de convergência recorrendo a uma modificação
simples. Esta modificação, que está esquematizada na Figura 5.8.2, consiste essencial-
mente em combinar o método do ponto fixo com o da secante da seguinte maneira.
Suponhamos que tínhamos calculado pelo método iterativo do ponto fixo os valores
x0 e x1 = g(x0 ). Se fizermos passar pelos pontos (x0 , x1 ) e (x1 , x2 ) uma secante à curva
y = g(x) e a intersectarmos com a recta y = x, o ponto de intersecção está, pelo menos
5.8 Método do ponto fixo 245

y
y=x
g (x 0 )

Figura 5.8.2: Método de x0



Steffensen
g (x 1 )

y = g (x)

x0 x1 x

para a configuração apresentada na Figura 5.8.2, mais perto do ponto fixo z. Exploremos
então esta ideia. A equação da secante é
g(x1 ) − g(x0 )
y = g(x0 ) + m(x − x0 ) com m=
x1 − x0
pelo que a sua intersecção com a recta y = x ocorre no ponto cuja abcissa x′ é dada por
x′ = g(x0 ) + m(x′ − x0 )
Efectuando as operações necessárias, facilmente chegamos à seguinte conclusão
′ (x1 − x0 )2
x = x0 −
x2 − 2x1 + x0
Esta expressão também se pode escrever da seguinte maneira
(∆x0 )2
x′ = x0 − (5.8.13)
∆2 x0
que não é mais do que a fórmula de Aitken aplicada aos valores x0 , x1 , x2 . O método de
Steffensen consiste em aplicar este processo repetidamente e de acordo com o esquema
seguinte (as setas verticais a traço contínuo indicam iterações normais de ponto fixo, e as
setas a traço interrompido, a aplicação da fórmula de Aitken):

x0 0
; x0 1
;  x0 ;k 1 x0 ;k

x1 0
; x1 1
;  x1 ;k 1 x1 ;k

x2 0
; x2 1
;  x2 ;k 1 x2 ;k
246 Equações não-lineares

A pergunta que é natural fazer neste momento é a de saber se a sucessão {x0,k }


converge para o ponto fixo z e, em caso afirmativo, com que ordem de convergência. Para
responder a esta questão vamos reescrever a expressão (5.8.7) na seguinte forma
(g(xk ) − xk )2
xk+1 = xk −
g(g(xk )) − 2g(xk ) + xk
em que, por simplicidade, omitimos o índice inferior 0. Esta expressão leva-nos imediata-
mente a classificar o método de Steffensen como um método iterativo de ponto fixo, cuja
função de iteração é G dada por
(g(x) − x)2
G(x) = x − (5.8.14)
g(g(x)) − 2g(x) + x
Esta função é, como se pode ver, indefinida para x = z. No entanto, uma aplicação da
regra de Cauchy permite obter
G(z) = z
confirmando que z é ponto fixo de G. Ficamos deste modo em condições de aplicar a
teoria do método de ponto fixo para estudar a convergência do método de Steffensen.
Como resultado principal deste estudo, temos o seguinte teorema.
Teorema 5.8.2 Seja z um ponto fixo de g e g ′ (z) 6= 0, 1. Então, z é um ponto fixo
atractivo de G e G′ (z) = 0.
Demonstração Ver OSTROWSKI (1966).
O que é interessante neste teorema é que z não precisa ser um ponto fixo atractivo de
g para haver convergência. Além disso, se existir convergência, esta é supralinear.

5.9 Zeros de polinómios


A obtenção de zeros de polinómios pode ser efectuada recorrendo aos métodos expostos
atrás. Dado que este é um problema que surge com frequência nas aplicações, foram
desenvolvidos alguns algoritmos adaptados especificamente a este tipo de funções. No
entanto, devido ao seu grau de especialização, tais algoritmos não serão abordados aqui,
limitando-nos a estudar neste contexto dois tópicos: o da localização e o da determinação
sucessiva dos zeros de polinómios.
Nesta secção consideraremos apenas polinómios de grau n escritos na forma de potência
simples,
p(x) = an xn + · · · + a1 x + a0 (5.9.1)
onde quer os coeficientes a0 , a1 , . . . , an quer a variável x podem ser complexos. Como
sabemos, um polinómio de grau n tem exactamente n zeros, contando um zero de multi-
plicidade m como m zeros. Além disso, um polinómio de coeficientes reais pode ter zeros
complexos, os quais aparecem neste caso aos pares conjugados.
5.9 Zeros de polinómios 247

5.9.1 Localização dos zeros


Tal como sucede com as demais funções, um bom conhecimento da localização dos zeros é
uma vantagem apreciável no sentido de assegurar uma rápida convergência dos métodos
iterativos, sendo por vezes uma condição determinante. É possível, dada a forma