Você está na página 1de 384

ANÁLISE NUMÉRICA

HEITOR L. G. PINA

Faculdade de Engenharia

Universidade Católica

2007
Conteúdo

Prefácio à segunda edição v

Prefácio à primeira edição vii

Notação xiii

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
2.3.4 Diferenças divididas . . . . . . . . . . . . . . . . . . . . . . . . . . 79
2.3.5 Interpolação inversa . . . . . . . . . . . . . . . . . . . . . . . . . . 84
2.4 Erros de interpolação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
2.4.1 Análise de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2.4.2 Nós de Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
2.5 Interpolação com nós equidistantes . . . . . . . . . . . . . . . . . . . . . . 92
2.5.1 Fórmulas de interpolação . . . . . . . . . . . . . . . . . . . . . . . . 92
2.5.2 Algumas relações entre operadores . . . . . . . . . . . . . . . . . . 98
2.6 Interpolação de Hermite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
2.6.1 Interpolação osculatória . . . . . . . . . . . . . . . . . . . . . . . . 101
2.6.2 Interpolação no plano complexo . . . . . . . . . . . . . . . . . . . . 105
2.7 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
2.7.1 Splines de grau zero . . . . . . . . . . . . . . . . . . . . . . . . . . 110
2.7.2 Splines de grau um . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
2.7.3 Splines quadráticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
2.7.4 Splines cúbicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.7.5 Splines com tensão . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
2.8 Representação de curvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
2.8.1 Representação paramétrica . . . . . . . . . . . . . . . . . . . . . . . 120
2.8.2 Curvas de Bézier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.9 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.10 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

3 Derivação numérica 137


3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
3.2 Derivadas de primeira ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.2.1 Diferenças finitas de primeira ordem . . . . . . . . . . . . . . . . . 140
3.2.2 Diferenças finitas de segunda ordem . . . . . . . . . . . . . . . . . . 142
3.3 Derivadas de segunda ordem . . . . . . . . . . . . . . . . . . . . . . . . . . 143
3.4 Matrizes de derivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Conteúdo vii

3.5 Derivação com splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148


3.6 Influência de erros na função f . . . . . . . . . . . . . . . . . . . . . . . . 148
3.6.1 Influência de perturbações em f . . . . . . . . . . . . . . . . . . . . 148
3.6.2 Influência dos erros de arredondamento . . . . . . . . . . . . . . . . 149
3.7 Extrapolação de Richardson . . . . . . . . . . . . . . . . . . . . . . . . . . 152
3.8 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
3.9 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

4 Integração numérica 159


4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
4.2 Regras básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4.2.1 Dedução das fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . 162
4.2.2 Erros de integração . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.3 Regras com valores das derivadas . . . . . . . . . . . . . . . . . . . . . . . 169
4.4 Regras de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
4.4.1 Dedução das fórmulas . . . . . . . . . . . . . . . . . . . . . . . . . 171
4.4.2 Erros de integração . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
4.4.3 Regras de Gauss com peso . . . . . . . . . . . . . . . . . . . . . . . 174
4.4.4 Regras de Gauss com nós nos extremos do intervalo . . . . . . . . . 178
4.5 Regras compostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
4.5.1 Integração com splines . . . . . . . . . . . . . . . . . . . . . . . . . 184
4.6 Convergência da integração numérica . . . . . . . . . . . . . . . . . . . . . 185
4.7 Integração adaptativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.7.1 Métodos adaptativos . . . . . . . . . . . . . . . . . . . . . . . . . . 187
4.7.2 A fórmula de Euler-Maclaurin . . . . . . . . . . . . . . . . . . . . . 190
4.7.3 Método de Romberg . . . . . . . . . . . . . . . . . . . . . . . . . . 194
4.8 Integrais impróprios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.8.1 Integrandas com singularidades . . . . . . . . . . . . . . . . . . . . 196
4.8.2 Intervalos infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
4.9 Influência dos erros na integranda . . . . . . . . . . . . . . . . . . . . . . . 201
4.10 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
4.11 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

5 Equações não-lineares 210


5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
5.1.1 Raízes e zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
5.1.2 Iterações e convergência . . . . . . . . . . . . . . . . . . . . . . . . 214
5.2 Método da bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.2.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 220
5.2.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 221
5.3 Método da falsa posição . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
viii Conteúdo

5.3.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 224


5.3.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 225
5.4 Método da secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.4.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 227
5.4.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 228
5.5 Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.5.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 231
5.5.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 232
5.6 Método de Muller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
5.7 Utilização de interpolação inversa . . . . . . . . . . . . . . . . . . . . . . . 235
5.8 Método do ponto fixo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
5.8.1 Descrição do método . . . . . . . . . . . . . . . . . . . . . . . . . . 237
5.8.2 Erros e convergência . . . . . . . . . . . . . . . . . . . . . . . . . . 237
5.8.3 Aceleração de Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . 240
5.8.4 Método de Steffensen . . . . . . . . . . . . . . . . . . . . . . . . . . 242
5.9 Zeros de polinómios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
5.9.1 Localização dos zeros . . . . . . . . . . . . . . . . . . . . . . . . . . 245
5.9.2 Determinação de todos os zeros . . . . . . . . . . . . . . . . . . . . 250
5.10 Efeito dos erros de arredondamento . . . . . . . . . . . . . . . . . . . . . . 251
5.11 Critérios de paragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
5.12 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
5.13 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

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


6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
6.1.1 Notação e nomenclatura . . . . . . . . . . . . . . . . . . . . . . . . 269
6.1.2 Operações com matrizes . . . . . . . . . . . . . . . . . . . . . . . . 271
6.1.3 Teoria dos sistemas de equações lineares . . . . . . . . . . . . . . . 275
6.1.4 Sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . 278
6.2 Redução a sistemas triangulares . . . . . . . . . . . . . . . . . . . . . . . . 279
6.3 Método de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
6.4 Factorizações triangulares . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
6.4.1 Factorização LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
6.4.2 Método de Doolittle . . . . . . . . . . . . . . . . . . . . . . . . . . 289
6.4.3 Método de Crout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
6.4.4 Factorização LDU . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
6.5 Escolha de pivô . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
6.5.1 Escolha de pivô no método de Gauss . . . . . . . . . . . . . . . . . 293
6.5.2 Escolha de pivô nos métodos de Doolittle e de Crout . . . . . . . . 299
6.5.3 Equilibragem de matrizes . . . . . . . . . . . . . . . . . . . . . . . 299
6.6 Cálculo da inversa e do determinante . . . . . . . . . . . . . . . . . . . . . 300
Conteúdo ix

6.7 Sistemas com matrizes especiais . . . . . . . . . . . . . . . . . . . . . . . . 302


6.7.1 Matrizes simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
6.7.2 Matrizes simétricas definidas positivas . . . . . . . . . . . . . . . . 305
6.7.3 Matrizes banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
6.7.4 Matrizes tridiagonais. Algoritmo de Thomas . . . . . . . . . . . . . 310
6.7.5 Solução por blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
6.8 Análise de erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
6.8.1 Efeito das perturbações . . . . . . . . . . . . . . . . . . . . . . . . . 314
6.8.2 Efeito dos erros de arredondamento . . . . . . . . . . . . . . . . . . 320
6.9 Refinamento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
6.10 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
6.11 Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

A Espaços lineares 335


A.1 Linearidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
A.2 Bases e dimensão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
A.3 Distâncias, normas e produtos internos . . . . . . . . . . . . . . . . . . . . 340
A.3.1 Normas de vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
A.3.2 Normas de funções . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
A.3.3 Convergência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
A.4 Espaços de funções . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
A.4.1 Espaços de Lebesgue . . . . . . . . . . . . . . . . . . . . . . . . . . 356
A.4.2 Espaços de Sobolev . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
A.5 Operadores lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
A.5.1 Definição e exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . 360
A.5.2 Normas de operadores . . . . . . . . . . . . . . . . . . . . . . . . . 362
A.5.3 Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
A.6 Notas e referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

B Projectos computacionais 368


B.1 Aritmética computacional . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
B.2 Interpolação polinomial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
B.3 Derivação numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
B.4 Integração numérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
B.5 Equações não-lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
B.6 Sistemas de equações lineares: métodos directos . . . . . . . . . . . . . . . 386

Bibliografia 390

Índice 396
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 . 145

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


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

x
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 . . . . . . . . . . . . . . . . . . . . . . . . 189
5.2.1 Método da bissecção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
5.4.1 Método da secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
5.9.1 Contagem das variações de sinal . . . . . . . . . . . . . . . . . . . . . . . . 245
6.1.1 Substituições ascendentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
6.3.1 Condensação de Gauss (sem escolha de pivô) . . . . . . . . . . . . . . . . . 286
6.7.1 Método de Choleski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
6.7.2 Método de Thomas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
6.9.1 Refinamento iterativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

xi
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.

xiii
xiv Notação

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
ψ Ψ
ω Ω
Notação xv

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
xvi Notação

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
Notação xvii

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 = (ex − e−x ) /2)
cosh x Co-seno hiperbólico (cosh x = (ex + e−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

D k 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
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, quantas esposas tem e quantos filhos de cada uma, etc. O número de
objectos (no sentido matemático!) em questão era, pois, muito baixo, e a sua indicação
ou transmissão oral corresponderia a um certo fonema associado eventualmente a gestos
apropriados. Assim, um homem primitivo que possuísse (ou fosse possuído por, conforme
os pontos de vista) quatro esposas daria conhecimento desta sua situação aos seus com-
panheiros 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

1
2 Aritmética computacional

areia, ou a juntar quatro pauzinhos ou pedrinhas e apontar para estes objectos a fim de
que os seus companheiros melhor se inteirassem do problema. Estas pequenas artimanhas
terão sido as primeiras tentativas de construir representações de números.
À medida que a sociedade humana progrediu, as suas exigências relativamente à con-
tagem 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?).
1.1 Introdução 3

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
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
4 Aritmética computacional

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.
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 em valor absoluto; 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 (i.e., e = 0, t =


0 − 127 = −127), d0 = 0 e parte fraccionária f com todos os bits zeros, (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). 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.
Esta disposição pode parecer trivial, mas sucede que há computadores cuja aritmética
1.5 A norma IEEE 754 29

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
número desnormalizado ou, por alguns autores, por número subnormal ). Assim, esta
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

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 duas aproximações para 2: 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.

a) 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

b) Explique detalhadamente onde é que reside a dificuldade.

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

A B
 
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, −15, 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 de 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+ + + ···
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 ??. A Tabela ?? e a Figura ?? 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 − c )  a′  a 
 n   n−1   n−1 
1 a′n an

Observemos que, neste caso,


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

 

 1 −(c − cn )

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 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
78 Interpolação polinomial

de nós, e uma mudança da posição ou do número destes nós altera completamente estes
polinómios. Ora, sucede frequentemente nas aplicações que o número e a localização 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.

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.8)

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.9)
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
2.3 Interpolação de Lagrange 79

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.9) 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.10)

a que corresponde adicionar mais uma equação ao sistema (2.3.9). 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.11)
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.9), 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
80 Interpolação polinomial

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 ]
2.3 Interpolação de Lagrange 81

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.9).
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.12)
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 ]
82 Interpolação polinomial

onde se recorreu a (2.3.12). 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.13)
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.12).


A expressão (2.3.13) é 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.14)
(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.12) 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
2.3 Interpolação de Lagrange 83

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.12).

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 .
84 Interpolação polinomial

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,
2.3 Interpolação de Lagrange 85

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.
86 Interpolação polinomial

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?
2.4 Erros de interpolação 87

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.10) e (2.3.11), 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
88 Interpolação polinomial

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, em 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


2.4 Erros de interpolação 89

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−1 xn−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
90 Interpolação polinomial

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].
2.4 Erros de interpolação 91

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


92 Interpolação polinomial

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) = n
f n+1(ξ)Tn+1 (x)
2 (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.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)


2.5 Interpolação com nós equidistantes 93

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)
∆h f (x) = ∆(∆kh f (x)),
k+1
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)
∇k+1 k
h f (x) = ∇(∇h f (x)), k = 1, 2, . . .

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
94 Interpolação polinomial

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−1 Y
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

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
!
s−k
∆i fk
X
p(x) = (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!
2.5 Interpolação com nós equidistantes 95

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)

É 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
96 Interpolação polinomial

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  
X s
∆s ei = (−1)s−j ei+j
j
j=0

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
2.5 Interpolação com nós equidistantes 97

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
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.11), 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)
98 Interpolação polinomial

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)

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
2.5 Interpolação com nós equidistantes 99

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

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→∞
100 Interpolação polinomial

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 ∆

S = (2I + ∆)−1 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
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
2.6 Interpolação de Hermite 101

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.

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)


102 Interpolação polinomial

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
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.
2.6 Interpolação de Hermite 103

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

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
104 Interpolação polinomial

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

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
2.6 Interpolação de Hermite 105

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, p(x) =
1 1
= 1 + 0(x − 0) + 1(x − 0)(x − 0) − (x − 0)(x − 0)(x − 1) − (x − 0)(x − 0)(x − 1)(x − 2)
4 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 deste exemplo.

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.
O primeiro resultado consiste numa nova e interessante expressão para as diferenças
divididas.
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.
106 Interpolação polinomial

Im z


 zn
 
 z1

Figura 2.6.1: Notação para a interpo-


lação no plano complexo  z0

Re z

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 f (t)
Z
f (z0 ) = dt
2πi Γ t − z0
é verdadeira pelo teorema de Cauchy, pelo que, tendo em atenção que W0 (t) = t − z0 ,
1 f (t)
Z
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
recursiva (2.3.12) 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
"Z #
1 1 f (t) f (t)
Z
= dt − dt
zn+1 − z0 2πi Γ (z − z1 ) · · · (z − zn+1 ) Γ (z − z0 ) · · · (z − zn )

1 1 (z − z0 ) − (z − zn+1 )
Z
= 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)
2.6 Interpolação de Hermite 107

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 Wn (z) f (t)
Z
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 f (t)
Z
f (z) = dt
2πi Γ t−z
podemos, portanto, dizer que

1 f (t) 1 Wn (z) f (t)


Z Z
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 Wn (t) − Wn (z) f (t)


Z
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.
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)
108 Interpolação polinomial

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).

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)
2.7 Splines 109

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
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
110 Interpolação polinomial

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
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)


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 111

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.
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.
112 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

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
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
2.7 Splines 113

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
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.

y
y2 y3
 
y1

Figura 2.7.3: Spline quadrático
(m0 = tan θ0 ) y0 0


x0 x1 x2 x3 x
114 Interpolação polinomial

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
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
2.7 Splines 115

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.

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.49 aponta para um remédio possível.
116 Interpolação polinomial

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
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.
2.7 Splines 117

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
X
S (x)e (x) dx =
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

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
118 Interpolação polinomial

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

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:
2.7 Splines 119

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]

• 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 .

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-
120 Interpolação polinomial

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 (x) = 0, x ∈ Ωi (2.7.21)
d4 x d2 x
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
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.
2.8 Representação de curvas 121

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,
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
122 Interpolação polinomial

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

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 .
2.9 Notas e referências 123

P2
P1 P1
P3 P3

P0 P0
P2

Figura 2.8.1: Cúbicas de Bézier

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. 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.

4. 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).
124 Interpolação polinomial

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.
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.
2.10 Problemas 125

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?


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):


126 Interpolação polinomial

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. Demonstre que os polinómios de Lagrange satisfazem a seguinte relação


n
X
pk (xi )Li (x) = pk (x), k = 0, 1, . . . , n
i=0

e, em particular,
n
X n
X
Li (x) = 1, (xi )k Li (x) = xk
i=0 i=0

16. a) Com base nos resultados do problema anterior, deduza a representação seguinte para o
polinómio interpolador
Pn yk
k=0
(x − xk )Wn′ (xk )
pn (x) = P
n 1
k=0
(x − xk )Wn′ (xk )
a qual é conhecida como fórmula baricêntrica. É capaz de descortinar a razão desta
designação?
Nota: Verifica-se que esta fórmula baricêntrica oferece maior robustez face aos erros de
arredondamento e daí o seu interesse para valores de n elevados.
2.10 Problemas 127

b) Particularize a 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
(k) k
X P (xi ) 1
f (x) = (−1) 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).

d) Demonstre que
n
1 X 1
=
Wn (x) Wn′ (xi )(x − xi )
i=0
128 Interpolação polinomial

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.
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.
2.10 Problemas 129

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.

31. a) A partir da forma de Aitken-Neville (2.3.14), 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
130 Interpolação polinomial

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 pois 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
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 131

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:


132 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 133

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?


134 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 135

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.
136 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

137
138 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 139

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.


140 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 141

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.
142 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 143

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)


144 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 145

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 h f
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 ]
146 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 147

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.
148 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 − xi−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 149

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.
150 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 151

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.
152 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 153

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.
154 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 155

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
156 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 157

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
 
2 ′′ 2 3 11 4 5 5
h f (x0 ) = ∆ − ∆ + ∆ − ∆ + · · · 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 ≈

2
ai+1/2 ui+1 − (ai+1/2 + ai−1/2 )ui + ai−1/2 ui−1
h

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
158 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) − pn(m) 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;

159
160 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 161

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 )
162 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 163

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.
164 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 165

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
166 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 167

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.
168 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 169

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.
170 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
interessante (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 171

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.
172 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 173

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 proprieda-
des serão estudadas no Capítulo ??. De momento basta-nos referir que o polinómio de
Legendre 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 )
174 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 175

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.
176 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 177

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.
178 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 179

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 ??). 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
180 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 181

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.
182 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 183

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
184 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 185

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
186 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 187

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, de um modo mais ou
menos automático, seleccionem 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
188 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 189

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
190 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 191

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
192 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 193

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
Sn = 12 + 22 + 32 + · · · = 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) i 1 h (3) i
− f (xn+1 ) − f (1) (x0 ) + f (xn+1 ) − f (3) (x0 )
12 720
1 h (5) i
− f (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
194 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 195

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.
196 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 197

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
198 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 199

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
200 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
−1/2
= x (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 dos erros na integranda 201

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 dos 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.
202 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 203

É 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.
204 Integração numérica

b) Calcule 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
n+1
Eh (x )= 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 coordenada 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 205

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
206 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(f ) = 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 207

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
208 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 209

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
e2 ≤ A2i δi2
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.

210
5.1 Introdução 211

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)
212 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 213

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.


214 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 215

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.
216 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 217

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
218 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 219

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)
220 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,


∞ ∞ ∞
i j i j
∆i ≤ A1/(1−p) M p ≤ A1/(1−p) M p M p −p
X X X
|xk − xj | ≤
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 221

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
222 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 223

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
224 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 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 225

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.
226 Equações não-lineares

y = f (x)
y f (bk )

f (bk )=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 227

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
228 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 229

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
230 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 231

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 p
= c, com c = Ap−1
k→∞|ek |
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 )
232 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 ??, 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 233

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
234 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 235

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)
236 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 237

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 )


238 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 239

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
240 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 241

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)


242 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→∞ e2
k 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 243

y
y=x
g (x0 )

Figura 5.8.2: Método de x0



Steffensen
g (x1 )

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 ?1 ;k x0 ;k

x1 0
; x1 1
;  x1 ?1 ;k x1 ;k

x2 0
; x2 1
;  x2 ?1 ;k x2 ;k
244 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 245

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 particu-
lar dos polinómios, obter sem grande dificuldade alguma indicação respeitante à natureza
e localização dos zeros deste tipo de funções. Nesta subsecção vamos passar em revista
alguns processos expeditos capazes de fornecer informação relevante.
Para tal, consideremos um polinómio p escrito sob a forma de potências simples (5.9.1)
e designemos por V o número de variações de sinal dos respectivos coeficientes não nulos
(ver o Algoritmo 5.9.1 para uma especificação operacional deste conceito), por N+ , o
número de zeros reais positivos, e por N− , o número de zeros reais negativos.

Teorema 5.9.1 (Regras dos sinais de Descartes) Seja p um polinómio real. Então,

a) o número N+ de zeros reais positivos de p não excede o número V de variações de


sinal dos seus coeficientes não nulos, e o valor V − N+ é par;

b) o número N− de zeros reais negativos de p não excede o número V de variações de


sinal dos coeficientes não nulos do polinómio q(x) = p(−x), e o valor V − N− é par.

Demonstração A demonstração da primeira parte é deixada para o Problema 5.13.54


como caso particular da regra de Budan-Fourier a introduzir mais adiante. Para demons-
trar a segunda parte basta considerar que, se z for um zero de p, então

0 = p(z) = p(−(−z)) = q(−z)

pelo que concluímos que −z é um zero de q e aplicar a q a primeira parte do teorema.


Ilustremos a aplicação desta regra com um exemplo.

Exemplo 5.9.1 Determinar a natureza dos zeros do polinómio p(x) = x4 − x3 + 2x2 + 1.

O número V de variações de sinal dos coeficientes deste polinómio é V = 2. Então, pela


regra dos sinais de Descartes I, temos que

N+ ≤ 2 e V − N+ = par

Algoritmo 5.9.1 Contagem das variações de sinal


V =0 (inicialização)
for k = n − 1 step − 1 to 0 do
if ak 6= 0 ∧ sign ak 6= sign ak+1 then V = V + 1 fi
od
246 Equações não-lineares

pelo que N+ = 2 ou N+ = 0. O número V de variações de sinal do polinómio


q(x) = p(−x) = x4 + x3 + 2x2 + 1
é V = 0, donde se tira que N− = 0, ou seja, o polinómio p não tem zeros negativos.
Resumindo: o polinómio p tem 2 zeros positivos e 2 zeros complexos conjugados, ou 4 zeros
complexos conjugados dois a dois.

Estas regras de Descartes, embora bastante úteis, são de valor mais qualitativo do que
quantitativo. Todavia, uma modificação simples permite reforçar este último aspecto.
Escolhendo c para centro do polinómio p, podemos escrever que
p(x) = a′n (x − c)n + · · · + a′1 (x − c) + a′0
em que os novos coeficientes a′k podem ser calculados pelo algoritmo de Horner (relembrar
a Secção 2.2). Fazendo a transformação de variáveis t = x − c, ficamos com o polinómio
p(x) = q(t) = a′n tn + · · · + a′1 t + a′0
ao qual se podem aplicar as regras de Descartes dos sinais. Ficamos assim a saber quantos
zeros reais de p são superiores e quantos são inferiores a c. Como o valor deste centro está
à nossa disposição, é possível proceder, com algum jeito, a uma localização razoável dos
zeros reais deste polinómio.
A próxima regra pode considerar-se uma generalização das regras de Descartes.
Teorema 5.9.2 (Regra de Budan-Fourier) Sejam p um polinómio real e Va e Vb os
números de variação de sinal das sucessões
p(a), p′ (a), p′′ (a), . . . , p(n) (a)
p(b), p′ (b), p′′ (b), . . . , p(n) (b)
respectivamente, com p(a) 6= 0 e p(b) 6= 0. Então, o número N de zeros reais do polinómio
p no intervalo (a, b) não excede o valor Va − Vb , e (Va − Vb ) − N é par.
Demonstração Consultar as referências.
Exemplo 5.9.2 Determinar o número de zeros do polinómio p(x) = x3 − x + 2 no inter-
valo (0, 1).
Temos neste caso que
p′ (x) = 3x2 − 1, p′′ (x) = 6x, p′′′ (x) = 6
e, portanto, com a = 0 e b = 1,
p(0) = 2, p′ (0) = −1, p′′ (0) = 0, p′′′ (0) = 6, Va = 2
p(1) = 2, p′ (1) = 2, p′′ (1) = 6, p′′′ (1) = 6, Vb = 0
Logo, Va − Vb = 2. Pela regra de Budan-Fourier resulta que o número N de zeros reais deste
polinómio no intervalo (0, 1) é igual a 2 ou a 0.
5.9 Zeros de polinómios 247

Os próximos teoremas dão achegas para a localização dos zeros caracterizadas pela
facilidade de aplicação.

Teorema 5.9.3 (Regra de Cauchy) Seja p um polinómio com a0 6= 0 e S e T dois


polinómios, associados a p e definidos por

S(x) = |an |xn − |an−1 |xn−1 − · · · − |a1 |x − |a0 |


T (x) = |an |xn + |an−1 |xn−1 + · · · + |a1 |x − |a0 |

Designemos o zero positivo de S por σ, e o de T , por τ . Então, todos os zeros z de p


verificam
τ ≤ |z| ≤ σ
i.e., estão situados na coroa circular do plano complexo definida pelas circunferências de
raios interior τ e exterior σ centradas na origem.

Demonstração A regra de Descartes garante que o polinómio S tem um zero positivo,


o mesmo se passando com T . Por outro lado, T (x) ≥ S(x), ∀x ≥ 0, donde τ ≤ σ, pelo
que esta parte do enunciado faz sentido.
Se z for um zero de p, podemos afirmar que
n−1
an z n = − ak z k
X

k=0

Tomando os módulos de ambos os membros desta expressão (não esquecer que estamos a
trabalhar no plano complexo) e majorando, vem que
n−1 n−1


n n k
|ak ||z|k
X X
|an z | = |an ||z| = ak z ≤ (5.9.2)

k=0 k=0

ou seja, S(|z|) ≤ 0, o que só pode acontecer se |z| ≤ σ, como facilmente se pode verificar.
Por outro lado, também é verdade que
n
ak z k
X
−a0 =
k=1

donde, tomando módulos e majorando, resulta que


n n

X
k
|ak ||z|k
X
|a0 | =
ak z ≤

k=1 k=1

Esta expressão mostra que T (|z|) ≥ 0, o que implica que |z| ≥ τ (porquê?).
É claro que esta regra só pode ser útil se os valores de τ e σ forem fáceis de determinar
ou, pelo menos, se minorantes de τ e majorantes de σ puderem ser obtidos de forma
expedita. O próximo teorema contribui para este objectivo.
248 Equações não-lineares

Teorema 5.9.4 Nas hipóteses do teorema anterior,


−1
ak ak

1 + max ≤ τ ≤ |z| ≤ σ ≤ 1 + max
1≤k≤n a0 0≤k≤n−1 an
Demonstração Seja z um zero qualquer do polinómio p e vejamos em primeiro lugar
a desigualdade da direita. Se |z| ≤ 1, o teorema é trivialmente verdadeiro e nada há para
demonstrar. Por isso consideremos o caso em que |z| > 1. Como z é um zero de p, decorre
de (5.9.2) que
n−1
X |ak | |ak | n−1
|z|n ≤ |z|k ≤ max |z|k
X

k=0 |an | 0≤k≤n−1 |a |


n k=0

Pela fórmula da série geométrica vem que


n−1
|z|n − 1
|z|k =
X

k=0 |z| − 1
Introduzindo este resultado na expressão anterior, chegamos a
|ak | |z|n − 1
|z|n ≤ max
0≤k≤n−1 |an | |z| − 1

ou seja,
|z|n − 1
ak ak

|z| − 1 ≤ max n
≤ max
an
0≤k≤n−1 |z| 0≤k≤n−1 an

já que, por hipótese, |z| > 1. Daqui decorre imediatamente a validade da desigualdade
da direita do enunciado.
Para demonstrar a desigualdade esquerda basta trabalhar com o polinómio recíproco
de p (ver o Problema 5.13.52).
Exemplo 5.9.3 Aplicar a regra de Cauchy ao polinómio p(x) = x4 − 3x2 − x + 5.
Neste caso
S(x) = x4 − 3x2 − x − 5, T (x) = x4 + 3x2 + x − 5
Pelo Teorema 5.9.4, obtemos 5/8 ≤ τ ≤ |z| ≤ σ ≤ 6. Contudo, é evidente que o zero positivo
de T é τ = 1. Por conseguinte, os zeros de p estão situados na coroa circular 1 ≤ |z| ≤ 6.
Um teorema semelhante ao anterior, dizendo respeito apenas aos zeros reais, é o se-
guinte.
Teorema 5.9.5 Seja p um polinómio real cujos coeficientes satisfazem as condições
an > 0, an−1 ≥ 0, ,..., am+1 ≥ 0, am < 0
i.e., am é o primeiro coeficiente negativo na sequência {an , an−1 , . . . , a0 }. Então, os zeros
reais de p são majorados por
1/(n−m)
ak
z≤ 1 + max
a <0
k an
5.9 Zeros de polinómios 249

Demonstração A demonstração é semelhante à do teorema anterior. Seja z um zero


real do polinómio p. Se z ≤ 1, o teorema é trivialmente verdadeiro. Suponhamos então
que z > 1. Neste caso, tendo em atenção as hipóteses do teorema, podemos escrever que
n−1 n−1 n−1
ak k X ak X ak
zn = − zk − zk
X
z =−
a
k=0 n
a
ak <0 n a
ak >0 n
n−1 m
ak k ak X

zk
X
≤− z ≤ max

ak <0 an an k=0
ak <0

ak z m+1 − 1

≤ max
a <0
k an z−1
Daqui deduzimos que são válidas as relações
ak m+1

z n (z − 1) ≤ max (z − 1)
ak <0 an
ak 1 ak
 
n −(m+1)
z (z − 1)z ≤ max 1 − ≤ max
a <0k an z m+1 a <0
k an
ak

n−m n−m−1 n−m−1
(z − 1) = (z − 1)(z − 1) ≤ (z − 1)z ≤ max
a <0
k an
A conclusão do teorema segue-se imediatamente.
A regra seguinte delimita uma região do plano complexo onde está situado pelo menos
um zero e torna possível estimar erros.
Teorema 5.9.6 (Regra de Lehmer-Schur) O polinómio p tem pelo menos um zero
situado no círculo no plano complexo centrado na origem e de raio r dado por
1/n
a0 a0

r = min{r1 , r2 } com r1 = n , r2 = (5.9.3)
a1 an

Demonstração Consultar as referências.


Exemplo 5.9.4 Aplicar a regra de Lehmer-Schur ao polinómio p(x) = 2x3 + 5x2 − x − 1
e deduzir um majorante para o erro do zero aproximado z̃ = 0.48.
A expressão (5.9.3) produz os valores
r1 = 3, r2 = (1/2)1/3 , r = (1/2)1/3 ≈ 0.79370

Então, este polinómio possui pelo menos um zero localizado no círculo de raio r = (1/2)1/3
e centrado na origem.
A transformação de variáveis t = x − z̃ permite, de modo semelhante ao invocado atrás,
trabalhar com um círculo centrado num ponto z̃ qualquer do plano complexo. Efectuando os
cálculos (recorrendo, por exemplo, ao algoritmo de Horner) obtemos
q(t) = p(x + z̃) = 2t3 + 7.88t2 + 5.1824t − 0.106816
250 Equações não-lineares

Aplicando a regra de Lehmer-Schur ao polinómio q, ficamos a saber que existe pelo menos
um zero z de p tal que
|z − z̃| ≤ 0.061834
É fácil ver que p tem um único zero real em (0, r) e que este é precisamente z = 1/2. A esti-
mativa obtida pode considerar-se razoável quando comparada com o erro efectivo sobretudo
se tivermos em atenção o facto de nem sequer ter sido necessário saber qual foi o método que
produziu a aproximação!

5.9.2 Determinação de todos os zeros


A determinação de todos os zeros de um polinómio é naturalmente um problema mais
exigente do que a obtenção de um certo zero localizado numa dada região do plano
complexo. Por isso vamos aqui abordar algumas das dificuldades que surgem e descrever
as técnicas geralmente utilizadas para as vencer.
Suponhamos que havíamos obtido o zero z1 do polinómio p. Relembrando o Teorema
2.2.2, podemos escrever que
p(x) = (x − z1 )q(x) (5.9.4)
onde q é um polinómio de grau n − 1, o qual, se z1 for um zero simples de p, não tem
este valor como zero. Deste modo, para encontrar os restantes zeros podemos passar a
trabalhar com q em vez de p. Esta técnica costuma ser conhecida por redução ou deflação
do polinómio p.
Como a obtenção dos coeficientes do polinómio reduzido ou deflacionado q é um pro-
cesso sujeito a erros de arredondamento, estes vão repercutir-se na precisão com que são
calculados os restantes zeros z2 , z3 , . . .. Em polinómios de grau elevado, esta acumulação
de erros pode redundar em catástrofe. Para minimizar este efeito é aconselhável trabalhar
com o polinómio
p(x)
q̃(x) = (5.9.5)
x − z1
em vez de q. É claro que em aritmética de precisão infinita q e q̃ são exactamente o
mesmo polinómio, mas os erros de arredondamento em (5.9.5) dizem respeito apenas aos
envolvidos no cálculo de p e de mais uma subtracção e divisão e não na determinação dos
n coeficientes de q.
Para apreciar a diferença entre estes dois processos, vejamos como se reflecte a técnica
consubstanciada na expressão (5.9.5) no contexto do método de Newton. Como vimos na
Subsecção 5.5.1,
p(xk )
hk = − ′ (5.9.6)
p (xk )
e, portanto, após determinação do zero z1 ,
q(xk ) q̃(xk )
hk = − ou hk = − (5.9.7)
q ′ (xk ) q̃ ′ (xk )
5.10 Efeito dos erros de arredondamento 251

Esta última expressão é, como dissemos, preferível. Derivando q vem, após algumas
manipulações simples, que
q ′ (x) p′ (x) 1
= −
q(x) p(x) x − z1
Introduzindo este resultado em (5.9.7), obtemos
1 1 p′ (xk )
= −
hk xk − z1 p(xk )
É possível, e deixa-se como exercício, deduzir a seguinte expressão, válida após obtenção
dos m zeros z1 , z2 , . . . , zm ,
m
1 X 1 p′ (xk )
= −
hk i=1 xk − zi p(xk )
Como vemos, apenas o polinómio original p e a sua derivada p′ figuram nesta expressão.
Um outro problema para que convém estar alertado resulta da extrema sensibilidade
dos zeros de polinómios de grau elevado a pequenas perturbações dos coeficientes (ver o
Problema 5.13.59). Uma técnica que reduz este efeito consiste em determinar os zeros
por ordem crescente do seu valor absoluto, cumulativamente com o processo de deflação
exposto acima.

5.10 Efeito dos erros de arredondamento


A função f cujos zeros se pretendem obter é calculada em ponto flutuante e, portanto, o
seu valor vem contaminado por erros de arredondamento cujo efeito convém estudar. Em
aritmética de precisão finita a função que efectivamente se está a utilizar é f˜ dada por
f˜(x) = f (x) + δ(x)
em que δ(x) representa o erro de arredondamento (ver a Figura 5.10.1). O zero z de f e
o zero z̃ de f˜ estão relacionados da seguinte maneira
f˜(z̃) = 0 = f (z̃) + δ(z̃) = f ′ (ξ)(z̃ − z) + δ(z̃)
com ξ ∈ inter (z, z̃) e, portanto,
|δ(z̃)|
|z − z̃| = (5.10.1)
|f ′ (ξ)|
Admitindo que os erros de arredondamento são limitados, e que o zero z é simples, pode-
mos dizer que
|δ(z̃)| ≤ ǫ e 0 < M1 ≤ |f ′(ξ)|
donde, introduzindo estas relações em (5.10.1), concluí mos que
ǫ
|z − z̃| ≤ (5.10.2)
M1
252 Equações não-lineares

y = f˜(x)

Figura 5.10.1: Efeito de


perturbações na determi- y = f (x)
nação do zero

• •
z x

Esta expressão mostra que, se M1 for muito pequeno, a imprecisão na determinação do


zero devida a erros de arredondamento pode ser muito elevada.
Este efeito é tanto mais acentuado quanto maior for a multiplicidade do zero. De
facto, repetindo para zeros de multiplicidade m o raciocínio acabado de desenvolver (ter
em atenção o Teorema 5.1.1), concluímos que
!1/m
ǫm!
|z − z̃| ≤ com 0 < Mm ≤ |f (m) (ξ)| (5.10.3)
Mm

O expoente 1/m nesta expressão produz um aumento considerável na estimativa |z − z̃|


quando comparada com o caso dos zeros simples, o que está, aliás, de acordo com as
dificuldades sentidas na prática ao tentar determinar zeros múltiplos com precisão idêntica
à dos zeros simples. Concretizemos o que se acaba de dizer com um exemplo.

Exemplo 5.10.1 Sensibilidade dos zeros múltiplos aos erros de arredondamento.

Suponhamos que f é calculada em F P (2, 24, 8, A) com um erro da ordem da unidade de


arredondamento u deste sistema (ǫ ≈ u = (.6)10−7 , segundo o Exemplo 1.4.3). Se z for um
zero simples e se, para fixar ideias, M1 ≥ 1, de acordo com (5.10.3) temos que

|z − z̃| ≤ (.6)10−7

No entanto, se z for um zero duplo e se, ainda para fixar ideias, M2 ≥ 1, passamos a ter
1/2
|z − z̃| ≤ 2 × (.6)10−7 ≈ (0.35)10−3

A potencial perda de precisão no caso de o zero ser duplo é notória.


5.11 Critérios de paragem 253

5.11 Critérios de paragem


