Escolar Documentos
Profissional Documentos
Cultura Documentos
HEITOR L. G. PINA
Faculdade de Engenharia
Universidade Católica
2007
Conteúdo
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
Bibliografia 390
Índice 396
Lista de Tabelas
x
Lista de Algoritmos
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
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
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
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:
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
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.
N = (dn dn−1 . . . d1 d0 )b
(1.2.2)
= dn bn + dn−1bn−1 + · · · + d1 b1 + d0
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.
(437)8 = 4 × 82 + 3 × 81 + 7 × 80 = 4 × 64 + 3 × 8 + 7 = 287
637 | 16
O processo das divisões sucessivas pode dispor-se assim: 157 39 | 16
13 07 2
Logo, (637)10 = (27D)16 .
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
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,
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.
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.
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
x = ±mbt (1.3.3)
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.
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.
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.
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.
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
(porquê assim e não da outra maneira possível?). Para a multiplicação e a divisão empre-
gamos
5. Arredondamento da mantissa;
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
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.
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
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
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
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,
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
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
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
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.
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
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)
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
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,
sendo fácil concluir que o erro absoluto e o número s se relacionam do seguinte modo
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.
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
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.
• O primeiro bit é usado para o sinal: 0 para números positivos e 1 para números
negativos.
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
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
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.
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.
É 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:
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.
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
ỹ = 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.
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|≤δ
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
Notemos que
x
condr f (x) = conda f (x) (1.6.10)
f (x)
Como se verifica, a propagação das perturbações relativas é determinada por condr f (x).
1.6 Propagação de erros 35
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.
O exemplo seguinte ajuda a perceber o que se entende por número de condição baixo
e número de condição elevado.
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.
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
|f (x + δh) − f (x)|
conda f (x) = lim sup (1.6.13)
δ→0 khk=1 kxk
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
y = f (x) = f (x1 , x2 ) = x1 + x2
38 Aritmética computacional
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.
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
donde decorre que o erro neste caso depende basicamente do número de condição de f .
40 Aritmética computacional
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!
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,
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
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.
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
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
x1 = (0.9431)101 e x2 = (0.1060)10−4
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.
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. 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.
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.
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.
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.
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).
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.
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
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 ):
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
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)?
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).
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!
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.
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.
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
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
35. Deduza a seguinte relação entre o erro relativo e e o número s de dígitos correctos
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
42. Calcule a soma sn = nk=1 1/(k2 +k) para os valores de n = 999, 9999, 99999, . . ., efectuando
P
o somatório:
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.
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?
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.
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
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
o que permite concluir que, se h for mal condicionada, então uma (pelo menos) das funções
f e g é mal condicionada.
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
z = (x + y)2 − x2 − 2xy /y 2
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
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 )
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
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}
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).
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.
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
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
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.
p(x) = a3 x3 + a2 x2 + a1 x + a0 = ((a3 x + a2 )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.
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.
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
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)
p(x) = a0 + a1 (x − c)
p(x) = a0 + a1 (x − c1 ) + · · · + an (x − c1 ) · · · (x − cn ) (2.2.6)
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
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 )
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.
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
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
p(x) = (x − z1 )q(x)
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)
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
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
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).
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
n
Y x − xi
Lk (x) = (2.3.6)
x − xi
i=0 k
i6=k
L0 (x)
n
X L1 (x)
p(x) = Lk (x)yk = y0 y1 · · · yn
..
k=0 .
Ln (x)
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.
1
L0 L1 L2 L3
0.8
0.6
00 1 2 3 4
x
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.
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,
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.
ak ≡ y[x0 , x1 , . . . , xk ]
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
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.
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
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).
x y[ · ] y[ · , · ] y[ · , · , · ] y[ · , · , · , · ]
0 1
−2
1 −1 1
1 −1/4
3 1 0
1
4 2
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
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 .
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 )
g ( ) p( ) x
p(yi ) = g(yi), i = 0, 1, . . . , n
p(y) ≈ g(y)
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
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
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).
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.
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.
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.
W4 0.1
W6
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
kπ
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
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
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,
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.
h = (xn − x0 )/n
xk = x0 + kh, k = 0, 1, . . . , n (2.5.1)
Uma função f (x) é transformada via (2.5.2) numa função f (s) dada por
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
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
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
E =I +∆ (2.5.12)
E −1 f (x) = f (x − h) (2.5.14)
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
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
Usando a identidade
s
s s
X s
2 = (1 + 1) =
j
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
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
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
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.
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)
Sn = (I − E + E 2 − · · · + E n )y0 (2.5.20)
(I − E + E 2 − · · · + E n )(I + E) = I + E n+1
(I + E)(I − E + E 2 − · · · + E n ) = I + E n+1
lim yn = lim E n y0 = 0
n→∞ n→∞
100 Interpolação polinomial
S = lim Sn = (I + E)−1 y0
n→∞
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.
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
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
n 5 10 15 20
π/4 0.774603 0.785145 0.785392 0.785398
É 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.
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
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
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
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
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
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
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.
Im z
zn
z1
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
1 f (t)
Z
f (z) = dt
2πi Γ t−z
podemos, portanto, dizer que
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
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 .
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).
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!
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,
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.
2. S ∈ C m−1 (Ω̄).
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.
y y1 y y1
y3
y2 y2
y0 y0
x0 x1 x2 x3 x x0 x1 x2 x3 x
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
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 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
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
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
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
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
Figura 2.7.4: Interpolação da função de Runge por splines em malhas uniformes no in-
tervalo [−1, 1]
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.
P2
P1 P1
P3 P3
P0 P0
P2
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.
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
p(x) = a0 + a1 (x − c1 ) + a2 (x − c1 )(x − c2 ) + · · ·
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
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.
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).
14. Com f (x) = ln x, calcule f (1.2) por interpolação cúbica, sendo dados os seguintes valores:
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
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
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
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
a0 = y0
a1 = y0′
a2 = 0
a3 = y1 − y0 − y0′
a4 = 3(y0 − y1 ) + 2y0′ + y1′
a5 = −6(y0 − y1 ) − 3(y0′ + y1′ )
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 .
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
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.
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?
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.
40. Seja f ∈ C[0, 1] e Bn o polinómio de Bernstein que lhe está associado. Demonstre que
d) Qual o valor de n para garantir um erro de aproximação inferior a 10−5 ? O que conclui
deste resultado?
x f (x) f ′ (x)
−1.0 1.0 1.0
0.0 2.0 0.0
1.0 3.0 1.0
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
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
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
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.
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.
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 ).
57. Seja S ∈ P1,n o spline linear que interpola a função f ∈ C(Ω̄). Mostre que:
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)
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:
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
Continuaremos a designar por Ω̄ = [a, b] o menor intervalo que contém os nós de interpo-
lação.
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
x − xi = (x − x̄) + (x̄ − xi )
x − xn−i = (x − x̄) + (x̄ − xn−i ) = (x − x̄) − (x̄ − xi )
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
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
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.
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
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
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
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,
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
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
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.
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
É 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.
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
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 .
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
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)
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:
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
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!
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.9 Problemas
1. Explique em detalhe a dedução da expressão (3.2.1).
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.
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.
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).
a) terceira derivada:
f (x4 ) − 2f (x3 ) + 2f (x1 ) − f (x0 )
f (3) (x2 ) ≈
2h3
b) quarta derivada:
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.
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.
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.
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:
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:
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
a) Dh2 x(0.0);
b) Dh2 x(0.6). Que dificuldade surge neste caso?
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
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
159
160 Integração numérica
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
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.
Wn (x) = (x − x0 )(x − x1 ) · · · (x − xn )
162 Integração numérica
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.
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
É fácil verificar que ambas estas regras do rectângulo possuem grau zero.
4.2 Regras básicas 163
a a a a+b
b x b x 2 b x
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
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 é
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
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
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
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
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
1 b
Z
Eh (f ) = f (n+2) (ξ) Wn+1 (x) dx (4.2.13)
(n + 2)! a
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
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
O erro, calculado directamente pela diferença entre o valor exacto e o valor aproximado, é
b) Regra do rectângulo à direita. Pela expressão (4.2.4) e de modo idêntico temos que
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).
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
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.
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
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.
Ai > 0, i = 1, . . . , n
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
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).
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
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.
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 .
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
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-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,
verifica
ψi (a) = 0, ψi ⊥ Pi−2 (Ω̄)
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
A + A1 + A2 = 2
−A + A1 x1 + A2 x2 = 0
A + A1 x21 + A2 x22 = 2/3
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
Teorema 4.4.4 Seja {pi }ni=0 uma família de polinómios ortogonais. Então,
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.
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 (Ω̄).
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.
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
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ê.
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 ).
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
1 ′′
Ei = f (ξi)h3i (4.7.1)
24
4.7 Integração adaptativa 187
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.
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.
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
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.
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
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
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)!
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
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
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 )
T0,0
T1,0 T0,1
A análise que levámos a cabo mostra que as colunas e as diagonais deste quadro
convergem para o valor exacto do integral.
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
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
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
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
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
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.
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
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
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.
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
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
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.
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
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
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.
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 (Ω̄).
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
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 )
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
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.
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
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, . . .?
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
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
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 .
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
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)
a) b) c)
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.
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
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
Como o supremo dos valores k = 1/2 − ǫ para ǫ > 0 é 1/2, fica provada a afirmação feita.
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!
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
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,
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
ek = z − xk (5.1.2)
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:
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.
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.
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
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.
b) Se existir um número A ∈ (0, ∞), um número p > 1 e um número natural N tais que
∆k = |xk+1 − xk |
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
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.
y = f (x)
y
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
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.
e, portanto,
ā = lim ak = b̄ = lim bk = lim xk+1 (5.2.3)
k→∞ k→∞ k→∞
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.
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.
y = f (x)
y
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.
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.
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
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, 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.
yk?1
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.
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
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 )
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 )
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)
yk
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)
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.
Teorema 5.5.1 Seja [a, b] um intervalo tal que z, x0 ∈ (a, b), f ∈ C 2 [a, b] e
M2
|ek+1 | ≤ M|ek |2 , com M =
2m1
′ 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
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.
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
y = f (x)
yk
Tomando para majorante pessimista do erro inicial o valor |e0 | ≤ b − a = 0.5, calculamos as
seguintes estimativas
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
p(x) = yk + ck (x − xk ) + dk (x − xk )2
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 ]
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
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.
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
y y y=x
y=x
y = g (x)
y = g (x)
xk xk+1 x xk xk+1 x
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.
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
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
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
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.
z − xk+1 ≈ c(z − xk )
(5.8.6)
z − xk+2 ≈ c(z − xk+1 )
(∆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
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
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′k c 1 g ′(z) ′′
lim = d = − g (z)
k→∞ e2
k c−1 2 g ′(z) − 1
Este resultado permite deduzir que
(∆xk,m )2
xk,m+1 = xk,m − , k, m = 0, 1, . . .
∆2 xk,m
na qual xk,0 ≡ xk .
y
y=x
g (x0 )
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
Teorema 5.9.1 (Regras dos sinais de Descartes) Seja p um polinómio real. Então,
N+ ≤ 2 e V − N+ = par
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.
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
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
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
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
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!
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.
y = f˜(x)
|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
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.
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
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 )
y = f (x)
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
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.
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
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:
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 )
f (xk )
xk+1 = xk − m
f ′ (xk )
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
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.
f (xk )
z = xk −
f ′ (ξk )
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.
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?
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
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.
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
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]?
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!.
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.
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.
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
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.
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,
Ax = b (6.1.1)
em que
a11 a12 · · · a1n x1 b1
268
6.1 Introdução 269
a21
a22 ··· a2n
A=
.. .. .. ..
. . . .
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.
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).
aij = aji , i, j = 1, 2, . . . , n
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
A+B=B+A
(A + B) + C = A + (B + C)
(αβ)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.
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
(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.
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
θ 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. 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.
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.
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
1·
T
a2 ·
xT A = x1 x2 · · · xn T T T
.. = a1 · x1 + a2 · x2 + · · · + am · xn
.
aT
m·
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.
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.
Teorema 6.1.5 O sistema (6.1.4) tem solução única sse qualquer das duas condições
equivalentes for válida:
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.
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
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).
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.
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.
Ax = b e Āx̄ = b̄
forem iguais.
Ā = CA, b̄ = Cb (6.2.1)
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
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.
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
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)
0 0 1
0 0 1
m3 0 1
Definição 6.2.4 Uma matriz triangular inferior elementar de ordem n e índice k é uma
matriz da forma
M = I − meT k
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
= I − m(eT T
k m)ek = I
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
(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
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
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
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
é efectuada apenas uma única vez, qualquer que seja o número de segundos membros a
tratar.
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
com
1 0 ··· 0
−m21 1 · · · 0
M(1) = ..
(1) T
= I − m e1
.. . . .. (6.4.2)
. . . .
−mn1 0 · · · 1
(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
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
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
Ax = b ⇒ (LU)x = b ⇒ L(Ux) = b
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.
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
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
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
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.
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.
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.
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.
• 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.
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
Ā = 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
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.
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
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
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
PAQ = LU (6.5.5)
Ax = b ⇒ P(Ax) = Pb ⇒ (PA)QQ−1 x = Pb
Lz = Pb, Uy = z, x = Qy (6.5.6)
298 Sistemas de equações lineares: métodos directos
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.
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
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
× × × × × × × ×
× ×
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.
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
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
Ā = MP AP T (6.7.5)
Ā = 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.
Vejamos quais as condições para que L e D satisfaçam a expressão (6.7.9). Para tal
devemos ter que
d = α − lT Dn−1 l = α − aT A−1
n−1 a (6.7.16)
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
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
0
Figura 6.7.2: Matrizes banda banda banda
inferior superior
0
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.
1 2 3 4 5 6 1 2 3 4 5 6
1 1
2 2
3 3
4 4
5 5
6 6
Figura 6.7.3: Redução da largura de banda por permutações simétricas de linhas e colunas
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.
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.
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
···
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.
com
x1 = A−1
11 (b1 − A12 x2 ) (6.7.26)
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
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.
Ax = b (6.8.1)
(A + δA)(x + δx) = b + δb (6.8.2)
Aδx = δb (6.8.4)
δx = A−1 δb (6.8.5)
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,
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
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
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
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
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
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)
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
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.
Uma aplicação imediata das definições fornece, para o caso do Exemplo 6.5.1, os valores
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.
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.
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.
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
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
(A + E)x̃ = b (6.8.34)
cond AkEkkAk
kx − x̃k ≤ kxk (6.8.36)
1 − cond A kEk/kAk
r = b − Ax̃ (6.8.37)
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
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
(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.
(Ax, ei ) = (b, ei )
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.
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?
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.
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).
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
x1 + x2 + x3 = 4
x1 − x2 + 2x3 = 4
2x1 + x2 + x3 = 5
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.
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
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
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 .
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).
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
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
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.
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
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.
368
B.1 Aritmética computacional 369
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
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.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
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
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
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):
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
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:
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:
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:
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
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:
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
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
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
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 .
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
d2 v
(ξ) = −φ(ξ), 0<ξ<1
dξ 2
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
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
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.
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:
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.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
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.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.
5 7 9 10 31
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
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
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)
!
x
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.
F. CAJORI. A History of Mathematical Notations. The Open Court Pub. Co., 1928, 1929.
Reimpressão Dover 1993.
390
Bibliografia 391
I. S. DUFF, A. M. ERISMAN, and J. K. REID. Direct Methods for Sparse Matrices. Oxford
University Press, 1989.
L. FOX. Romberg integration for a class of singular integrals. Comput. J., 10:87–93, 1967.
A. GEORGE and J. LIU. Computer Solution of Large Sparse Positive Definite Systems. Prentice-
Hall, 1981.
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.
J. HADAMARD, editor. Lectures on Cauchy’s Problem for Linear Partial Differential Equations.
Yale University Press, 1923.
IEEE. IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std 754 – 1985. SIG-
PLAN Notices 22:2, 1987.
C. LEMOS and H. PINA. Métodos Numéricos: Complementos e Guia Prático. IST Press, 2006.
K. MENNINGER. Number Words and Number Symbols – A Cultural History of Numbers. The
MIT Press, 1969. Reimpressão Dover 1992.
A. W. NAYLOR and G. R. SELL. Linear Operator Theory in Engineering and Science. Holt,
Reinhart and Winston, 1971.
J. M. ORTEGA. Introduction to Parallel and Vector Solution of Linear Systems. Plenum Press,
1989b.
M. L. OVERTON. Numerical Computing with IEEE Floating Point Arithmetic. SIAM, 2001.
P. RABINOWITZ, editor. Numerical Methods for Nonlinear Algebraic Equations. Gordon and
Breach, 1970.
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.
W. SQUIRE and G. TRAPP. Using complex variables to estimate derivatives of real functions.
SIAM Review, 40(1):110–112, 1996.
Z. ZLATEV. Computational Methods for General Sparse Matrices. Kluwer Academic Publishers,
1991.
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
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
zero