Um dos problemas que é preciso resolver ao empregar algoritmos iterativos, como os que
descrevemos neste capítulo, é o de saber quando se devem terminar as iterações. Se
os cálculos forem realizados manualmente, temos alguma possibilidade de ir verificando
durante as iterações a forma como estas decorrem e daí concluir se os valores que estamos
a obter são suficientemente bons ou não. Na implementação em computador esta forma
de proceder nem sempre é viável ou, mesmo, desejável, pelo que há necessidade de dispor
de critérios de paragem com um certo grau de automatismo mas que sejam ao mesmo
tempo seguros. Nesta secção vamos abordar de forma breve alguns dos critérios mais
utilizados na prática.
A situação ideal seria usar um critério um baseado num majorante realista E, digamos,
do erro produzido pelo método utilizado. Então, para obter o zero z com um erro absoluto
menor que um valor estipulado e, bastaria levar o processo iterativo até à iteração n para
a qual a condição
|en | ≡ |z − xn | ≤ E < e (5.11.1)
se verificasse. Vejamos um exemplo.

Exemplo 5.11.1 Paragem das iterações no método de Newton.

Como vimos no Exemplo 5.5.1, um majorante do erro pode ser dado por

1 n max |f ′′ (x)|
E= |M e0 |2 com M=
M 2 min |f ′ (x)|

em que o máximo e o mínimo nesta última expressão são tomados num intervalo [a, b] que
previamente se verificou conter o zero em causa. Tomando a estimativa inicial x0 também
neste intervalo, é lícito dizer que |e0 | ≤ |b − a| e, portanto,

1 n
E= |M (b − a)|2 < e
M
Estipulado e, podemos extrair desta relação um minorante para o número de iterações que
devem ser efectuadas.

Embora teoricamente correcto, este critério exige informações sobre o comportamento


da função f que são muitas vezes difíceis de obter a priori. Daí a necessidade de recorrer
a outros critérios, porventura menos rigorosos, mas mais expeditos.
Uma das técnicas mais populares para terminar o processo iterativo consiste em testar
a diferença entre dois valores consecutivos xn−1 e xn e compará-la com uma tolerância τ
especificada pelo utilizador. Concretamente, se

|xn − xn−1 | < τ (5.11.2)


254 Equações não-lineares

então o processo iterativo é parado na iteração n. Em linguagem corrente isto significa


que as iterações são interrompidas quando o ‘ganho’ por iteração estiver abaixo do valor
τ considerado ‘compensador’.
Uma variante desta técnica, que tem a vantagem de ser indiferente à escala dos números
x0 , x1 , . . . , xn , é a seguinte
|xn − xn−1 | < τ ′ |xn | (5.11.3)
Os valores dos parâmetros τ e τ ′ devem ser fixados com cuidado, tendo nomeadamente
em atenção que nem (5.11.2) nem (5.11.3) garantem em geral que o erro absoluto esteja
abaixo de τ , ou o relativo abaixo de τ ′ (ter presente, no entanto, o resultado do Problema
5.13.62).
Estes dois critérios aparecem por vezes combinados da seguinte maneira

|xn − xn−1 | < τ + τ ′ |xn | (5.11.4)

Se |xn | for pequeno, prevalece o critério da tolerância absoluta. Se |xn | for grande, é o
critério da tolerância relativa que domina.
Como para um método iterativo convergente se deve ter que limn→∞ f (xn ) = 0, um
critério possível baseado na aplicação do teorema do valor médio é o seguinte. Conside-
remos
|f (z) − f (xn )| = |f (xn )| = |f ′(ξ)||z − xn |, ξ ∈ inter (z, x)
Se m for um minorante, e M um majorante, de |f ′(x)| num intervalo apropriado, e z for
um zero simples, inferimos que
|f (xn )| |f (xn )|
≤ |en | ≤ (5.11.5)
M m
A Figura 5.11.1 esclarece o significado geométrico destas desigualdades. Então, se pre-
tendermos que |en | < e, devemos parar as iterações quando se verificar que |f (xn )| < me.
O caso de zeros múltiplos é tratado no Problema 5.13.63 e pelo resultado aí obtido se
confirma os riscos que se correm quando se toma simplesmente o valor de |f (xn )| como
critério de paragem.
Quando se está muito próximo do zero, os valores de f (xn ) são controlados pelos erros
de arredondamento, assumindo por isso um carácter errático que torna problemática
a aplicação dos critérios baseados em valores da função como o expresso por (5.11.5),
sobretudo se formos muito exigentes na fixação do valor de e. Uma salvaguarda contra
este tipo de efeito é testar se

|xn − xn−1 | > |xn−1 − xn−2 | (5.11.6)

Uma resposta afirmativa a este teste geralmente indica que não nos estamos a aproximar
do zero e, portanto, não compensa continuar as iterações. É claro que este critério só
deve ser aplicado quando se estiver já muito próximo do zero e sempre em conjunção com
outro ou outros dos critérios expostos.
5.12 Notas e referências 255

f (xn )

Figura 5.11.1: Signifi-


cado geométrico das re-
lações (5.11.5)
m z M

xn x

y = f (x)

Os métodos iterativos estudados podem por-se sob a forma xn+1 = xn + hn , em que


hn representa a correcção a somar ao valor antigo para obter o novo valor da aproximação
ao zero. Os valores destas correcções tenderão a ser cada vez mais pequenos no decorrer
das iterações, e devido aos erros de arredondamento existirá um valor de n a partir do
qual
f l(xn + hn ) = fl (xn ) (5.11.7)
ou seja, a correcção está abaixo da precisão da aritmética de ponto flutuante. Nestas
circunstâncias, não faz sentido prosseguir o processo iterativo. Costuma dizer-se que
neste caso se atingiu a precisão plena do computador. Este é um critério que pode ser
computacionalmente dispendioso, pelo que deve ser usado com alguma prudência.
Mostra a experiência que qualquer destes critérios deve ser complementado com um
contador para evitar que o número de iterações atinja valores demasiado elevados (infinito
é demasiado elevado!). Impede-se assim que, por erros de programação, de dados ou
outros, o computador entre em ciclo infinito. Serve ainda como um alerta de que qualquer
coisa não correu como previsto (a equação é mais difícil do que se pensava, o zero é
múltiplo, a estimativa inicial foi mal escolhida, etc.).

5.12 Notas e referências


1. Nas referências HOUSEHOLDER (1970), OSTROWSKI (1966), RABINOWITZ (1970) e
TRAUB (1964) podem encontrar-se exposições mais aprofundadas dos métodos de solução
de equações não-lineares, especialmente no que diz respeito ao estudo da convergência.

2. A sucessão (5.4.8) teve origem num problema de reprodução de coelhos posto a Fibonacci
que adoptou o seguinte modelo: cada casal de coelhos leva um ano para atingir a maturidade
e reproduzir-se e os coelhos nunca morrem. Assim, indicando por I um casal imaturo e por
M um casal maduro e começando com um único casal imaturo tem-se a seguinte sucessão
256 Equações não-lineares

de populações:
I
M
MI
M IM
M IM M I
···
Não é difícil agora deduzir a expressão (5.4.8). Notemos que a população na geração k se
pode obter simplesmente procedendo às substituições I → M e M → M I na geração k − 1,
ou, em alternativa, apensando à população na geração k − 1 a população da geração k − 2.

3. O número p = (1 + 5)/2 ≈ 1.618, que é a ordem de convergência do método da se-
cante, é conhecido pela designação de proporção áurea ou proporção divina, pois goza de
propriedades curiosas e é um dos números ‘mágicos’. Os arquitectos dos templos gregos e,
mais tarde, os dos templos góticos, recorriam com frequência a figuras geométricas envol-
vendo este número. Consideravam nomeadamente que os rectângulos mais ‘perfeitos’ ou
‘harmoniosos’ eram aqueles cujos lados estavam nesta proporção, e faziam amplo uso destes
rectângulos nos seus projectos. GHYKA (1977) e HUNTLEY (1970) descrevem inúmeras
ocorrências desta proporção, não só na arquitectura e na pintura, mas também nas formas
de seres vivos, nomeadamente no corpo humano! Os Problemas 5.13.30 e 5.13.31 revelam
algumas propriedades mais prosaicas da proporção áurea.
4. A fórmula de Aitken é a base de um processo de aceleração da convergência de sucessões,
i.e., permite transformar uma sucessão {xk } noutra, {x′k }, que converge mais rapidamente.
A transformação de Euler, introduzida no Capítulo 2, a extrapolação de Richardson, estu-
dada no Capítulo 3, e o método de Romberg, abordado no Capítulo 4, podem também ser
analisados sob esta perspectiva. Estes e outros processos de aceleração da convergência são
tratados com grande generalidade em BREZINSKI (1977), em BREZINSKI and ZAGLIA
(1991) e em WIMP (1981).
5. A localização dos zeros de polinómios, ou seja, a ‘geometria dos zeros’ de polinómios, é
desenvolvida com profundidade em HENRICI (1974) e em SENDOV et al. (1994).
6. No Capítulo ?? faz-se uma breve referência ao método de Bairstow para obter zeros conju-
gados de polinómios reais, evitando, assim, ter que recorrer a aritmética complexa.

5.13 Problemas
1. Identifique o tipo de convergência (Q ou R) e os parâmetros das seguintes sucessões:
a) ek = 1/k; b) ek = 1/kα com α < 1; c) ek = exp(−αk ) com α > 1.
2. Mostre que a sucessão xk = 1/(3−k + 3k ) converge para zero Q-linearmente e determine a
constante M .
5.13 Problemas 257

3. Mostre, que a sucessão definida por


(
2−k se k for par
xk =
−3−k se k for ímpar

possui convergência-R (linear) mas não possui convergência-Q.

4. Seja ek uma sucessão dada por ek+1 = g(ek ) em que g é uma função suficientemente diferen-
ciável que verifica g(k) (0) = 0 para k = 0, 1, . . . , p − 1 e g(p) (0) 6= 0. Demonstre que, nestas
circunstâncias, a ordem de convergência de {ek } é precisamente p.

5. Verifique que a função f (x) = x3 − 2 exp(−x) tem um zero no intervalo [0, 1]. Calcule este
zero com três dígitos correctos utilizando os métodos da bissecção, da falsa posição e da
secante.

6. a) Se |C| < 1, mostre que as proposições


xk+1 − x xk+2 − xk+1
lim = C, lim =C
k→∞ xk − x k→∞ xk+1 − xk

são equivalentes.
b) Interprete, em termos práticos, este resultado.
c) Prove, recorrendo ao contra-exemplo seguinte, que o resultado acima não pode ser gene-
ralizado ao caso |C| = 1:
(
2/(3k) se k for par
xk =
2/(3k − 1) se k for ímpar

7. Como reage o método da bissecção no caso de zeros múltiplos? Considere os casos de zeros
de multiplicidade par e de multiplicidade ímpar.

8. Verifique que a função f (x) = exp(2x) − exp(−x) − 2 tem um zero no intervalo [0, 1]. Calcule
este zero com quatro dígitos correctos pelo método de Newton.

9. Nos primeiros modelos de computadores digitais a divisão não era efectuada por hardware
mas sim por software. Assim, a divisão de a por b com a, b > 0 era efectuada multiplicando a
pelo inverso de b, pelo que o problema se transferia para o cálculo do inverso de um número.

a) Mostre que o método de Newton fornece o seguinte processo iterativo para o cálculo de
1/b
xk+1 = xk (2 − bxk ), k = 0, 1, . . .

b) Prove que os erros evoluem de acordo com a relação interessante bek+1 = (bek )2 . Use
este resultado para justificar a afirmação de que o número de dígitos correctos duplica de
iteração para iteração.
c) Calcule por este processo 1/7 com 6 decimais exactos.
258 Equações não-lineares

d) Quantas iterações são necessárias para inverter um número representável em formato


simples IEEE 754 admitindo que a estimativa inicial tem apenas o primeiro bit da mantissa
correcto?

10. a) Aplicando o método de Newton, demonstre que a raiz quadrada de um número a se pode
obter iterativamente pela fórmula
 
1 a
xk+1 = xk + , k = 0, 1, . . .
2 xk
Nota: Esta fórmula pode ser obtida por intuição. Suponhamos que xk é uma estimativa

por defeito de a. Então, a/xk é uma estimativa por excesso. Como ‘no meio é que
está a virtude’ (bissecção!), o resultado acima segue-se imediatamente. É claro que para
provar que esta fórmula funciona é preciso algo mais que a intuição.
b) Mostre que se x0 for racional, então os xk são todos racionais. Aplique
√ este resultado ao
caso a = 2, x0 = 1. Nota: Estas sucessivas aproximações racionais de 2 eram conhecidas
dos antigos Babilónios! Que processo utilizaram para as obter é que não sabemos mas
pode ter sido o raciocínio intuitivo acima descrito.
c) Como se pode estabelecer uma estimativa x0 razoável? Sugestão: Exprimir o número
a na forma a = Ab2q , em que b é a base da representação usada no computador, e q é
um inteiro escolhido de modo a que A < b. O problema fica assim reduzido a calcular a
raiz quadrada do número A no intervalo [0, b] onde é mais fácil produzir boas estimativas
iniciais (recorrendo, por exemplo, a interpolação linear).
d) Prove que o erro relativo ǫk tem a seguinte evolução:

ǫ2k
ǫk+1 =
2(1 + ǫk )
Mostre que esta expressão dá sentido rigoroso à afirmação de que o número de dígitos
exactos deste método tende a duplicar duma iteração para a seguinte. Nota: Ter presente

que xk = a(1 + ǫk ).

11. A fórmula iterativa do Problema 5.13.10 recorre a divisões que, em alguns computadores,
podem ser operações mais lentas que as multiplicações (ver o Problema 5.13.9). Mostre
que uma maneira de evitar este inconveniente é determinar o zero de f (x) = 1/x2 − c com
c = 1/a. Discuta as propriedades de convergência de ambos os métodos e tente concluir qual
deles é, de facto, o mais rápido.

12. Pretende-se calcular o valor de e sabendo que esta constante é a solução de ln x = 1 e que
2 ≤ e ≤ 3. Aplique o método de Newton para obter e com 8 dígitos correctos.

13. Supondo que f é continuamente diferenciável tantas vezes quantas as necessárias e que z é
um zero de multiplicidade m de f , demonstre que:

a) f (x) = (x − z)m g(x), com g(z) 6= 0;


b) z é um zero simples de f 1/m ;
5.13 Problemas 259

c) z é um zero simples de f /f ′ .

14. a) Demonstre que se z for um zero duplo de f , então o método de Newton converge line-
armente, e a constante de erro assimptótico é c = 1/2. Sugestão: Proceder de modo
semelhante ao usado na Subsecção 5.5.2, ou, em alternativa, recorrer à ideia avançada no
Problema 5.13.26.
b) Mostre que, nas condições da alínea anterior, a seguinte fórmula iterativa permite recu-
perar a convergência quadrática

f (xk )
xk+1 = xk − 2
f ′ (xk )

Sugestão: Provar que z é um zero simples de (f (x))1/2 .


c) Generalize os resultados anteriores mostrando que, se z for um zero de multiplicidade m,
então a constante de erro assimptótico é c = (m − 1)/m, e a fórmula, devida a Schröder,

f (xk )
xk+1 = xk − m
f ′ (xk )

permite recuperar a convergência quadrática.


d) Todavia, a multiplicidade m de um zero não é geralmente conhecida a priori. Mostre que
a sucessão {xk } obtida pelo método de Newton é tal que
xk+1 − xk m−1
lim =
k→∞ xk − xk−1 m

o que permite obter um valor aproximado para m.

15. Seja z um zero de multiplicidade m de f ∈ C ∞ .

a) Demonstre que
ln |f (x)|
lim φ(x) = m, com φ(x) =
x→z ln |f (x)/f ′ (x)|
Nota: Talvez ajude recordar o resultado do problema 5.13.13.
b) Como se pode usar esta propriedade para estimar m ao longo do cálculo iterativo de z?

16. Obtenha, por interpolação inversa e usando um polinómio interpolador de segundo grau, a
seguinte fórmula iterativa de Olver
2
f ′′ (xk )

f (xk ) f (xk )
xk+1 = xk − −
f ′ (xk ) 2f ′ (xk ) f ′ (xk )

Mostre que a expressão (5.7.3) se pode interpretar como uma versão discreta desta fórmula.

17. Mostre que o método da secante pode ser obtido a partir do método de Newton aproximando
a derivada f ′ (x) por diferenças divididas de primeira ordem.
260 Equações não-lineares

18. Mostre que, se aproximarmos a derivada f ′ (xk ) na fórmula do método de Newton por difer-
enças finitas de segunda ordem centradas em xk−1 , se chega à fórmula de iteração

xk+1 = xk − f (xk )/Dh (xk−1 )


Dh (xk−1 ) = f [xk , xk−1 ] + f [xk−1 , xk−2 ] − f [xk , xk−2 ]

Nota: Pode demonstrar-se que a ordem de convergência deste método é ≈ 1.84, idêntica,
portanto, à do método de Muller e à do método consubstanciado na expressão (5.7.3).

19. Usando interpolação inversa com um polinómio de grau um e osculador, deduza a fórmula
do método de Newton para a solução da equação f (x) = 0.

20. Seja z um zero simples da função f , e xk , uma sua aproximação.

a) Aplicando o teorema do valor médio, deduza que

f (xk )
z = xk −
f ′ (ξk )

em que ξk ∈ inter (z, xk ), mas cuja localização exacta é desconhecida.


b) Podem construir-se diversos métodos iterativos consoante o tipo de aproximação adop-
tado para f ′ (ξk ). Assim, designando por Dk a aproximação de f ′ (ξk ), mostre que
Dk = f [xk , xk−1 ] produz o método da secante e Dk = f ′ (xk ) produz o de Newton.
c) Determine as fórmulas de iteração nos seguintes casos: i) Dk = f ′ ((xk + x̃k )/2), em que
x̃k é o valor que se obtém efectuando uma iteração do método de Newton a partir de xk ;
ii) 1/f ′ (ξk ) é aproximado pela média geométrica de 1/f ′ (xk ) e 1/f ′ (x̃k ).
d) Explique geometricamente estes métodos.
e) Pode demonstrar-se (ver TRAUB (1964)) que estes dois últimos métodos têm uma ordem
de convergência igual a 3. Quer isto dizer que são mais rápidos que os métodos da secante,
de Muller ou de Newton?

21. Os dois novos métodos introduzidos no problema anterior, embora com uma ordem de con-
vergência elevada, requerem o cálculo da derivada da função f , o que pode constituir uma
desvantagem. Uma forma de tornear a dificuldade consiste em fazer

f (xk )
Dk = f [xk , x̃k ], com x̃k = xk −
Dk−1

em que x̃k é um valor auxiliar. É ainda necessário estabelecer o valor de D−1 para ini-
ciar o processo iterativo, o que se pode fazer recorrendo a diferenças finitas. A ordem de
convergência (ver TRAUB (1964)) é ≈ 2.41. Interprete geometricamente este método.

22. Determine, com cinco dígitos correctos, o zero positivo da equação x3 −x2 −x−1 = 0 usando
o método de ponto fixo.
5.13 Problemas 261

23. a) A equação x4 − 4x3 + x− 1 = 0 pode ser reformulada de várias maneiras para se acomodar
ao método de ponto fixo. Das seguintes reformulações, quais as que podem ser usadas
para obter a menor raiz positiva desta equação?
1) x = (1 + 4x3 − x)1/4 ; 2) x = −x4 + 4x3 + 1; 3) x = 4 − 1/x2 + 1/x3
Nota: Para se responder à questão posta é necessário calcular primeiro um valor aproxi-
mado, mesmo que seja relativamente grosseiro, da raiz.
b) Obtenha a referida raiz com 5 decimais correctos.
24. Considere a equação f (x) = x3 + 10x − 1 = 0.

a) Mostre que possui apenas um zero real positivo;


b) Demonstre que este zero pode ser obtido pelo método iterativo do ponto fixo com g(x) =
(1 − x3 )/10;
c) Calcule-o com quatro decimais exactos.

25. a) Mostre que o polinómio p(x) = x4 − x2 − 2x − 1 tem um único zero positivo.


b) Obtenha uma aproximação deste zero pelo método do ponto fixo efectuando 3 iterações.
c) Obtenha um majorante para o erro cometido.
26. Mostre que o método de Newton para obter raízes de f (x) = 0 se pode formular como um
método de ponto fixo com
x = g(x) e g(x) = x − f (x)/f ′ (x)
Demonstre, a partir do teorema da convergência do método de ponto fixo, que o método
de Newton converge quadraticamente numa vizinhança suficientemente pequena duma raiz
simples.
27. Generalize o resultado do problema anterior do seguinte modo: se no método de ponto fixo
se verificar que g′ (z) = 0 e g′′ (z) 6= 0, então a convergência é quadrática numa vizinhança
suficientemente pequena do ponto fixo z, e a constante de erro assimptótico é c = 12 |g′′ (z)|.
28. Seja f ∈ C 1 [a, b] uma função crescente e tal que f (a) < 0 e f (b) > 0. Mostre que o zero
desta função neste intervalo se pode obter pelo método iterativo do ponto fixo com
f (x)
g(x) = x −
M
em que M é uma constante apropriada. Determine quais os valores admissíveis para M .
29. Determine o valor da expressão (2 + (2 + (2 + · · · )1/2 )1/2 )1/2 . Sugestão: Utilizar o método
de ponto fixo.
30. Considere a seguinte sucessão, em que a ≥ 1,
1 1 1
x1 = , x2 = , x3 = , etc.
a 1 1
a+ a+
a 1
a+
a
262 Equações não-lineares

Calcule x = limn→∞ xn . Qual é este valor quando a = 1?

31. Mostre que


1
(1 + (1 + (1 + · · · )1/2 )1/2 )1/2 = 1 +
1
1+
1
1+
1 + ···
32. a) Mostre que a sucessão xk+1 = 1 + 1/xk , k = 1, 2, . . . e x1 = 1 é convergente e determine
o seu limite.
b) Demonstre que os xk são números racionais e que xk+1 = γk+1 /γk em que os γk são os
números de Fibonacci.
c) Comente a afirmação de que a sucessão de Fibonacci é ‘quase uma progressão geométrica’.
Nota: Este problema revela uma conexão interessante entre a proporção áurea e os números
de Fibonacci.

33. Propõe-se calcular a (a > 0) usando o método de ponto fixo com g(x) = 2/( xa + x1 ).

a) Prove que a é, de facto, um ponto fixo atractivo deste método e que a respectiva
convergência é quadrática.

b) Obtenha, com 3 iterações, o valor aproximado de 2.
c) Estime o erro.

34. a) Prove que o erro no método de ponto fixo pode ser majorado por

M
|ek | ≤ |xk − xk−1 |
1−M

com g ∈ C 1 [a, b] e maxx∈[a,b] |g′ (x)| ≤ M < 1, em que [a, b] é um intervalo que contém as
iterações.
b) A partir desta expressão mostre que, se M ≤ 1/2, o critério de paragem das iterações
|xk − xk−1 | < τ garante que o erro também verifica |ek | < τ .
c) Aproveite este resultado para explicar por que não é correcto em geral dizer que, se
|xk − xk−1 | for pequeno, então xk está próximo da solução exacta.
√ √
35. a) Resolva pelo método do ponto fixo a equação x + x − 1 = 2.
b) Aplique a fórmula de Aitken à sucessão obtida e compare a convergência nos dois casos.

36. a) Mostre que a fórmula de Aitken (5.8.7) se pode escrever na forma alternativa

∆xk
x′k = xk +
1 − ∆xk+1 /∆xk

a qual permite evidenciar o termo ∆xk+1 /∆xk que é útil conhecer (ver o Problema
5.13.37).
5.13 Problemas 263

b) Prove que, se xk for convergente para z, e se existirem reais α e β com α < 1 < β tais
que ∆xk+1 /∆xk 6∈ [α, β] a partir de um k suficientemente grande (o que garante que o
denominador da fórmula de Aitken não se anula nestas condições), então limk→∞ x′k = z.
c) Prove ainda que, se forem válidas as condições

xk+1 − z ∆xk+1
lim = lim = r 6= 1
k→∞ xk − z k→∞ ∆xk

então a sucessão {x′k } converge mais rapidamente que a sucessão {xk }, i.e., o processo de
Aitken é acelerador.

37. Considere sucessões {xk } dadas (e não necessariamente produzidas por qualquer método
iterativo) da forma
xk = x + ar k com r 6= 0, 1
onde os valores de x, a e r não são conhecidos.

a) Prove que, para sucessões desta forma, ∆xk+1 /∆xk = constante e (∆xk )2 /∆2 xk =
constante, o que fornece a base para um teste prático;
b) Mostre que, nestas condições, a aplicação da fórmula de Aitken produz x′k = x, i.e., uma
só aplicação desta fórmula permite obter o valor de x.
c) Porque é necessário excluir os valores r = 0 e r = 1?
d) Discuta separadamente o caso |r| < 1, em que a sucessão converge para o limite x, e os
casos |r| > 1 e r = −1 em que a sucessão diverge, dizendo-se então que x é o antilimite
da sucessão.
e) Prove que as sucessões do tipo considerado neste problema são as únicas que tornam
possível o resultado da alínea b).

38. a) Aplique os resultados do problema anterior à sucessão constituída pelas somas parciais
do desenvolvimento de Maclaurin da função f (x) = 1/(1 + x) e explique o sucedido;
b) (Problema 1.9.57 revisitado) Acelere a convergência do desenvolvimento de Maclaurin da
função ln(1 + x) para calcular ln 2 com a precisão indicada recorrendo à transformação
de Aitken;
c) Como se compara este método com a alternativa proposta na alínea b) do referido pro-
blema?

39. a) Mostre que a seguinte sucessão converge linearmente (Q ou R?):


 
sin k
xk = 0.8 + xk−1 , x0 = 1
k

b) Acelere a respectiva convergência recorrendo à transformação de Aitken.


c) Verifique se os resultados obtidos estão de acordo com a teoria.
264 Equações não-lineares

40. a) Considere a sucessão {xk } convergente para z e {x′k } a sucessão obtida pela transformação
baseada na média aritmética
1
x′k = (xk + xk+1 )
2
a qual garante a convergência para o mesmo limite. Mostre que esta transformação só é
aceleradora, i.e., {x′k } converge mais rapidamente que {xk }, das sucessões que verifiquem
a condição, bastante restritiva,

xk+1 − z
lim = −1
k→∞ xk − z

b) Dê exemplos de uma sucessão que verifica esta condição e de uma que não verifica.
c) Aplique a transformação de modo a confirmar numericamente as alíneas anteriores.
d) Repita a alínea a) para o caso mais geral da transformação

x′k = axk + bxk+1 , a+b =1

41. A equação x2 = a com a > 0 pode escrever-se na forma x = g(x) com g(x) = a/x.

a) Demonstre que o método iterativo do ponto fixo é divergente para qualquer estimativa
inicial x0 .
b) Aplique o método de Steffensen e verifique que se obtém convergência, tomando por
exemplo a = 2 e efectuando as iterações necessárias para conseguir quatro decimais
exactos.
c) Mostre que a fórmula iterativa de Steffensen é neste caso idêntica à obtida pelo método
de Newton.

42. a) Mostre que a equação 2/3 x + 1/(3x2 ) = 5 possui duas raízes reais positivas;
b) Escreva-a de modo a poder utilizar o método do ponto fixo e discuta as estimativas
iniciais a empregar para obter as referidas raízes;
c) Calcule uma delas com 4 decimais exactos.

43. Pretende-se calcular a raiz positiva da equação x = −2 ln(a+ bx) com a > b > 0 pelo método
do ponto fixo. Determine condições suficientes a satisfazer pelos parâmetros a e b de modo
a garantir a convergência.

44. Determine a natureza e a localização dos zeros dos seguintes polinómios:


a) p(x) = x4 − x2 + 2x − 1; b) p(x) = x5 + x4 − x + 2

45. Mostre que o polinómio real p(x) = x3 + ax2 − x + 1 possui sempre um zero real negativo
qualquer que seja o valor do parâmetro a. Para que valores de a é que as outros zeros são
reais e estão no intervalo (0, 1)?
5.13 Problemas 265

46. Mostre que o polinómio


n−1
X
p(x) = xn − c xk , n ≥ 2, c > 1/n
k=0

tem um único zero positivo z e que max(1, c) < z < 1 + c.

47. Determine quantos zeros positivos e quantos negativos possui o polinómio p(x) = x5 + 2x3 +
3x2 − 4. Obtenha um minorante e um majorante para os zeros reais.

48. Mostre que o polinómio p = x4 + 2x2 + 6x + a, com a 6= 0 e real, não tem zeros imaginários
puros, i.e., zeros da forma z = i ξ com ξ real.

49. Quantos zeros do polinómio p(x) = x4 − 2x3 − x2 − 2x + 1 existem no intervalo [0, 2]?

50. Considere polinómios da família p = x3 − (ax − 1)2 com a ≥ 2.

a) Prove que os zeros de qualquer polinómio desta família são reais e positivos.
b) Mostre que o menor zero está localizado no intervalo (0, 1/a).
c) Determine, para o caso a = 4 e por um método à sua escolha, uma aproximação a este
zero com um erro absoluto inferior a 10−3 .

51. Prove que a solução positiva da equação x(x + 1)(x + 2) · · · (x + n) = 1 é menor que 1/n!.

52. Considere o polinómio

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

e o polinómio ‘recíproco’ q dado por

q(x) = xn p(1/x) = an + an−1 x1 + · · · + a1 xn−1 + a0 xn

ou seja, o polinómio que se obtém tomando os coeficientes por ordem inversa. Demonstre
que se z 6= 0 for um zero de p, então 1/z é um zero de q. Por outras palavras, os zeros do
polinómio recíproco são os recíprocos dos zeros do polinómio original.

53. Seja p um polinómio cujos zeros satisfazem 0 < |z| ≤ r, ou seja, estão no disco do plano
complexo centrado na origem e de raio r.

a) Mostre que os zeros do polinómio p∗ (x) = p(rx) são zi∗ = zi /r;


b) Concluia que os zeros de p∗ estão no disco do plano complexo centrado na origem e de
raio 1.

54. Considere um polinómio real p de grau n e seja σ um majorante dos seus zeros reais, i.e.,
z ≤ σ para qualquer zero real z de p. Demonstre a regra de Descartes para os zeros positivos
aplicando a regra de Budan-Fourier ao intervalo [0, b] com b > σ e suficientemente grande.
Sugestão: Tomar, sem perda de generalidade, p como mónico e notar que p(i) (b) > 0, para
i = 0, . . . , n.
266 Equações não-lineares

55. Verifique se o polinómio p = x4 + 9x3 + 18x2 + 2x + 6 possui algum zero localizado no círculo
do plano complexo |z − 1/2| ≤ 2.

56. Um polinómio real p = an xn + an−1 xn−1 + a1 x + a0 diz-se estável se todos os seus zeros
possuírem parte real negativa.

a) Mostre que é condição necessária para um polinómio real p ser estável que os seus coe-
ficientes sejam todos diferentes de zero e tenham todos o mesmo sinal de an . Sugestão:
Factorizar p considerando os zeros complexos agrupados aos pares conjugados.
b) Verifique que esta condição é suficiente para n ≤ 2;
c) Produza um polinómio de grau 3 que mostre que esta condição não é geralmente suficiente.

57. Determine o valor das quantidades qk = z1k + z2k + z3k para k = 1, 2 em que os zi são os zeros
do polinómio p(x) = x3 + 2x − 5. Nota: Certas funções dos zeros de polinómios, como é o
caso da soma de potências, podem ser calculadas sem necessidade de obter explicitamente
os valores destes zeros.

58. Repita o estudo do processo de deflação da Subsecção 5.9.2 para o caso de zeros múltiplos.

59. Pretende-se determinar a sensibilidade de um zero simples z do polinómio p relativamente


a perturbações dos seus coeficientes. Assim, considere o polinómio p̃ obtido de p por uma
pequena perturbação do coeficiente am o qual passará a ser ãm .

a) Mostre que o efeito desta perturbação desloca o zero z para z̃ de acordo com a expressão
aproximada
(am − ãm )z m

|z − z̃| ≈

p′ (z)

b) Em face deste resultado diga quais são os zeros mais sensíveis: os de menor ou os de
maior valor absoluto?
c) Qual deve ser então a ordem a adoptar para a determinação dos sucessivos zeros usando
um processo de deflação?
d) Quais os coeficientes do polinómio cujas perturbações produzem maior efeito?

60. Os coeficientes ak (incluindo mesmo aqueles que são nulos) do polinómio p(x) = x20 − 1 são
perturbados por quantidades ǫk que satisfazem a relação |ǫk | ≤ ǫ ≪ 1. Mostre que os zeros
deste polinómio são bem condicionados.

61. Um número real z diz-se algébrico se for um zero de um polinómio com coeficientes inteiros,
i.e., se p(z) = 0 com p(x) = an xn + an1 xn−1 + · · · + a1 x + a0 em que n ≥ 1, os ak são inteiros
e an 6= 0. Um número real que não seja algébrico diz-se transcendente. O problema consiste
em demonstrar que existem números transcendentes (o que foi feito pela primeira vez em
1844 por Liouville).
5.13 Problemas 267

a) Seja x = N/D um número racional, portanto com N e D inteiros, e D ≥ 1. Demonstre


que, se z for algébrico,

z = N/D ou |z − N/D| ≥ c/Dn , c>0

Sugestão: Recorrer à expressão (5.11.4).


b) Demonstre que x = 10−1! + 10−2! + 10−3! + · · · é um número transcendente. Sugestão:
Raciocinar por redução ao absurdo, i.e., supor que x é algébrico e chegar a uma con-
tradição. Tomar N = 10m! (10−1! + 10−2! + 10−3! + · · · + 10−m! ) e D = 10m! com m inteiro
positivo arbitrário.

62. a) Demonstre que se {xk } for uma sucessão que converge supralinearmente para z, então

|xk+1 − xk |
lim =1
k→∞ |xk − z|

b) Qual é o interesse deste resultado do ponto de vista dum critério de paragem de iterações?
c) Existirá algum resultado semelhante para sucessões que convergem linearmente? Su-
gestão: Considerar a sucessão que resulta da aplicação do método de Newton à solução
de f (x) = x2 = 0.

63. Mostre que a generalização da expressão (5.11.5) ao caso de um zero de multiplicidade k


(inteiro) é
k!|f (xn )| 1/k k!|f (xn )| 1/k
   
≤ |en | ≤
Mk mk
em que mk é um minorante, e Mk um majorante, de |f (k) |, num intervalo apropriado.

But yet because the discovery of these roots is very use-


full I shall lay down rules whereby they bee many times
discovered at first sight, & almost always without much
labor.
– I. Newton (1642-1727)
The Mathematical Papers of Isaac Newton, vol. I, D. T. White-
side (ed.)
Capítulo 6

Sistemas de equações lineares:


métodos directos

Neste capítulo vamos iniciar o estudo de métodos para resolver sistemas de equações
lineares. Se, por um lado, a linearidade constitui um factor simplificador relativamente
ao que vimos no Capítulo 5, por outro, a circunstância de se tratar de sistemas induz
dificuldades acrescidas.

6.1 Introdução
Os sistemas de equações lineares podem escrever-se na forma geral,

a11 x1 + a12 x2 + · · · + a1n xn = b1


a21 x1 + a22 x2 + · · · + a2n xn = b2
.. ..
. .
an1 x1 + an2 x2 + · · · + ann xn = bn

onde x1 , x2 , . . . , xn são as incógnitas; a11 , a12 , . . . , ann , os coeficientes, e b1 , b2 , . . . , bn os


segundos membros do sistema de equações. Estes sistemas podem ainda ser escritos em
notação matricial, frequentemente mais vantajosa,

Ax = b (6.1.1)

em que
a11 a12 · · · a1n x1 b1
     

 a21 a22 · · · a2n   x2   b2 


     
A =  ..
 .. .. ,
..   ..  ,
x=  b=
 .. 

 . . . .   .  .
an1 an2 · · · ann xn bn

268
6.1 Introdução 269

Assim, A é a matriz dos coeficientes; x, o vector coluna das incógnitas; e b, o vector


coluna do segundo membro. A matriz A e os vectores coluna x e b serão considerados
reais, não obstante muito do que se vai dizer neste capítulo ser generalizável ao campo
complexo sem grande dificuldade.
A resolução de sistemas de equações lineares é um dos problemas que surge com mais
frequência nas aplicações, pelo que há todo o interesse em dispor de métodos eficazes de
solução, sobretudo quando a dimensão n do sistema for grande. De facto, este tipo de
problema constituiu uma das motivações que estiveram na origem do desenvolvimento
dos computadores digitais, tendo até alguns modelos primitivos destas máquinas sido
concebidos especificamente para este efeito. Hoje a solução de sistemas com milhares de
equações é uma tarefa relativamente vulgar.
Os métodos de solução de sistemas de equações lineares costumam ser classificados em
duas categorias: os métodos directos e os métodos iterativos. Um método diz-se directo
se permitir obter a solução de qualquer sistema com um número finito de operações arit-
méticas, e iterativo, no caso contrário. Por esta definição parece que os métodos iterativos
estão à partida colocados em desvantagem perante os métodos directos, pois, não sendo
possível efectuar um número infinito de operações, aqueles apenas poderão proporcionar
uma solução aproximada. Tal conclusão é, contudo, precipitada e os métodos iterativos
possuem características que os podem tornar atractivos. A escolha do método a utilizar
requer um conhecimento aprofundado das várias opções disponíveis e uma ponderação
cuidadosa das respectivas vantagens e desvantagens face ao problema concreto que se
pretende resolver. Atendendo à variedade de situações, é possível dar apenas algumas
orientações genéricas, o que faremos ao longo deste capítulo e também do Capítulo ??.

6.1.1 Notação e nomenclatura


É conveniente rever alguma notação e nomenclatura relativas a matrizes.
Definição 6.1.1 Uma matriz A de dimensão m × n é um quadro de números aij , com
i = 1, . . . , m e j = 1, . . . , n. Estes números são designados por elementos da matriz e
costumam dispor-se em m linhas e n colunas, da seguinte maneira

a11 a12 ··· a1n


 

 a21

a22 ··· a2n 

A=
 .. .. .. .. 
 . . . . 

am1 am2 · · · amn

Assim, aij é o elemento situado na intersecção da linha i com a coluna j. Uma matriz de
dimensão m × 1 designa-se por vector coluna, e uma matriz de dimensão 1 × n designa-se
por vector linha. Se m = n, i.e., o número de linhas for igual ao número de colunas, a
matriz diz-se quadrada, e a este número dá-se a designação de ordem da matriz. Quando
m 6= n a matriz diz-se rectangular.
270 Sistemas de equações lineares: métodos directos

Representaremos por Rm×n o conjunto das matrizes reais, e por Cm×n o conjunto das
matrizes complexas, com m linhas e n colunas.
Há uma certa toponímia nas matrizes que é útil recordar. Assim, os elementos da
forma aii dizem-se elementos diagonais da matriz A, e formam a diagonal principal ou
simplesmente diagonal de A. Os elementos que se dispõem paralelamente à diagonal for-
mam as codiagonais, que se dividem em supradiagonais (as que estão acima da diagonal)
e subdiagonais (as que estão abaixo da diagonal).
Em muitos e importantes casos os elementos das matrizes apresentam uma certa es-
trutura ou padrão a que corresponde uma designação mais ou menos sugestiva. Vamos
apresentar alguns dos mais vulgares.

Definição 6.1.2 Uma matriz diz-se:

• Nula se todos os seus elementos forem nulos, sendo denotada por 0.

• Trapezoidal superior se aij = 0, ∀ i > j, e trapezoidal inferior se aij = 0, ∀ i < j.

• Triangular superior se for simultaneamente quadrada e trapezoidal superior. Identica-


mente, uma matriz triangular inferior é uma matriz quadrada trapezoidal inferior.

• Diagonal se for simultaneamente triangular superior e inferior, ou seja, uma matriz


quadrada cujos elementos fora da diagonal principal são todos nulos. Por vezes empre-
garemos a notação
D = diag(d1 , d2, . . . , dn )

para indicar uma matriz diagonal de ordem n cujos elementos na diagonal são d1 , d2, . . .,
dn . A matriz identidade I é uma matriz diagonal cujos elementos diagonais são todos
iguais a 1, i.e., I = diag(1, 1, . . . , 1).

• simétrica se for de ordem n e

aij = aji , i, j = 1, 2, . . . , n

i.e., quaisquer dois elementos em posição simétrica relativamente á diagonal principal


são iguais, e anti-simétrica se

aij = −aji , i, j = 1, 2, . . . , n

• Positiva ( não-negativa) se aij > 0 (aij ≥ 0) para todos os valores de i, j, e este facto é
denotado por A > 0 (A ≥ 0); negativa ( não-positiva) se aij < 0 (aij ≤ 0) para todos
os valores de i, j, e este facto é denotado por A < 0 (A ≤ 0).
6.1 Introdução 271

6.1.2 Operações com matrizes


A definição de matriz como um mero quadro de números é a mais pobre definição que se
pode dar. A compensar esta pobreza está o facto de que é possível operar com matrizes.
Vamos, pois, rever de modo sucinto as principais operações com matrizes.

Definição 6.1.3 Duas matrizes A e B dizem-se iguais se possuírem as mesmas di-


mensões m × n e os seus elementos homólogos forem iguais, i.e., aij = bij , para i =
1, . . . , m, j = 1, . . . , n.

Definição 6.1.4 A soma de duas matrizes A e B, ambas de dimensão m × n, é a matriz


C = A + B de dimensão m × n definida por cij = aij + bij , para i = 1, . . . , m, j =
1, . . . , n.

A soma de matrizes é comutativa e associativa, i.e.,

A+B=B+A
(A + B) + C = A + (B + C)

Definição 6.1.5 O produto de um escalar α por uma matriz A de dimensão m × n


é uma matriz B = αA também de dimensão m × n definida por bij = αaij , para i =
1, . . . , m, j = 1, . . . , n.

Sejam A e B matrizes de dimensão m × n, e α e β escalares. Então, o produto acabado


de definir goza das seguintes propriedades:

(αβ)A = α(βA)
(α + β)A = αA + βA
α(A + B) = αA + αB
1A = A
0A = 0

As Definições 6.1.4 e 6.1.5 tornam o conjunto das matrizes um espaço linear , ou seja,
para quaisquer matrizes A, B ∈ Rm×n e quaisquer números α, β ∈ R temos que a matriz
αA + βB ∈ Rm×n . Daqui resulta, como facilmente se pode ver, que todas as combinações
lineares de matrizes em Rm×n produzem matrizes em Rm×n . Esta propriedade mantém-se
válida se trabalharmos em Cm×n em vez de Rm×n .
A operação de multiplicação de matrizes que vamos definir de seguida não tem paralelo
no campo dos escalares.

Definição 6.1.6 Seja A ∈ Rm×p e B ∈ Rp×n . Então, o produto de A por B é a matriz


C = AB dada por cij = pk=1 aik bkj , para i = 1, . . . , m, j = 1, . . . , n.
P
272 Sistemas de equações lineares: métodos directos

Chamamos a atenção para o facto de que esta definição impõe que o número de colunas
de A seja igual ao número de linhas de B. Matrizes com esta propriedade costumam
designar-se por conformes à multiplicação. Cada elemento cij de C é obtido somando os
produtos dos elementos da linha i de A pelos respectivos homólogos da coluna j de B.
Sejam A, B, C matrizes, e α um escalar. Então, sempre que as operações fizerem
sentido, são válidas as seguintes propriedades,

(AB)C = A(BC)
A(B + C) = AB + AC
(A + B)C = AC + BC
α(AB) = (αA)B

É importante ter presente que o produto de matrizes não é comutativo, i.e., AB não é
necessariamente igual a BA.

Definição 6.1.7 A transposta de uma matriz A ∈ Rm×n é uma matriz B ∈ Rn×m cujos
elementos são dados por

bij = aji , i = 1, . . . , n, j = 1, . . . , m

Usaremos a notação AT para indicar a transposta de A.

A matriz transposta goza de algumas propriedades que assinalamos,

(AT )T = A
(A + B)T = AT + B T
(αA)T = αAT
(AB)T = B T AT

Resulta imediatamente desta definição que uma matriz simétrica é igual à sua transposta,
e uma matriz anti-simétrica é igual á simétrica da sua transposta.

Definição 6.1.8 Uma matriz A ∈ Rn×n tal que AT A = AAT = I diz-se ortogonal.

Vamos introduzir agora o importante conceito de inversa de uma matriz.

Definição 6.1.9 Se existir uma matriz X tal que AX = XA = I, diz-se então que X é
a inversa da matriz A, a qual se denota por A−1 .

Pela definição resulta claro que só as matrizes quadradas podem aspirar a possuir inversa.
No próximo teorema compilamos algumas das propriedades da inversa que utilizaremos
mais frequentemente.
6.1 Introdução 273

Ax

|θ| < π/2

θ x
Figura 6.1.1: Interpretação geométrica de a
matriz A ser definida positiva •

Teorema 6.1.1 Seja A uma matriz de ordem n, e A−1 a sua inversa. Então, são ver-
dadeiras as seguintes proposições:
1) A inversa, caso exista, é única;
2) (A−1 )−1 = A;
3) (AT )−1 = (A−1 )T ;
4) Se A e B forem matrizes de ordem n invertíveis, então AB é invertível, e (AB)−1 =
B−1 A−1 .
Demonstração Ver STRANG (1980).
Algumas classes de matrizes muito frequentes nas aplicações são introduzida na próx-
ima definição.
Definição 6.1.10 Uma matriz A ∈ Rn×n diz-se:
• definida positiva se xAx > 0, ∀x 6= 0;
• semidefinida positiva se xAx ≥ 0;
• definida negativa se xAx < 0, ∀x 6= 0;
• semidefinida negativa se xAx ≤ 0.
O facto de uma matriz ser definida positiva tem um significado geométrico simples, que
é o de o ângulo entre o vector x e o seu transformado Ax ser sempre inferior (em valor
absoluto) a π/2, conforme mostra a Figura 6.1.1.
Uma outra classe de matrizes que teremos oportunidade de encontrar algumas vezes
é a que a definição seguinte introduz.
Definição 6.1.11 Uma matriz A ∈ Rn×n diz-se de diagonal dominante por linhas se
n
X
|aii | ≥ |aij | (6.1.2)
j=1
j6=i
274 Sistemas de equações lineares: métodos directos

para i = 1, . . . , n. Analogamente, diz-se que A é uma matriz de diagonal dominante por


colunas se
n
X
|aii | ≥ |aji | (6.1.3)
j=1
j6=i

para i = 1, . . . , n. Se as expressões acima forem válidas com o sinal ≥ substituído por >,
então a matriz A diz-se de diagonal estritamente dominante por linhas ou por colunas,
conforme o caso.

Matrizes particionadas
Por vezes há vantagem em considerar uma matriz A particionada em submatrizes,
ou, por outras palavras, considerar que os elementos de A são, eles próprios, matrizes.
Esclareçamos este conceito com um exemplo.

Exemplo 6.1.1 Partição de uma matriz.

Consideremos a matriz A ∈ R4×5 ,


 
4 1 | 0 1 6
 3 1 | −1 0 −1
 
A=
− − −|− − − − 

2 6 | 3 4 1 
7 2 | 2 5 3

Uma partição possível é a indicada pelos traços interrompidos. Neste caso, a partição será
indicada da seguinte forma  
A11 A12
A=
A21 A22
em que A11 , A12 , A21 , e A22 são as submatrizes
   
4 1 0 1 6
A11 = , A12 =
3 1 −1 0 −1
   
2 6 3 4 1
A21 = , A22 =
7 2 2 5 3

É claro que a forma de partição a utilizar é ditada pela finalidade pretendida e não é inerente
à matriz em consideração.

As vantagens do particionamento de matrizes radicam fundamentalmente nos seguintes


aspectos: notação mais compacta e a possibilidade de operar com as submatrizes da
partição em bloco.
6.1 Introdução 275

Um modo natural de particionar uma matriz é a de tomar para submatrizes as res-


pectivas linhas ou colunas. Seja A ∈ Rm×n e designemos por aT i · a sua linha i, e por a · j
a sua coluna j. Então, esta matriz pode ser particionada nas duas formas seguintes
aT
 

 T 
 a2 ·   
 ..  ,
A=  A = a·1 a·2 · · · a·n
 . 
aT

Convém reconhecer que ai · ∈ Rn×1 e que a · j ∈ Rm×1 . Quando não houver lugar a
ambiguidade, usaremos a notação aj para indicar a coluna j da matriz A.
Quando se considera a matriz A particionada por colunas, a posmultiplicação de A
por um vector x adquire um novo e importante significado. De facto,
x1
 

 x2 

 
Ax = a · 1 a · 2 · · · a · n  .. 

 = a · 1 x1 + a · 2 x2 + · · · + a · n xn
 . 
xn
o que significa que Ax é a combinação linear das colunas de A cujos coeficientes são
as componentes do vector x. Identicamente, a premultiplicação de x por A adquire um
significado semelhante, pois
aT
 

T 
  a2 · 

xT A = x1 x2 · · · xn  T T T
 ..  = a1 · x1 + a2 · x2 + · · · + am · xn

 . 
aT

ou seja, xT A é a combinação linear das linhas de A cujos coeficientes são as componentes


do vector x. Adiante veremos como tirar partido destas interpretações de Ax e de xT A.

6.1.3 Teoria dos sistemas de equações lineares


Um dos problemas centrais da Álgebra Linear consiste na pesquisa das condições que
garantem a existência e a unicidade das soluções de sistemas de equações do tipo
Ax = b com A ∈ Rm×n , b ∈ Rm , x ∈ Rn (6.1.4)
onde A não é necessariamente uma matriz quadrada. A formulação destas condições
simplifica-se, e a sua interpretação adquire novos e importantes significados se identifi-
carmos as linhas e colunas de A como vectores de Rn e Rm respectivamente, e Ax como
uma combinação linear das colunas de A em que as componentes xi do vector x desempe-
nham o papel de coeficientes da combinação linear, de acordo com o que se disse atrás a
propósito da partição de matrizes em linhas e colunas. As próximas definições introduzem
os quatro espaços lineares fundamentais associados a uma matriz A ∈ Rm×n .
276 Sistemas de equações lineares: métodos directos

Definição 6.1.12 O espaço das colunas da matriz A ∈ Rm×n , denotado por R(A), é o
conjunto de vectores y ∈ Rm da forma
y = Av, v ∈ Rn
i.e., R(A) é constituído por todas as combinações lineares das colunas de A. Analoga-
mente, o espaço das linhas é o conjunto formado por todas as combinações lineares das
linhas de A e será denotado simplesmente por R(AT ) (porquê?).
Com esta definição o problema de resolver o sistema de equações (6.1.4) pode ser reformu-
lado desta outra maneira: procurar a combinação linear das colunas de A que reproduz
o segundo membro b. Daqui extraímos imediatamente a conclusão de que b ∈ R(A) é a
condição necessária e suficiente para a existência de soluções.
Definição 6.1.13 O espaço de nulidade ou núcleo de A, denotado por N (A), é o con-
junto formado pelas soluções do sistema homogéneo Ax = 0, i.e.,
N (A) = {v ∈ Rn : Av = 0}
O espaço de nulidade esquerdo é o espaço de nulidade de AT .
A designação de espaço de nulidade esquerdo resulta de que
N (AT ) = {v ∈ Rm : AT v = 0}
Mas AT v ⇔ v T A = 0, com o vector v a aparecer à esquerda de A.
É fácil verificar que os quatro conjuntos de vectores acabados de introduzir são de
facto espaços lineares, fazendo, portanto, sentido falar das respectivas dimensões.
Teorema 6.1.2 Seja A ∈ Rm×n e r o seu número de colunas linearmente independentes.
Então, são verdadeiras as seguintes proposições:
R(A) = N (AT )⊥
N (A) = R(AT )⊥
dim R(A) = r
dim R(AT ) = r
dim N (A) = n − r
dim N (AT ) = m − r
Demonstração Ver STRANG (1980).
É um resultado notável e surpreendente à primeira vista que os espaços das colunas e
das linhas tenham ambos a mesma dimensão r. A este valor r = dim R(A) = dim R(AT )
dá-se a designação de característica da matriz A, recorrendo-se por vezes à linguagem
sugestiva de dizer que ‘característica das linhas = característica das colunas’. Ao valor
n − r = dim N (A) costuma dar-se a designação de nulidade de A ou deficiência da
característica de A.
6.1 Introdução 277

Teorema 6.1.3 (Existência) O sistema (6.1.4) tem pelo menos uma solução x ∈ Rn para
qualquer segundo membro b ∈ Rm sse r = m ≤ n.
(Unicidade) A solução é única sse r = m = n.

Demonstração Ver STRANG (1980).


Como se vê, só sistemas cujas matrizes são quadradas podem aspirar a ter soluções
únicas e daí que seja sobre esta classe de sistemas que iremos concentrar a nossa atenção.
Outras formas de caracterizar a existência e a unicidade são as apresentadas nos dois
teoremas seguintes.

Teorema 6.1.4 A solução do sistema (6.1.4) existe e é única sse o sistema homogéneo
Ax = 0 possuir a solução trivial x = 0 como única solução, ou, por outras palavras, sse
a nulidade de A for zero.

Demonstração Ver STRANG (1980).

Teorema 6.1.5 O sistema (6.1.4) tem solução única sse qualquer das duas condições
equivalentes for válida:

1) A−1 existir; 2) det A 6= 0

Demonstração Ver STRANG (1980).

Regra de Cramer
Como sabemos, a solução do sistema de equações lineares (6.1.1) pode ser obtida explici-
tamente pela regra de Cramer, que consiste no seguinte.

Teorema 6.1.6 (Regra de Cramer) Seja A uma matriz invertível e Ai a matriz que
se obtém de A substituindo nesta a coluna i pelo segundo membro b. Então, a solução de
(6.1.1) é dada por
det Ai
xi = , i = 1, . . . , n
det A
Demonstração Ver a versão clássica em STRANG (1980) ou uma versão surpreen-
dentemente simples no Problema 6.11.10.
A singeleza desta fórmula esconde o facto de que ela é totalmente inadequada como
método numérico geral de solução. O cálculo de um determinante de ordem n requer
(n − 1)n! multiplicações e n! − 1 somas ou subtracções (ver o Problema 6.11.21). O
número de operações necessárias pode, assim, ser enorme, mesmo para valores de n que
são considerados baixos pelos padrões actuais. Por exemplo, para n = 10 o número de
operações envolvidas é cerca de 36 × 106 . Admitindo, para fixar ideias, que uma operação
deste tipo leva tipicamente um microsegundo, o cálculo de um determinante de ordem 10
demora cerca de 36 segundos. Como seria preciso calcular 11 destes determinantes para
278 Sistemas de equações lineares: métodos directos

resolver pela regra de Cramer um sistema de 10 equações, concluímos que este sistema
demoraria cerca de 400 segundos. Mas para n = 20 seriam necessários aproximadamente
32 milhões de anos (a espécie Homo sapiens existe há cerca de 100 000 anos)! Perante
este valor nem sequer vale a pena preocuparmo-nos com os erros de arredondamento
resultantes de tão grande número de operações. A regra de Cramer proporciona um
algoritmo computacionalmente intratável no sentido em que este termo foi introduzido na
Secção 1.7.1. Felizmente, e como veremos em breve, é possível desenvolver métodos bem
mais rápidos, pelo que o interesse desta regra é fundamentalmente teórico.

6.1.4 Sistemas triangulares


Os métodos de solução que iremos estudar baseiam-se na ideia de transformar o sistema
dado noutro, que seja mais fácil de resolver. Uma classe de sistemas fáceis de resolver
é constituída por aqueles cujas matrizes são triangulares. Por este motivo é conveniente
dedicar-lhes alguma atenção.
Suponhamos, para concretizar, que a matriz do sistema assume a forma triangular
inferior e denotemo-la por L, ou seja, o sistema a resolver é
Lx = b
que se escreve por extenso do seguinte modo,
l11 x1 = b1
l21 x1 + l22 x2 = b2
··· = ···
li1 x1 + li2 x2 + · · · + lii xi = bi
··· = ···
ln1 x1 + ln2 x2 + · · · + lnn xn = bn
Então, admitindo que os elementos diagonais são todos diferentes de zero, a solução deste
sistema pode obter-se facilmente por intermédio das expressões
x1 = b1 /l11
x2 = (b2 − l21 x1 )/l22
···
 i−1
X 
xi = bi − lij xj /lii , i = 1, . . . , n (6.1.5)
j=1

Este método para obter os valores das incógnitas por substituições sucessivas num sistema
triangular inferior é por vezes conhecido por processo de substituições descendentes.
Um método análogo para os sistemas triangulares superiores consiste em calcular as
incógnitas começando por xn e subindo até x1 , donde a designação de processo de sub-
stituições ascendentes que se descreve no Algoritmo 6.1.1. O número de flops requeridos
por estes processos de substituições é O(n2 ) conforme facilmente se pode concluir.
6.2 Redução a sistemas triangulares 279

Duas propriedades importantes das matrizes triangulares são reveladas no teorema


seguinte.

Teorema 6.1.7 Seja T uma matriz triangular inferior (ou superior). Então, T é in-
vertível sse os seus elementos diagonais forem diferentes de zero. Neste caso, a inversa
de T é também uma matriz triangular inferior (ou superior).

Demonstração Vamos considerar T como triangular inferior, já que o outro caso é


idêntico.
A primeira parte do enunciado já havia de certo modo transparecido aquando da
dedução da expressão (6.1.5). O determinante de uma matriz triangular é simplesmente
o produto dos seus elementos diagonais pelo que ele é diferente de zero sse nenhum deles
for nulo. O Teorema 6.1.5 garante então a invertibilidade.
A demonstração da segunda parte vai ser feita por indução na ordem n da matriz T.
A inversa de uma matriz triangular inferior de ordem n = 1 é, obviamente, uma matriz
triangular inferior. Admitindo que esta asserção é verdadeira para uma ordem n qualquer,
vamos provar que ela continua verdadeira para a ordem n+1. Ora, é fácil ver que a matriz
!
T−1 0
T−1
n+1 = T
n
−1 −1 −1
−tn+1 Tn tn+1,n+1 tn+1,n+1

verifica T−1 −1
n+1 Tn+1 = Tn+1 Tn+1 = I sendo, portanto, a inversa de Tn+1 . Por outro lado,
uma simples observação da estrutura desta matriz permite concluir que T−1
n+1 é triangular
inferior.

6.2 Redução a sistemas triangulares


Como acabámos de ver, os sistemas de equações cujas matrizes assumem certas formas
peculiares, como é o caso dos sistemas triangulares tratados na secção anterior, são muito

Algoritmo 6.1.1 Substituições ascendentes


comment: U ∈ Rn×n
xn = bn /unn (unn 6= 0)
for i = n − 1 to 1 step − 1 do
s = bi
for j = i + 1, . . . , n do
s = s − uij xj
od
xi = s/uii (uii 6= 0)
od
280 Sistemas de equações lineares: métodos directos

simples de resolver. Os métodos directos tiram partido deste facto transformando o sis-
tema original Ax = b num outro sistema, equivalente, Āx = b̄, mas cuja matriz Ā seja
triangular. Antes de continuar, convém determo-nos um pouco sobre esta noção de equi-
valência de sistemas de equações lineares.

Definição 6.2.1 Dois sistemas de equações lineares dizem-se equivalentes se possuírem


o mesmo conjunto de soluções, ou seja, se os conjuntos {x} e {x̄} das soluções de

Ax = b e Āx̄ = b̄

forem iguais.

A pergunta que imediatamente se coloca é, dada uma matriz A e um segundo membro


b, saber como se passa para uma matriz Ā e um segundo membro b̄, garantindo que o
conjunto original de soluções é preservado. Por outras palavras, quais são as operações
legítimas sobre o sistema original que permitem transformá-lo num sistema equivalente?
O próximo teorema dá-nos a resposta a esta questão.
Teorema 6.2.1 É condição suficiente para dois sistemas Ax = b e Āx̄ = b̄ serem equi-
valentes que exista uma matriz C invertível tal que

Ā = CA, b̄ = Cb (6.2.1)

Se A for invertível, então a condição acima é também necessária.


Demonstração Seja x̄ uma solução do sistema transformado Āx̄ = b̄. Então, se a
condição (6.2.1) se verificar, temos que

(CA)x̄ = Cb =⇒ C(Ax̄ − b) = 0 =⇒ Ax̄ − b = 0

pois, por hipótese, C é invertível e a única solução dum sistema homogéneo cuja matriz é
invertível é a solução nula. Portanto, toda a solução x̄ do sistema transformado é também
solução do sistema original.
Vamos agora provar que a inversa também é verdadeira. Seja, então, x uma solução do
sistema original Ax = b. Multiplicando ambos os membros desta equação por C obtemos
exactamente Āx = b̄, o que mostra que x é também solução do sistema transformado.
Concluímos assim que, se a transformação do sistema original envolver apenas operações
cujo resultado é idêntico ao de premultiplicar a matriz A e o segundo membro b por uma
matriz C invertível, então os sistemas original e transformado são equivalentes.
A demonstração da necessidade é fácil e deixa-se como exercício.
Embora o teorema acima não seja construtivo, já que nada adianta quanto ao modo
de determinar as matrizes C, é fácil descobrir uma classe de operações que não só garante
a equivalência dos sistemas como também possibilita que a matriz transformada assuma
a forma triangular pretendida.
6.2 Redução a sistemas triangulares 281

Definição 6.2.2 Dá-se a designação de operações elementares sobre as linhas de uma


matriz às seguintes operações:

• Permutação de duas linhas;


• Multiplicação de uma linha por um número m 6= 0;
• Soma a uma linha do produto de outra linha por um número m.

Vamos verificar através de exemplos simples que estas operações correspondem a premul-
tiplicar a matriz A e o segundo membro b por certas matrizes invertíveis.

Permutação de linhas. Consideremos a seguinte matriz P de ordem 3 dada por


 
0 1 0
P =  1 0 0
 

0 0 1

obtida por permutação das linhas 1 e 2 da matriz identidade. É imediato verificar que
    
0 1 0 a11 a12 a13 a21 a22 a23
PA = 
1 0 0 
a
  21 a22 a 
23  =  11 a12 a13 

a 

0 0 1 a31 a32 a33 a31 a32 a33

O resultado final da premultiplicação de P por A traduziu-se na troca das linhas 1 e


2 desta matriz. Analogamente se poderia concluir que a posmultiplicação de A por P
efectuaria a troca das colunas 1 e 2. Destas observações resulta que é útil introduzir a
seguinte definição.

Definição 6.2.3 Uma matriz P diz-se que é uma matriz permutação elementar se for
formada à custa da permutação de duas linhas (ou duas colunas) da matriz identidade.

Quando for necessário explicitar quais as linhas ou colunas trocadas entre si usaremos a
notação Pij para indicar que foram as linhas ou colunas i e j as movimentadas.
Uma matriz permutação elementar satisfaz as seguintes propriedades cuja verificação
é simples (ver o Problema 6.11.32),

P = P T, P2 = I (6.2.2)

A última igualdade assegura não só a invertibilidade de P mas também que P−1 = P, ou


seja, a inversa de uma matriz permutação elementar é a própria matriz.
282 Sistemas de equações lineares: métodos directos

Multiplicação de uma linha por um número m 6= 0. Suponhamos que pretendíamos


multiplicar a linha 2 de uma matriz A de ordem 3 por um número m 6= 0. É fácil ver que
a premultiplicação de A pela matriz M dada por
 
1 0 0
M =  0 m 0
 

0 0 1

efectua a operação pretendida. De facto, tem-se que


    
1 0 0 a11 a12 a13 a11 a12 a13
MA = 0 m 0 a21 a22 a23  = ma21 ma22 ma23 
    

0 0 1 a31 a32 a33 a31 a32 a33

Também se podia verificar que a posmultiplicação por M conduziria à multiplicação da


coluna 2 de A por m. Sendo M uma matriz diagonal, a condição m 6= 0 garante a
invertibilidade desta matriz.

Soma a uma linha do produto de outra linha por um número m. Suponhamos


que queríamos somar à linha 2 de uma matriz A de ordem 3 o produto da linha 1 por m.
Podemos ver que a premultiplicação de A pela matriz
 
1 0 0
M =  m 1 0
 

0 0 1

produz este efeito. De facto,


    
1 0 0 a11 a12 a13 a11 a12 a13
MA = m 1 0 a21 a22 a23  = ma11 + a21 ma12 + a22 ma13 + a23 
    

0 0 1 a31 a32 a33 a31 a32 a33

Se pretendêssemos somar às linhas 2 e 3 os múltiplos m2 e m3 respectivamente da linha


1, bastava-nos recorrer à matriz M dada por
 
1 0 0
M = m2 1 0
 

m3 0 1

Deixamos ao leitor o cuidado de verificar que assim é.


Matrizes desta forma vão ser muito úteis mais adiante, pelo que é conveniente proceder
a uma ligeira generalização.
6.3 Método de Gauss 283

Definição 6.2.4 Uma matriz triangular inferior elementar de ordem n e índice k é uma
matriz da forma
M = I − meT k

em que m é um vector cujas componentes satisfazem mi = 0, i = 1, . . . , k e ek é o k-ésimo


vector da base canónica de Rn .
Uma outra designação por vezes atribuída a estas matrizes, cuja justificação se tornará
patente na próxima secção, é a de transformações de Gauss. Este tipo de matrizes tem o
aspecto seguinte, exemplificando para uma matriz triangular inferior elementar de ordem
n = 6 e índice k = 3,
1 0 0 0 0 0
 

0 1 0 0 0 0


0 0 1 0 0 0
 

M=  
0 0 −m4 1 0 0

0 0 −m5 0 1 0
 

0 0 −m6 0 0 1
Como vemos, esta matriz M difere da matriz identidade apenas na coluna k = 3 abaixo
da diagonal. As matrizes elementares triangulares inferiores são invertíveis, e o cálculo
da sua inversa é surpreendentemente simples, como vamos descobrir.
Teorema 6.2.2 Seja M uma matriz triangular inferior elementar. Então, M é invertível
e a sua inversa é
M−1 = I + meT k

Demonstração Como se pode verificar efectuando os cálculos,


M(I + meT T T
k ) = (I − mek )(I + mek )
= I + meT T T
k − mek − mek mek
T

= I − m(eT T
k m)ek = I

pois, em virtude da Definição 6.2.4, eT


k m ≡ mk = 0. Confirmamos assim a validade do
teorema.
Podemos concluir esta secção dizendo que todas as operações elementares sobre linhas
de uma matriz A correspondem a premultiplicar A por matrizes invertíveis e, portanto,
conduzem a sistemas equivalentes. Em seguida vamos mostrar que um encadeamento
adequado destas operações permite transformar a matriz A numa matriz Ā triangular
superior.

6.3 Método de Gauss


Temos neste momento todos os elementos necessários à apresentação do método de Gauss,
que consiste essencialmente em transformar por etapas sucessivas a matriz original A
284 Sistemas de equações lineares: métodos directos

numa matriz triangular superior. Vejamos em pormenor como se leva a efeito esta trans-
formação. Designemos por A(k) a matriz transformada de A na etapa k deste processo e
ponhamos
a11 a12 · · · a1n b1
   

 a21 a22 · · · a2n   b2 


   
A(1) ≡ A =  .. .. .. ,
..  b(1) ≡ b = 
 .. 

 . . . .  .
an1 an2 · · · ann bn
A primeira operação a efectuar consiste em anular o elemento a21 desta matriz, o que,
como vimos atrás, se pode fazer multiplicando a primeira linha por

m21 = a21 /a11

(o que pressupõe que a11 6= 0) e subtraindo o resultado á segunda linha. Este processo é
por vezes designado por condensação do elemento a21 . A segunda linha da matriz A e do
segundo membro b modificam-se de acordo com as seguintes expressões
(2)
a2j = a2j − m21 a1j , j = 2, . . . , n
(2)
b2 = b2 − m21 b1

Este processo de condensação pode ser repetido para todos os elementos da coluna 1
abaixo da diagonal, utilizando para a condensação do elemento ai1 o multiplicador

mi1 = ai1 /a11

O resultado de todas estas condensações produz a matriz transformada A(2) (cuja primeira
coluna abaixo da diagonal é formada por zeros) e o segundo membro transformado b(2) ,
vindo os respectivos elementos modificados, i.e., distintos dos seus homólogos de A(1)
dados por 
(2)
aij = aij − mi1 a1j , j = 2, . . . , n 

i = 2, . . . , n
(2)
bi = bi − mi1 b1

Podemos agora proceder com a matriz A(2) do mesmo modo que com A(1) , condensando
(2)
desta vez a segunda coluna abaixo da diagonal. Pressupondo que a22 6= 0, os multipli-
cadores a empregar são agora dados por
(2) (2)
mi2 = ai2 /a22

A matriz resultante destas operações é A(3) , e o segundo membro, b(3) , cujos elementos
modificados se obtêm pelas expressões

(3) (2) (2)
aij = aij − mi2 a2j , j = 3, . . . , n 

i = 3, . . . , n
(3) (2) (2)
bi = bi − mi2 b2


6.3 Método de Gauss 285

Figura 6.3.1: Matriz A(k) obtida k


submatriz
na condensação de Gauss
0 activa

Não é difícil escrever as expressões gerais que permitem passar da matriz A(k) e do segundo
membro b(k) para A(k+1) e b(k+1) , as quais são
(k) (k) 
mik = aik /akk 




(k+1) (k) (k)
aij = aij − mik akj , j = k + 1, . . . , n  i = k + 1, . . . , n (6.3.1)

(k+1) (k) (k) 
bi = bi − mik bk

A matriz A(k) tem o aspecto que se mostra na Figura 6.3.1.


(k)
Os elementos akk são conhecidos por elementos pivô, e a respectiva linha, por linha
pivô. A submatriz de A(k) constituída pelas suas n − k últimas linhas e n − k últimas
colunas é por vezes designada por submatriz activa, pois os seus elementos são aqueles
que ainda estão em fase de modificação.
Deste modo, a condensação de Gauss consiste na subtracção de um múltiplo apro-
priado da linha pivô às linhas que lhe estão abaixo. Trata-se, como vimos, de uma
operação elementar sobre linhas, que pode ser efectuada sempre que o elemento pivô for
diferente de zero. Admitindo que tal é o caso, o sistema de equações final equivalente ao
sistema original é
(n) (n)
Āx = b̄ com Ā = A , b̄ = b
(n)
em que a matriz Ā = A assume a forma triangular superior. Este sistema pode ser
agora resolvido por substituições ascendentes, conforme explicamos na Subsecção 6.1.5.
Convém chamar a atenção para um facto importante do ponto de vista de programação
deste método. Os elementos aij da matriz original A deixam de ser necessários imedi-
atamente após sofrerem a sua primeira transformação, pois de aí em diante, conforme
as expressões (6.3.1) bem mostram, apenas trabalhamos com os elementos transforma-
dos. Assim, a menos que a matriz A tenha de ser preservada por alguma razão alheia
ao método de Gauss, as sucessivas matrizes transformadas A(k) podem ser armazenadas
sobre a matriz original A, destruindo-a. Se atendermos a que a memória necessária para
armazenar um sistema de equações de ordem n cresce com n2 este procedimento constitui
uma forma fácil de poupar memória.
286 Sistemas de equações lineares: métodos directos

Se optarmos por destruir a matriz A e o segundo membro b, o processo de condensação


pode efectuar-se de acordo com o Algoritmo 6.3.1, no qual se suprimiram todos os índices
superiores respeitantes aos elementos de A(k) e b(k) e se admitiu que todos os elementos
pivô são diferentes de zero.
O número de flops na fase de condensação do método de Gauss é de O(2n3 /3) (ver o
Problema 6.11.31). Tendo em conta que a solução do sistema triangular envolve O(n2 )
destas operações, concluímos que a solução de um sistema de ordem n pelo método de
Gauss requer O(2n3 /3) flops. Este valor contrasta favoravelmente com o da regra de
Cramer, e aconselhamos o leitor a repetir as contas simples efectuadas na Subsecção 6.1.3
para concluir por si o imenso ganho conseguido.
Já chamámos a atenção para o facto de que o processo de condensação depende de
forma crucial do facto de os elementos pivôs serem diferentes de zero. No entanto, é
possível, mediante uma alteração simples, viabilizar o método de Gauss mesmo na even-
tualidade de pivôs nulos. Este tema será tratado com mais pormenor adiante.

Vários segundos membros. Acontece por vezes ser necessário resolver sistemas com
a mesma matriz A mas com vários segundos membros diferentes. O método de Gauss
presta-se, mediante uma adaptação muito simples, ao tratamento em simultâneo de vários
segundos membros. Suponhamos que temos m segundos membros e que os organizamos
em colunas de uma matriz B de dimensão n × m, e seja X a matriz também de dimensão
n × m das incógnitas. Nestas condições podemos escrever que
   
AX = B, com X = x1 · · · xm , B = b1 · · · bm

O método de Gauss procede normalmente tendo apenas em atenção que as operações


que atrás eram efectuadas sobre o segundo membro b terão agora de ser levadas a cabo
sobre cada coluna de B. Nas substituições ascendentes passa-se o mesmo, vindo as várias
soluções correspondentes às várias colunas de B nas colunas correspondentes de X. O que
importa reter é que a condensação da matriz A, a parte computacionalmente mais cara,

Algoritmo 6.3.1 Condensação de Gauss (sem escolha de pivô)


for k = 1 to n − 1 do
for i = k + 1 to n do
mik = aik /akk (akk 6= 0)
for j = k + 1 to n do
aij = aij − mik akj
od
bi = bi − mik bk
od
od
6.4 Factorizações triangulares 287

é efectuada apenas uma única vez, qualquer que seja o número de segundos membros a
tratar.

6.4 Factorizações triangulares


Nesta secção vamos reconstruir o método de Gauss como uma sequência de operações
matriciais que fornece uma factorização da matriz A, i.e., que permite exprimir A como
um produto de duas matrizes. Acontece que estas matrizes são triangulares, o que torna
simples o processo de obter a solução do sistema (6.1.1).

6.4.1 Factorização LU
A condensação de Gauss consiste numa sequência de operações elementares sobre as linhas
das matrizes A(k) , as quais, como vimos na Secção 6.2, podem ser expressas sob a forma
de premultiplicações desta matriz por matrizes triangulares elementares. Na verdade,
A(2) pode ser obtida de A(1) = A da seguinte maneira

A(2) = M(1) A(1) (6.4.1)

com
1 0 ··· 0
 

 −m21 1 · · · 0
 
M(1) =  ..
 (1) T
 = I − m e1
.. . . ..  (6.4.2)
 . . . .
−mn1 0 · · · 1

É possível concluir de modo idêntico que, em geral,


)
A(k+1) = M(k) A(k)
k = 1, . . . , n − 1 (6.4.3)
M(k) = I − m(k) eTk

(k)
em que m(k) é o vector constituído pelos multiplicadores e cujas componentes mi , i =
1, . . . , k são nulas. No final teremos que

A(n) = Ā = M(n−1) M(n−2) · · · M(1) A (6.4.4)

Mas o produto de matrizes triangulares inferiores de diagonal unitária é também uma


matriz triangular inferior de diagonal unitária (ver o Problema 6.11.12), pelo que desi-
gnando por M o produto das n − 1 matrizes que premultiplicam A na expressão (6.4.4)
podemos escrever que
MA = Ā (6.4.5)
288 Sistemas de equações lineares: métodos directos

Recordando o Teorema 6.1.1, que assegura a invertibilidade das matrizes M(k) e sendo M
o produto destas matrizes, podemos afirmar que M−1 é dada por
 −1
M−1 = M(n−1) · · · M(1)
= (M(1) )−1 · · · (M(n−1) )−1
   
= I + m(1) eT
1 ··· I+m
(n−1) T
en−1
= I + m(1) eT
1 +···+m
(n−1) T
en−1

A última passagem desta sequência decorre sem dificuldade das propriedades das matrizes
triangulares inferiores elementares. Ora, é fácil reconhecer que o segundo membro da
expressão final acima é também uma matriz triangular inferior de diagonal unitária cujos
elementos no triângulo inferior não são outros senão os multiplicadores mij surgidos na
condensação de Gauss. Pondo, por ser mais sugestivo,

Ā = U e M−1 = L

(do inglês, L de lower e U de upper ), a expressão (6.4.5) converte-se na seguinte forma


alternativa
A = LU (6.4.6)
Mostrámos assim que o processo de condensação de Gauss conduz a uma expressão em
que a matriz A surge sob a forma do produto de uma matriz L triangular inferior de
diagonal unitária e de uma matriz U triangular superior. Obtém-se deste modo aquilo
que se costuma designar por uma factorização triangular ou factorização LU da matriz
A. Vejamos um exemplo simples para esclarecer o que se acaba de dizer.
Exemplo 6.4.1 Factorizar a seguinte matriz pelo método de Gauss:
 
1 0 2
A = 2 2 1
 

0 1 1
Calculando os multiplicadores e os elementos transformados pelas expressões (6.3.1) e colo-
cando cada multiplicador na mesma posição do elemento da matriz A cuja condensação
provocou, temos sucessivamente as seguintes matrizes transformadas
   
1 0 2 1 0 2
2 2 −3 ⇒ 2 2 −3 
0 1 1 0 1/2 5/2

em que os números sublinhados são os multiplicadores. Portanto,


   
1 0 0 1 0 2
L = 2 1 0 , U = 0 2 −3 
0 1/2 1 0 0 5/2
6.4 Factorizações triangulares 289

Chamamos a atenção para o facto de que a disposição dos elementos de L e U em sobreposição


com os elementos de A é a geralmente adoptada na implementação em computador da facto-
rização triangular tendo em vista a economia de memória. Notemos também que a diagonal
de L não é explicitamente guardada.

Do ponto de vista da resolução do sistema de equações lineares esta factorização


permite escrever que

Ax = b ⇒ (LU)x = b ⇒ L(Ux) = b

Introduzindo o vector auxiliar y, temos que

Ly = b
(6.4.7)
Ux = y

Conforme se vê, a determinação da solução x, uma vez obtida a factorização LU, passa
pela solução em sucessão de dois sistemas triangulares: um, inferior, e outro, superior.
Esta observação permite, aliás, revelar uma vantagem do método de factorização sobre
o método de Gauss. A factorização envolve apenas a matriz A e não o segundo membro
b, intervindo este exclusivamente na fase de solução dos sistemas triangulares (6.4.7).
Isto significa que, uma vez factorizada a matriz A, podemos resolver tantos sistemas de
equações com esta matriz quantos quisermos à custa apenas de substituições descendentes
e ascendentes. Dado que a factorização é a fase mais cara em termos de número de
operações, este processo representa uma vantagem apreciável relativamente a ter de aplicar
o método de Gauss integralmente desde o princípio para cada segundo membro. Notemos
que no método de factorização, ao contrário do método de Gauss, os segundos membros
não precisam sequer de ser conhecidos no momento da factorização. Outras vantagens
que podem eventualmente levar a preferir o método de factorização relativamente ao de
Gauss serão referidas mais adiante.

6.4.2 Método de Doolittle


A existência de uma factorização A = LU implica que os elementos das matrizes A, L e
U satisfaçam as relações
n
X
aij = lim umj , i, j = 1, . . . , n (6.4.8)
m=1

Como as matrizes L e U são triangulares e, além disso, L possui diagonal unitária, temos
n(n − 1)/2 elementos de L e n(n + 1)/2 elementos de U para determinar, num total de
n2 elementos. A expressão (6.4.8) fornece exactamente n2 relações, pelo que se poderá
pensar em utilizá-la como via para calcular os lij e os uij . Embora o aspecto de (6.4.8) seja
290 Sistemas de equações lineares: métodos directos

o de uma expressão não-linear envolvendo produtos destes coeficientes, é possível tornear


esta dificuldade mediante uma escolha judiciosa da sequência de cálculos.
Em primeiro lugar registemos, dado L e U serem triangulares, a validade das ex-
pressões
lim = 0 se m > i e umj = 0 se m > j
pelo que no somatório em (6.4.8) basta fazer variar m de 1 a min(i, j), pois os restantes
termos são necessariamente nulos. Consideremos a seguinte sequência de cálculos baseada
no varrimento de A por colunas (outras variantes são possíveis como se verá adiante).
Primeira coluna de A. Do que se acabou de dizer resulta imediatamente que
n
X
ai1 = lim um1 = li1 u11 , i = 1, . . . , n
m=1

donde, recordando que L tem diagonal unitária e no pressuposto que u11 6= 0, extraímos
as relações
u11 = a11 , li1 = ai1 /u11 , i = 2, . . . , n
Ficam assim completamente determinadas as primeiras colunas de U e L.
Segunda coluna de A. Por outro lado, também é verdade que
n
X
ai2 = lim um2 = li1 u12 + li2 u22 , i = 1, . . . , n
m=1

Daqui se tira que


a12 = l11 u12 , a22 = l21 u12 + l22 u22
e, portanto,
u12 = a12 , u22 = a22 − l21 u12
Logo, se u22 6= 0,
li2 = (ai2 − li1 u12 )/u22 , i = 3, . . . , n
As segundas colunas de U e L ficam, assim, totalmente calculadas. Não é difícil
concluir que é possível obter deste modo todos os elementos das matrizes L e U, e que as
expressões gerais que os determinam são
Pi−1
uij = aij − m=1 lim umj , j≥i
 Pj−1  (6.4.9)
lij = aij − m=1 lim umj /ujj , j < i

Estas expressões pressupõem que os ujj são todos diferentes de zero e que a sequência de
cálculos é a indicada.
O algoritmo apresentado consubstancia o chamado método de Doolittle para obter a
factorização de uma matriz em termos de uma matriz L triangular inferior de diagonal
unitária e uma matriz U triangular superior. O exemplo seguinte ajuda a perceber a sua
aplicação.
6.4 Factorizações triangulares 291

Exemplo 6.4.2 Factorizar a matriz do Exemplo 6.4.1 pelo método de Doolittle.

Uma aplicação directa das expressões (6.4.9) conduz-nos aos seguintes valores

u11 = a11 = 1
l21 = a21 /u11 = 2/1 = 2
l31 = a31 /u11 = 0/1 = 0
u12 = a12 = 0
u22 = a22 − l21 u12 = 2 − 2 × 0 = 2
l32 = (a32 − l31 u12 )/u11 = (1 − 0 × 0)/2 = 1/2
u13 = a13 = 2
u23 = a23 − l31 u13 − l32 u23 = 1 − 0 × 2 − 1/2 × (−3) = 5/2

que são, obviamente, idênticos aos obtidos no Exemplo 6.4.1. Nesta disposição de cálculos,
a matriz A é varrida por colunas o que leva a dizer que esta versão do algoritmo é orien-
tada por colunas. Mas é fácil verificar que se podia ter optado por calcular a factorização
pela sequência u12 , u13 , l21 , u22 , u23 , l31 , l32 , u33 dizendo-se neste caso que o algoritmo é ori-
entado por linhas. Enquanto no cálculo manual é indiferente qual das versões se adopta, em
computador deve escolher-se a versão em consonância com o esquema de armazenamento de
matrizes pressuposto pela linguagem de programação usada.

Vantagens relativamente ao método de Gauss


É legítimo perguntar qual a diferença entre a factorização obtida pelo método de Doolittle
e a proporcionada pelo método de Gauss? A resposta é simples: uma vez que a factori-
zação triangular quando existe é única (ver o Problema 6.11.29), a diferença só pode
residir na ordem dos cálculos necessários à obtenção da factorização, e não no resultado
final. De facto assim é. Enquanto no método de Gauss os elementos de L e U vão sendo
determinados por etapas à medida que a condensação avança, só ficando completamente
calculados na sua forma final quando a frente de condensação passa por eles e os deixa
para trás, no método de Doolittle os elementos de L e U são calculados de forma explícita
e de uma única vez. Por esta razão, as formas de factorização do tipo da de Doolittle são
frequentemente designadas por compactas.
Este aspecto do método de Doolittle tem algum interesse quando os cálculos são feitos
à mão, pois desta maneira evita-se ter de se transcrever em sucessivas folhas de papel
as matrizes intermédias A(k) requeridas pelo método de Gauss, reduzindo-se assim os
erros sempre possíveis nesta transcrição (bem bastam os erros de aritmética!). Embora
esta vantagem tenha perdido toda a importância com o advento dos computadores, uma
outra está todavia presente nas expressões (6.4.9). Se repararmos com atenção nestas
relações, observamos que os somatórios podem ser interpretados como produtos internos
de vectores de dimensão apropriada. Este facto faz com que uma alteração trivial no
292 Sistemas de equações lineares: métodos directos

algoritmo permita a acumulação destes produtos internos em precisão dupla com o fito
de reduzir os erros de arredondamento e sem que tal implique a passagem da matriz A a
dupla precisão, o que seria um preço algo elevado a pagar.
Uma outra vantagem, derivada ainda desta característica das expressões (6.4.9) e que
só agora se está a tornar efectiva nos modernos computadores com arquitecturas vectoriais
e paralelas, é a de se poderem efectuar de forma bastante eficiente as várias multiplicações
de um produto interno: tendencialmente um produto por ciclo nos computadores de arqui-
tectura vectorial e em simultâneo nas diferentes unidades aritméticas dos computadores
com arquitectura paralela e os resultados parciais somados no fim para formar o valor
do produto interno. É claro que o ganho obtido depende da dimensão n do sistema a
resolver e do número de unidades aritméticas funcionando em paralelo, sendo natural que
esta vantagem sobressaia com maior nitidez em sistemas de dimensão elevada. Atendendo
às suas vastas potencialidades, esta é uma área em que se está a despender presentemente
um grande esforço de investigação.

6.4.3 Método de Crout


Uma variante da factorização triangular da matriz A é tomar a matriz U como triangular
superior de diagonal unitária e L como triangular inferior. Os elementos lij e uij destas
matrizes podem obter-se por um processo análogo ao do algoritmo de Doolittle. Não é
difícil extrair daqui as seguintes relações para calcular os elementos das matrizes L e U:
Pj−1
lij = aij − m=1 lim umj , j≤i
 Pi−1  (6.4.10)
uij = aij − m=1 lim umj /lii , j > i

Continuamos a pressupor que os lii são todos diferentes de zero. O método de Crout
permite, como veremos adiante, uma escolha de pivô com maior facilidade que no método
de Doolittle, pelo que é por vezes considerado preferível.

6.4.4 Factorização LDU


Uma pequena modificação das factorizações de Doolittle e de Crout, que tem a vantagem
de atribuir às matrizes triangulares L e U um papel totalmente idêntico, é considerar que
estas são ambas matrizes triangulares com diagonal unitária e tomar a factorização na
seguinte forma
A = LDU (6.4.11)
em que D é uma matriz diagonal. O método de Doolittle consiste em absorver a matriz
D em U, ou seja, considerar a factorização A = L(DU) enquanto o de Crout consiste em
absorver D em L, i.e., tomar A = (LD)U.
A fechar esta subsecção referimos que, tal como sucedia com o método de Gauss,
qualquer das formas compactas de obter a factorização pode ser efectuada sobre a própria
6.5 Escolha de pivô 293

matriz A desde que esta possa ser destruída no processo, não requerendo, portanto,
memória adicional para armazenar os factores L, D e U.

6.5 Escolha de pivô


Os algoritmos descritos nas secções anteriores foram baseados no pressuposto de que
os elementos pivô eram diferentes de zero. Vejamos quais as modificações a introduzir
no caso de depararmos com pivôs nulos (ou próximos de zero) durante os processos de
condensação ou de factorização.

6.5.1 Escolha de pivô no método de Gauss


Comecemos pelo método de Gauss e suponhamos que estamos na fase k da transformação
(k)
da matriz original A na matriz final Ā e que o elemento akk da matriz intermédia A(k)
era nulo. Nesta ocorrência, o processo de condensação não pode prosseguir normalmente
e há que tomar alguma acção correctora. Esta consiste em proceder à troca de linhas
na matriz A(k) , uma operação elementar que, como vimos, garante a equivalência dos
sistemas de equações lineares. Assim, pesquisemos a coluna k da matriz A(k) da diagonal
(k)
para baixo à procura de um elemento ajk , j = k +1, . . . , n, diferente de zero. São possíveis
as seguintes duas situações:

• Nenhum destes elementos é diferente de zero. Então, podemos concluir que a matriz
A(k) é singular e, em virtude do Teorema 6.2.1, também sucede o mesmo com a
matriz A. O processo de condensação pode ser abortado nesta fase ou podemos
passar à etapa k + 1 deixando um pivô nulo na linha k. Escusado será dizer que a
solução do sistema triangular superior fica, a partir deste momento, prejudicada.

• Existe (pelo menos) um destes elementos diferente de zero e suponhamos que ele se
encontra na linha pk , k < pk ≤ n. Podemos assim proceder à permuta das linhas
k e pk , colocando deste modo um pivô não-nulo na posição diagonal da linha k.
A condensação pode agora prosseguir normalmente.

A operação de troca de linhas corresponde a premultiplicar a matriz A(k) por uma


matriz permutação elementar que denotaremos por P(k) . Tendo em conta todas as even-
tuais trocas de linhas necessárias o processo de condensação pode ser representado pela
294 Sistemas de equações lineares: métodos directos

sequência de operações

A(1) = A
A(2) = M(1) P(1) A
A(3) = M(2) P(2) A(2) = M(2) P(2) M(1) P(1) A
....
..
A(k+1) = M(k) P(k) A(k) = M(k) P(k) · · · M(1) P(1) A, k = 1, . . . , n − 1

Esta expressão pode sofrer um rearranjo que nos vai permitir revelar uma faceta inter-
essante do processo de trocas de linhas. Recordando a propriedade (6.2.2) das matrizes
permutação elementar, podemos deduzir que

A(2) = M(1) P(1) A = M(1) (P(1) A)


A(3) = M(2) P(2) A(2) = M(2) P(2) M(1) P(1) A
= M(2) (P(2) M(1) P(2) )(P(2) P(1) A)
....
..
Ā = A(n) = M(n−1) (P(n−1) M(n−2) P(n−1) ) · · · (P(n−1) P(n−2) · · · P(1) A)

Agrupando termos, chegamos à expressão

Ā = U = MPA (6.5.1)

em que
   
M = M(n−1) P(n−1) M(n−2) P(n−1) · · · P(n) · · · P(2) M(1) P(2) · · · P(n)
P = P(n−1) P(n−2) · · · P(1)

É fácil demonstrar que a matriz M é uma matriz triangular inferior de diagonal unitária,
e P é uma matriz permutação (não elementar!). Representando por L a inversa de M,
resulta de (6.5.1) que
PA = LU (6.5.2)
Esta expressão tem uma leitura interessante: a factorização obtida é a da matriz PA, ou
seja, da matriz que resultaria de A se tivéssemos efectuado sobre ela e à partida todas as
trocas de linhas. Contudo, estas trocas só vão ficando definidas no decorrer do processo de
condensação, pelo que o produto de P por A é efectuado na realidade de forma parcelar
através das matrizes P(k) e ao longo da condensação.
O essencial dos métodos de Gauss e da factorização pode ser sintetizado no teorema
seguinte.
6.5 Escolha de pivô 295

Teorema 6.5.1 Seja A uma matriz de ordem n invertível. Então, existe uma matriz L
triangular inferior de diagonal unitária, uma matriz U triangular superior e uma matriz
permutação P tal que
PA = LU
Demonstração Está contida na exposição acabada de fazer, pelo que a omitiremos.
Após termos conseguido a factorização (6.5.2) a solução do sistema Ax = b não tem
dificuldade. Em vez das expressões (6.4.7) temos agora

Ax = b ⇒ P(Ax) = Pb ⇒ (PA)x = Pb ⇒ (LU)x = Pb

e, portanto,
Ly = Pb e Ux = y
Como se vê, a única alteração reside na necessidade de efectuar sobre o segundo
membro b as mesmas trocas de linhas que foram feitas sobre a matriz A. Estas trocas
podem ser efectuadas simultaneamente com a condensação, como no método de Gauss,
ou a matriz P pode ser guardada para posterior utilização no caso de se ter procedido
apenas à factorização de A. Na implementação, em computador, deste último caso é
mais económico, do ponto de vista de memória, guardar a informação contida em P sob a
forma de um vector de permutações pk , i.e., pk = i querendo significar que a actual linha
k corresponde à linha i da matriz original A.
Nada obriga a que a matriz P em (6.5.2) seja única. Na realidade podem existir vários
candidatos a pivô na coluna k abaixo da diagonal. Qual deles se deve escolher? Para
prosseguir o método de Gauss basta optar por um qualquer desde que seja diferente de
zero. No entanto, o exemplo que a seguir apresentamos mostra que há outros aspectos a
ter em consideração.

Exemplo 6.5.1 (CONTE and de BOOR (1980)) O objectivo deste exemplo é exibir
um efeito de erros de arredondamento que nos induz a trocar de linhas mesmo quando o
pivô é diferente de zero e não seria estritamente necessário fazê-lo.

Resolvamos o seguinte sistema de ordem 2 em aritmética decimal com 4 dígitos (a fim de


acentuar o efeito dos erros de arredondamento),
    
0.0003 1.246 x1 1.249
=
0.4370 −2.402 x2 1.968

A solução exacta deste sistema é x1 = 10 e x2 = 1. Aplicando o método de Gauss temos de


efectuar a condensação do elemento a21 = 0.4370 usando como pivô o elemento a11 = 0.0003.
O multiplicador a empregar é m21 = a21 /a11 = 1457. Então,
(2)
a22 = −2.402 − 1457. × 1.246 = −2.402 − 1815. = −1817.
(2)
b2 = 1.968 − 1457. × 1.249 = 1.968 − 1820. = −1818.
296 Sistemas de equações lineares: métodos directos

O sistema triangular resultante é


    
0.0003 1.246 x1 1.249
=
0.0000 −1817. x2 −1818.
donde, efectuando as substituições ascendentes, extraímos os seguintes valores

x2 = −1818./(−1817.) = 1.001
x1 = (1.249 − 1.246 × 1.001)/0.0003
= (1.249 − 1.247)/0.0003 = 0.002/0.0003 = 6.667

Observamos com alguma surpresa que, enquanto o valor de x2 está quase certo, o de x1
tem um erro relativo de ≈ 33%. A que se deve este estranho fenómeno? A resposta a
esta pergunta está na expressão que fornece o valor de x1 . Qualquer erro no cálculo do
numerador será ampliado de 1/0.0003 = 3333 vezes! Como estamos a trabalhar apenas com
4 decimais, é de esperar que o quarto decimal esteja corrompido e uma ampliação desta ordem
de grandeza venha a afectar o primeiro decimal também. Portanto, não só está explicado o
desastre computacional como é lícito conjecturar que, por princípio, devem ser evitados pivôs
demasiado pequenos.
Uma solução ingénua para esta dificuldade consistiria em multiplicar a primeira linha do sis-
tema por um número elevado, 1000 digamos, com o fito de levar a11 para valores semelhantes
aos dos outros coeficientes da matriz. Contudo, este artifício não resolveria o problema, pois,
como facilmente se verificaria, isto corresponderia a multiplicar o numerador e o denominador
da expressão do x2 pelo mesmo número, nada de essencial se alterando.
A solução efectiva consiste em trocar as linhas do sistema original. Então, voltando a repetir
o método de Gauss com as linhas da matriz trocadas, temos que
    
0.4370 −2.402 x1 1.968
=
0.0003 1.246 x2 1.249

Agora m21 = 0.0003/0.4361 = (0.6865)10−3 e deduz-se, assim, que


(2)
a22 = 1.246 + (0.6865)10−3 × 2.402 = 1.246 + (0.1649)10−2 = 1.248
(2)
b2 = 1.249 − (0.6865)10−3 × 1.968 = 1.249 − (0.1351)10−2 = 1.248

A condensação produz o sistema triangular


    
0.4370 −2.402 x1 1.248
=
0.0000 1.248 x2 1.248
donde se extrai que

x2 = 1.248/1.248 = 1.000
x1 = (1.968 + 2.402 × 1.000)/0.43701 = 4.370/0.4370 = 10.00

Estes resultados estão totalmente correctos, provando que a troca de linhas funcionou bem
no sentido de reduzir os erros de arredondamento.
6.5 Escolha de pivô 297

A simplicidade deste exemplo ocultou a dificuldade de não ser óbvio qual dos elementos
candidatos a pivô deve ser escolhido no caso de sistemas de ordem superior a 2. De facto,
não se conhece um critério de escolha de pivô que seja totalmente satisfatório em todas as
circunstâncias, existindo, no entanto, vários critérios que funcionam razoavelmente bem
na maioria das situações. Vamos apresentar os mais correntes, deixando a sua justificação
teórica para a Secção 6.8.

Pivô parcial
(k)
De acordo com esta técnica, são candidatos a pivô os elementos aik , i = k, . . . , n da
matriz A(k) , escolhendo-se aquele que tiver maior valor absoluto. Mais precisamente, seja
pk um índice tal que
(k) (k)
|apk k | = max |aik | (6.5.3)
k≤i≤n

Se pk 6= k procede-se à permuta das linhas k e pk .

Pivô total
(k)
Neste caso, tomam-se como candidatos a pivô todos os elementos aij , i, j = k, . . . , n, ou
(k)
seja, todos os elementos abaixo e à direita de akk , i.e., todos os elementos da parte activa
de A(k) , determinando-se dois índices pk e qk tais que

|a(k)
pk qk | = max |aij | (6.5.4)
k≤i,j≤n

Se pk 6= k trocam-se as linhas k e pk como no caso da técnica anterior, e se qk 6= k


efectua-se também uma troca das colunas k e qk .
Todavia, a troca de colunas não é uma operação que preserve a equivalência dos
sistemas, pelo que convém analisar com atenção este caso. Se representarmos por Q a
matriz que traduz as permutas de colunas induzidas pelo cumprimento desta técnica de
escolha de pivô, não é difícil concluir que, à semelhança do que se passa com as trocas de
linhas, a factorização obtida corresponde a

PAQ = LU (6.5.5)

Assim, o sistema original pode transformar-se da seguinte maneira

Ax = b ⇒ P(Ax) = Pb ⇒ (PA)QQ−1 x = Pb

e, pondo x = Qy, vem que


PAQy = LUy = Pb
Desdobrando este sistema da forma habitual, podemos escrever que

Lz = Pb, Uy = z, x = Qy (6.5.6)
298 Sistemas de equações lineares: métodos directos

Reparemos que a última equação em (6.5.6) corresponde simplesmente ao desfazer das


trocas de colunas provocadas pela escolha de pivô.
A razão das designações de pivô parcial e total fica agora esclarecida. Na técnica de
pivô total todos os elementos da submatriz de A(k) constituída pelas suas n − k últimas
linhas e n − k últimas colunas (a parte activa de A(k) ) são candidatos ao passo que na
técnica de pivô parcial apenas são considerados os elementos da coluna k da diagonal para
baixo.

Pivô com patamar

A pesquisa do elemento pivô envolve um número de operações (acesso aos elementos de


A(k) candidatos, comparações para determinação do maior em valor absoluto, trocas de
linhas e/ou colunas) que não é de desprezar. Como o leitor facilmente poderá verificar,
o número destas operações é O(n2 ) para o caso de pivô parcial e O(n3 ) para o caso
de pivô total. Esta sobrecarga poderá representar uma fracção apreciável do tempo de
cálculo necessário à condensação ou à factorização. Por esta razão, a técnica de pivô
parcial é normalmente a preferida, a menos que haja indicações específicas que aconselhem
diversamente.
Mesmo assim, quando a dimensão n do sistema for muito elevada, e a matriz A não
couber toda na memória central do computador, a técnica de pivô parcial pode obrigar a
um número excessivo de operações de leitura e escrita de e para a memória periférica, o que
pode tornar o processo muito lento. Por outro lado, as trocas de linhas podem alterar uma
eventual estrutura vantajosa da matriz A como, por exemplo, o padrão de esparsidade
(ver adiante). Há, por conseguinte, necessidade de encontrar um compromisso entre os
efeitos dos erros de arredondamento e o tempo de cálculo. Uma forma de controlar a
(k)
quantidade de linhas trocadas consiste em aceitar o elemento akk como pivô, mesmo não
sendo o maior em valor absoluto da respectiva coluna mas desde que seja ‘suficientemente
grande’. Este elemento será considerado neste contexto como ‘suficientemente grande’ se
satisfizer a condição
(k) (k)
|akk | ≥ τ max |aik | (6.5.7)
k+1≤i≤n

em que 0 ≤ τ ≤ 1 é um parâmetro cuja escolha depende da natureza do sistema a resolver


e da quantidade de trocas de linhas tolerável. Se τ = 0 não haverá escolha de pivô, e se
τ = 1 estamos perante a técnica de pivô parcial. Recorrendo a valores de τ intermédios
podemos de certo modo controlar o número de trocas de linhas a efectuar. Este processo
costuma designar-se por escolha de pivô com patamar . Um valor por vezes recomendado
para este parâmetro com base em experiências numéricas é τ = 0.1 (ver DUFF and
STEWART (1978)).
6.5 Escolha de pivô 299

6.5.2 Escolha de pivô nos métodos de Doolittle e de Crout


Não é evidente qual a forma de levar a efeito a escolha de pivô nos métodos de factorização
compactos e, de facto, não se conhece uma maneira prática de realizar a técnica de pivô
total nestes casos. A técnica de pivô parcial não levanta tantas dificuldades e acontece
que, para o método de Crout, ela pode ser efectuada da mesma maneira que no método de
Gauss, como vamos mostrar. Recordemos aqui as expressões gerais do método de Crout:
Pj−1
lij = aij − m=1 lim umj , j≤i
 Pi−1 
uij = aij − m=1 lim umj /lii , j > i

A primeira coluna de L é dada por

li1 = ai1 , i = 1, . . . , n

pelo que é exactamente igual à primeira coluna de A(1) = A e podemos efectuar a troca
de linhas ditada pela técnica de pivô parcial como no método de Gauss. A segunda coluna
de L vem dada por
(2)
li2 = ai2 − li1 u12 = ai2
Detectamos assim a relação importante de que os valores da segunda coluna de L são
iguais aos seus homólogos na segunda coluna da matriz intermédia A(2) , os quais não
são outros senão os candidatos a pivô. Podemos assim basear-nos nestes valores para a
escolha de pivô. Identicamente se chega à conclusão de que
(3)
li3 = ai3 − li1 u13 − li2 u23 = ai3

e, portanto, os elementos da terceira coluna de L são iguais aos seus homólogos de A(3) ,
e assim por diante. Em resumo, no método de Crout os candidatos a pivô são os mesmos
que os do método de Gauss e encontram-se exactamente nas mesmas posições, pelo que
se utilizarmos o mesmo critério de pivô parcial acabaremos por efectuar as mesmas trocas
de linhas nos dois métodos.
No caso do método de Doolittle não se verifica a mesma simplicidade, e a técnica de
pivô parcial requer uma ligeira complicação para ser levada a efeito, a qual não desen-
volveremos.

6.5.3 Equilibragem de matrizes


Recordemos o Exemplo 6.5.1. O sistema de equações considerado é equivalente ao se-
guinte, obtido por multiplicação da primeira linha por 104 ,
! ! !
3.000 12460. x1 12490.
=
0.4370 −2.402 x2 1.968
300 Sistemas de equações lineares: métodos directos

Se aplicarmos a técnica de pivô parcial a este sistema somos levados a escolher o elemento
a11 = 3.000 para pivô, o que sabemos produzir maus resultados. Esta verificação leva-nos
a suspeitar de que algo de errado se passa com a técnica de escolha de pivô, já que ela
pode ser ludibriada desta forma tão singela. Por outras palavras, é sempre possível por
multiplicação das linhas do sistema por números diferentes de zero apropriados forçar a
que tenha lugar qualquer sequência de pivôs que se queira. Este ponto fraco da técnica
de pivô vai pode ser remediado se exigirmos que as linhas da matriz A estejam escritas ‘á
mesma escala’, i.e., as linhas do sistema de equações devem ser multiplicadas por escalares
de modo a que as linhas de A sejam vectores de norma unitária. Tomando a norma k · k∞ ,
temos que ka1 · k∞ = 12460. e ka2 · k∞ = 2.402, pelo que o sistema de equações escalado
vem ! ! !
(0.2408)10−3 1.000 x1 1.002
=
0.1819 −1.000 x2 0.8190
A técnica de escolha de pivô parcial obriga agora à permuta das primeira e da segunda
linha como no Exemplo 6.5.1, voltando tudo à normalidade.
Este exemplo sugere que, existindo alguma suspeita de a matriz A possuir linhas de
normas muito diferentes, se deve proceder a uma operação de escalagem desta matriz de
modo a forçar as linhas a apresentar normas iguais. Este procedimento é equivalente a
substituir o sistema original por um sistema equivalente
EAx = Eb (6.5.8)
em que E é uma matriz diagonal positiva cujos elementos contêm os factores de escala.
Concretamente, se empregarmos a norma de máximo, a mais simples computacionalmente,
vem que
eii = 1/kai · k∞ (6.5.9)
Esta operação é conhecida por equilibragem por linhas da matriz A.
Na prática a premultiplicação por E não é efectuada explicitamente, pois a equili-
bragem só afecta a solução na medida em que influenciar a sequência de pivôs. Deste
modo, o seu efeito é conseguido se, em vez do critério usual de escolha de pivô, se utilizar
este outro: determina-se o índice pk tal que
(k) (k)
|apk k |epk pk = max |aik |eii (6.5.10)
k≤i≤n

e se pk 6= k procede-se à troca das linhas k e pk , como habitualmente. Costuma tam-


bém dizer-se que neste caso se empregou uma técnica de pivô parcial com escala ou de
equilibragem implícita.

6.6 Cálculo da inversa e do determinante


Os vários métodos de solução descritos permitem calcular a inversa e o determinante de
matrizes, tópicos que vamos abordar em seguida de forma muito breve, já que quer a
6.6 Cálculo da inversa e do determinante 301

inversa quer o determinante desempenham, na prática dos métodos numéricos, um papel


menos importante que na teoria dos sistemas de equações lineares.

Cálculo da matriz inversa


A inversa da matriz A pode obter-se resolvendo, por qualquer dos métodos, o seguinte
sistema cujo segundo membro é constituído pela matriz identidade
AX = I
−1
De facto, X = A , ou seja, na matriz das incógnitas aparece a inversa de A.
Uma observação deve ser, no entanto, feita. Poderá pensar-se que, sendo assim, a
solução do sistema de equações Ax = b deve processar-se em duas fases. Na primeira
obter-se-ia a inversa pelo processo acabado de descrever, e na segunda efectuar-se-ia a
premultiplicação de A−1 por b, i.e., x = A−1 b. Uma análise ao número de operações
envolvidas mostra que este processo não é competitivo com os métodos de solução de
sistemas atrás apresentados, mesmo quando é necessário tratar mais do que um segundo
membro. Acresce ainda que a matriz A−1 não herda as eventuais propriedades de espar-
sidade de A, aspecto que será abordado na próxima secção. Portanto, como conclusão,
podemos dizer que a inversa de uma matriz só deve ser calculada se for explicitamente
necessária e não como forma de resolver sistemas de equações lineares.

Cálculo do determinante
Uma vez efectuada a factorização da matriz A, o cálculo do seu determinante pode fazer-se
com um custo adicional desprezável. Suponhamos que havíamos obtido a factorização
PA = LDU
Então, recordando que o determinante do produto de matrizes é igual ao produto dos
determinantes, vem que
(det P)(det A) = (det L)(det D)(det U)
Mas, tendo em atenção a propriedade (6.2.2) das matrizes permutação, e que o determi-
nante de matrizes triangulares de diagonal unitária é igual a 1, podemos escrever que
n
Y
det A = (det P)(det D) = (det P) dii (6.6.1)
i=1

O valor de det P é +1 se o número de permutações de linhas levadas a cabo tiver sido


par, e −1, se tiver sido ímpar.
É relativamente fácil, mesmo para matrizes de dimensão n moderada, acontecer que o
cálculo do determinante via expressão (6.6.1) produza overflow ou underflow. Para que
tal não suceda, é de boa prática incluir no programa que implementa este cálculo uma
forma automática de escalar os valores do determinante de modo a que não se ultrapassem
estes limites do sistema de ponto flutuante do computador.
302 Sistemas de equações lineares: métodos directos

Teste da singularidade pelo determinante


Como sabemos, uma matriz A é singular sse det A = 0. No entanto, é totalmente
incorrecto testar numericamente a singularidade duma matriz com base no valor do seu
determinante. Os seguintes exemplos são suficientes para compreender porquê.
Consideremos uma matriz diagonal de ordem 100 dada por A = diag(0.1, 0.1, . . . , 0.1).
O valor do seu determinante é det A = 10−100 , um número que na maioria dos computa-
dores produziria uma situação de underflow, podendo mesmo ser automaticamente posto
a zero. Ora, esta matriz nada tem de singular, e a sua inversa até é de cálculo ime-
diato. Logo, um teste á singularidade desta matriz baseado no valor do determinante
ludibriar-nos-ia completamente.
Tomemos agora a matriz de ordem 100 dada por A = diag(10, 10, . . . , 10, 10−7), para
a qual det A = 1092 . Com base neste valor do determinante, poderíamos pensar estar
perante uma matriz invertível. No entanto, tudo depende do grau de confiança no valor
10−7 . Se este valor for exacto, então não há dúvida de que a matriz é invertível. Todavia,
se este valor estiver contaminado por erros de arredondamento, pode acontecer que 10−7
‘esconda’ o valor exacto – que deveria ser 0 – e, neste caso, a matriz seria singular.
O problema com o determinante é de que ele é afectado pela escala dos elementos da
matriz enquanto a singularidade da matriz não é. A questão que com toda a pertinência
se coloca neste momento é saber como se pode detectar a singularidade de uma matriz.
Vimos atrás na Subsecção 6.5.1 que, se não for possível encontrar um pivô diferente de
zero, então a matriz é singular, e este facto constitui um teste à singularidade bem melhor
que o do determinante. Todavia, a presença dos erros de arredondamento complica este
quadro, podendo-nos levar a concluir erradamente quanto ao carácter singular ou não de
uma matriz. Um indicador que é correntemente utilizado é o do valor absoluto do pivô
(k)
|akk |. Um valor demasiado baixo, da ordem da unidade de arredondamento, é sinal de
que a matriz é singular ou está muito próximo de o ser, pelo que há que proceder com a
devida cautela, nomeadamente no que diz respeito à fiabilidade dos resultados.

6.7 Sistemas com matrizes especiais


Os métodos de solução desenvolvidos até este momento aplicam-se a matrizes A gerais
e requerem O(n3 ) flops e memória para O(n2 ) variáveis. No caso de A possuir alguma
estrutura especial é natural tentar modificar ou adaptar estes métodos de modo a tirar
partido dessa estrutura com o objectivo de produzir um algoritmo mais eficaz. Dada a
enorme variedade de situações e variantes possíveis, esta secção vai ser orientada para a
apresentação dos casos mais vulgares.
Uma classe de matrizes que merece um tratamento específico é a das matrizes com
uma elevada percentagem de coeficientes nulos. Diz-se então que a matriz é esparsa. Por
oposição, uma matriz com elevada percentagem de elementos diferentes de zero designa-
se por densa. Notemos que estas noções de esparsidade e densidade são necessariamente
6.7 Sistemas com matrizes especiais 303


× × × × × × × ×
 
× ×

0 0 0 0 0 0
× 0 × × × × × × × 0 × × × 0 0 0
 
 
× × 0 × × × × × 0 × 0 × 0 × × 0
   
   
× × × × × × × × × 0 × 0 × × 0 ×
   
0 × × × × 0 × × 0 × × 0 0 0 × 0
   
   
× × 0 × × × × × × 0 0 × × 0 0 ×
   
× × × × × × × × 0 × 0 × 0 × × 0
   

× × × 0 × × × × 0 × 0 0 0 0 0 ×
(a) Matriz densa (b) Matriz esparsa

Figura 6.7.1: Esparsidade de matrizes: os elementos não nulos são indicados por ×

ambíguas, já que uma matriz esparsa pode ser sempre tratada como densa, e uma matriz
densa é um caso limite de uma matriz esparsa. A Figura 6.7.1 dá uma ideia da noção que
se pretende transmitir. Um bom método de solução de sistemas com matrizes esparsas
deve tirar partido da existência do grande número de elementos nulos, evitando, na medida
do possível, armazená-los (para poupar memória) e operar com eles (para poupar tempo).
A exploração da esparsidade pressupõe uma estrutura de dados especial para guardar
vectores e matrizes e adaptações não triviais dos algoritmos da Álgebra Linear Numérica.
A este respeito, é útil fazer a distinção entre as operações estáticas que não alteram os
valores dos operandos, como sejam a soma de dois vectores para obter um terceiro vector
e operações dinâmicas de que resultam modificações aos valores dos operandos, como se-
jam a normalização de um vector ou a condensação de Gauss. Se uma operação dinâmica
respeitar a estrutura de esparsidade, i.e., embora alterando os valores numéricos não faz
aparecer valores não-nulos em posições onde originalmente existiam zeros, como seja o
caso da multiplicação de uma matriz por um escalar, diz-se que é simplesmente dinâmica.
Caso contrário, a operação diz-se que é essencialmente dinâmica, sendo o caso típico o
da condensação de Gauss. O fenómeno do aparecimento destes elementos não-nulos em
posições onde originalmente existiam zeros é conhecido pela designação de enchimento
e constitui uma complicação não despicienda no desenvolvimento de algoritmos que ex-
plorem a esparsidade.
Um facto importante a reter, e que já havíamos mencionado atrás, é o de que a inversa
de uma matriz esparsa não é necessariamente uma matriz esparsa, o que constitui mais
uma razão para evitar calcular a inversa.

6.7.1 Matrizes simétricas


Uma situação frequente é aquela em que a matriz A é simétrica. Neste caso seria desejável
poder trabalhar apenas com um dos triângulos, superior ou inferior, da matriz. Queremos
com isto dizer que apenas um destes triângulos seria armazenado em memória e todas
as operações de condensação ou factorização seriam efectuadas exclusivamente sobre este
304 Sistemas de equações lineares: métodos directos

triângulo, tentando assim uma redução da memória e de tempo de cálculo. O teorema


seguinte mostra que este objectivo é realizável.
Teorema 6.7.1 A condensação de uma matriz A simétrica invertível produz submatrizes
A(k) activas também simétricas se não ocorrerem trocas de linhas ou se as trocas de linhas
forem acompanhadas de idênticas trocas de colunas (pivô diagonal ou simétrico).
Demonstração Vejamos primeiro o caso em que não se procede à escolha de pivô.
O primeiro passo na condensação corresponde, como vimos, à operação

A(2) = M(1) A(1) = M(1) A (6.7.1)

Consideremos as matrizes intervenientes nesta expressão particionadas do seguinte modo


! !
a aT 1 0T
A (1)
≡ A = 11 1
, M(1)
= (1) (6.7.2)
a1 A22 −m I

em que, naturalmente, AT
22 = A22 . Efectuando as operações indicadas em (6.7.1), temos
que !
(2) a11 aT
1
A = (6.7.3)
a1 − a11 m(1) A22 − m(1) aT
1

Mas, segundo o método de Gauss, m(1) é escolhido de modo a que

a1 − a11 m(1) = 0 ou m(1) = a1 /a11

e, consequentemente,
(2)
A22 ≡ A22 − m(1) aT T
1 = A22 − a1 a1 /a11

O segundo membro desta igualdade é uma diferença de matrizes simétricas e, por con-
(2)
seguinte, uma matriz também simétrica. Portanto, a submatriz activa A22 de A(2) é
simétrica, como queríamos provar.
Caso tivesse havido escolha de pivô diagonal teríamos, em vez de (6.7.1), a expressão

A(2) = M(1) P(1) AP(1) (6.7.4)


(2)
Repetindo o raciocínio acabado de fazer, agora para a submatriz A22 , não é difícil concluir
que esta submatriz permanece simétrica. Usando indução podíamos demonstrar que todas
(k)
as submatrizes activas de Akk , k = 2, . . . , n são simétricas.
O processo de condensação conduz no final à expressão

Ā = MP AP T (6.7.5)

em que Ā é uma matriz triangular superior. Ponhamos

Ā = DU (6.7.6)
6.7 Sistemas com matrizes especiais 305

em que D = diag(Ā), forçando desta maneira a que U seja uma matriz triangular superior
com diagonal unitária. Podemos então extrair de (6.7.5) e de (6.7.6) a relação

P AP T = LDU (6.7.7)

obtendo assim uma factorização para a matriz simétrica P AP T resultante de A por trocas
simétricas de linhas e colunas. Deixamos como exercício verificar que a factorização (6.7.7)
também é simétrica, i.e., U = LT , pelo que

P AP T = LDLT = U T DU (6.7.8)

Fica assim plenamente confirmado que quer a condensação quer a factorização de uma
matriz simétrica podem ser efectuadas recorrendo apenas a um dos triângulos da matriz.

6.7.2 Matrizes simétricas definidas positivas


Esta classe de matrizes é muito importante pela frequência com que surge nas aplicações
mais variadas. Para estas matrizes uma factorização triangular simétrica existe necessa-
riamente, já que matrizes simétricas definidas positivas são por natureza invertíveis.
Teorema 6.7.2 Seja A ∈ Rn×n uma matriz simétrica. Então, A é definida positiva
sse existirem matrizes L triangular inferior e U triangular superior, ambas com diagonal
unitária, e uma matriz diagonal D com elementos diagonais positivos tais que

A = LDLT = U T DU com L = UT (6.7.9)

Demonstração Vamos começar pela condição de necessidade. A única diferença


relativamente ao Teorema 6.7.1 reside no facto de que agora não são invocadas trocas de
linhas ou colunas para produzir a factorização. Vamos fazer a demonstração por indução
na ordem n da matriz. Para n = 1 , a11 > 0, pois A é definida positiva. Então, pondo
l11 = 1, u11 = 1 e d11 = a11 , o teorema fica demonstrado para este caso. Suponhamos
que o teorema é verdadeiro para matrizes de ordem n − 1 e consideremos a primeira das
factorizações em (6.7.9), envolvendo a matriz L, uma vez que para o outro caso tudo se
passa de modo análogo. Particionemos a matriz A de ordem n da seguinte forma
!
An−1 a
A= (6.7.10)
aT α

em que An−1 é uma submatriz de ordem n − 1 também simétrica e definida positiva, e


α = ann . Seja L uma matriz triangular inferior com diagonal unitária, e D uma matriz
diagonal, ambas de ordem n e escritas na forma particionada seguinte
! !
Ln−1 0 Dn−1 0
L= D= (6.7.11)
lT 1 0 d
306 Sistemas de equações lineares: métodos directos

Vejamos quais as condições para que L e D satisfaçam a expressão (6.7.9). Para tal
devemos ter que

An−1 = Ln−1 Dn−1 LT n−1 (6.7.12)


a = Ln−1 Dn−1 l, aT = lT Dn−1 LT
n−1 (6.7.13)
T
α = l Dn−1 l + d (6.7.14)

Pela hipótese da indução, (6.7.12) é satisfeita nas condições do enunciado. A igualdade


(6.7.13) permite calcular o vector l, pois as matrizes Ln−1 e Dn−1 são invertíveis e, por-
tanto, podemos pôr que
l = (Ln−1 Dn−1 )−1 a (6.7.15)
Por outro lado, a expressão (6.7.14) permite calcular d uma vez determinado l,

d = α − lT Dn−1 l = α − aT A−1
n−1 a (6.7.16)

Falta provar que d > 0. Consideremos o seguinte produto q dado por


! !
  An−1 a v
q = v T −1 = v T An−1 v − 2v T a + α (6.7.17)
aT α −1

cujo valor é positivo para qualquer vector v 6= 0. Como An−1 é definida positiva, é
invertível. Logo podemos escolher a seguinte forma para v, v = A−1
n−1 a que, substituída
em (6.7.17), dá sucessivamente

q = aT A−1 −1 T −1 T −1
n−1 An−1 An−1 a − 2a An−1 a + α = α − a An−1 a = d > 0

como queríamos provar.


A demonstração da suficiência é simples e deixa-se como exercício.
Dado que D é uma matriz diagonal definida positiva, é possível definir a raiz quadrada
de D, denotada por D1/2 , como a matriz diagonal cujos elementos diagonais são a raiz
quadrada positiva dos elementos correspondentes de D. Nestes termos, a expressão (6.7.9)
pode ser transformada nesta outra alternativa

A = (LD1/2 )(LD1/2 )T = (D1/2 U)T (D1/2 U) (6.7.18)

que nos permite, se quisermos, absorver a matriz D1/2 em L e U, perdendo então estas
matrizes a característica de possuir diagonal unitária.

Método de Choleski
O cálculo da matriz L ou da matriz U pode ser levado a cabo por intermédio de uma
factorização compacta, especialmente adaptada ao caso de matrizes simétricas definidas
positivas. Tomando, por exemplo,
A = LLT (6.7.19)
6.7 Sistemas com matrizes especiais 307

em que L é uma matriz triangular inferior (não necessariamente de diagonal unitária).


Aplicando a mesma técnica que adoptámos para os algoritmos de Doolittle e de Crout,
temos, para o triângulo inferior, as expressões
n
X j
X
aij = lim ljm = lim ljm , i≥j
m=1 m=1

donde resultam as fórmulas


 j−1 1/2
2
X
ljj = ajj − ljm (6.7.20)
m=1
 j−1
X 
lij = aij − lim ljm /ljj , i>j (6.7.21)
m=1

Estas expressões, ou as suas congéneres para a matriz U, constituem o chamado método


de Choleski, apresentado no Algoritmo 6.7.1.
Uma vez obtida a factorização (6.7.19), a solução do sistema Ax = b segue a via
normal, ou seja,
Ly = b, LT x = y (6.7.22)
Como vimos atrás, o elemento pivô de matrizes simétricas definidas positivas nunca
é nulo, pelo que o método de Choleski não necessita, por este motivo, de recorrer a per-
mutações de linhas e colunas, que neste caso teriam de assumir a forma de pivô diagonal
para preservar a simetria. Atendendo a que, como referimos na Subsecção 6.5.2, as factor-
izações compactas se adaptavam mal a trocas de colunas, temos de considerar esta uma

Algoritmo 6.7.1 Método de Choleski


for j = 1 to n do
for i = j to n do
s = aij (s como acumulador)
for m = 1, to j − 1 do s = s − lim ljm od
if i = j
then
if s > 0 then ljj = s1/2
else Assinalar erro exit
fi
else lij = s/ljj
fi
od
od
308 Sistemas de equações lineares: métodos directos

0
Figura 6.7.2: Matrizes banda banda banda
inferior superior
0

circunstância feliz. Por outro lado, de (6.7.20) retiramos que


j
2 2
= a2jj
X
lij ≤ lim
m=1

Esta relação garante que os elementos de L estão majorados à partida e não podem, em
aritmética de precisão finita, assumir valores arbitrariamente elevados. Todavia, podemos
perguntar se, na ausência de escolha de pivô, os erros de arredondamento não acabarão
por prejudicar de forma fatal a precisão dos resultados? Ora, é possível demonstrar que,
para matrizes simétricas definidas positivas, a escolha de pivô no método de Choleski é
dispensável como meio de controlar os efeitos dos erros de arredondamento, i.e., o método
é numericamente estável mesmo sem escolha de pivô.
A factorização obtida por intermédio das expressões (6.7.20) e (6.7.21) requer O(n3 /3)
flops (ver o Problema 6.11.38), cerca de metade do esforço computacional do caso geral.
As necessidades em memória também se reduzem sensivelmente a metade.

6.7.3 Matrizes banda


É muito comum nas aplicações aparecerem matrizes cujos elementos diferentes de zero
estão concentrados em torno da diagonal principal, dizendo-se neste caso que se trata de
matrizes banda. A Figura 6.7.2 mostra o aspecto desta classe de matrizes.
Define-se largura da banda inferior βi e largura da banda superior βs respectivamente
por
βi = max{i − j : 1 ≤ j ≤ i ≤ n e aij 6= 0}
(6.7.23)
βs = max{j − i : 1 ≤ i ≤ j ≤ n e aij 6= 0}
e largura da banda β por
β = βi + βs + 1 (6.7.24)
É claro que, para qualquer matriz de ordem n, a largura de banda satisfaz, de acordo com
esta definição, β ≤ 2n − 1. Contudo, quando nos referimos a matrizes banda estamos
naturalmente a pensar nos casos em que β ≪ n. A circunstância de uma matriz possuir
uma estrutura em banda tem as seguintes vantagens:
6.7 Sistemas com matrizes especiais 309

1 2 3 4 5 6 1 2 3 4 5 6
1     1    

2      2    

3     3     

4     4     

5     5    

6     6    

(a) Matriz original A (b) Matriz permutada PAPT

Figura 6.7.3: Redução da largura de banda por permutações simétricas de linhas e colunas

• O seu armazenamento requer cerca de βn posições de memória em vez das n2 do


caso geral;

• Se não se proceder a escolha de pivô, pode ser condensada ou factorizada mantendo


a estrutura original, com a consequente economia em memória;

• O número de flops necessários à condensação ou á factorização é O(βi βs n).

Uma observação que convém registar, e que reforça o que dissemos atrás a propósito
das matrizes esparsas, é a de que a inversa de uma matriz banda só excepcionalmente é
uma matriz banda.
Muitas vezes uma matriz esparsa pode não apresentar uma estrutura em banda mas
uma conveniente troca de linhas e colunas pode levá-la a assumir esta estrutura. O
exemplo seguinte esclarece este ponto.

Exemplo 6.7.1 Redução da largura da banda por permutações simétricas de linhas e


colunas.

Consideremos a matriz A de ordem 6 esquematizada na Figura 6.7.3, em que os × rep-


resentam elementos diferentes de zero. A estrutura de A é simétrica (embora a matriz
propriamente dita possa não o ser), com as larguras de banda βi = βs = 3 e β = 7. A
seguinte renumeração das incógnitas, correspondente a permutação simétrica de linhas e
colunas, permite reduzir estes valores para βi = βs = 2 e β = 5, como é fácil verificar:

numeração original em A: 1 2 3 4 5 6
numeração permutada em PAP T : 1 3 5 2 4 6
310 Sistemas de equações lineares: métodos directos

ou seja, a coluna (e linha) 1 permanece imóvel, a coluna (e linha) 2 passa para a coluna (e
linha) 3, a coluna (e linha) 3 passa para a coluna (e linha) 5, e assim sucessivamente.
A reduzida dimensão deste sistema não permite evidenciar a extensão dos ganhos possíveis,
mas o leitor poderá facilmente imaginar que eles poderão ser muito substanciais para valores
de n elevados.

6.7.4 Matrizes tridiagonais. Algoritmo de Thomas


Uma matriz tridiagonal é um caso especial de matriz banda correspondente a βi = βs = 1
que ocorre com alguma frequência, nomeadamente no cálculo de splines (recordar a Secção
2.7), na solução numérica de equações diferenciais, etc. O exemplo seguinte ilustra este
último caso.

Exemplo 6.7.2 Obter, pelo método das diferenças finitas, a solução aproximada da equa-
ção diferencial
−u′′ (x) = f (x), 0<x<1
satisfazendo as seguintes condições de fronteira

u(0) = 0, u(1) = 0

De acordo com o método das diferenças finitas, as derivadas que figuram na equação diferen-
cial devem ser aproximadas por fórmulas de diferenças finitas. Optando, para exemplificar,
pelas diferenças finitas centrais dadas pela expressão (3.3.1) e denotando por uh a solução
aproximada, podemos escrever que

−uh (x + h) + 2uh (x) − uh (x − h) = h2 f (x)

Tomando para nós os pontos xi = ih e empregando a seguinte notação ui = uh (xi ), fi = f (xi )


em que i = 0, 1, . . . , n + 1, deduzimos que os valores nodais interiores ui devem obedecer ao
seguinte sistema de equações algébricas
    
2 −1 0 · · · 0 u1 f1
−1 2 −1 · · · 0   u2   f2 
    
 0 −1 2 · · · 0   u3   f3 
2
 .. . . . ..   ..  = h  .. 
    
 . . . . . . . . 
 . 
   . 
  
 0 · · · −1 2 −1 un−1  fn−1 
0 0 · · · −1 2 un fn

e u0 = un+1 = 0. Como verificamos, a matriz deste sistema é tridiagonal.

A simplicidade das matrizes tridiagonais torna viável a dedução de fórmulas explícitas


para a solução de sistemas com este tipo de matrizes. Estas fórmulas resultam directa-
mente da aplicação da condensação de Gauss sem escolha de pivô à matriz tridiagonal.
6.7 Sistemas com matrizes especiais 311

Seja, então, o sistema tridiagonal escrito do seguinte modo

···
    
d 1 c1 0 0 0 x1 b1
a2 d2 c2

0 ··· 0   x2   b2 
  

 0 a3 d3 c · · · 0 x b
    
3  3 
  
 3 
 
. . . . . .  .  =  . 

 .. .. .. .. .. ..   ..   .. 
    
 0 0 · · · an−1 dn−1 cn−1  xn−1  bn−1 
    

0 0 ··· 0 an dn xn bn

A aplicação do método de Gauss a este sistema, que não apresenta qualquer dificuldade
e de que se omitem os pormenores, produz o Algoritmo 6.7.2, o chamado algoritmo de
Thomas, no qual os d′k e os b′k são os valores modificados dos dk e dos bk após a condensação,
e se admitiu que d′k 6= 0, para k = 1, . . . , n.
Uma vez que não se procedeu a uma escolha de pivô, ou se tem à partida garantia de
que a matriz A não o exige ou, então, deve incluir-se no algoritmo a monitorização dos
valores dos pivôs d′k .
Como facilmente se vê, este algoritmo requer O(n) flops em vez dos O(n3 ) flops do
caso geral, uma melhoria muito significativa.

6.7.5 Solução por blocos


Para sistemas de dimensão muito elevada pode ser indesejável ou mesmo impossível ter a
matriz A e o segundo membro b presentes na sua totalidade na memória central. Uma
técnica a que se recorre frequentemente é a do particionamento de A em submatrizes, e b,
em subvectores, correntemente designados por blocos. Estes blocos residem normalmente
em memória periférica, sendo carregados na memória central apenas quando e enquanto
forem necessários.

Algoritmo 6.7.2 Método de Thomas


d′1 = d1
b′1 = b1
for k = 2 to n do (condensação)
mk = ak /d′k−1
d′k = dk − mk ck−1
b′k = bk − mk b′k−1
od
xn = b′n /d′n
for k = n − 1 to 1 step − 1 do (substituições ascendentes)
xk = (b′k − ck xk+1 )/d′k
od
312 Sistemas de equações lineares: métodos directos

Exemplifiquemos esta técnica com um sistema particionado da seguinte maneira


! ! !
A11 A12 x1 b1
A= x= , b= ,
A21 A22 x2 b2

com

A11 ∈ Rn1 ×n1 , A12 ∈ Rn1 ×n2


A21 ∈ Rn2 ×n1 , A22 ∈ Rn2 ×n2
x1 , b1 ∈ Rn1 x2 , b2 ∈ Rn2

e n1 + n2 = n. Nestas condições, o sistema Ax = b é desdobrável nos seguintes dois


sistemas
A11 x1 + A12 x2 = b1
(6.7.25)
A21 x1 + A22 x2 = b2
Fazendo a hipótese crucial de que o bloco diagonal A11 , por exemplo, é uma matriz
invertível, podemos extrair do primeiro sistema de (6.7.25) a relação

x1 = A−1
11 (b1 − A12 x2 ) (6.7.26)

que, substituída no segundo sistema de (6.7.25), proporciona, após manipulações simples,

(A22 − A21 A−1 −1


11 A12 )x2 = b2 − A21 A11 b1

Estamos agora perante um sistema com n2 equações e igual número de incógnitas. Se


a matriz deste sistema for invertível, então, a sua solução fornece o valor de x2 que,
substituído no segundo membro de (6.7.26), nos permite obter x1 . Assim, o problema
original, consistindo num sistema de dimensão n, foi desdobrado em dois sistemas de
dimensões n1 e n2 mais pequenas.
O processo que acabamos de descrever não é outro senão o método de Gauss conduzido
com submatrizes em vez de elementos escalares, não sendo, portanto, complicada a sua
generalização a partições arbitrárias. A hipótese de invertibilidade de certos blocos é a
contrapartida da exigência de não anulamento dos elementos pivô. Consideremos, então,
a seguinte partição do sistema

A11 A12 · · · A1p


     
x1 b1
A21 A22 · · · A2p  x2  b2 
     
A =  ..
 .. .. ,
..  x=
 ..  ,
 b=
 .. 

 . . . .   .   . 
Ap1 Ap2 · · · App xp bp
Pp
em que Aij ∈ Rni ×nj , xi , bi ∈ Rni e i=1 ni = n.
6.8 Análise de erros 313

O processo de condensação traduz-se nas equações matriciais


(k+1) (k) (k) (k) −1 (k)
 
Aij = Aij − Aik Akk Akj
(6.7.27)
(k) −1
 
(k+1) (k) (k) (k)
bi = bi − Aik Akk bk

cujas semelhanças com as expressões (6.3.1) são flagrantes. Como se pode comprovar,
apenas é preciso ter quatro blocos simultaneamente em memória central para efectuar a
condensação. As substituições ascendentes seguem o mesmo processo, vindo
n
X
Āii xi = b̄i − Āij xj , i = 1, . . . , p (6.7.28)
j=i+1

sendo, portanto, necessário resolver p sistemas em sucessão.


Chamamos a atenção para o facto de que em algoritmos deste tipo as operações de
leitura e escrita dos vários blocos de e para memória periférica tornam todo o processo
muito dependente da rapidez destas operações mais do que da velocidade das operações
aritméticas propriamente ditas, pelo que a respectiva programação deve ser rodeada do
máximo cuidado. Nomeadamente, a forma como os blocos são acedidos torna imperativo
o recurso a ficheiros de acesso directo.
Uma classe de matrizes especiais neste contexto é apresentada na definição seguinte.
Definição 6.7.1 Uma matriz A diz-se redutível se existir uma matriz de permutação P
tal que PAP T seja triangular superior por blocos, i.e.,
· · · A1p
 
A11 A12

0 A22 · · · A2p 
PAP T = 
 
 .. .. .. .. 
 . . . . 

0 0 · · · App
Caso contrário, a matriz A diz-se irredutível.
Quer isto dizer que, se A for redutível, pode ser transformada, por permutações
simétricas de linhas e colunas, numa matriz triangular superior por blocos. Reduz-se
assim a solução do sistema de equações original à solução sequencial de p sistemas de
menor dimensão. Todavia, a descoberta de P pode não ser uma tarefa trivial.

6.8 Análise de erros


Nesta secção vamos focar dois aspectos importantes relacionados com a qualidade das
soluções de sistemas de equações lineares obtidas pelos métodos estudados neste capítulo.
O primeiro aspecto diz respeito à sensibilidade da solução relativamente a perturbações
na matriz A e no vector b, enquanto o segundo se refere à influência dos erros de arre-
dondamento. Como veremos, estes dois problemas estão relacionados.
314 Sistemas de equações lineares: métodos directos

6.8.1 Efeito das perturbações


Salvo raras excepções, os elementos da matriz A e do segundo membro b do sistema
de equações Ax = b estão afectados de erros resultantes de uma ou várias das seguintes
causas:

• Não ser possível representar exactamente em ponto flutuante os valores de aij e bi ;


• Os valores destes coeficientes provirem de cálculos anteriores e estarem naturalmente
contaminados por erros de arredondamento;
• Estes valores serem obtidos por via experimental e, portanto, estarem afectados por
erros de medição.

Então, o sistema que efectivamente resolvemos não é Ax = b, mas sim um sistema


ligeiramente diferente ou perturbado. Denotemos por δA e δb as perturbações da matriz
A e do segundo membro b provocadas pelas causas a que acabamos de aludir. Então, o
sistema original e o sistema perturbado são respectivamente

Ax = b (6.8.1)
(A + δA)(x + δx) = b + δb (6.8.2)

em que se designa naturalmente por x + δx a solução do sistema perturbado. A questão


que vamos investigar é a de saber quão grande pode ser δx e, em particular, tentar saber
se a pequenas perturbações δA e δb correspondem ou não pequenas perturbações δx, ou
seja, se os algoritmos de solução apresentados são estáveis ou não.

Perturbações no segundo membro


A fim de simplificar a exposição, vamos considerar primeiro o caso particular em que
δA = 0, i.e., a matriz do sistema está correcta e as perturbações verificam-se apenas no
segundo membro b. Neste caso, temos que

A(x + δx) = b + δb (6.8.3)

Subtraindo membro a membro as expressões (6.8.1) e (6.8.3), vem que

Aδx = δb (6.8.4)

Admitindo de ora em diante que A é invertível, podemos escrever que

δx = A−1 δb (6.8.5)

Aplicando normas a ambos os membros desta igualdade, resulta que

kδxk ≤ kA−1 k kδbk (6.8.6)


6.8 Análise de erros 315

Então, é o valor de kA−1k que determina a maior ou menor influência das perturbações
δb na solução. No entanto, o valor de kδxk só por si não significa muito, pois um erro de
kδxk = 1 numa solução x tal que kxk ≈ 106 poderá ser aceitável, enquanto o mesmo erro
numa solução tal que kxk ≈ 1 significa um desastre computacional. Por isso faz geralmente
mais sentido trabalhar com erros relativos, os quais, em face do carácter vectorial de x,
definiremos por kδxk/kxk, e perturbações relativas, igualmente definidas por kδbk/kbk.
De (6.8.6) extraímos a relação

kδxk kδbk
≤ kA−1 k (6.8.7)
kxk kxk

Mas, por outro lado, aplicando normas a ambos os membros de (6.8.1), concluímos que

kbk
kbk = kAxk ≤ kAkkxk ou seja, kxk ≥ (6.8.8)
kAk,

Introduzindo esta relação em (6.8.7), obtemos

kδxk kδbk
≤ kAk kA−1k (6.8.9)
kxk kbk

Agora, os erros relativos estão relacionados com as perturbações relativas por intermédio
de kAkkA−1k. Esta quantidade é fulcral na análise de erros em sistemas de equações e
costuma ser designada por número de condição da matriz A (relativamente à inversão) e
será denotado por
cond A = kAk kA−1k (6.8.10)
Este conceito de número de condição é semelhante ao que se introduziu na Subsecção
1.6.1 no contexto da propagação de erros em funções. Chamamos a atenção para o facto
de que o valor numérico de cond A depende obviamente da norma utilizada. A expressão
(6.8.9) pode, pois, escrever-se

kδxk kδbk
≤ cond A (6.8.11)
kxk kbk

Quanto maior for cond A tanto mais sensível é o sistema de equações a perturbações
no segundo membro. Matrizes com um número de condição elevado dizem-se mal condi-
cionadas, e com um número de condição baixo dizem-se bem condicionadas. É fácil
demonstrar que cond A ≥ 1 (ver o Problema 6.11.52).
Em geral, o cálculo do número de condição ou, mesmo, de uma estimativa realista não
é uma tarefa fácil, estando por isso fora do âmbito deste texto. Existem, contudo, alguns
algoritmos eficientes (leia-se O(()n2 )) para obter estimativas deste número (consultar
CLINE et al. (1979) e ?).
316 Sistemas de equações lineares: métodos directos

Perturbações na matriz
Vamos estudar agora o efeito das perturbações da matriz A, considerando que o segundo
membro b está correcto. O sistema efectivamente resolvido é, então

(A + δA)(x + δx) = b (6.8.12)

Este caso é mais complicado que o anterior, e, por isso, precisamos de alguns teoremas
preliminares que visam caracterizar as perturbações que não destroem a invertibilidade
de uma matriz.
Teorema 6.8.1 Seja A uma matriz invertível. Se, em alguma norma, se verificar que

kA−1 (A − B)k < 1 (6.8.13)

então B é invertível. Identicamente, se

kI − Bk < 1 (6.8.14)

então B é invertível.
Demonstração Suponhamos que, contrariamente à afirmação do teorema, a matriz
B é singular. Isto implica que existe um vector x 6= 0 tal que Bx = 0. Para este vector
ter-se-á que

Ax = Ax − Bx = (A − B)x ou seja x = A−1 (A − B)x (6.8.15)

Aplicando normas a ambos os membros desta última relação e tendo em consideração a


condição (6.8.13), chegamos à desigualdade

kxk = kA−1 (A − B)xk ≤ kA−1 (A − B)kkxk < kxk (6.8.16)

que é manifestamente impossível. Logo, B é invertível que era o que pretendíamos de-
monstrar.
Tomando A = I em (6.8.13), a expressão (6.8.14) decorre imediatamente como simples
corolário.
Partindo da expressão

kA−1 (A − B)k ≤ kA−1 kkA − Bk (6.8.17)

concluímos que, se
kA − Bk < 1/kA−1k (6.8.18)
então a condição (6.8.13) é verificada. Por outras palavras, se A for invertível, (6.8.18) é
uma condição suficiente para B também o ser. Esta conclusão é susceptível da seguinte
interpretação geométrica clarificadora. Como kA − Bk mede a distância entre as matrizes
6.8 Análise de erros 317

A e B, podemos dizer que todas as matrizes B que distam de A menos que 1/kA−1k
são matrizes invertíveis, ou, por outras palavras, para cada matriz A invertível existe
uma vizinhança desta matriz constituída exclusivamente por matrizes invertíveis. Se
pensarmos em B como uma perturbação de A, então o teorema anterior garante-nos que
a invertibilidade das matrizes perturbadas é preservada desde que as perturbações não
sejam ‘demasiado grandes’.
O teorema seguinte tem um carácter idêntico ao do Teorema 6.8.1.
Teorema 6.8.2 Se, em alguma norma, se verificar kAk < 1, então I − A é invertível e
k(I − A)−1 k ≤ 1/(1 − kAk) (6.8.19)
kI − (I − A)−1 k ≤ kAk/(1 − kAk) (6.8.20)
Demonstração Suponhamos, ao contrário do que afirma o enunciado, que a matriz
I − A é singular. Existe, então, um vector x 6= 0 tal que
(I − A)x = x − Ax = 0 ⇒ x = Ax
pelo que, aplicando normas a ambos os membros desta última expressão,
kxk = kAxk ≤ kAkkxk < kxk
o que é impossível. Por conseguinte, I − A é invertível. Para provar a veracidade de
(6.8.19) partamos da identidade
(I − A)(I − A)−1 = I
Efectuando o produto de matrizes indicado, decorre daqui que
(I − A)−1 = I + A(I − A)−1 (6.8.21)
Tomando normas obtemos
k(I − A)−1 k = kI + A(I − A)−1 k
≤ kIk + kA(I − A)−1 k
≤ 1 + kAkk(I − A)−1 k
donde resulta imediatamente (6.8.19). Para demonstrar (6.8.20), extraímos de (6.8.21) a
relação
I − (I − A)−1 = −A(I − A)−1
e, aplicando novamente normas a ambos os membros desta expressão, vem que
kI − (I − A)−1 k = k − A(I − A)−1 k ≤ kAkk(I − A)−1 k
Esta relação, conjuntamente com (6.8.19), fornece (6.8.20).
No próximo teorema abordamos a relação entre a inversa de uma matriz e a inversa
de uma sua perturbada.
318 Sistemas de equações lineares: métodos directos

Teorema 6.8.3 Seja A uma matriz invertível, e E, uma matriz satisfazendo a relação

kA−1Ek < 1 (6.8.22)

Então, A + E é invertível e a sua inversa pode escrever-se na forma

(A + E)−1 = (I + F)A−1 (6.8.23)

com
kFk ≤ kA−1 Ek/(1 − kA−1 Ek) (6.8.24)
Além disso,
kA−1 − (A + E)−1 k ≤ kA−1 kkA−1 Ek/(1 − kA−1 Ek) (6.8.25)

Demonstração Tomemos como ponto de partida a identidade

A + E = A(I + A−1 E) (6.8.26)

A hipótese (6.8.22) juntamente com a expressão (6.8.17) provam que a matriz I + A−1 E é
invertível. Como A também é invertível, resulta que A + E é invertível. Nestas condições,
podemos escrever que

(A + E)−1 = (A(I + A−1 E))−1 = (I + A−1 E)−1 A−1 (6.8.27)

Definamos F por
F = (I + A−1 E)−1 − I (6.8.28)
Tomando a norma de ambos os membros desta igualdade e recorrendo ao Teorema 6.8.2,
deduzimos sem dificuldade a expressão (6.8.24). A expressão (6.8.23) pode escrever-se na
forma equivalente
A−1 − (A + E)−1 = −FA−1
donde concluímos que
kA−1 − (A + E)−1 k = kFA−1 k
ou seja,
kA−1 − (A + E)−1 k/kA−1 k ≤ kFk
o que termina a demonstração do teorema.
Depois desta série de teoremas vamos retomar o tema inicial de determinar a influência
que as perturbações na matriz A têm sobre a solução do sistema de equações. Admitindo
que as perturbações δA são suficientemente pequenas para o Teorema 6.8.3 ser válido,
i.e., kA−1 δAk < 1, então, a matriz perturbada (A + δA) também é invertível. Assim, é
legítimo dizer que
x + δx = (A + δA)−1 b
6.8 Análise de erros 319

ou ainda que
h i
δx = (A + δA)−1 A − I x
h i
= (A−1(A + δA))−1 − I x
h i
= (I + A−1 δA)−1 − I x

Tomando normas, majorando como habitualmente e fazendo apelo ao Teorema 6.8.2, vem
que
kA−1δAk
kδxk ≤ kxk
1 − kA−1 δAk
Se x 6= 0, deduzimos daqui a seguinte expressão para os erros relativos,
kδxk
≤ kA−1 δAk/(1 − kA−1 δAk)
kxk
 
≤ kA−1 kkδAk/ 1 − kA−1δAk
!
kδAk kδAk

≤ cond A 1 − cond A (6.8.29)
kAk kAk

Mais uma vez aparece o número de condição a determinar a maior ou menor influência que
as perturbações da matriz A podem ter na solução. Pequenas perturbações em matrizes
mal condicionadas podem alterar substancialmente o resultado. Pelo contrário, pequenas
perturbações em matrizes bem condicionadas nunca são catastróficas.

Exemplo 6.8.1 Calcular o número de condição das matrizes do Exemplo 6.5.1.

Uma aplicação imediata das definições fornece, para o caso do Exemplo 6.5.1, os valores

kAk∞ = 2.8390, kAk1 = 3.648

Calculando a inversa de A, um processo só aceitável por se tratar de um exemplo, obtém-se


 
−1 4.405540049 2.285305121
A = , kA−1 k∞ ≈ 6.691, kA−1 k1 ≈ 5.207
0.8015074944 −0.5502339778 10−3

pelo que
cond∞ A ≈ 19.0, cond1 A ≈ 19.0
Trata-se, pois, de uma matriz bem condicionada. O mau resultado obtido na primeira parte
do Exemplo 6.5.1 deveu-se a uma escolha ruinosa de algoritmo e não ao mau condicionamento
do problema.

Vejamos um caso de matriz mal condicionada para o qual já havíamos chamado a


atenção no Capítulo 2.
320 Sistemas de equações lineares: métodos directos

Exemplo 6.8.2 Calcular o número de condição das matrizes de Vandermonde (2.3.2)


numa malha uniforme no intervalo [0, 1].

Neste caso os nós são dados por xi = ih, i = 0, . . . , n, com h = 1/n. Recorrendo a um
programa que estime o nḿero de condição, como, por exemplo, os incluídos na programateca
LAPACK, obtemos os seguintes valores:

n 2 4 6 8
cond∞ A ≈ 24 ≈ 1700 ≈ 105 ≈ 107

Como vemos, o número de condição piora de forma muito acentuada com a dimensão da
matriz. A construção do polinómio interpolador por via da matriz de Vandermonde torna-se
impraticável em precisão simples a partir do grau n ≈ 6.

6.8.2 Efeito dos erros de arredondamento


O número de flops necessários para levar a cabo os algoritmos de solução de sistemas de
equações estudados neste capítulo é O(n3 ) e, portanto, tende a ser muito elevado mesmo
para valores de n relativamente modestos. Uma questão com interesse é a de saber se os
erros de arredondamento cometidos não irão prejudicar seriamente a precisão da solução.
A análise pormenorizada da propagação destes erros está fora do âmbito deste texto, pelo
que nos limitaremos a apresentar os resultados principais.
Comecemos pela solução de sistemas triangulares em aritmética de ponto flutuante
a qual verifica o Teorema 6.8.4 cujo significado, em linguagem corrente, é o seguinte: a
solução de um sistema com matriz triangular, em aritmética de precisão finita, é igual à
solução, em aritmética exacta, de um sistema com uma matriz triangular ‘ligeiramente
diferente’, um resultado em puro estilo de análise regressiva de erros.

Teorema 6.8.4 Seja T ∈ Rn×n triangular invertível e cujos elementos têm representação
exacta no sistema de ponto flutuante. Então, a solução x̃ do sistema Tx = b em ponto
flutuante verifica
(T + δT)x̃ = b, com |δT| ≤ γn |T|
em que γn é dado pelo Teorema 1.4.1.

Demonstração Consiste basicamente numa adaptação do resultado para o produto


interno de vectores (1.4.22), no emprego do Teorema 1.4.1 e de algumas majorações (ver
HIGHAM (1996)). A hipótese de representação exacta destina-se apenas a simplificar,
não alterando nada de essencial.
Vejamos agora o caso geral. Suponhamos que o sistema Ax = b foi resolvido em
aritmética de ponto flutuante, tendo-se obtido a solução aproximada x̃ em vez da solução
exacta x. Admitamos ainda, para aligeirar a exposição, que todas as trocas de linhas e/ou
colunas eventualmente requeridas pela escolha de pivô foram feitas à partida sobre A e b,
6.8 Análise de erros 321

ou seja, não houve trocas de linhas nem de colunas durante a factorização propriamente
dita. Ponhamos
(k)
αk = max{|aij |, i, j = 1, . . . , n}
(6.8.30)
γ = max{αk , k = 2, . . . , n}/α1
Assim, αk é o maior elemento em valor absoluto da matriz intermédia A(k) e, em particular,
α1 é o maior elemento em valor absoluto da matriz original A(1) ≡ A. Nestes termos, é
possível formular o seguinte teorema.
Teorema 6.8.5 As matrizes L̃ e Ũ determinadas pela factorização da matriz A em ponto
flutuante satisfazem a igualdade
L̃Ũ = A + E (6.8.31)
em que E é uma matriz cujos elementos são majorados por

|eij | ≤ nūγα1 (6.8.32)

e ū é uma constante da ordem da unidade de arredondamento.


Demonstração Ver WILKINSON (1964).
Em palavras simples, o que este teorema diz é que a factorização obtida em ponto
flutuante é a factorização exacta de uma matriz ligeiramente diferente, sendo a diferença
dada por E. Os elementos desta matriz ‘erro’ são majorados de acordo com a expressão
(6.8.32) que nos mostra que o principal factor que controla o respectivo tamanho é γ.
Por este motivo e atendendo à definição (6.8.30), é comum designar γ como factor de
crescimento dos elementos da matriz A durante a factorização. É possível estabelecer os
seguintes majorantes para o seu valor,

2n−1 para pivô parcial
γ≤ 1 1/2 1/3 1/(n−1) 1/2
(6.8.33)
(n2 3 4 ···n ) para pivô total

No caso de pivô parcial, o valor de γ pode ser muito elevado, pois cresce bastante rapi-
damente com a dimensão n do sistema e, de facto, são conhecidas matrizes para as quais
γ atinge o seu valor máximo. A experiência tem felizmente mostrado que estas matrizes
são raras pelo que, na prática, a factorização com pivô parcial é um processo numerica-
mente estável. Quando se usa a técnica de pivô total, o majorante de γ cresce lentamente
com n, não se conhecendo nenhuma matriz para a qual o valor do factor de crescimento
ultrapasse n. Podemos, pois, concluir também que a factorização com pivô total é um
algoritmo numericamente estável.
Se o método de Crout for implementado com acumulação de produtos internos em
dupla precisão, o que vimos poder ser feito com facilidade, o factor n na expressão (6.8.32)
pode ser suprimido, tornando este método ainda mais atraente do ponto de vista dos erros.
Um teorema semelhante ao anterior mas referente agora a sistemas de equações é o
seguinte.
322 Sistemas de equações lineares: métodos directos

Teorema 6.8.6 Seja x̃ a solução do sistema Ax = b obtida pelo método de factorização


em ponto flutuante. Então, x̃ é a solução exacta do sistema perturbado

(A + E)x̃ = b (6.8.34)

em que os elementos da matriz E verificam as relações

|eij | ≤ (nc1 + 2n2 c2 + n3 c22 ū)ūγα1 (6.8.35)

e os c1 e c2 são constantes da ordem da unidade, e ū é uma constante da ordem da unidade


de arredondamento do sistema de ponto flutuante.

Demonstração Ver WILKINSON (1964).


Este teorema tem uma leitura simples que é a seguinte: a solução aproximada obtida
pelo método de factorização é a solução exacta de um sistema cuja matriz difere da
matriz do sistema dado por uma pequena perturbação. Quão pequena é esta perturbação
depende do valor do segundo membro de (6.8.35), onde novamente o factor de crescimento
γ é determinante. Podemos dizer que as técnicas de escolha de pivô devem ter como
objectivo manter o valor deste parâmetro o mais baixo possível e, assim, limitar os efeitos
nefastos dos erros de arredondamento.
Combinando o resultado deste teorema com a expressão (6.8.26) e admitindo que a
matriz E em (6.8.34) satisfaz kA−1 Ek < 1, temos a seguinte estimativa do erro cometido
na solução dum sistema de equações pelo método de factorização

cond AkEkkAk
kx − x̃k ≤ kxk (6.8.36)
1 − cond A kEk/kAk

onde novamente intervém o número de condição a desempenhar um papel decisivo.


Vamos mencionar ainda duas outras expressões do erro de natureza semelhante a
(6.8.36) e que por vezes são úteis. Introduzamos o resíduo r definido por

r = b − Ax̃ (6.8.37)

o qual é obviamente nulo quando x̃ = x. Então, podemos escrever que

r = A(x − x̃) ⇒ x − x̃ = A−1 r (6.8.38)

donde, aplicando normas, extraímos

kx − x̃k ≤ kA−1 kkrk (6.8.39)

A vantagem desta expressão é a de que faz intervir o resíduo que, uma vez obtida a solução
aproximada x̃, pode ser calculado através de (6.8.37). É mais significativo trabalhar com
6.9 Refinamento iterativo 323

o resíduo relativo definido por krk/kbk para evitar os efeitos de escala. Recorrendo a
(6.8.8), não é difícil concluir que

kx − x̃k krk krk


≤ kAkkA−1k = cond A (6.8.40)
kxk kbk kbk
Esta expressão permite-nos fazer um aviso importante. A resíduos pequenos podem cor-
responder erros elevados se a matriz A for mal condicionada, ou, por outras palavras, o
resíduo só é um bom indicador do erro se A for bem condicionada. Ora, acontece que
os métodos de solução de sistemas de equações estudados (Gauss, factorização LU, etc.)
tendem pela sua própria natureza a produzir resíduos baixos, o que faz recair novamente
sobre o número de condição a responsabilidade de aferir os erros.
Uma segunda expressão do erro semelhante a (6.8.40) mas em que aparece a solução
aproximada x̃ em vez da solução exacta x pode deduzir-se da seguinte maneira

x − x̃ = A−1 b − x̃ = A−1 (A + E)x̃ − x̃ = A−1 Ex̃ (6.8.41)

e aplicando normas
kEk
kx − x̃k ≤ kA−1 kkEkkx̃k ≤ kAkkA−1k kx̃k
kAk
kEk
= cond A kx̃k (6.8.42)
kAk

Como pretendíamos, agora a expressão do erro envolve a solução computada x̃.

6.9 Refinamento iterativo


Nesta secção vamos mostrar como é possível melhorar a solução aproximada x̃ por um
processo iterativo. Designemos o erro e o resíduo associados à solução aproximada x̃ por

e = x − x̃, r = b − Ax̃ (6.9.1)

que estão relacionados por


Ae = r (6.9.2)
Quer isto dizer que o erro é a solução de um sistema de equações com a mesma matriz
A mas cujo segundo membro é o resíduo r. Contudo, a expressão (6.9.2) não pode ser
tomada como uma via para determinar exactamente o erro e, já que a solução deste
sistema também seria afectada por erros de arredondamento. No entanto, talvez seja
legítimo encarar a hipótese de que o valor de x̃ + ẽ, em que ẽ é o valor aproximado obtido
via solução de (6.9.2) possa constituir uma melhor aproximação da solução exacta x do
que x̃. Convém notar que, uma vez obtida a factorização (em aritmética de precisão
324 Sistemas de equações lineares: métodos directos

finita) L̃Ũ de A, a solução de (6.9.2) envolve apenas as fases de substituições ascendentes


e descendentes, pelo que o processo sob consideração não é, do ponto de vista do número
de operações, demasiado oneroso. Nada impede que, dispondo de x̃ + ẽ como solução
aproximada, o processo possa ser repetido tantas vezes quantas as necessárias até se
satisfazer um critério de convergência apropriado. O método assim construído é conhecido
por refinamento iterativo da solução.
Se designarmos respectivamente por xk e rk a solução aproximada e o resíduo na etapa
k, este processo pode sintetizar-se no Algoritmo 6.9.1 (onde se omitiu, por simplicidade,
a escolha de pivô).
Como facilmente se vê, x1 = x, i.e., a primeira iteração deste processo produz a solução
usual do sistema.
É preciso prestar atenção a um aspecto importante que, se não for tido em conta, anula
totalmente a finalidade do refinamento iterativo. Suponhamos, para simplificar, que A, b
e x possuem componentes da ordem da unidade, que se trabalha com aritmética de ponto
flutuante com 6 dígitos e que a solução é obtida com 4 dígitos exactos, i.e., há perda de 2
dígitos. Representemos por y um dígito exacto, e por z, um dígito incorrecto. Então, um
momento de reflexão permite-nos concluir que devemos ter as seguintes configurações de
dígitos:
x1 .yyyyzz
r1 .0000yy (antes da normalização)
r1 .yy0000 × 10−4 (após normalização)
h1 .zzzzzz
em que esta última passagem se explica por, ao resolver de novo o sistema de equações,
ocorrer a perda de 2 dígitos, os únicos dígitos significativos que restavam. Isto significa
que de nada adianta somar h1 a x1 para melhorar esta solução aproximada, pois h1
possivelmente não tem qualquer dígito correcto! A conclusão a tirar desta análise é a de
que, para o refinamento iterativo ser efectivo, os resíduos devem ser calculados com uma
precisão superior à usada na solução do sistema. Este preceito implica, na prática, que os

Algoritmo 6.9.1 Refinamento iterativo


Fixar uma tolerância τ
Fixar um limite kmax para o contador de iterações
x0 = 0; r0 = b (inicialização)
for k = 0 to kmax do
(L̃Ũ)hk = rk (resolver para obter hk )
xk+1 = xk + hk
rk+1 = b − Axk+1
if khk k ≤ τ kxk k then exit fi od
Aviso: teste de convergência não satisfeito
6.10 Notas e referências 325

resíduos devem ser acumulados em precisão dupla, um processo relativamente económico


computacionalmente.
O maior inconveniente do refinamento iterativo reside no facto de a matriz A, sendo
necessária para o cálculo do resíduo, não poder ser destruída na factorização e, deste
modo, duplicarem as necessidades de memória relativamente ao caso normal. Por esta
razão, o refinamento iterativo só será justificável quando se pretendem soluções de grande
precisão qualquer que seja o custo.
A convergência deste processo pode ser estudada pelos métodos que serão descritos no
Capítulo ??.

6.10 Notas e referências


1. Uma introdução à Álgebra Linear especialmente adequada ao estudo dos métodos numéricos
pode encontrar-se em HOUSEHOLDER (1964), HORN and JOHNSON (1988), ORTEGA
(1989a) ou STRANG (1980).
2. Os métodos numéricos em Álgebra Linear constituem uma área onde a influência dos com-
putadores mais se tem feito sentir. Para uma apresentação mais avançada podem ser con-
sultados os textos de JENNINGS (1977), de STEWART (1973), de WATKINS (1991) e de
GOLUB and van LOAN (1989), especialmente este último. RICE (1981), TREFETHEN
and BAU (1997) e STEWART (1998) dão um maior enfoque aos aspectos computacionais.
3. Uma obra influente do ponto de vista algorítmico é WILKINSON and REINSCH (1971).
Nela são apresentados e analisados muitos dos algoritmos na área da Álgebra Linear que
hoje estão incorporados em programatecas matemáticas de uso corrente, quer do domínio
público, como a programateca LINPACK (ver DONGARRA et al. (1979)) ou a sua sucessora
LAPACK (ver ANDERSON et al. (1995)), quer comercializadas, como a IMSL e a NAG.
Indispensável neste aspecto é também HIGHAM (1996).
4. A solução de sistemas de equações algébricas lineares pela programateca LINPACK (fac-
torização LU com pivô parcial) tem sido usada como padrão de medida da velocidade de
computadores vocacionados para o cálculo científico. Assim, um computador que faz 200
MFlop/s LINPACK 1 000× 1 000 é uma máquina que resolve sistemas de equações algébricas
lineares de dimensão 1 000 ao ritmo de 200 × 106 flops por segundo usando as sub-rotinas
daquela programateca. Em DONGARRA (1994) são descritos os pormenores deste teste e
estão compilados os valores obtidos para um grande número de computadores.
5. A programação dos algoritmos da Álgebra Linear Numérica é uma tarefa que requer cuidados
especiais, pois uma abordagem descuidada facilmente conduz a programas ineficientes. Neste
sentido, é muito útil recorrer a programatecas como as citadas acima ou, pelo menos, fazer
uso intensivo das rotinas BLAS (ASHBY et al. (1990), DONGARRA et al. (1988) e LAWSON
et al. (1979)) para as operações básicas.
6. O caso de matrizes esparsas, muito importante nas aplicações e que apenas afloramos, é
tratado desenvolvidamente em DUFF et al. (1989), PISSANETZKY (1984), TEWARSON
326 Sistemas de equações lineares: métodos directos

(1973), ZLATEV (1991), e, para o caso especial de matrizes definidas positivas, em GEORGE
and LIU (1981).

7. Além da factorização LU, existem outras factorizações que podem ser úteis na solução de
sistemas de equações, sobretudo se estes forem mal condicionados. É o caso da factorização
QR e da decomposição em valores singulares estudadas no Capítulo ??.

8. Uma boa introdução ao estudo dos algoritmos de solução de sistemas de equações linea-
res (métodos directos e iterativos) em computadores de arquitectura vectorial e paralela é
ORTEGA (1989b).

9. Em STEWART and SUN (1990) é desenvolvida uma análise aprofundada do efeito das
perturbações em sistemas de equações algébricas lineares.

6.11 Problemas
1. Uma matriz A ∈ R1×1 é a mesma coisa que um número real?

2. a) Mostre que a multiplicação de duas matrizes A ∈ Rm×n e B ∈ Rn×p requer mpn multi-
plicações e mp(n − 1) adições.
b) Sejam A, B ∈ Rn×n e x ∈ Rn . Tendo em conta o resultado da alínea anterior, qual é a
forma mais económica de calcular ABx: (AB)x ou A(Bx)?
c) Escreva um pseudo-programa para implementar esta forma.

3. Justifique as seguintes afirmações:

a) A i-ésima equação do sistema (6.1.1) pode escrever-se da seguinte forma:

(Ax, ei ) = (b, ei )

b) Esta equação representa um hiperplano cuja normal ai é a i-ésima linha de A, i.e.,


ai ≡ AT ei , e cuja distância à origem é bi /kai k2 .
c) A solução de (6.1.1) consiste, portanto, na determinação da intersecção dos n hiperplanos.

4. a) Uma matriz A ∈ Cn×n diz-se monótona se Ax ≥ 0 =⇒ x ≥ 0, ∀x ∈ Cn . Demonstre que


uma matriz monótona é invertível e que A−1 é positiva.
b) Qual é a consequência deste facto no caso de dois sistemas de equações lineares Ax = b
e Ay = c em que c ≥ b?
c) Mostre que a matriz  
1 −1 −1
A = −2 3 0
−2 3 1
é monótona. Sugestão: obter a respectiva factorização LU.
6.11 Problemas 327

d) Prove que se A possuir uma factorização LU em que diag L > 0, diag U > 0, e lij ≤ 0,
uij ≤ 0, para todos os i 6= j, então A é monótona.

5. Sejam A ∈ Rm×n e B ∈ Rn×p .

a) Prove que (AB) · j = AB · j e justifique a afirmação de que as colunas de AB são com-


binações lineares das colunas de A.
b) Deduza ainda que r(AB) ≤ min{r(A), r(B)}
c) Se A for invertível (logo m = n), então r(AB) = r(B).

6. Descreva numa linguagem de programação à sua escolha algoritmos para calcular y = Ax


com A ∈ Rm×n .

a) Recorrendo à definição usual de produto de matrizes;


b) Tendo em conta o facto de y ser uma combinação linear das colunas de A;
c) Mostre que o número de flops é o mesmo nos dois casos;
d) Tente descobrir vantagens e desvantagens relativas que possam orientar uma opção entre
estes dois algoritmos.

7. Num problema surge a necessidade de multiplicar matrizes A ∈ Rn×n por vectores x ∈ Rn .


Contudo, para os casos em consideração, sabe-se que A é obtida por intermédio de A = GH T
em que G, H ∈ Rn×p e são conhecidas.

a) Deduza um algoritmo alternativo que pode ser mais económico que o processo habitual.
b) Para que valores de p é que isto acontece?
c) Escreva, numa linguagem à sua escolha, um pseudo programa que implemente este
método.
 
1 0
8. Considere a seguinte família de matrizes A(ǫ) = . Mostre que a característica de A(ǫ)
0 ǫ
é 2 para ǫ 6= 0 mas é 1 para ǫ = 0 e, portanto, a característica não é uma função contínua
dos elementos da matriz. Qual é a implicação deste facto na determinação numérica da
característica?

9. Seja A ∈ Rn×n com r(A) = 1.

a) Mostre que A é necessariamente da forma A = uv T com u, v ∈ Rn ;


b) Tome v = u e kuk2 = 1. Demonstre que neste caso kAk2 = kAkF = 1.

10. (Regra de Cramer demonstrada engenhosamente por S. M. Robinson em 1970, citado em


AXELSSON (1996)). Seja A uma matriz invertível e Ai a matriz que se obtém de A
substituindo nesta a coluna i pelo segundo membro b e Xi a matriz que se obtém de I
substituindo nesta a coluna i pelo vector x.

a) Prove que o conjunto de equações AXi = Ai , com i = 1, . . . , n, é equivalente a Ax = b.


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

b) Aplique determinantes e obtenha a regra de Cramer.

11. Sejam dadas duas matrizes A, B ∈ Rn×n triangulares superiores.

a) Escreva um algoritmo para calcular C = AB, usando uma linguagem á sua escolha.
b) Idem, mas de modo a que a matriz C possa ser escrita sobre A.
c) Mostre que o número de flops é, em qualquer dos casos, O(n3 /3). Sugestão: recorrer ao
resultado do Exemplo 4.7.1.

12. Demonstre que o produto de duas matrizes triangulares inferiores (ou superiores) é uma
matriz triangular inferior (ou superior). Se as matrizes triangulares possuírem diagonal
unitária, então, o seu produto também terá diagonal unitária. Sugestão: aplicar indução na
ordem das matrizes.

13. Recorrendo ao Teorema 6.1.7, calcule a inversa da matriz triangular inferior


 
1 0 ··· 0
1 1 · · · 0
A = . . .. .
 
 .. .. . .. 
1 1 ··· 1

14. Demonstre as seguintes desigualdades

n−1/2 kxk2 ≤ kxk∞ ≤ kxk2 ≤ kxk1 ≤ n1/2 kxk2

15. Demonstre que

|xy| ≤ kxk∞ kyk1 , |xy| ≤ kyk∞ kxk1


kxk1 = max |xy|, kyk∞ = max |xy|
kyk∞ =1 kxk1 =1

16. Considere a seguinte norma em R2 : kxk = |x1 − x2 | + |x2 |.

a) Verifique que se trata de facto de uma norma mas não de uma norma absoluta.
b) Desenhe a bola centrada na origem e de raio unitário associada a esta norma.
c) Mostre que kxk = kAxk1 para uma certa matriz A invertível. Tome este resultado como
ponto de partida para uma nova demonstração da alínea a).

17. Demonstre que kAk1 = kAT k∞ e kAk∞ = kAT k1 .

18. a) Calcule a norma da matriz identidade subordinada a uma norma vectorial qualquer e a
norma de Frobenius. Em face do resultado conclua que esta não pode ser induzida por
nenhuma norma vectorial.
b) Mostre que, no caso de vectores linha ou vectores coluna, i.e., A ∈ Cn×1 ou A ∈ C1×n ,
a norma de Frobenius coincide com a norma euclideana de vectores.
6.11 Problemas 329

19. Mostre que a função ν(A) = max1≤i,j≤n |aij | não define uma norma de matrizes subordinada
a uma norma vectorial. Sugestão: Produza um caso em que a propriedade (A.5.3) é violada.

20. Prove que, para A ∈ Rn×n , a ≤ kAk2 ≤ kAkF ≤ na em que a é o elemento de maior valor
absoluto de A, i.e., a = max1≤i,j≤n |aij |. Nota: no Capítulo ?? são apresentadas outras
estimativas de kAk2 , igualmente fáceis de obter e de melhor qualidade.

21. Mostre que o cálculo de um determinante de ordem n pela definição requer (n − 1)n! multi-
plicações e n! − 1 adições e que, consequentemente, a resolução de um sistema de equações
lineares de ordem n pela regra de Cramer requer (n+1)(n−1)n! multiplicações, (n+1)(n!−1)
adições e n divisões.

22. Mostre que o número de flops necessários à solução de um sistema triangular de ordem n
por substituições sucessivas é de n(n + 1)/2 multiplicações ou divisões e n(n − 1)/2 adições.
Para n elevado podemos, pois, afirmar que o número de flops é O(n2 ).

23. Demonstre que uma matriz triangular ortogonal é necessariamente uma matriz diagonal.
Quais são os valores possíveis para os elementos diagonais?

24. Considere a forma de Newton (2.3.8) de um polinómio de grau ≤ n que interpole os valores
y0 , y1 , . . . , yn nos nós x0 , x1 , . . . , xn distintos. Mostre que os coeficientes a0 , a1 , . . . , an se
podem obter resolvendo o sistema triangular inferior

a0 = y0
a0 + a1 (x1 − x0 ) = y1
··· = ···
a0 + a1 (xn − x0 ) + · · · + an (xn − x0 ) · · · (xn − xn−1 ) = yn

Explique porque é essencial a hipótese de os nós serem distintos.

25. Diga qual o resultado de efectuar PA e AP quando


 
0 0 ··· 0 1
0 0 · · · 1 0
P = . . .. .. 
 
 .. .. . .
1 0 ··· 0 0

26. Resolva pelo método de Gauss o seguinte sistema de equações lineares:

x1 + x2 + x3 = 4
x1 − x2 + 2x3 = 4
2x1 + x2 + x3 = 5

27. Repita o problema anterior empregando agora os métodos de factorização triangular de


Doolittle e de Crout.
330 Sistemas de equações lineares: métodos directos

28. Pretende-se obter a soma s = ni=1 xi dos valores das incógnitas do sistema de equações
P
lineares Ax = b, não sendo necessário conhecer cada um dos valores xi individualmente.
Proponha um algoritmo eficiente.

29. Demonstre que, se uma matriz A possuir duas factorizações A = L1 U1 = L2 U2 com L1


e L2 matrizes triangulares inferiores de diagonal unitária, e U1 e U2 matrizes triangulares
superiores, então deve ter-se que L1 = L2 e U1 = U2 , e que, portanto, a factorização
triangular, quando existe, é única.

30. Mostre que a factorização A = LU se pode obter por bordejamento, i.e., considerando a
inclusão de uma linha e uma coluna de A de cada vez, de acordo com o esquema
     
Ak−1 dk Lk−1 0k Uk−1 uk
Ak = , Lk = , Uk =
cT
k akk lkT 1 0T
k ukk

em que Ak representa a submatriz principal de A formada pelas suas primeiras k linhas e


colunas. Descreva o algoritmo assim obtido.

31. a) Mostre que a condensação de uma matriz A ∈ Rn×n pelo método de Gauss requer
O(2n3 /3) flops. Nota: recorrer ao resultado do Exemplo 4.7.1.
b) Idem, para a factorização por métodos compactos (Doolittle ou Crout), os quais requerem
O(2n3 /3), tal como no caso anterior.

32. Mostre que uma matriz permutação elementar das linhas i e j se pode escrever na forma

P = I − ei eT T T T
i − ej ej + ei ej + ej ei

e confirme as relações (6.2.2). Prove ainda que P é ortogonal.

33. Mostre que, se a factorização LU for efectuada pelo método de Gauss com pivô parcial, os
elementos da matriz L não são superiores a 1 em valor absoluto.

34. Mostre que a condensação de Gauss de matrizes com diagonal dominante por colunas produz
submatrizes activas com esta mesma propriedade. Infira daqui que para esta classe de
matrizes a técnica de pivô parcial não produz trocas de linhas e é, portanto, inútil. Sugestão:
proceder por indução.
 
2 1
35. Considere a equilibragem por linhas da matriz A = recorrendo a matrizes de equi-
1 1
 
s 0
libragem E = com s > 0. Demonstre que s = 2/3 produz o valor mínimo de
0 1
cond∞ (EA) e compare-o com cond∞ A .

36. Resolva pelo método de Choleski o seguinte sistema de equações lineares

x1 + x2 = 3
x1 + 5x2 − 2x3 = 5
−2x2 + 2x3 = 2
6.11 Problemas 331

37. Modifique a factorização de Choleski de modo a evitar o cálculo de raízes quadradas. Aplique
esta factorização à solução do sistema do problema anterior. Sugestão: empregar a factori-
zação LDLT com D diagonal e L triangular inferior com diagonal unitária.

38. Mostre que o número de flops para obter a factorização pelo método de Choleski é O(n3 /3).

39. Considere o seguinte sistema tridiagonal de ordem n:


 
a −1
−1 a −1 
 
A=
 −1 a −1 
.. .. .. 

. . .


−1 a

a) Obtenha a factorização de Choleski desta matriz para a = 2.


b) Concluia que esta matriz é definida positiva.
c) Repita as alíneas anteriores para o caso a = 4.
d) Escreva um pseudo programa para obter a factorização de Choleski para qualquer a ≥ 2
dado.
 
a b
40. Determine as condições que os elementos da matriz A = devem satisfazer para que
b c
esta seja definida positiva.

41. Mostre que:

a) a inversa de uma matriz simétrica definida positiva também é simétrica definida positiva;
b) se B ∈ Rm×n e possuir colunas linearmente independentes, então a matriz A = B T B é
simétrica definida positiva.

42. Demonstre que a matriz de Hilbert H ∈ Rn×n , definida por hij = 1/(i + j − 1), é simétrica
e definida positiva. Sugestão: mostrar primeiro que
Z 1
hij = si+j−2 ds
0

e exprimir depois a forma quadrática associada a H, i.e., q(x) = xHx, como um integral
cujo valor é positivo para qualquer x 6= 0.
Nota: estas matrizes são célebres pelo seu mau condicionamento; de facto, para uma matriz
de Hilbert de ordem n, sabe-se que cond2 H ≈ exp(3.5n).

43. Seja A ∈ Rn×n uma matriz simétrica definida positiva. Demonstre, a partir da definição e
escolhendo vectores x apropriados, que:

a) aii > 0, i = 1, . . . , n;
b) a2ij < aii ajj , i, j = 1, . . . , n;
332 Sistemas de equações lineares: métodos directos

c) o elemento de A de maior valor absoluto se situa na diagonal. Sugestão: raciocinar por


redução ao absurdo.

Nota: as propriedades acima são condições necessárias mas de modo nenhum suficientes para
que uma matriz simétrica seja definida positiva.

44. a) Demonstre que, se A ∈ Rn×n for simétrica definida positiva, então (x, y)A ≡ xAy define
um produto interno em Rn .
b) Demonstre que todo o produto interno em Rn é desta forma.

α vT
 
45. a) Demonstre que, se A = for simétrica definida positiva, então B − vv T /α
v B
também é.
b) Utilize este resultado para mostrar que a condensação de Gauss de uma matriz simétrica
definida positiva produz submatrizes activas também simétricas definidas positivas.
c) Prove neste caso que o factor de crescimento é γ = 1 e que, portanto, a escolha de pivô é
desnecessária. Nota: talvez ajude recordar o Problema 6.11.43.

46. Mostre que a matriz da esquerda pode ser transformada por permutações de linhas e colunas
na matriz da direita.

× × × × × × × ×
   
× ×   × ×
   
× ×   × ×

×
 −→  
 × 


 × ×
× ×   × ×
× × × × × × × ×

Quais são as vantagens desta operação do ponto de vista da aplicação do método de Gauss
e da factorização LU?

47. Mostre que, durante a condensação de Gauss com escolha de pivô parcial numa matriz banda
com largura de banda inferior igual a βi e superior igual a βs , a largura da banda inferior
das matrizes intermédias permanece inalterada mas a respectiva largura da banda superior
pode aumentar para βs + βi .

48. O aproveitamento da estrutura em banda das matrizes que resultam da aplicação do método
das diferenças finitas e do método dos elementos finitos à solução aproximada de equações
diferencias é crucial para a viabilidade destes métodos em domínios bidimensionais (2–D) e,
sobretudo, tridimensionais (3–D). Considere o caso de um problema sobre um quadrado ou
um cubo cujo lado é discretizado por N pontos e uma incógnita por ponto e utilize o facto
de que os algoritmos actuais para redução de banda conseguem larguras de banda β = O(N )
em 2–D e β = O(N 2 ) em 3–D. Verifique a validade do seguinte quadro:
6.11 Problemas 333

Matriz densa Matriz banda


2–D 3–D 2–D 3–D
Dimensão n N2 N3 N2 N3
Banda β N2 N3 O(N ) O(N 2 )
Memória O(N ) O(N 6 )
4 O(N 3 ) O(N 5 )
Flops O(N 6 ) O(N 9 ) O(N 4 ) O(N 7 )

49. a) Obtenha, pelo método das diferenças finitas do Exemplo 6.7.2, as equações algébricas
que determinam a solução aproximada da equação diferencial com condições de fronteira
periódicas

−u′′ (x) + u(x) = f (x), 0 < x < 1, u(0) = u(1), u′ (0) = u′ (1)

b) Mostre que, neste caso, a matriz A do sistema resultante só não é tridiagonal por causa
de um único elemento;
c) Prove, todavia, que A se pode escrever na forma A = T + uv T , em que T é uma matriz
tridiagonal e u e v são vectores apropriados;
d) Recorrendo à fórmula de Sherman-Morrison (ver o Problema ??.??), apresente um método
de solução deste sistema baseado no algoritmo de Thomas, beneficiando, portanto, das
vantagens dos sistemas tridiagonais.

50. Considere a aplicação do algoritmo de Thomas a sistemas cujos coeficientes satisfazem as


condições
ak + dk + ck ≥ 0, dk > 0, ak ≤ 0, ck ≤ 0, k = 1, . . . , n
e que, além disso, d1 + c1 > 0. Escrevendo d′k = dk − ak δk−1 com δk = ck /d′k , mostre por
indução que
d′k > 0, −1 < δk ≤ 0, k = 1, . . . , n
Concluia assim que os sistemas deste tipo possuem solução única. Nota: a condição d1 +c1 >
0 pode ser substituída por an +dn > 0, para o que basta tomar as equações por ordem inversa.

51. Sendo A ∈ Rn×n e anti-simétrica, demonstre que:

a) I − A é definida positiva e, portanto, invertível;


b) I − A e I + A comutam;
c) (I − A)−1 (I + A) é ortogonal.

52. Demonstre que:

a) cond A ≥ 1. Sugestão: considerar a identidade AA−1 = I;


b) se A for invertível, cond A−1 = cond A ;
c) se A for ortogonal, kAk2 = 1 e cond2 A = 1 e concluia daqui que as matrizes ortogonais
não poderiam ser melhor condicionadas.
334 Sistemas de equações lineares: métodos directos

53. a) Prove que, se A, B ∈ Cn×n com A invertível e B singular, então kA − Bk ≥ 1/kA−1 k e


cond A ≥ kAk/kA − Bk.
b) Aplique este resultado à obtenção de minorantes de kA−1 k∞ e de cond∞ A com
 
1.001 1 1
A= 1 1 1.001
1 1.001 1
c) Idem, com
   
1 −1 −1 −1 1 −1 −1 −1
0 1 −1 −1  0 1 −1 −1
A= , B= 
0 0 1 −1  0 0 1 −1
0 0 0 1 −2−2 0 0 1
Nota: a singularidade de B pode demonstrar-se verificando simplesmente que Bx = 0
T
para x = 1 1/2 1/4 1/4 .
d) Generalize o resultado da alínea anterior ao caso de matrizes de ordem n. O que conclui
a respeito do condicionamento de A?
54. a) Seja A ∈ Rn×n e singular. Prove que existe um valor de i com 1 ≤ i ≤ n para o qual
n
X
|aii | ≤ |aij |
j=1
j6=i

Em face deste resultado, deduza que uma matriz de diagonal estritamente dominante por
linhas é invertível (o que, por vezes, é conhecido como teorema de Levy-Desplanques) .
b) Demonstre que, se A for uma matriz de diagonal estritamente dominante por linhas,
então é válido o majorante de kA−1 k∞ dado por
h n
X i
kA−1 k∞ ≤ 1/d, com d = min |aii | − |aij |
1≤i≤n
j=1
j6=i

Sugestão: considerar Ax = y e provar que kxk∞ ≤ kyk∞ /d.


c) Concluia que a matriz que intervém na expressão (2.7.18) para o cálculo dos splines
cúbicos é bem condicionada.
55. Seja B ∈ Rn×n uma matriz singular. Mostre que, se |α| > kBk, então a matriz C = B + αI
é invertível. Esta condição é necessária ou apenas suficiente?
 
7 8
56. Efectue a factorização triangular da matriz A = pelo método de Crout no sistema
9 8
F P (10, 2, 2, T ). Qual é, neste caso, a matriz E referida no Teorema 6.8.5?

I cannot do it without comp[u]ters


– W. Shakespeare (1564–1616)
The Winter’s Tale
Apêndice B

Projectos computacionais

Neste Apêndice são propostos enunciados de projectos computacionais. Tal como acontece
geralmente na vida real, estes são abertos, i.e., podem não especificar completamente
o problema e deixar alguma margem de manobra. Por conseguinte, há quase sempre
necessidade de tomar decisões e fazer opções durante o desenvolvimento do trabalho as
quais devem ser bem ponderadas e justificadas.
Em LEMOS and PINA (2006) pode encontrar-se informação adicional útil para a
elaboração destes projectos computacionais.

B.1 Aritmética computacional


B.1.1 Considere os seguintes modos de calcular o valor de π = 3.141592653589793 . . . (ver
BECKMAN (1971) ou DELAHAYE (1997) para uma perspectiva histórica):

a) Desenvolvimento de arctan x pela série de Gregory (1638-1675)


1 1 1
arctan x = x − x3 + x5 − x7 + · · ·
3 5 7
π 1 1 1
= arctan 1 = 1 − + − + · · ·
4 3 5 7
A última expressão pode ser escrita na forma mais vantajosa (explique porquê e
compare os resultados com os obtidos pela expressão original)
 
π 1 1
=1−2 + + ···
4 3×5 7×9

b) Aplicação da fórmula de Machin (1680-1752)


π 1 1
= 4 arctan − arctan
4 5 239
Nota: Esta fórmula foi usada em 1949 para calcular π com 2035 dígitos no ENIAC
(Electronic Numerical Integrator and Computer e foi precursora de muitas outras,

368
B.1 Aritmética computacional 369

conhecidas como fórmulas do tipo de Machin, algumas das quais se apresentam a


seguir.
c) Aplicação da fórmula de Hutton (1737-1823)
π 1 1
= arctan + arctan
4 2 3
d) Aplicação da fórmula de Clausen (1801-1885)
π 1 1
= 2 arctan + arctan
4 3 7
e) Aplicação da fórmula de Dase (1824-1861)
π 1 1 1
= arctan + arctan + arctan
4 2 5 8
f) Desenvolvimento de arcsin x

x3 1 × 3 × x5 1 × 3 × 5 × x 7
arcsin x = x + + + + ···
2×3 2×4×5 2×4×6×7
π 1
= arcsin
6 2
g) Método de Arquimedes (287–212 a.C.)
A área A de um círculo de raio unitário é A = π. As áreas de polígonos inscritos
com 4, 8, 16, . . . lados fornecem sucessivos minorantes de π. Notar que a área do
triângulo inscrito cujo ângulo ao centro é θ é 1/2 sin θ, e que

sin θ = [(1 − cos 2θ)/2]1/2 , cos θ = (1 − sin2 θ)1/2

pelo que o seno de submúltiplos do ângulo θ se pode obter indutivamente. Repita


este caso com polígonos circunscritos para obter majorantes de π. (Arquimedes
conseguiu chegar a um polígono com 96 lados partindo de um hexágono e o seu
método manteve-se como o único utilizado até à invenção do cálculo no século XVII!)
h) Integração pela regra do trapézio
Sabemos que
1
π dx
Z
=
4 0 1 + x2
Este integral pode ser calculado aproximadamente pela regra do trapézio composta
com pontos equidistantes, obtendo-se deste modo uma aproximação para π.
i) Elabore um gráfico que mostre a evolução do erro em função do número de termos
empregados nos vários métodos e comente os resultados obtidos.

B.1.2 Escreva um programa para testar os métodos recursivo e compensado de calcular so-
matórios, tomando para x diversos valores numéricos e aplicando-os a alguns casos de
teste, nomeadamente:
370 Projectos computacionais

a) às séries

X
2
exp x = 1 + x + x /2! + · · · = xk /k!
k=0
2 3 4
ln(1 + x) = x − x /2 + x /3 − x /4 + · · ·

b) às séries do Projecto B.1.1.

Nota: Os resultados são altamente dependentes da aritmética do computador utilizado.

B.1.3 Teste os vários métodos de calcular a norma euclideana de vectores x ∈ Rn : começando


pela aplicação directa da definição e evoluindo para os métodos sugeridos no Problema
1.9.25 de PINA (1995). Gere os vectores x com componentes aleatórias, não esquecendo
de incluir nos testes vectores com componentes ‘muito pequenas’ e ‘muito grandes’. Tire
conclusões quanto à precisão, ao tempo de cálculo dos vários métodos e às ocorrências
de overflow e underflow.

B.2 Interpolação polinomial


Nota B.2.1 Em problemas de interpolação com dados variando numa gama alargada, por
vezes compensa, com vista a reduzir os efeitos da aritmética de precisão finita, efectuar
mudanças das variáveis independente e dependente (uma, outra ou ambas) de modo a
trabalhar num intervalo “normalizado”, [0, 1] ou [−1, 1].

B.2.1 Escreva um programa para obter polinómios interpoladores na forma de Newton em-
pregando valores nodais extraídos das tabelas seguintes.
Pretende-se utilizar este programa para obter o polinómio de menor grau que reproduza,
com uma precisão especificada (erro relativo de 1%, por exemplo), os valores tabelados.
Para os polinómios que satisfazem este critério, tome como indicador de qualidade o
valor de J(p) dado por
Z b
 ′′ 2
J(p) = p (x) dx
a

em que [a, b] é o intervalo de interpolação.

a)
x 10 15 20 30 40 50 60 70 80
y 3.148 2.680 2.299 1.799 1.438 1.225 1.023 0.862 0.683

b)

x 0 10 20 30 40 50 60 70 80 90 100
y 32.0 29.1 23.4 14.9 4.3 −7.4 −28.5 −36.0 −2.3 29.1 62.6
B.2 Interpolação polinomial 371

B.2.2 A pressão p e a temperatura T da Atmosfera–Padrão Internacional em função da alti-


tude z são dadas pelos valores da tabela seguinte.

z (m) 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000
p (bar) 1.0132 .9546 .8988 .8456 .7950 .7469 .7012 .6578 .6166 .5775 .5405
T (K) 288.2 284.9 281.7 278.4 275.2 271.9 268.7 265.4 262.2 258.9 255.7
z (m) 5500 6000 6500 7000 7500 8000 8500 9000 9500 10000
p (bar) .5054 .4722 .4408 .4111 .3830 .3565 .3315 .3080 .2858 .2650
T (K) 252.4 249.2 245.9 242.7 239.5 236.2 233.0 229.7 226.5 223.3

Escreva um programa para obter polinómios interpoladores empregando valores nodais


extraídos desta tabela.
Pretende-se utilizar este programa para determinar o polinómio de menor grau que
reproduza, com uma precisão especificada (erro relativo de 1%, por exemplo), os valores
tabelados. Para os polinómios que satisfazem este critério, tome como indicador de
qualidade o valor de J(p) dado por
Z b 2
J(p) = p′ (x) dx
a

em que [a, b] é o intervalo de interpolação.

B.2.3 A velocidade v do som no mar depende da pressão, temperatura e salinidade em cada


ponto. Esta dependência é complicada, tendo-se obtido por experimentação os seguintes
valores em função da profundidade z:

z (ft) 0 500 1000 1500 2000 2500 3000 3500


v (ft/s) 5042 4995 4948 4887 4868 4863 4865 4869
z (ft) 4000 5000 6000 7000 8000 9000 10000
v (ft/s) 4875 4875 4887 4905 4918 4933 4949

Escreva um programa para obter polinómios interpoladores na forma de Lagrange em-


pregando valores nodais extraídos desta tabela.
Pretende-se utilizar este programa para determinar o polinómio de menor grau que
reproduza, com uma precisão especificada (erro relativo de 1%, por exemplo), os valores
tabelados. Para os polinómios que satisfazem este critério, tome como indicador de
qualidade o valor de J(p) dado por
Z b 2
J(p) = p′ (x) dx
a

em que [a, b] é o intervalo de interpolação.


372 Projectos computacionais

Figura B.2.1: Geometria para o Projecto B.2.4

B.2.4 Mediram-se os seguintes valores relativos ao volume v (em litros) de líquido contido
numa cisterna em função do nível z (em milímetros):

z 0 85 160 226 305 353 412 480 542


v 10 100 200 300 500 700 1000 1400 1800
z 615 700 780 870 971 1070 1181 1230 1319
v 2300 2900 3500 4200 5000 5800 6700 7100 7800
z 1371 1410 1489 1600 1690 1740 1832 1902 1960
v 8200 8500 9100 9900 10500 10800 11300 11600 11734
A cisterna tem a forma de um cilindro de eixo horizontal mas do qual se desconhece
a forma geométrica da base (ver a Figura B.2.1) não podendo por isso utilizar-se um
processo de integração (analítica ou numérica). Pretende-se construir uma tabela que
forneça o volume v de líquido em função do nível z, de 10 em 10 milímetros, sendo
essencial reproduzir os valores medidos, i.e., que constam da tabela.

B.2.5 Construa polinómios interpoladores da função f (x) = 1/(1 + x2 ) no intervalo [−5, 5]


com nós equidistantes. Verifique que quando o grau aumenta, o polinómio interpo-
lador apresenta oscilações cada vez mais acentuadas, e, portanto, não converge para a
função interpolada dada. Repita o cálculo com os nós de interpolação de Chebyshev
e de Chebyshev-Lobatto em vez dos nós equidistantes. Compare os resultados e tire
conclusões.
B.2.6 Pretende-se construir um troço P0 P1 de ligação entre duas linha (rectas) de caminho de
ferro de modo a garantir continuidade C 2 (ver a Figura B.2.2). Escreva um programa
que, dadas as rectas e os pontos de ligação, determine:

a) a forma paramétrica do troço de ligação, em que x1 (t) e x2 (t) são polinómios apro-
priados:  
x1 (t)
x= , com t ∈ [0, 1]
x2 (t)
b) o raio de curvatura mínimo do troço de ligação e a respectiva localização. Nota: O
raio de curvatura R é dado por 1/R = kx′ ∧ x′′ k/kx′ k3 , em que ∧ denota o produto
externo e k · k a norma euclideana.
B.2 Interpolação polinomial 373

P1


P0

Figura B.2.2: Geometria para o Projecto B.2.6

B.2.7 Desenvolva um programa para o cálculo de splines quadráticos. Aplique este programa
a alguns casos de teste, nomeadamente à interpolação das seguintes funções:

a) f (x) = x3 + 2x, Ω̄ = [0, 2]


b) f (x) = sin x, Ω̄ = [0, π/2]

c) f (x) = (1 − x2 )1/2 , Ω̄ = [0, 3/2].
d) Determine o erro cometido na aproximação da função f e da derivada f ′ . Mostre
a sua evolução com o espaçamento dos nós. (Tome para y0′ valores apropriados às
funções interpoladas.)

B.2.8 Desenvolva um programa para o cálculo de splines cúbicos com nós equidistantes.
Aplique este programa a alguns casos de teste, nomeadamente à interpolação das se-
guintes funções:

a) f (x) = cos x, Ω̄ = [0, π/2]



b) f (x) = (1 − x2 )1/2 , Ω̄ = [0, 3/2]
c) f (x) = x4 , Ω̄ = [0, 2]
d) Determine o erro cometido na aproximação à função f e às suas derivadas f ′ e f ′′ .
Mostre a sua evolução com o espaçamento dos nós. (Tome para y0′ e yn′ valores
apropriados às funções interpoladas.)
e) Estime a ordem de convergência e compare-a com o valor teórico.

B.2.9 Desenvolva um programa para o cálculo de splines cúbicos com tensão. Aplique este
programa a alguns casos de teste, nomeadamente à interpolação das seguintes funções:

a) f (x) = cos(2x), Ω̄ = [0, π/2]


b) f (x) = ln(1 + x), Ω̄ = [0, 1]
c) f (x) = x4 , Ω̄ = [0, 2]
d) Verifique a influência da tensão nos resultados obtidos.

B.2.10 Desenvolva um programa para o cálculo de curvas de Bézier, até ao grau três. Aplique
este programa a alguns casos de teste, nomeadamente às seguintes funções:
374 Projectos computacionais

a) quarto de circunferência de raio 1;


b) quarto de elipse de semi-eixos 2 e 1;
c) curva, cuja equação em coordenadas polares, é r(θ) = 1 + cos2 θ, com θ ∈ [0, π/2].

B.2.11 Uma alternativa aos splines cúbicos, suficiente em muitas aplicações de Gráfica Com-
putacional, é o de utilizar polinómios cúbicos de Hermite em cada um dos subintervalos
Ωi = [xi−1 , xi ), i = 1, . . . , n e estimar as derivadas f ′ (xi ) por diferenças finitas apro-
priadas com vista a obter uma função de classe C 1 . Desenvolva um programa para o
cálculo destas funções recorrendo a diferenças finitas que utilizem os valores (xi−2 , yi−2 ),
(xi−1 , yi−1 ), (xi , yi ), (xi+1 , yi+1 ),(xi+2 , yi+2 ) e as adaptações óbvias para os pontos situ-
ados nos extremos do intervalo de interpolação. A função assim construída é, por vezes,
conhecida como subspline de Akima e foi introduzido em AKIMA (1970). Aplique este
programa a alguns casos de teste, nomeadamente às seguintes funções:

a) f (x) = sin x, Ω̄ = [0, π/2]


b) f (x) = x4 , Ω̄ = [0, 2]
c) e ao seguinte conjunto de dados de AKIMA (1970):

x 0.0 2.0 3.0 5.0 6.0 8.0 9.0 11.0 12.0 14.0 15.0
y 10.0 10.0 10.0 10.0 10.0 10.0 10.5 15.0 50.0 60.0 85.0

d) Compare os resultados obtidos nas alíneas a) e b) com os valores exactos e tire


conclusões.

B.3 Derivação numérica


B.3.1 Estude o efeito do valor do parâmetro h nas fórmulas regressivas, progressivas e centrais
de primeira ordem para a diferenciação numérica. Considere as funções:

a) f (x) = sin x2 para x = 0.5 e x = 0.75.


b) f (x) = ln(1 + exp(cos x)) para x = 2.
c) Confirme as ordens de convergência das fórmulas e determine experimentalmente o
valor óptimo de h tendo em conta os erros aritméticos. Apresente gráficos elucida-
tivos da evolução do erro com h.

B.3.2 Construa polinómios interpoladores da função f (x) = 1/(1 + x2 ) no intervalo [−5, 5]


com o objectivo de calcular as primeiras derivadas nos nós. Verifique o que acontece ao
aumentar o grau do polinómio quando se empregam nós de interpolação equidistantes,
nós de Chebyshev e de Chebyshev-Lobatto. Compare os resultados e tire conclusões.

B.3.3 Escreva um programa para o cálculo da primeira derivada por diferenças centrais uti-
lizando o processo de extrapolação de Richardson. Aplique o programa a alguns casos
de teste, nomeadamente para as funções
B.3 Derivação numérica 375

a) f (x) = sin x2
b) f (x) = ln(1 + exp(−x))

c) f (x) = 1 + sin x + x2

considerando vários valores de x.

B.3.4 Para obviar os efeitos de cancelamento subtractivo, SQUIRE and TRAPP (1996)
propuseram o seguinte método para o cálculo da primeira derivada de uma função
f : R → R prolongável analiticamente. Partindo do desenvolvimento em série de Tay-
lor (com a real),

h2 ′′ i h3 ′′′
f (a + i h) = f (a) + i hf ′ (a) − f (a) − f (a) + · · ·
2! 3!
podemos tomar f ′ (a) ≈ Im f (a + i h)/h com um erro de O(h2 ). Escreva um programa
para o cálculo da primeira derivada das funções

a) f (x) = sin(x2 ), a=1


b) f (x) = x9/2 , a = 1.5
c) f (x) = exp(x)/(sin3 (x) + cos3 (x)), a = 1.5

por este método e por diferenças finitas centrais e compare os resultados para diferentes
valores de h.

B.3.5 Escreva um programa para obter, por diferenças finitas, a tangente t, a normal n, a
binormal b, a curvatura k e a torção τ num ponto dado de uma curva em R3 definida
pela sua representação paramétrica x = x(t) com t ∈ [0, 1]. Pretendem-se valores com
um erro de O(h2 ), excepto na torção que pode ser de O(h). Aplique o programa a
alguns casos de teste, nomeadamente às curvas

a) x = cos(t)e1 + sin(t)e2 ;
b) x = (1 + t)e1 + t2 e2 + exp(−t)e3 ;
c) x = sinh(1 + t)e1 + e2 − t2 e3 .

em que os ei denotam os versores de uma base ortogonal de R3 .

B.3.6 Uma das aplicações mais frequentes das diferenças finitas é a de aproximar a solução
de equações diferenciais. Embora este tema seja tratado no Capítulo ?? de PINA
(1995), é já possível antever as possibilidades desta abordagem com um caso muito
simples. Consideremos uma barra de comprimento L feita de um material cujo módulo
de elasticidade é E(x) com uma secção de área A(x) sujeita a uma força axial f (x) (ver
a Figura B.3.1). Se u(x) for o deslocamento axial, o equilíbrio de forças traduz-se na
seguinte EDO  
d du
A(x)E(x) (x) = −f (x), 0<x<L
dx dx
376 Projectos computacionais

!!!!!!!!!!!! x

Figura B.3.1: Geometria para a EDO do Projecto B.3.6

à qual se devem juntar condições de fronteira apropriadas. No caso presente, considerar


apenas deslocamentos impostos nos extremos da barra

u(0) = 0, u(L) = L/100

e A(x) = A e E(x) = E, ambas funções constantes.

a) Adimensionalize o problema, efectuando a transformação de variáveis x = ξL e


u(x) = v(ξ)L, obtendo uma EDO do tipo

d2 v
(ξ) = −φ(ξ), 0<ξ<1
dξ 2

b) Considere os seguintes casos de forças:

φ(ξ) = sin(πξ), 0<ξ<1 (a)


(
ξ se 0 ≤ ξ ≤ 1/2
φ(ξ) = (b)
1 − ξ se 1/2 ≤ ξ ≤ 1

c) Substituia as segundas derivadas na EDO resultante por diferenças finitas centrais


numa malha uniforme, obtendo um sistema de equações algébricas com matriz tri-
diagonal (a ser resolvido pelo algoritmo de Thomas) e cuja solução fornecerá uma
aproximação do deslocamento.
d) Apresente gráficos mostrando a solução exacta e a solução aproximada, para vários
valores do parâmetro h da malha, evidenciando a convergência.
e) Idem, mas agora para a derivada dv/dξ que é proporcional à tensão axial na barra.

B.4 Integração numérica


B.4.1 Um dos métodos para calcular aproximações de logaritmos consiste em partir da iden-
tidade Z 1
x
ln(1 + x) = dt
0 1 + xt
B.4 Integração numérica 377

e aplicar ao segundo membro uma dada regra de integração numérica. Deduza as


fórmulas que deste modo resultam, para o caso das regras
a) do trapézio;
b) do ponto médio;
c) de Simpson;
Escreva um programa que calcule, para cada uma destas regras, os erros cometidos
para valores x da forma x = ±2−k , k = 0, 1, 2, . . . e determine o intervalo de valores de
x admissíveis de modo a garantir m decimais correctos.
B.4.2 Escreva um programa para integração numérica de funções num intervalo [a, b] dado,
utilizando as regras de Gauss-Legendre compostas, considerando apenas as regras até 5
pontos. O programa deve apresentar estimativas do erro de integração baseadas na bis-
secção dos subintervalos. Aplique o programa a alguns casos de teste, nomeadamente:
R3
a) −0.5 (1 + x2 )/(1 + 10x6 ) dx
R π/2
b) 0 (1 − 0.25 sin2 x)1/2 dx (integral elíptico)
R 1 1/2
c) 0 x cos(1 + x) dx
R1
d) 0 x/(exp x + 1) dx
B.4.3 Escreva um programa para integração numérica de funções num intervalo [a, b] dado,
utilizando splines quadráticos. Aplique o programa a alguns casos de teste, nomeada-
mente:
R1
a) 0 x2 cos(1 + 2x) dx
R1
b) 0 (exp x)/(cosh(2 sin x)) dx
R π/2
c) 0 ln(1 + x) sin(3x) dx
d) Verifique a influência do valor do parâmetro m0 nos resultados.
B.4.4 Escreva um programa para o cálculo de áreas de figuras planas convexas utilizando o
seguinte método. Seja r = r(θ) a equação, em coordenadas polares, do contorno da
figura. O valor da área é dado por
1 2π 2
Z
A= r (θ) dθ
2 0
Deste modo, torna-se necessário calcular integrais do tipo
Z b
I= f (θ) dθ
a
sendo a integranda f periódica. A função f pode ser aproximada por um spline cúbico
periódico para o que são dadas as coordenadas (xi , yi ) de n pontos sobre o contorno.
Aplique o programa desenvolvido a alguns casos de teste, nomeadamente ao cálculo das
áreas de:
378 Projectos computacionais

a) um círculo de raio 1;
b) elipses de semi-eixos 1 e 2k com k = 1, . . . , 4.

B.4.5 Escreva um programa para o cálculo de integrais pela regra do trapézio corrigida com-
posta em malhas uniformes mas com as derivadas nos extremos do intervalo de in-
tegração substituídas por fórmulas de diferenças finitas que mantenham a ordem de
convergência da regra. Aplique o programa a alguns casos de teste, nomeadamente:
R π/2
a) 0 cos x2 dx
R1
b) 0 x(1 − exp(x − 1)) sin x dx
R1 2
c) −1 x ln(1 + x2 )/(2 − x)2 dx

B.4.6 Escreva um programa para o cálculo de integrais pelo método adaptativo não-iterativo
utilizando a regra do trapézio e garantindo uma precisão especificada. Aplique o pro-
grama a alguns casos de teste, nomeadamente:
R π/2
a) 0 sin x2 dx
R1
b) 0 x(1.5 − x)(1 − exp(x − 1)) dx
R1
c) −1 |x| ln(2 + x2 )/(2 − x) dx

B.4.7 Escreva um programa para integração numérica adaptativa iterativa de funções num
intervalo [a, b] dado, empregando a regra do trapézio e garantindo uma precisão especi-
ficada. Aplique o programa a alguns casos de teste, nomeadamente:
R1
a) 0 ln(2 + x1/2 ) dx
R1
b) 0 x0.8 (1.2 − x)(1 − exp |x − 1|) dx
R2
c) 0 cos(exp(−x) + ln(1 + x2 )) dx

Nota: O número de subintervalos em que o intervalo [a, b] vai ser subdividido não é
conhecido a priori pelo que é conveniente recorrer a uma estrutura de dados que seja
eficiente quer em memória quer em rapidez. A técnica de pilha (stack ) satisfaz ambos
estes requisitos.

B.4.8 Escreva um programa para integração numérica de funções num intervalo [a, b] dado,
empregando o método de Romberg. Aplique o programa a alguns casos de teste,
nomeadamente:
R π/2
a) 0 ln(1 + 2 arctan(x/2)) dx
R2
b) 1 exp[−1/((2 − x)(x − 1))] cos x dx
R2
c) 0 (1 + x2 ) sin(1 + x3 ) dx
B.4 Integração numérica 379

d) Ao cálculo do potencial P no ponto (X, Y ) produzido por uma distribuição f (x) de


cargas eléctricas no intervalo [a, b] do eixo dos xx. Compare os resultados obtidos
com os valores exactos para os casos de distribuições constantes e lineares. Estude o
comportamento do algoritmo quando Y → 0, e X 6∈ [a, b] e X ∈ [a, b]. O potencial
é dado por
Z b
f (x)
P (X, Y ) = 2 2 1/2
dx
a [(X − x) + Y ]

B.4.9 Escreva um programa para integração numérica de funções num intervalo [a, b] dado,
empregando a regra IMT. Aplique o programa a alguns casos de teste, nomeadamente:
R1
a) 0 x1/2 tanh(x) dx
R1
b) 0 x−1/2 cos(πx/2) dx
R1
c) 0 1/(1 − 0.998x2 ) dx
R2
d) 0 ln(1/x) exp(1 + x2 ) dx

B.4.10 Escreva um programa para integração numérica de funções altamente oscilantes num
intervalo [a, b] dado, empregando o método de Filon. Basicamente, este método obtém
aproximações para integrais do tipo
Z b
I(f ) = cos(kx)f (x) dx, (a)
a
Z b
I(f ) = sin(kx)f (x) dx (b)
a

que surgem frequentemente em análise espectral de Fourier (ver o Capítulo ?? de PINA


(1995)) considerando uma regra de integração composta numa malha uniforme com N
subintervalos, sendo f é aproximada em cada subintervalo por um polinómio interpo-
lador de grau geralmente baixo.
Considerando polinómios de grau ≤ 1 em cada subintervalo, deduza para o integral (a)
que
1 1
Ih (f ) = [sin(kb)f (b) − sin(ka)f (a)] + 2 Cn
k hk

XN f (ai ) − f (ai+1 )
 se i = 0
com Cn = γi cos(kai ), γi = 2f (ai ) − f (ai−1 ) − f (ai+1 ) se 1 ≤ i ≤ N − 1

i=0 
f (ai ) − f (ai−1 ) se i = N

Deduza as fórmulas equivalentes para o integral (b).


Aplique o programa a alguns casos de teste, nomeadamente:
R 2π
a) 0 cos(kx)x sin x dx, para k = 1, 2, 4, 8, 16
R1
b) 0 cos(100πx) exp x dx
380 Projectos computacionais

R1
c) 0 cos(10πx)/(1 + x2 ) dx

B.4.11 Pretende-se determinar distâncias médias entre pontos situados numa região Ω do
plano. A distância média dp (u) a um ponto dado u é definida pela relação
1
Z
dp (u) = ku − vkp dΩ
|Ω| Ω
e a distância média dp entre pontos de Ω é dada por
1
Z Z
Dp = ku − vkp dΩ dΩ
|Ω|2 Ω Ω
em que os vectores u e v denotam as posições de dois pontos genéricos situados em Ω
e |Ω| designa a área de Ω.

a) Escreva um programa para obter dp (u) (dado u) para o quadrado Ω = [0, 1] × [0, 1]
e para as normas correspondentes aos valores p = 1, p = 2 e p = ∞, por integração
com a regra do ponto médio composta;
b) Idem, para Dp ;
c) Evidencie a evolução dos resultados obtidos com o número de pontos de integração
e comente.

Nota 1: Interprete dp (u) como a distância média que um taxi baseado no ponto u
percorre para atender chamadas uniformemente distribuídas numa cidade com a forma
da região Ω e Dp como a média de dp (u) relativamente a u.
Nota 2: Tenha ainda em consideração que, se Ih (f ) = ni=1 Ai f (xi ) for uma regra de
P
Rb
integração para o integral unidimensional I(f ) = a f (x) dx e Ih (f ) = m
P
j=1 Bj f (yj )
Rd
for uma Pregra P
de integração para o integral unidimensional I(f ) = c f (y) dy, então
Ih (f ) = ni=1 m Ai Bj f (xi , yj ) é uma regra de integração para o integral bidimen-
R b Rj=1
d
sional I(f ) = a c f (x, y) dx dy.

B.4.12 Um disco magnético de computador funciona basicamente do seguinte modo: a cabeça


de leitura/gravação possui movimento radial e a rotação do disco providencia o deslo-
camento angular. Assim, usando coordenadas polares, o tempo de acesso a uma infor-
mação que está na posição P = (r, θ) quando a cabeça está na posição Pc = (rc , θc ) é
dado por
(
|r − rc | φ(θ − θc ) θ se θ ≥ 0,
t(P, Pc ) = + , com φ(θ) =
cr cθ θ + 2π caso contrário.

em que cr designa a velocidade radial (m/s) da cabeça e cθ a velocidade angular (rad/s)


do disco e a forma, aparentemente complicada, da função φ resulta do facto do disco
ter um único sentido de rotação. Escreva um programa para obter:

a) O tempo de acesso médio a partir de uma posição dada da cabeça;


B.4 Integração numérica 381

b) O tempo de acesso médio (em relação a todas as posições da cabeça).


Nota: Leia o enunciado do Projecto B.4.11, de que este é uma variante, e siga as
respectivas indicações. Empregue valores típicos do disco do seu computador preferido
admitindo, para efeitos deste projecto, que todo o disco é utilizável, i.e., não existe veio
central.
B.4.13 Escreva um programa para calcular, pela regra de Simpson composta, áreas de super-
fícies em R3 dadas na forma paramétrica. Aplique o programa a alguns casos de teste,
nomeadamente às superfícies
a) x = cos(θ) sin(φ)e1 + sin(θ) sin(φ)e2 + cos(φ)e3 , θ ∈ [0, 2π], φ ∈ [0, π/2] (calote
hemisférica);
b) x = ue1 + ve2 + (u3 + v 3 + u4 )e3 , u ∈ [0, 1], v ∈ [0, 1];
c) x = ue1 + ve2 + sinh(1 + uv 2 )e3 , u ∈ [0, 1], v ∈ [0, 1].
em que os ei denotam os versores de uma base ortogonal de R3 .
Nota 1: A área A de uma superfície definida na forma paramétrica, com parâmetros
(u, v) ∈ [a, b] × [c, d], é dada por
Z dZ b
A= kxu ∧ xv k du dv
c a
em que ∧ denota o produto externo, xu e xv as derivadas de x em ordem a u e a v,
respectivamente, e k · k a norma euclideana.
Nota 2: Leia a Nota 2 do Projecto B.4.11 e siga as respectivas indicações.
B.4.14 Escreva um programa para calcular, pela regra do trapézio composta, volumes de pris-
mas em R3 cuja base se localiza no plano x3 = 0 e a altura é determinada pela co-
ordenada x3 de uma superfície definida de forma paramétrica. Aplique o programa a
alguns casos de teste, nomeadamente:
a) x = cos(θ) sin(φ)e1 + sin(θ) sin(φ)e2 + cos(φ)e3 , θ ∈ [0, 2π], φ ∈ [0, π] (calote
hemisférica);
b) x = ue1 + ve2 + (u3 + v 3 + u4 )e3 , u ∈ [0, 1], v ∈ [0, 1];
c) x = (u + v)e1 + ve2 + cosh(1 + u2 v)e3 , u ∈ [0, 1], v ∈ [0, 1].
em que os ei denotam os versores de uma base ortogonal de R3 .
Nota 1: O volume V de prismas cuja altura é definida na forma paramétrica acima,
com parâmetros (u, v) ∈ [a, b] × [c, d], é dado por
Z dZ b
V = x3 (u, v) |(xu ∧ xv )3 | du dv
c a
em que ∧ denota o produto externo e xu e xv as derivadas de x em ordem a u e a v,
respectivamente.
Nota 2: Leia a Nota 2 do Projecto B.4.11 e siga as respectivas indicações.
382 Projectos computacionais

B.5 Equações não-lineares


B.5.1 Escreva um programa para solução de equações não-lineares pelo método da falsa
posição. Aplique o programa a alguns casos de teste, nomeadamente:
a) ln |x + sin x| − cos x = 0, x>0
b) x0.8 − 2x0.3 − 2.5 = 0, x>0
c) tan x − x1/2 = 0, x ∈ (0, 2π)
B.5.2 Escreva um programa para solução de equações não-lineares pelo método de Illinois.
Aplique o programa a alguns casos de teste, nomeadamente:
a) Determinar o zero positivo do polinómio f (x) = x3 + 2x2 + 10x − 20.
b) Determinar todos os zeros reais dos polinómios
f (x) = x4 − 2.4x3 + 1.03x2 + 0.6x − 0.32
f (x) = 22x4 − 12x3 + 13x2 − 27x − 15

c) Achar a menor solução positiva da equação x = 2 sin x + 6.


B.5.3 Escreva um programa para solução de equações não-lineares pelo método de Pegasus.
Aplique o programa a alguns casos de teste, nomeadamente:
a) Determinar o zero positivo do polinómio f (x) = x5 + x4 + x3 − 8.
b) Determinar todos os zeros reais dos polinómios
f (x) = 2x4 + x2 + x − 6
f (x) = 30x5 + 80x4 + 72x3 + 66x2 − 29x − 91

c) Achar as soluções mais próximas de zero da equação 10 cos x = exp x.


B.5.4 Escreva um programa para solução de equações não-lineares pelo método da secante.
Aplique o programa a alguns casos de teste, nomeadamente:
a) Determinar o zero positivo do polinómio f (x) = x6 − x4 − x3 − 1.
b) Resolver a equação ln x = cos x.
c) Determinar todos os zeros reais do polinómio
f (x) = x5 − 7.5x4 + 22.5x3 − 33.75x2 + 25.3125x − 7.59375

d) Resolver a equação x2 (x − 1)2 = 0.


e) Produzir uma tabela de λ em função de a para a = 0.0, 0.1, 0.2, . . . , 2.0 em que
λ exp(λ2 )erf λ = a
Nota: Este problema surge no estudo da fusão de um sólido semi-infinito em que λ
é proporcional à velocidade da interface sólido-líquido. Para a definição da função
erf e do seu modo de cálculo consultar ABRAMOWITZ and STEGUN (1968).
B.5 Equações não-lineares 383

B.5.5 Para determinação da queda de pressão em escoamentos de líquidos em tubos cilíndricos


torna-se necessário obter o chamado factor de atrito f que é dado pela relação
 
1 k 2.51
√ = −2 ln + √ , para Re ≥ 2000
f 3.7D Re f
em que D é o diâmetro do tubo, k a rugosidade e Re o número (adimensional) de
Reynolds do escoamento.
Escreva uma subrotina que, dados D, k e Re, calcule f , utilizando o método da
secante. Para efeitos de teste, considere os valores k = 0.2 mm, D = 200 mm e
Re = 104 , 105 , 106 . Nota: É importante que esta subrotina seja rápida uma vez que
se destina a ser chamada muitas vezes por um programa mais vasto de cálculo de
instalações hidráulicas.
B.5.6 Na teoria hidrodinâmica (linear) de ondas de superfície, o comprimento de onda λ
depende do período T e da profundidade h através da relação de dispersão
ω 2 = gk tanh(kh)
em que ω = 2π/T é a frequência angular, k = 2π/λ, o número de onda e g a aceleração
da gravidade. O problema consiste em obter k uma vez conhecido ω.
a) Para obter uma forma mais conveniente para esta relação, introduza as variáveis
adimensionais Ω = ω 2 h/g e K = kh.
b) Mostre que ao largo (águas profundas), com kh → ∞, a equação de dispersão fica
ω 2 /g = k, o que permite determinar directamente o comprimento de onda em função
do período.
c) Escreva um programa para solução deste problema pelo método de Newton, tomando
como estimativa inicial a solução obtida para as condições de águas profundas. Con-
sidere os casos T = 5, 8, 12 s e h = 10 m.
B.5.7 Escreva um programa para solução de equações não-lineares pelo método de Newton.
O programa deve determinar uma estimativa da multiplicidade do zero e, no caso do
zero ser múltiplo, recorrer à fórmula de Schröder. Aplique o programa a alguns casos
de teste, nomeadamente:
a) x cos x − exp x = 0, x ∈ (−5, 0)
b) tan x − cos x = 0.5, x ∈ (0, π)
c) x = sin x
d) xm = 0, m = 1, 2, 3, 4
B.5.8 Uma variante do método de Newton consiste em aproximar a derivada da função pela
derivada do polinómio interpolador da função nos pontos xk−2 , xk−1 e xk , podendo
obter-se a seguinte fórmula de iteração
xk+1 = xk + hk
hk = −f (xk )/(f [xk , xk−1 ] + f [xk , xk−2 ] − f [xk−1 , xk−2 ])
384 Projectos computacionais

Deduza as expressões acima e, com base nelas, escreva um programa para solução de
equações não-lineares. Aplique o programa a alguns casos de teste, nomeadamente:

a) f (x) = exp x − 2 + 0.5x2


b) f (x) = cos x − |x|1/2
c) f (x) = 1 − x/ x − (sin x)3 /6 + x5 /120
 

Determine, experimentalmente, a ordem de convergência aproximada deste método.

B.5.9 Escreva um programa para solução de equações não-lineares pelo método de Muller
(caso real). Aplique o programa a alguns casos de teste, nomeadamente:

a) f (x) = x7 − 1
b) f (x) = x4 − 7x3 + 18x2 − 20x + 8
c) f (x) = x6 + 2x5 + x4 + 3x3 + 5x2 − exp x
d) f (x) = x4 − 4x3 + 6x2 − 4 sin(3x) − 3

B.5.10 Escreva um programa para solução de equações não-lineares utilizando interpolação


inversa com polinómios de segundo grau. Aplique o programa a alguns casos de teste,
nomeadamente:

a) ln(1 + x2 ) − 2/(1 + x) = 0, x>0


b) cosh x = 3
c) Determinar todos os zeros do polinómio p(x) = x3 + 7x2 + 7x − 15

B.5.11 Escreva um programa para solução de equações não-lineares pelo método de Steffensen.
Aplique o programa a alguns casos de teste, nomeadamente:

a) 0.5 − x + sin x = 0
b) x3 + 2x2 + 10x − 20 = 0
c) 1 + exp(−0.2x) − x1.5 = 0

B.5.12 Nota: O objectivo deste projecto é olhar para o processo iterativo de ponto fixo xk+1 =
g(xk ) como um processo dinâmico em que o contador de iterações k funciona como um
tempo discreto. De facto, iterações de ponto fixo e sistemas dinâmicos discretos são
dois modos diferentes de falar de uma mesma realidade matemática.
O modelo mais simples de evolução de populações de uma dada espécie consiste em dizer
que a população no instante k + 1 depende da população no instante k imediatamente
anterior através da lei
xk+1 = rxk (a)
em que xk mede, em unidades apropriadas, o tamanho da população e r > 0 é um
parâmetro. Nestas circunstâncias, a população evolui de acordo com a lei xk = r k x0
em que x0 denota a população inicial. Se r < 1 a população decresce até à extinção,
B.5 Equações não-lineares 385

se r = 1 permanece constante e se r > 1 aumenta exponencialmente até infinito. Ora,


um crescimento ilimitado pressupõe recursos ilimitados, pelo que este modelo não é
realista. Uma modificação proposta por por Verhulst em 1845 consiste em substituir
(a) por
xk+1 = rxk (1 − xk ) (b)

que veio a ser conhecido por modelo da parábola logística ou, simplesmente, modelo
logístico (ver a Figura B.5.1).

a) Mostre que (a) se pode formular como um problema de ponto fixo com g(x) = rx
e determine, de acordo com a respectiva teoria, quais são os seus pontos fixos em
função de r e a respectiva natureza (atractivos ou repulsivos).
b) Idem, com o mapa logístico (b).
c) Escreva um programa que permita traçar trajectórias x0 , x1 , x2 , . . ., a partir de pon-
tos iniciais x0 diversos e confirmar as previsões teóricas das alíneas anteriores.
d) Repita as alíneas anteriores para o mapa x 7→ G(x) ≡ g(g(x)) (composição da
função g consigo própria), verificando a existência de mais pontos fixos (quantos, de
que natureza?) e o aparecimento de trajectórias periódicas.

0 x0 1
x
1

xk

0 10 20 30 40 50
k
Figura B.5.1: Gráficos esquemáticos para o mapa logístico do Projecto B.5.12
386 Projectos computacionais

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


Nota B.6.1 Para testar programas de resolução de sistemas de equações lineares Ax = b
é conveniente dispor de casos cuja solução seja conhecida e ‘simples’. Uma forma habitual
 T
consiste em construir segundos membros b de modo a que e = 1 1 · · · 1 seja a
solução exacta do sistema; concretamente, dada a matriz A tomar b = Ae. A partir
daqui, é fácil comparar a solução x efectivamente obtida com a solução exacta e.

B.6.1 Escreva um programa para a solução de sistemas de equações lineares pelo método
de Gauss com pivot parcial. Aplique o programa desenvolvido a alguns casos de teste,
nomeadamente sistemas com matrizes de Vandermonde (nós equidistantes) e de Hilbert
de vária ordem e comente os resultados.

B.6.2 Escreva um programa para a solução de sistemas de equações lineares pelo método
de Crout com pivot parcial. Aplique o programa desenvolvido a alguns casos de teste,
nomeadamente sistemas com matrizes de Vandermonde (nós equidistantes) e de Hilbert
de vária ordem e comente os resultados.

B.6.3 Escreva um programa para a solução de sistemas de equações lineares Ax = b com


matrizes A simétricas definidas positivas recorrendo à factorização de Choleski UT U,
armazenando e utilizando apenas o triângulo superior de A.

a) Aplique o programa desenvolvido a alguns casos de teste, nomeadamente aij =


min(i, j).
b) Explique o que acontece quando se aplica este método ao sistema de Wilson:
   
5 7 6 5 23
7 10 8 7  32
A=
6 8 10 9  ,
 b=
33

5 7 9 10 31

c) Teste o programa com matrizes de Hilbert de vária ordem e comente os resultados.

B.6.4 Escreva um programa para a solução de sistemas de equações lineares Ax = b com


matrizes A simétricas definidas positivas e em banda, recorrendo à factorização de
Choleski LLT , armazenando e utilizando apenas a banda inferior de A. Aplique o
programa desenvolvido a alguns casos de teste.

B.6.5 Escreva um programa para a solução de sistemas de equações lineares Ax = b com ma-
trizes A simétricas definidas positivas, recorrendo à factorização LDLT , armazenando e
utilizando apenas o triângulo inferior de A. Aplique o programa desenvolvido a alguns
casos de teste.

B.6.6 Considere uma rede eléctrica com n nós e em que cada par de nós i e j está ligado por
uma resistência eléctrica Rij (ver a Figura B.6.1). Pretende-se determinar as voltagens
B.6 Sistemas de equações lineares: métodos directos 387

3


1 2 4 5
   


6
Figura B.6.1: Esquema para o Projecto B.6.6

Vi em cada nó e as intensidade da corrente Iij em cada resistência. A topologia da rede


é dada por uma tabela que, para cada nó, lista todos os nós que a ele estão ligados. As
equações resolventes estabelecem-se impondo, para cada nó, o balanço, das intensidades
Iij das correntes, P
com a convenção
Pn de sinal adequada, relacionadas com as voltagens
n
pela lei de Ohm: j=1 Iij = j=1 (Vj − Vi )/Rij = 0, i = 1, . . . , n, juntamente com a
imposição das voltagens em dois nós.
a) Mostre que a matriz deste sistema é simétrica (fácil), tendencialmente em banda e
definida positiva (recorrendo à dissipação de Joule).
b) Escreva um programa que forme e resolva o sistema de equações recorrendo ao
método de Choleski para matrizes em banda.
c) Aplique o programa a redes de diferentes topologias e complexidades.

B.6.7 Escreva um programa para a solução de sistemas de equações lineares com matriz
simétrica pelo método de Gauss com pivot diagonal, armazenando e utilizando apenas
o triângulo superior. Aplique o programa desenvolvido a alguns casos de teste e, em
particular, a sistemas com matrizes de Pascal P ∈ Rn×n definidas por
p1i = pi1 = 1, i = 1, . . . , n; pij = pi,j−1 + pi−1,j , i, j = 2, . . . , n
Nota: Estas matrizes são mal condicionadas para n elevado.
B.6.8 Escreva um programa para a solução de sistemas de equações lineares Ax = b com
matrizes A tridiagonais, recorrendo ao método de Thomas mas com inclusão da técnica
de pivot parcial.
a) Aplique o programa desenvolvido a alguns casos de teste, nomeadamente às matrizes
de Clement (HIGHAM, 1996, Apêndice E) de ordem n

i
 se j = i + 1
aij = n − i + 1 se j = i − 1,

0 nos outros casos.

388 Projectos computacionais

Nota: Estas matrizes são singulares para n ímpar.


b) Introduza perturbações aleatórias da ordem da unidade de arredondamento na dia-
gonal de A e analise o que sucede.
B.6.9 Escreva um programa para a solução de sistemas de equações lineares Ax = b com
matrizes A de Hessenberg superiores, i.e., matrizes em que aij = 0 sempre que j <
i − 1. Use uma estrutura de dados apropriada para evitar o armazenamento de zeros e
incorpore a técnica de pivot parcial. Aplique o programa desenvolvido a alguns casos
de teste.
B.6.10 As matrizes que a seguir se apresentam permitem ilustrar os efeitos do mau condi-
cionamento na solução de sistemas de equações lineares Ax = b. Para tal, proceder do
seguinte modo:
• Resolver o sistema pelo método de Gauss com pivot parcial, obtendo uma solução
aproximada;
• Calcular os erros cometidos numa norma apropriada;
• Calcular o resíduo (não esquecer de acumular os resíduos em dupla precisão!).

a) Matriz de Hilbert.
b) aij = (i/n)j−1 , i, j = 1, 2, . . . , n.
c) Matriz de Pei: aii = c, aij = 1 para i 6= j, i, j = 1, 2, . . . , n.
T
Nota: A = (c − 1)I + ee e as dificuldades surgem para valores de c próximos de 1
ou de 1 − n.

B.6.11 Este projecto é semelhante a B.3.6, excepto que agora se trata de encontrar a solução
aproximada do deslocamento transversal de uma viga elástica encastrada numa extrem-
idade e flectida por uma carga distribuída q(x) e uma carga Q concentrada na outra
extremidade (ver a Figura B.6.2). Se u(x) for o deslocamento transversal, o equilíbrio
de forças traduz-se na seguinte EDO (onde todas as variáveis foram adimensionalizadas)
d4 u
(x) = q(x), 0<x<1
dx4
No caso presente, considerar q(x) = sin(πx) e as seguintes condições de fronteira
u(0) = 0, u′ (0) = 0 (encastramento)
′′ ′′′
u (1) = 0, u (1) = Q = 1 (carga concentrada)

Escreva um programa que:


a) Forme o sistema de equações algébricas lineares resultantes da substituição da quarta
derivada da EDO por diferenças finitas centrais numa malha uniforme de passo h =
1/n e diferenças finitas apropriadas (progressivas ou regressivas) para as condições
de fronteira de modo a garantir que estas não prejudiquem a ordem de convergência.
Sugestão: Rever o Problema 3.9.24 de PINA (1995) ou consultar ABRAMOWITZ
and STEGUN (1968).
B.6 Sistemas de equações lineares: métodos directos 389

!
x

Figura B.6.2: Geometria para a EDO do Projecto B.6.11

b) Resolva este sistema recorrendo à factorização da respectiva matriz.


c) Compare os resultados obtidos com os valores exactos (fáceis de obter). Nota: O
condicionamento da matriz do sistema piora com n4 .
d) Aplique a técnica de refinamento iterativo e verifique em que medida esta melhora
ou não os resultados.

A great discovery solves a great problem but there is


a grain of discovery in the solution of every problem.
Your problem may be modest; but it challenges your
curiosity and brings into play your inventive faculties,
and if you solve it by your own means, you may experi-
ence the tension and enjoy the triumph of discovery.
– G. Polya (1887-1985), How to solve it.
Bibliografia

I. H. ABBOTT and A. E. von DOENHOFF. Theory of Wing Sections. Dover, 1959.

M. ABRAMOWITZ and I. A. STEGUN. Handbook of Mathematical Functions with Formulas,


Graphs and Mathematical Tables. Dover, 1968.

R. A. ADAMS. Sobolev Spaces. Academic Press, 1975.

J. H. AHLBERG, E. N. NILSON, and J. L. WALSH. The Theory of Splines and their Applica-
tions. Academic Press, 1967.

H. AKIMA. A new method of interpolation and smooth curve fitting based on local procedures.
J. ACM, 17:589–602, 1970.

E. ANDERSON et al. LAPACK Users’ Guide. SIAM, 1995.

S. F. ASHBY, T. M. MANTEUFFEL, and P. E. SAYLOR. An extended set of basic linear


algebra subprograms. SIAM J. Numer. Anal., 27(6):1542–1568, 1990.

K. E. ATKINSON. An Introduction to Numerical Analysis. J. Wiley, 1978.

O. AXELSSON. Iterative Solution Methods. Cambridge University Press, 1996.

P. BECKMAN. A History of π (PI). St. Martin’s Press, 1971.

C. BREZINSKI. Accélération de la Convergence en Analyse Numérique. Springer-Verlag, 1977.

C. BREZINSKI and M. R. ZAGLIA. Extrapolation Methods: Theory and Practice. North-


Holland, 1991.

F. CAJORI. A History of Mathematical Notations. The Open Court Pub. Co., 1928, 1929.
Reimpressão Dover 1993.

B. H. CARNAHAN, H. A. LUTHER, and J. O. WILKES. Applied Numerical Methods. J. Wiley,


1969.

B. W. CHAR et al. Maple V – Language Reference Manual. Springer-Verlag, 1991.

390
Bibliografia 391

F. CHATELIN and V. FRAYSSÉ. Lectures on Finite Precision Computations. SIAM, 1996.

E. W. CHENEY. Introduction to Approximation Theory. McGraw-Hill, 1966.

W. CHENEY and D. KINCAID. Numerical Mathematics and Computing. Brooks/Cole, 1985.

A. K. CLINE, C. B. MOLER, G. W. STEWART, and J. H. WILKINSON. An estimate for the


condition number of a matrix. SIAM J. Numer. Anal., 16:368–375, 1979.

S. D. CONTE and C. de BOOR. Elementary Numerical Analysis, An Algorithmic Approach.


McGraw-Hill, 1980.

C. C. CRYER. Numerical Functional Analysis. Oxford University Press, 1982.

G. DAHLQUIST and A. BJÖRCK. Numerical Methods. Prentice-Hall, 1974.

M. D. DAVIS, R. SIGAL, and E. J. WEYUKER. Computability, Complexity, and Languages.


Academic Press, 1994.

P. J. DAVIS. Interpolation and Approximation. Blaisdell, 1963.

P. J. DAVIS and P. RABINOWITZ. Methods of Numerical Integration. Academic Press, 1984.

C. de BOOR. A Practical Guide to Splines. Springer-Verlag, 1978.

J.-P. DELAHAYE. Le Fascinant Nombre π. Pour la Science, Diffusion Belin, 1997.

J. J. DONGARRA. Performance of various computers using standard linear equations soft-


ware. Technical Report CS-89-85, Oak Ridge National Laboratory, 1994. Nota: actualizado
regularmente.

J. J. DONGARRA, J. R. BUNCH, C. B. MOLER, and G. W. STEWART. LINPACK User’s


Guide. SIAM, 1979.

J. J. DONGARRA, J. DuCROZ, S. HAMMARLING, and R. HANSON. An extended set of


basic linear algebra subprograms. ACM Transactions on Mathematical Software, 14(1), 1988.

I. DUFF and G. W. STEWART, editors. Sparse Matrix Proceedings. SIAM, 1978.

I. S. DUFF, A. M. ERISMAN, and J. K. REID. Direct Methods for Sparse Matrices. Oxford
University Press, 1989.

H. ENGELS. Numerical Quadrature and Cubature. Academic Press, 1980.

B. FINE and G. ROSENBERGER. The Fundamental Theorem of Algebra. Springer-Verlag,


1997.

G. FLEGG, editor. Number Through the Ages. MacMillan, 1989.


392 Bibliografia

L. FOX. Romberg integration for a class of singular integrals. Comput. J., 10:87–93, 1967.

C.-E. FROBERG. Numerical Mathematics: Theory and Computer Applications. Benjamin-


Cummings, 1985.

A. GEORGE and J. LIU. Computer Solution of Large Sparse Positive Definite Systems. Prentice-
Hall, 1981.

M. GHYKA. The Geometry of Art and Life. Dover, 1977.

D. GOLDBERG. What every computer scientist should know about floating-point arithmetic.
ACM Computing Surveys, 23(1):5–48, 1991.

G. H. GOLUB and C. F. van LOAN. Matrix Computations. The Johns Hopkins University
Press, 1989.

I. S. GRADSHTEYN and I. M. RYZHIK. Table of Integrals, Series and Products. Academic


Press, 1980.

A. GRIEWANK. Evaluating Derivatives: Principles and Techniques of Algorithmic Differentia-


tion. SIAM, 2000.

J. HADAMARD, editor. Lectures on Cauchy’s Problem for Linear Partial Differential Equations.
Yale University Press, 1923.

P. HENRICI. Applied and Computational Complex Analysis, volume 1. J. Wiley, 1974.

N. J. HIGHAM. Accuracy and Stability of Numerical Algorithms. SIAM, 1996.

F. B. HILDEBRAND. Introduction to Numerical Analysis. McGraw-Hill, 1974.

R. A. HORN and C. R. JOHNSON. Matrix Analysis. Cambridge University Press, 1988.

A. S. HOUSEHOLDER. The Theory of Matrices in Numerical Analysis. Dover, 1964.

A. S. HOUSEHOLDER. The Numerical Treatment of a Single Nonlinear Equation. McGraw-Hill,


1970.

K. HUANG. Computer Arithmetic: Principles, Architecture, and Design. J. Wiley, 1979.

H. E. HUNTLEY. The Divine Proportion, A Study in Mathematical Beauty. Dover, 1970.

IEEE. IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 754 – 1985. SIG-
PLAN Notices 22:2, 1987.

G. IFRAH. Histoire Universelle des Chiffres. Robert Laffont, 1994.

M. IRI, S. MORIGUTI, and Y. TAKASAWA. On a certain quadrature formula. J. Comp. Appl.


Math., 2:219–224, 1987. Tradução do artigo original em japonês de 1970.
Bibliografia 393

E. ISAACSON and H. B. KELLER. Analysis of Numerical Methods. J. Wiley, 1966.

R. D. JENKS and R. S. SUTOR. AXIOM – The Scientific Computation System. Springer-Verlag,


1992.

A. JENNINGS. Matrix Computations for Engineers and Scientists. J. Wiley, 1977.

D. E. KNUTH. The Art of Computer Programming, vol. 2/Seminumerical Algorithms. Addison-


Wesley, 1998.

Z. KOPAL. Numerical Analysis. Chapman and Hall, 1961.

I. KOREN. Computer Arithmetic Algorithms. Prentice-Hall, 1993.

A. R. KROMMER and C. W. UEBERHUBER. Computational Integration. SIAM, 1998.

V. I. KRYLOV. Approximate Calculation of Integrals. MacMillan, 1962.

U. W. KULISH and W. L. MIRANKER. Computer Arithmetic in Theory and Practice. Academic


Press, 1981.

C. L. LAWSON, R. J. HANSON, D. KINCAID, and F. KROGH. Basic linear algebra subpro-


grams for fortran usage. ACM Transactions on Mathematical Software, 5:308–323, 1979.

C. LEMOS and H. PINA. Métodos Numéricos: Complementos e Guia Prático. IST Press, 2006.

J. L. LYNESS and B. W. NINHAM. Numerical quadrature and asymptotic expansions. Math.


Comp., 21:162–178, 1967.

J. H. MATHEWS. Numerical Methods for Computer Science, Engineering, and Mathematics.


Prentice-Hall, 1987.

K. MENNINGER. Number Words and Number Symbols – A Cultural History of Numbers. The
MIT Press, 1969. Reimpressão Dover 1992.

M. E. MORTENSON. Geometric Modeling. J. Wiley, 1985.

A. W. NAYLOR and G. R. SELL. Linear Operator Theory in Engineering and Science. Holt,
Reinhart and Winston, 1971.

J. T. ODEN and L. F. DEMKOWICZ. Applied Functional Analysis. CRC Press, 1996.

J. M. ORTEGA. Matrix Theory, A Second Course. Plenum Press, 1989a.

J. M. ORTEGA. Introduction to Parallel and Vector Solution of Linear Systems. Plenum Press,
1989b.

A. M. OSTROWSKI. Solutions of Equations in Euclidean and Banach Spaces. Academic Press,


1966.
394 Bibliografia

M. L. OVERTON. Numerical Computing with IEEE Floating Point Arithmetic. SIAM, 2001.

C. H. PAPADIMITRIOU. Computational Complexity. Addison-Wesley, 1994.

D. A. PATTERSON and J. L. HENNESSY. Computer Architecture – A Quantitative Approach.


Morgan Kaufmann Publishers, 1996.

J. A. PAULOS. Innumeracy: Mathematical Illiteracy and its Consequences. Penguin Books,


1990.

L. PIEGL and W. TILLER. The NURBS Book. Springer-Verlag, 1995.

H. PINA. Métodos Numéricos. McGraw-Hill de Portugal, 1995.

S. PISSANETZKY. Sparse Matrix Technology. Academic Press, 1984.

P. M. PRENTER. Splines and Variational Methods. J. Wiley, 1975.

P. RABINOWITZ, editor. Numerical Methods for Nonlinear Algebraic Equations. Gordon and
Breach, 1970.

A. RALSTON and P. RABINOWITZ. A First Course in Numerical Analysis. McGraw-Hill,


1978.

J. N. REDDY. Applied Functional Analysis and Variational Methods in Engineering. McGraw-


Hill, 1986.

J. R. RICE. Matrix Computations and Mathematical Software. McGraw-Hill, 1981.

M. H. SCHULTZ. Spline Analysis. Prentice-Hall, 1973.

L. L. SCHUMAKER. Spline Functions: Basic Theory. J. Wiley, 1981.

Bl. SENDOV and A. ANDREEV. Approximation and interpolation theory. In P. G. Ciarlet and
J. L. Lions, editors, Handbook of Numerical Analysis, volume 3. North-Holland, 1994.

Bl. SENDOV, A. ANDREEV, and N. KJURKCHIEV. Numerical solution of polynomial equa-


tions. In P. G. Ciarlet and J. L. Lions, editors, Handbook of Numerical Analysis, volume 3.
North-Holland, 1994.

D. E. SMITH. A Source Book in Mathematics. Dover, 1959.

W. SQUIRE and G. TRAPP. Using complex variables to estimate derivatives of real functions.
SIAM Review, 40(1):110–112, 1996.

P. H. STERBENZ. Floating-Point Computation. Prentice-Hall, 1974.

G. W. STEWART. Introduction to Matrix Computations. Academic Press, 1973.


Bibliografia 395

G. W. STEWART. Matrix Algorithms: Basic Decompositions, volume 1. SIAM, 1998.

G. W. STEWART and J. SUN. Matrix Perturbation Theory. Academic Press, 1990.

J. STOER and R. BULIRSH. Introduction to Numerical Analysis. Springer-Verlag, 1993.

G. STRANG. Linear Algebra and its Applications. Academic Press, 1980.

A. H. STROUD. Approximate Calculation of Multiple Integrals. Prentice-Hall, 1971.

A. H. STROUD and D. SECREST. Gaussian Quadrature Formulas. Prentice-Hall, 1966.

R. TEWARSON. Sparse Matrices. Academic Press, 1973.

J. F. TRAUB. Iterative Methods for the Solution of Equations. Prentice-Hall, 1964.

L. N. TREFETHEN and D. BAU. Numerical Linear Algebra. SIAM, 1997.

D. S. WATKINS. Fundamentals of Matrix Computations. J. Wiley, 1991.

J. H. WILKINSON. Rounding Errors in Algebraic Processes. Prentice-Hall, 1964. Reimpressão


Dover 1994.

J. H. WILKINSON and C. REINSCH. Handbook for Automatic Computation, volume 2.


Springer-Verlag, 1971.

J. WIMP. Sequence Transformations and Their Applications. Academic Press, 1981.

S. WOLFRAM. Mathematica — A System for Doing Mathematics by Computer. Addison-Wesley,


1988.

F. YAMAGUCHI. Curves and Surfaces in Computer Aided Geometrical Design. Springer-Verlag,


1988.

D. M. YOUNG and R. T. GREGORY. A Survey of Numerical Mathematics, volume 1. Addison-


Wesley, 1972.

Z. ZLATEV. Computational Methods for General Sparse Matrices. Kluwer Academic Publishers,
1991.

Knowledge is of two kinds. We know a subject ourselves


or we know where we can find information upon it.
– Samuel Johnson (1709-1784)
J. Boswell, The Life of Samuel Johnson
Índice

ABBOTT and von DOENHOFF (1959), 133 HORN and JOHNSON (1988), 325, 342
ABRAMOWITZ and STEGUN (1968), 144, 164, HOUSEHOLDER (1964), 325
168, 175, 196, 382, 388 HOUSEHOLDER (1970), 255
ADAMS (1975), 358, 367 HUANG (1979), 47
AHLBERG et al. (1967), 123 HUNTLEY (1970), 256
AKIMA (1970), 374 IEEE (1987), 47
ANDERSON et al. (1995), 325 IFRAH (1994), 46
ASHBY et al. (1990), 325 IRI et al. (1987), 199
AXELSSON (1996), 327 JENKS and SUTOR (1992), 153
BECKMAN (1971), 368 JENNINGS (1977), 325
BREZINSKI and ZAGLIA (1991), 256 KNUTH (1998), 13, 46, 123
BREZINSKI (1977), 215, 256 KOPAL (1961), 144, 164
CAJORI (1928, 1929), 46 KOREN (1993), 46
CHAR et al. (1991), 153 KROMMER and UEBERHUBER (1998), 203
CHATELIN and FRAYSSÉ (1996), 47 KRYLOV (1962), 175, 196
CHENEY (1966), 63 KULISH and MIRANKER (1981), 46
CLINE et al. (1979), 315 LAWSON et al. (1979), 24, 325
CONTE and de BOOR (1980), 295 LEMOS and PINA (2006), 368
CRYER (1982), 367 LYNESS and NINHAM (1967), 198
DAVIS and RABINOWITZ (1984), 201, 203 MENNINGER (1969), 46
DAVIS et al. (1994), 47 MORTENSON (1985), 123
DAVIS (1963), 63, 108, 123 NAYLOR and SELL (1971), 338, 340, 342, 354, 363,
DELAHAYE (1997), 368 367
DONGARRA et al. (1979), 325 ODEN and DEMKOWICZ (1996), 367
DONGARRA et al. (1988), 325 ORTEGA (1989a), 325
DONGARRA (1994), 325 ORTEGA (1989b), 326
DUFF and STEWART (1978), 298 OSTROWSKI (1966), 244, 255
DUFF et al. (1989), 325 OVERTON (2001), 47
ENGELS (1980), 203 PAPADIMITRIOU (1994), 47
FINE and ROSENBERGER (1997), 71 PATTERSON and HENNESSY (1996), 47
FLEGG (1989), 46 PAULOS (1990), 52
FOX (1967), 198 PIEGL and TILLER (1995), 123
GEORGE and LIU (1981), 326 PINA (1995), 370, 375, 379, 388
GHYKA (1977), 256 PISSANETZKY (1984), 325
GOLDBERG (1991), 24, 46 PRENTER (1975), 123
GOLUB and van LOAN (1989), 325 RABINOWITZ (1970), 236, 255
GRADSHTEYN and RYZHIK (1980), 199 REDDY (1986), 367
GRIEWANK (2000), 154 RICE (1981), 325
HADAMARD (1923), 31 SCHULTZ (1973), 123
HENRICI (1974), 71, 256 SCHUMAKER (1981), 123
HIGHAM (1996), 47, 320, 325, 387 SENDOV and ANDREEV (1994), 123

396
Índice 397

SENDOV et al. (1994), 256 arredondamento, 13


SMITH (1959), 46 simétrico, 13
SQUIRE and TRAPP (1996), 375 associatividade
STERBENZ (1974), 46 da soma, 271
STEWART and SUN (1990), 326 atractor, 239
STEWART (1973), 325
STEWART (1998), 325 Bairstow
STRANG (1980), 273, 276, 277, 325 método de, 256
STROUD and SECREST (1966), 203 Banach, espaço de, 350
STROUD (1971), 175, 203 banda
TEWARSON (1973), 325 inferior, 308
TRAUB (1964), 255, 260 largura da, 308
TREFETHEN and BAU (1997), 47, 325 superior, 308
WATKINS (1991), 325 baricêntrica, fórmula, 126
WILKINSON and REINSCH (1971), 325 base, 3, 11
WILKINSON (1964), 46, 321, 322 binária, 8
WIMP (1981), 256 decimal, 3
WOLFRAM (1988), 153 hexadecimal, 7
YAMAGUCHI (1988), 123 octal, 48
YOUNG and GREGORY (1972), 235 ortonormal, 354
ZLATEV (1991), 326 bem condicionada, 35
de BOOR (1978), 123 Bernoulli, números de, 192
Bernstein, polinómios de, 63
adaptativo Bézier, curvas de, 121
não-iterativo, 188 Binet, fórmula de, 230
iterativo, 190 Birkhoff
adaptativos interpolação de, 61
métodos de integração, 187 bissecção, método da, 220
Aitken bit
fórmula de, 241 binary digit, 8
transformação iterada, 242 implícito, 28
Aitken-Neville, 82 BLAS, 24
Akima, subspline, 374 bordejamento, 330
Al-Khwarismi, 46 Budan-Fourier, regra de, 246
algarismos, 2
algoritmo, 44, 46 cancelamento subtractivo, 19
progressivamente estável, 39 característica, 276
regressivamente estável, 39 Cauchy
algoritmos regra de, 247
precisão, 38 sucessão de, 349
antilimite, 263 centro, 68
análise Chebyshev
de funções, 61 nós de, 89, 92
directa, 32 polinómios de, 63, 175
estatística de erros, 43 Chebyshev-Lobatto, pontos de, 92
indirecta, 32 Choleski, 307
progressiva, 32 Clement, matrizes de, 387
regressiva, 32 codiagonais, 270
aritmética coeficientes, 161, 337
modelo de, 29 combinação linear, 337
398 Índice

complexidade de Minkowski, 345


computacional, 45 de Schwarz, 352
espacial, 45 de Young, 343
polinomial, 45 triangular, 341
temporal, 45 desnormalizado, número, 29
comutatividade determinante, 300
da soma, 271 diagonal
do produto, 272 dominante por colunas, 274
conformes, matrizes, 272 dominante por linhas, 273
conjugados principal, 270
índices, 343 diferenças
contractiva, função, 351 centrais, 93
controlo, pontos de, 122 divididas, 79
convergente divididas confluentes, 104
sucessão, 348 fórmula de Newton, 95
convergência progressivas, 93
como, 214 regressivas, 93
global, 217 diferenças divididas
linear, 215 tabela, 82
local, 217 diferenças finitas, 140, 141, 310
mais rápida, 214 centrais, 141
melhor, 214 progressivas, 140, 142
pior, 214 regressivas, 140, 142
Q-linear, 215 Dirichlet
Q-supralinear, 215 função de, 355
convergência-Q, 215 distância, 340, 348
ordem de, 215 Doolittle, 290
convergência-R, 215 dígito
ordem de, 218 mais significativo, 6
convexa, função, 337 dígitos
convexidade, 89 correctos, 26
convexo envolvente, 136, 337 de guarda, 17
convexo, conjunto, 337
Cramer, regra de, 277 elementos, 269
Crout, 292 diagonais, 270
curvas enchimento, 303
representação paramétrica, 120 equilibragem
implícita, 300
deficiência, 276 por linhas, 300
deflação, 250 equivalentes
denso, subconjunto, 341 normas, 341
dependente, linearmente, 337 sistemas, 280
derivação erro
algorítmica, 154 de integração, 173
automática, 154 progressivo, 33
derivação numérica, 137 regressivo, 33
Descartes erros
regras dos sinais de, 245 absolutos, 14
desigualdade análise estatística de, 43
de Hölder, 343 assimptóticos, 215
Índice 399

avaliação experimental, 43 flops, 45


de interpolação, 87 forma
de representação, 14 de potências simples, 65
relativos, 14, 315 formas
espaço de Newton, 68
lp , 342 de potências centradas, 68
linear, 335 factorizadas, 73
com produto interno, 351 formas polinomiais, 65
completo, 350 formato IEEE
das colunas, 276 alargado, 27
das linhas, 276 duplo, 27
de Banach, 350 simples, 27
de Hilbert, 353 Frobenius
de nulidade, 276 norma de, 366
de nulidade esquerdo, 276 funcional
de Sobolev, 359 linear, 360
dual algébrico, 366 fundamental, sucessão, 349
dual topológico, 366 função
linear, 271 binomial, 94
métrico, 341 contractiva, 237
normado, 341 contínua, 350
essencialmente de iteração, 214
limitada, 355 degrau, 356
iguais, 355 lipschitzeana, 351
estabilidade mensurável, 358
de algoritmos, 39 peso, 174
progressiva, 39 funções
regressiva, 39 convexas, 337
estacionário, 214 simétricas elementares, 73
Euler
integral de primeira espécie, 199 Gauss
transformação de, 100 condensação de, 284
Euler-Maclaurin, 190, 192 método de, 283
expoente, 11 transformações de, 283
enviesado, 28 Gauss-Lobatto, regras de, 180
Gauss-Radau, regras de, 179
factor de crescimento, 321 grau
factorização de exactidão, 161
LU, 288 do polinómio algébrico, 61
compacta, 291 do polinómio nulo, 62
de Choleski, 307 guarda, dígitos de, 17
triangular, 288
falsa posição Hadamard
método da, 224 problema bem posto, 31
variantes, 225 problema mal posto, 31
Ferguson-Coons, curva de, 135 Hermite
Fibonacci, 46 interpolação de, 61
números de, 230 polinómios de, 177
sucessão de, 230, 255 Hilbert
Filon, método de, 379 espaço de, 353
400 Índice

matriz de, 331 parâmetro, 110


Hölder mantissa, 11
desigualdades de, 343 Markov, 157
Holladay, teorema de, 117 matriz
Horner, algoritmo de, 65, 123 anti-simétrica, 270
de derivação, 146
IEEE 754, 27 definida negativa, 273
Illinois definida positiva, 273
método de, 382 definição, 269
Illinois, método de, 225 densa, 302
IMSL, 325 diagonal, 270
IMT, transformação, 199 diagonal dominante por colunas, 274
independente, linearmente, 337 diagonal dominante por linhas, 273
integrável, localmente, 358 esparsa, 302
interpolação identidade, 270
de Birkhoff, 61 iguais, 271
de Hermite, 61, 101 inversa, 272
de Lagrange, 61 irredutível, 313
inversa, 85 monótona, 326
osculatória, 102 nula, 270
intratável, computacionalmente, 45 não-positiva, não-negativa, 270
isometria, 367 ortogonal, 272
particionada, 274
Jacobi
permutação elementar, 281
polinómios de, 175
positiva, negativa, 270
jacobiano, 160
quadrada, 269
rectangular, 269
Kahan, somatório, 23
redutível, 313
Knuth, 13
semidefinida negativa, 273
Lagrange semidefinida positiva, 273
polinómios de, 76 simétrica, 270
Laguerre soma, 271
polinómios de, 177 transposta, 272
Lanczos trapezoidal inferior, 270
estimativa de, 209 trapezoidal superior, 270
LAPACK, 325 triangular inferior, 270
Lebesgue triangular inferior elementar, 283
integração de, 357 triangular superior, 270
integrável à, 358 maximal, conjunto, 353
teorema de, 355 medida nula, 354
Legendre Mersenne, números de, 48
polinómios de, 173 Minkowski
Lehmer-Schur, regra de, 249 desigualdades de, 345
Levy-Desplanques, 334 modelo logístico, 385
LINPACK, 325 momentos, 114
Liouville, 266 monotonicidade, 89
monómios, 61
mal condicionada, 35 Muller, método de, 234
malha, 110 multiplicidade, 211
Índice 401

de um zero, 72 ilimitado, 362


métodos limitado, 362
directos, 269 linear, 360
iterativos, 269 translação progressiva, 95
translação regressiva, 95
NACA, perfis alares, 133 operações
NAG, 325 dinâmicas, 303
NaN, 30 essencialmente dinâmicas, 303
nega-decimal, 49 estáticas, 303
Newton, 231 simplesmente dinâmicas, 303
Newton-Raphson, 231 operações elementares, 281
norma, 341 optimal, 130
de operadores lineares, 362 ordem, 269
absoluta, 342 primeira, 215
da soma, 346 de convergência-Q, 215
de Frobenius, 366 de convergência-R, 218
de Hölder ou lp , 342 quadrática, 215
de Lebesgue ou Lp , 343 ortogonais
de matrizes, 364 funções, 353
de máximo, 60, 347 ortonormal, 353
do supremo, 347 overflow, 12
euclideana, 346, 347, 351
monótona, 342 parte
normas fraccionária, 9, 28
equivalentes, 341 inteira, 9
notação científica, 11 Pascal
nulidade, 276 matrizes de, 387
não-estacionário, 214 passo, 140
nós Pegasus, método de, 225, 382
de interpolação, 59 Pei
núcleo, 276 matriz de, 388
número permutação
algébrico, 266 de linhas, 281
de condição de colunas, 297
absoluto, 37 perturbações relativas, 315
relativo, 37 pesos, 161
desnormalizado, 29 pivô, 285
subnormal, 29 parcial, 300
transcendente, 266 com patamar, 298
número de condição, 203 diagonal ou simétrico, 304
absoluto, 33 parcial, 297
de matrizes, 315 total, 297
relativo, 33 polinómio
coeficientes, 61
Olver, 259 definição, 61
operador, 98 estável, 266
linear, 364 extrapolador, 89
de derivação, 98 grau, 61
de dualidade, 367 interpolador, 71, 74, 75
identidade, 95 mónico, 61
402 Índice

nodal, 75, 78 do trapézio corrigida, 170, 182


nulo, 61 positivas, 186
polinómios regras de formação, 2
de Bernstein, 63 regula falsi, método da, 224
ponto relação integral, 118
de atracção, 239 representação normalizada, 11
de repulsão, 239 repulsor, 239
fixo, 237 resíduo, 322
ponto flutuante, 12 relativo, 323
positividade, 89 Richardson, 194, 208
precisão extrapolação de, 152
de algoritmos, 38 Riemann, integrais à, 354
precisão plena, 255 Riesz, representação de, 362
princípios rigidez, 89
aditivo, 3 Romberg, 194
aditivo, 2
multiplicativo, 4 Schoenberg, 110
subtractivo, 2 Schröder, 259
processo dinâmico Schwarz, desigualdade de, 352
discreto, 384 secante
produto método da, 227
de matrizes, 271 seminorma, 341
por um escalar, 271 Simpson
produto interno, 24, 351 regra de, 164
programa, 44 sistema
proporção áurea, divina, 256 homogéneo, 276
pseudo código, 47 ortonormal completo, 354
Ptolomeu, 48 sistemas
de equações lineares, 268
quadratura, 161 sistemas de numeração, 2
Sobolev
raiz espaços de, 359
da equação, 211 somatório
redução, 250 compensado, 23
refinamento iterativo, 324 recursivo, 21
regras spline, 109
compostas, 180 completo, 115
de Gauss, 171 cúbico, 114
de Gauss-Hermite, 177 definição, 110
de Gauss-Jacobi, 175 natural, 115
de Gauss-Laguerre, 177 periódico, 115
de Gauss-Legendre, 175 quadrático, 112
de Gauss-Lobatto, 180 splines
de Gauss-Radau, 179 com tensão , 120
de integração, 161 Steffensen, método de, 243
de Newton-Cotes, 164 Stirling
de Simpson, 164, 182 fórmula de, 130
do ponto médio, 163, 182 subdiagonais, 270
do rectângulo, 162, 181 submatrizes, 274
do trapézio, 163, 182 activas, 285
Índice 403

submultiplicativas, propriedades, 363 de função, 211


subnormal, número, 29 duplo, 72, 211
substituições simples, 72, 211
ascendentes, 278
descendentes, 278
superconvergência, 141, 156
suporte, 339
supradiagonais, 270
supremo essencial, 355
séries, de potências, 62
síntese, 61

tensão, splines com, 120


teorema
de Weierstrass, 63
Fundamental da Álgebra, 71
Thomas, algoritmo de, 311
transformação, 364
de Gauss, 283
IMT, 199
linear, 360
polinomial, 199
tratável, computacionalmente, 45
trivial, 337
truncatura, 13, 357

underflow, 12
gradual, 29
súbito, 29
unidade de arredondamento, 14
uniformemente contínua, 350

valor posicional, 2
valores nodais, 59
Vandermonde, matriz de, 73
vector
coluna, 269
linha, 269
unitário, 347
Verhulst, 385

Weierstrass
teorema, 63
Wilkinson
princípio de, 33
Wilson
matriz de, 386

Young, desigualdade de, 343

zero

Você também pode gostar