Você está na página 1de 116

Métodos Numéricos:

Colectânea de Exercícios

• Propostas de resolução
• Conceitos fundamentais
• Algoritmos básicos
• Gráficos ilustrativos

Miguel Matos Neves

José Viriato Santos

Virgínia Infante

Leonel Fernandes

Engenharia Mecânica, Engenharia Aeroespacial e Engenharia e


Arquitectura Naval - Ano Lectivo 2009/10
VERSÃO PROVISÓRIA
2

TÓPICOS: Números Inteiros: Conversão da base b para a base 10; Conversão


da base b1 para a base b2 . Números Reais: Conversão da base 10 para a base b < 10;
Conversão da base b1 para a base b2 (b1 6= 10, b2 6= 10 e ambas > 2); Conversão da base
10 para base b > 10. Sistemas de Ponto Flutuante: Erros de representação,
Unidade de arredondamento, Overflow e Underflow.
LEITURAS RECOMENDADAS: Capítulo 1 (pp. 1–12) do livro [Pina(1995)]

2.1 NÚMEROS INTEIROS:


Conversão da base b para a base 10
Ache a representação decimal dos seguintes números inteiros:

a) (101101)2 ; b) (221)3 ; c) (427)8

CONCEITOS TEÓRICOS
Números inteiros positivos: Conversão da base b ≥ 2 para a base 10† (exp. (1.2.2),
p. 4, [Pina(1995)]):

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

com 0 6 di < b − 1, i = 0, 1, . . . , n. Assim, existem (n + 1) dígitos. ¤

RESOLUÇÃO
a)

d0
¸ 2 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20
(101101)
= 32 + 8 + 4 + 1 = (45)10 = 45

No MATLAB escrevemos bin2dec(’101101’), resultando ans = 45.


b)

(221)3 = 2 × 32 + 2 × 31 + 1 × 30 = 25
† Para representar os inteiros de 0 a 10 necessitamos de quantos bits? Necessitamos de 4 bits ou

16 configurações, pois 23 < 10 < 24 .


2 SEMANA 2

No MATLAB escrevemos base2dec(’221’,3), resultando ans = 25.


c)

(427)8 = 4 × 82 + 2 × 81 + 7 × 80 = 4 × 64 + 16 + 7 = 256 + 23 = 279

No MATLAB escrevemos base2dec(’427’,8), resultando ans = 279. ¥

2.2 NÚMEROS INTEIROS:


Conversão da base b1 para a base b2
Obtenha a representação octal (base 8) dos números inteiros:

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

CONCEITOS TEÓRICOS
Números inteiros positivos: Conversão da base 10 para a base b > 2 (p. 5,
[Pina(1995)]):

dn bn + dn−1 bn−1 + · · · + d1 b + d0 d0
= dn bn−1 + dn−1 bn−2 + · · · + d1 +
b b

sendo d0 o resto da divisão. ¤

RESOLUÇÃO
a) Apresentamos duas resoluções alternativas:
Resolução 1:
Converter da base 2 para a base 10 e posteriormente para a base octal, ou seja,

(101001)2 → ( )10 → ( )8 .

( )2 → ( )10 :
Aplicamos a exp. (1.2.2), p. 4, [Pina(1995)], pelo que (101001)2 = (41)10 = 41.
( )10 → ( )8 :
(101001)2 = 41 = (51)8 , pois efectuamos as divisões (inteiras) e tomamos os restos
na ordem inversa:

41 |8
1 5 |8
5 0

Resolução 2:
Converter da base 2 para a base 2n , com n ≥ 2 e inteiro, através de agrupamentos
de n dígitos. Neste caso n = 3, pois na base 8 temos os dígitos 0, 1, 2, . . . , 6, 7, que
se representam na base 2 como (000)2 , (001)2 , (010)2 , . . . , (110)2 , (111)2 , respectiva-
mente. Por outras palavras, necessitamos de 3 bits para representar os algarismos 0
a 7. Esquematicamente temos

(101001)2 → ( )8 .
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 3

Assim, (101 | 001)2 → (22 + 20 | 20 )8 → (5 | 1)8 , ou seja,


(101001)2 = (51)8
b) À semelhança do que fizemos na alínea a), obtemos
Resolução 1:
(1000111)2 → (26 + 22 + 21 + 20 )10 = 64 + 4 + 2 + 1 = 71 →

71 |8
7 8 |8
0 1 |8
1 0

(1000111)2 = (107)8

Resolução 2:
(001 | 000 | 111)2 → (20 | 0 | 22 + 21 + 20 )8 → (1 | 0 | 7)8 ,
ou seja (101001)2 = (107)8 ¥

2.3 NÚMEROS REAIS:


Conversão da base 10 para a base b < 10
Determine a representação binária do número real (0.5)10 .

CONCEITOS TEÓRICOS
Números reais: Conversão da base 10 para a base b (p. 7, [Pina(1995)]):
Para converter um real da base 10 para a base b procede-se segundo 4 passos:
i) Separar a parte inteira da parte não-inteira;
ii) Converter a parte inteira;
iii) Converter parte não-inteira, multiplicando sucessivamente por b, usando a
componente não-inteira do resultado para continuar e guardando a parte inteira para
a representação;
iv) Reunir as duas partes. ¤

RESOLUÇÃO
Aplicando os conceitos teóricos acima, teremos
i) Parte inteira: 0; Parte não-inteira: .5
ii) Converter a parte inteira: (0)10 = (0)2
iii) Converter parte não-inteira:

0.5 × 2 = 1.0 −→ 1
0.0 × 2 = 0.

1
Portanto, obtemos (.1)2 como representação de (0.5)10 = 2
iv) Reunindo vem (0.5)10 = (0)2 + (.1)2 = (.1)2
¥
0 −1 1
Facilmente de verifica que (0.1)2 = 0 × 2 + 1 × 2 = 2 = (0.5)10 ¡
4 SEMANA 2

2.4 NÚMEROS REAIS:


Conversão da base b1 para a base b2
(b1 6= 10, b2 6= 10 e ambas > 2)

Dado o número real 437.125 na base octal, determine a sua representação binária com
7 dígitos após a vírgula.

CONCEITOS TEÓRICOS

Ver pp. 7–8, [Pina(1995)] e resolução do Exercício 2.3.

Números reais: Conversão da base b para a base 10 (exp. (1.3.2), p. 7, [Pina(1995)]):

(dn dn−1 . . . d1 d0 .d−1 d−2 . . . d−k )b =dn bn + dn−1 bn−1 + · · · + d1 b1 + d0 b0


+d−1 b−1 + d−2 b−2 + · · · + d−k b−k ,

sendo (dn dn−1 . . . d1 d0 )b e (d−1 d−2 . . . d−k )b os dígitos das parte inteira e não-inteira
do número, respectivamente. ¤

RESOLUÇÃO

Este Exercício pode ser resolvido de duas formas, indicadas de seguida.

Resolução 1:

Esquematicamente, temos dois passos principais

(437.125)8 → ( )10 → ( )2

Conversão da base octal para a base 10:

Aplica-se a exp. (1.3.2), p. 7, [Pina(1995)], ou seja

4 × 82 + 3 × 81 + 7 × 80 + 1 × 8−1 + 2 × 8−2 + 5 × 8−3 = 287 + 0.166015625


= 287.166015625

Dado que devemos considerar somente 7 dígitos após a vírgula

(437.125)8 ≈ 287.1660156.

Conversão da base 10 para a base binária:

i) Parte inteira: 287; Parte não-inteira: .1660156

ii) Converter a parte inteira:


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 5

287 | 2
1 143 |2
1 71 | 2
1 35 | 2
1 17 | 2
1 8 | 2
0 4 | 2
0 2 | 2
0 1 | 2
1 0

287 = (100011111)2

iii) Converter a parte não-inteira:

0.1660156 × 2 = 0.3320312 −→ 0
0.3320312 × 2 = 0.6640624 −→ 0
0.6640624 × 2 = 1.3281248 −→ 1
0.3281248 × 2 = 0.6562496 −→ 0
0.6562496 × 2 = 1.3124992 −→ 1
0.3124992 × 2 = 0.6249984 −→ 0
0.6249984 × 2 = · · ·

(0.125)8 = (0.0010101 . . .)2

iv)

(437.125)8 = (100011111.0010101 . . .)2

Considerando 7 dígitos após a vírgula, o resultado é


(437.125)8 ≈ (100011111.0010101)2
Resolução 2:
Uma vez que necessitamos de 3 bits para representar os números 0 a 7 (ver Reso-
lução 2 do Exercício 2.2), cada dígito do número (437.125)8 corresponde a um grupo
de 3 dígitos (3 bits) na base 2. Assim,
(437.125)8 = (4 | 3 | 7 | . | 1 | 2 | 5)8
→ (100 | 011 | 111 | . | 001 | 010 | 101)2
Como são pedidos 7 dígitos após a vírgula, ficamos com
(437.125)8 ≈ (100011111.0010101)2 ¥
−3 −5 −7
Verificação da parte não-inteira: (.0010101)2 = 1 × 2 +1×2 +1×2 =
0.1640625. Existe então um erro na representação da parte não-inteira, que deveria
ser 0.166015625. Isto deve-se a termos truncado após o dígito d−7 , quando seriam
necessários 9 dígitos. ¡
6 SEMANA 2

2.5 NÚMEROS REAIS:


Conversão da base 10 para base b > 10
Dado o número real 539.125 na base decimal, achar a sua representação na base
hexadecimal.

CONCEITOS TEÓRICOS
Quando a base é tal que b > 10, há que recorrer a outros símbolos para represen-
tar os dígitos 10, 11, 12, . . . Uma possibilidade é recorrer às letras do alfabeto latino
A, B, C, . . .
No caso da base hexadecimal ou base 16, resulta, 0, 1, . . . , 9, A, B, C, D, E, F , cor-
respondendo as letras aos dígitos
A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. ¤
Após esta ressalva, a conversão da base 10 para a base b > 10 processa-se segundo
os quatro passos referidos nos Conceitos Teóricos do Exercício 2.3.

RESOLUÇÃO
Esquematicamente

(539.125)10 → ( )16

i) Parte inteira: 539; Parte não-inteira: .125


ii) Converter a parte inteira:

539 |16
59 33 |16
11 1 2 |16
2 0

539 = (21B)16

iii) Converter a parte não-inteira:

0.125 × 16 = 2.0 −→ 2
0.000 × 16 = 0.0 −→ 0

(0.125)10 = (0.2)16

iv) Reunindo a parte inteira à parte não-inteira fica

(539.125)10 = (21B.2)16

obtendo-se uma representação exacta. ¥


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 7

2.6 SISTEMAS DE PONTO FLUTUANTE:


Erros de representação, Unidade de arredonda-
mento, Overflow e Underflow
Considere os sistemas de ponto flutuante F P (10, 5, 2, A) e F P (10, 5, 2, T ).
a) Represente o número −327.258 nesses sistemas.
b) Qual o maior número em módulo representável nesses sistemas?
c) Qual o menor número em módulo representável nesses sistemas?
c) Calcule os erros relativos de representação e compare-os com as respectivas unidades
de arredondamento.

CONCEITOS TEÓRICOS
Um sistema F P (b, p, q) é constituído por todos os números reais x da forma
([Pina(1995)], pp. 9-10)

−1 −p

 b 6m61−b
x = ±mbt em que


|t| 6 bq − 1

e ainda x = 0.
Portanto,

x = ±(.d−1 d−2 d−3 . . . d−p )b±(tq−1 ...t1 t0 ) ,

sendo p um número finito de dígitos para a mantissa e q um número finito de dígitos


para o expoente, denominando-se b por base.
Salvo indicação em contrário, considera-se que a mantissa é normalizada, i.e.,
d−1 6= 0, exceptuando a representação do zero.
Truncatura (T ): Desprezam-se os dígitos do número real x que não cabem na
mantissa, i.e., os dígitos para além dos p primeiros não são incluídos na representação.
([Pina(1995)], p. 10)
Arredondamento (A): O número real x é representado pelo número do sistema
que lhe está mais próximo. ([Pina(1995)], pp. 10-11)
Limite de overflow: Maior número em módulo representável nesses sistemas, ou
seja, em termos computacionais, maior número que posso guardar em memória. Este
número não depende de se fazer arredondamento ou truncatura.
Limite de underflow: Menor número em módulo representável nesses sistemas.
Este número depende de se considerar a mantissa normalizada ou não.
Unidade de arredondamento, u: Majorante do erro relativo na representação de
um número num dado sistema F P (b, p, q), tal que ([Pina(1995)], p. 12)

1 1−p

 2b em F P (b, p, q, A)
u=


b1−p em F P (b, p, q, T )

¤
8 SEMANA 2

RESOLUÇÃO

a) Concretizando para o caso em análise ficamos com

F P (10, 5, 2) : fl(x) = ±mb±t = ±(.d−1 d−2 d−3 d−4 d−5 )10±(t1 t0 )

com 0 6 di 6 9, para i = −1, −2, −3, −4, −5.

Normalizando o número dado obtemos

x = −(.327258)10+3

verificando-se que tem 6 dígitos na mantissa.

Nos sistemas de ponto flutuante referidos teremos



+03

 fl(−327.258) = −(.32726)10 em F P (10, 5, 2, A)



fl(−327.258) = −(.32725)10+03 em F P (10, 5, 2, T )

b) O número limite de overflow é



+99

 (0.99999)10 em F P (10, 5, 2, A)



(0.99999)10+99 em F P (10, 5, 2, T )

sendo igual para T ou A.

c) Para o formato normalizado, o número limite de underflow é



−99

 (0.10000)10 em F P (10, 5, 2, A)



(0.10000)10−99 em F P (10, 5, 2, T )

sendo igual para T ou A.

Se tivermos um formato não normalizado este número é (0.00001)10−99 . Neste


caso falamos em underflow gradual.

d) Atendendo à definição de unidade de arredondamento teremos neste caso



1 1−5

 2 10 = (0.50000)10−4 em F P (10, 5, 2, A)
u=


101−5 = (0.10000)10−3 em F P (10, 5, 2, T )

O erro relativo de representação é

x̃ − x
e= ,
x
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 9

onde x̃ = fl(x) é a representação no sistema de ponto flutuante e x é o número real a


representar. Assim, os erros relativo neste caso são
¯ ¯
¯ −(0.32726)103 −(−327.258) ¯
¯ −327.258 ¯ = (.61114)10−7 < (0.50000)10−4 em F P (10, 5, 2, A)

¯ ¯
¯ −(0.32725)103 −(−327.258) ¯
¯ −327.258 ¯ = (.24446)10−6 < (0.10000)10−3 em F P (10, 5, 2, T )

¥
3

TÓPICOS: Aritmética em Sistemas FP: Cancelamento Subtractivo. For-


mato Simples IEEE 754: Erros de representação; Erros de representação e Ope-
rações 0/0 e 1/0.
LEITURAS RECOMENDADAS: Capítulo 1 (pp. 12–27) do livro [Pina(1995)]

3.1 ARITMÉTICA EM SISTEMAS FP:


Cancelamento subtractivo
Determine no sistema F P (10, 4, 2, T ) as raízes da equação

x2 + 0.7341x + (0.600)10−4 = 0

considerando que não existem dígitos de guarda† no processamento das operações em


ponto flutuante.
a) Usando a fórmula resolvente. Indique os erros absolutos Ex1 e Ex2 .
b) Justifique a origem do erro relativo obtido na menor raiz (em módulo) e sugira
uma forma de melhoria numérica para a resolução deste problema.

CONCEITOS TEÓRICOS
As operações aritméticas no sistema de ponto flutuante FP desenvolvem-se de
acordo com os seguintes passos (DAONA):‡
1. Decomposição dos operandos nas respectivas mantissas e expoentes: (mbt );
2. Alinhamento das mantissas, no caso de soma ou subtracção. Por exemplo, para
t1 > t 2

m1 bt1 + m2 bt2 = (m1 + m2 bt2 −t1 )bt1


(.1)10−1 + (.5)10−2 = [(.1) + (.5)10−2+1 ]10−1 ;

3. Operação com mantissas e expoentes;


4. Normalização da mantissa. Por exemplo, (1.1)10−1 = (0.11)100 ;
5. Arredondamento ou truncatura na mantissa.
† O processador pode ter mais dígitos que a memória, designando-se os dígitos adicionais por

dígitos de guarda.
‡ Em geral, as operações em FP não respeitam as propriedades comutativa, distributiva ou asso-

ciativa.
12 SEMANA 3

Cancelamento subtractivo: Verifica-se quando se subtraem números muito próxi-


mos no sistema de ponto flutuante utilizado. ¤

RESOLUÇÃO

a) Sabemos que

2 −b ± b2 − 4ac
ax + bx + c = 0 ⇔ x1,2 =
2a

e para a = 1, é matematicamente equivalente utilizar



−b ± b2 − 4c
x2 + bx + c = 0 ⇔ x1,2 = .
2

A sequência de realização deste cálculo em ponto flutuante é:

fl(b) = (.7341)100

* Truncar
fl(b2 ) = (.7341 × .7341) × (100 × 100 ) = (.5389028)10 0
= (.5389)100

fl(c) = (.6000)10−4

fl(4) = (.4000)10+1

fl(2) = (.2000)10+1
fl(4c) = (.4000 × .6000) × (10−4 × 10+1 ) = (.2400)10−3

fl(b2 − 4c) = (.5389)100 − (.2400)10−3


0
* 100 =
= (.5389 − .0002400)10
em evidencia
(.5387)100
e truncar

³p ´
: Truncar
fl b2 − 4c = [(.5387)100 ]1/2 = (.7339618519)100 = (.7339)100

√ √
No cálculo de b2 − 4c assumimos que x = x1/2 é uma função implementada,
não sendo necessário decompô-la em funções elementares.

Para a primeira raiz:


³ p ´
fl −b − b2 − 4c = −(.7341)100 − (.7339)100
Normalizar e truncar
º 0 = −(.1468)101
= −(1.4680)|10

à √ !
−b − b2 − 4c −(.1468)101
fl = = −(.7340)100 = fl(x1 )
2 (.2000)101
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 13

Para a segunda raiz:


³ p ´
fl −b + b2 − 4c = −(.7341)100 + (.7339)100
Normalizar
º
= −(0.0002)|100 = −(.2000)10−3

à √ ! Normalizar
−b + b2 − 4c −(.2000)10−3 º −4 = −(.1000)10−3 = fl(x2 )
fl = = −(1.)|10
2 (.2000)101

Para calcular os erros cometidos em aritmética FP é necessário conhecermos os


valores exactos das raízes, com 5 dígitos na mantissa:
√ √
−b ± b2 − 4c −0.7341 ± 0.73412 − 4 × 0.00006
x1,2 = =
2 2

x1 = −(0.73402)100 ∨ x2 = −(0.81742)10−4

pelo que os erros absolutos e relativos efectivamente cometidos são:


¯ ¯
|Ex1 | = ¯−(0.7340)100 − [−(0.73402)100 ]¯ = (0.20000)10−4

¯ ¯
|Ex2 | = ¯−(0.1000)10−3 − [−(0.81742)10−4 ]¯ = (0.18258)10−4 ,

¯ ¯ ¯ ¯
¯ Ex1 ¯ ¯ (0.2000)10−4 ¯
¯
|ex1 | = ¯ ¯ = ¯ ¯ = (0.27247)10−4
x1 ¯ ¯ −(0.73402)100 ¯

¯ ¯ ¯ ¯
¯ Ex ¯ ¯ (0.18258)10−4 ¯
|ex2 | = ¯¯ 2 ¯¯ = ¯¯ ¯ = (0.22336)100 ≡ 22.3%.
x2 −(0.81742)10−4 ¯

Apesar dos erros absolutos serem praticamente iguais, verificamos que o mesmo
não acontece com o erro relativo. A segunda raiz apresenta um erro relativo superior
em quatro ordens de grandeza ao correspondente erro da primeira raiz.

b) Onde ocorreu o erro? Não aplicamos nós o mesmo processo a x1 e a x2 !? Então,


o que terá sucedido?

Sabemos que entre as operações +, −, ×, ÷, em FP existe um cálculo perigoso


que é a subtracção de valores muito próximos, já que os primeiros dígitos da
mantissa se anulam e após a normalização surgem zeros à direita que, possivelmente,
o não seriam caso se utilizasse um maior número de dígitos.

De facto, há uma subtracção de valores muito próximos quando calculamos x2 em


F P (10, 4, 2, T ),
³ p ´
fl −b + b2 − 4c = −(.7341)100 + (.7339)100 = −(0.0002)100

= −(.2000)10−3
14 SEMANA 3

Mas em aritmética com um maior número de dígitos na mantissa teríamos


³ p ´ p
fl −b + b2 − 4c = −.7341 + .73412 − 4 × 0.0006

= −(0.16348)10−3

Dividindo este número por 2 obteríamos um valor mais próximo do valor exacto.
Portanto, a origem do problema no cálculo de x2 foi o cancelamento subtrac-
tivo, que se verifica quando subtraímos números muito próximos em FP.
Como contornar o problema? Sabendo nós que o problema é a subtracção, o que
há a fazer é evitá-la. Existem duas alternativas:

Alternativa 1: Manipulando simbolicamente a equação de segundo grau genérica,


obtemos

ax2 + bx + c = a(x − x1 )(x − x2 ) = a(x2 − x1 x − x2 x + x1 x2 )


= ax2 − a(x1 + x2 )x + ax1 x2 ,

e concluímos que

c
c = ax1 x2 ⇔ x2 = .
ax1

Substituindo pelos valores conhecidos, c, a e x1 , no sistema FP dado, obtemos


µ ¶ Truncar
c (.6000)10−4 > −4 = −(.8174)10−4 = x2 .
fl = 0
= −(.817438)10
x1 −(.7340)10

Alternativa 2: Neste caso manipulamos a fórmula resolvente, tal que


2
√ √ √
b2 − 4c
−b + −b + b2 − 4c −b − b2 − 4c b2 − (b2 − 4c)
¸
x2 = = × √ = √
2 2 −b − b2 − 4c 2(−b − b2 − 4c)
2c c
= √ = .
2
−b − b − 4c x1

Notar que obtemos a mesma expressão da alternativa 1, pois a = 1. ¥

3.2 FORMATO SIMPLES IEEE 754:


Erros de representação
a) Represente o número 512.15 em formato simples IEEE 754 com truncatura.
b) Determine o erro de representação cometido na alínea anterior. Se preferir indique
um majorante adequado do erro cometido.
c) Será possível representar 10−32 e −10+42 no formato simples? Justifique.

CONCEITOS TEÓRICOS
Na norma IEEE 754 a mantissa é normalizada, ou seja, o primeiro bit é sempre 1
e diz-se implícito.
O expoente é enviesado, isto é, é dado por e − 127.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 15

O maior expoente é 11111110 e o menor 00000001, estando os expoentes 11111111


e 00000000 reservados para:
00000000 → Número desnormalizado, prevendo underflow gradual.

x = (−1)s (0.d−1 . . . d−23 )2e−126 → Limite de underflow gradual :


2−23 × 2−126 = 2−149 = 1.4 × 10−45

11111111 → Ocorrência de overflow. Neste caso podem surgir duas mensagens:

Se m = 0 → NaN
Se m 6= 0 → +INF

RESOLUÇÃO
a) Esquematicamente

(512.15)10 → F P (2, 24, 8, T )

pois segundo a norma IEEE 754, no formato simples, b = 2, p = 24 e q = 8.


Representar a parte inteira da mantissa:
512 | 2
0 256 |2
0 128 | 2
0 64 | 2
0 32 | 2
0 16 | 2
0 8 | 2
0 4 | 2
0 2 | 2
0 1 | 2
1 0

512 = (1000000000)2

Representar a parte fraccionária da mantissa:

0.15 × 2 = 0.30 −→ 0
0.30 × 2 = 0.60 −→ 0
0.60 × 2 = 1.20 −→ 1|
0.20 × 2 = 0.40 −→ 0|
0.40 × 2 = 0.80 −→ 0|
0.80 × 2 = 1.60 −→ 1|
0.60 × 2 = 1.20 −→ 1
···
16 SEMANA 3

0.15 = (0.001001 . . .)2

Representar toda a mantissa:

512.15 = (1 000 000 000.00 1001 1001 1001 . . .)2

A norma IEEE 754 requer um bit implícito de valor 1 e o expoente enviesado:

x = (−1)s 2e−127 (1.d−1 d−2 d−3 . . . d−23 )2

Assim,

: Truncar
512.15 = (1.000 000 000 00 1001 1001 1001 1001 . . .)2 × 29
= (1.000 000 000 00 1001 1001 1001)2 × 29

Representar o expoente (enviesado):

e − 127 = 9 ⇔ e = 136

136 | 2
0 68 |2
0 34 | 2
0 17 | 2
1 8 | 2
0 4 | 2
0 2 | 2
0 1 | 2
1 0

136 = (10001000)2

Temos então a seguinte alocação dos 32 bits, no formato simples IEEE 754:

0 10001000 00000000000100110011001
Sinal Expoente Mantissa
1 bit 8 bits 23 bits

b) Erro de representação cometido:


O valor exacto é

(512.15) = (1.000 000 000 00 1001 1001 1001 |1001 1001 1001 1001 . . .)2 × 29

Na norma IEEE 754 teremos o valor

(512.15)IEEE 754 = (20 + 2−12 + 2−15 + 2−16 + 2−19 + 2−20 + 2−23 ) × 29


= 512.1499634
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 17

e o erro em valor absoluto é

|E| = |512.1499634 − 512.15| = (3.7)10−5

ou, em alternativa, podemos realizar o cálculo estimando o valor truncado

|E| = (2−24 + 2−27 + 2−28 + 2−31 + 2−32 + . . .) × 29 = (3.7)10−5

O majorante do erro cometido em truncatura é†

|E|maj = bt−p = 210−24 = 2−14 = (6.10)10−5

c) Para responder à pergunta colocada temos que determinar os limites de overflow


e underflow:

Limite de overflow : (1.111 . . . 1) × 2(11111110)2 −127 = (1.111 . . . 1) × 2(254−127)


= (2 − 2−23 ) × 2127 = (3.4)10+38

Limite de underflow : (1.000 . . . 0) × 2(00000001)2 −127 = (1.000 . . . 0) × 2(1−127)


= 20 × 2−126 = (1.2)10−38

Portanto,
10−32 tem representação aproximada no formato simples IEEE 754, dado que

1.2 × 10−38 < 10−32 < (3.4)10+38 .

10+42 não tem representação aproximada no formato simples IEEE 754, originando
overflow, pois

10+42 > (3.4)10+38 .

3.3 FORMATO SIMPLES IEEE 754:


Erros de representação e Operações 0/0 e 1/0
a) Estime o erro cometido na representação do número (0.1)10 no sistema de ponto
flutuante F P (2, 24, 8, T ).
b) Determine o número limite de overflow e a unidade de arredondamento do sistema
de ponto flutuante em formato simples na norma IEEE 754. Indique a mensagem
gerada em aritmética IEEE 754 pelas operações 0/0 e 1/0.

RESOLUÇÃO

† O expoente t refere-se à representação em FP. Não esquecer que o formato IEEE 754 considerado

tem um bit implícito, o que não acontece em FP. Por essa razão o expoente é 10 e não 9.
18 SEMANA 3

Representação de (0.1)10 em F P (2, 24, 8, T ):

0.1 × 2 = 0.2 −→ 0
0.2 × 2 = 0.4 −→ 0|
0.4 × 2 = 0.8 −→ 0|
0.8 × 2 = 1.6 −→ 1|
0.6 × 2 = 1.2 −→ 1|
0.2 × 2 = 0.4 −→ 0
···

Detectamos a presença de um padrão repetitivo, ou seja,

0.1 = (0.0 0011 0011 0011 0011 0011 . . .)2


= (0.1100 1100 1100 1100 1100 1100)2 × 2−3

e pelo facto de truncar no dígito −24 obtemos um erro de representação de:

|E| = |fl(x) − x| ≈ bt−p = 2−3−24 = (7.4506)10−9

b)

7
+26 +...21 +20 −127)
Limite de overflow : (20 + 2−1 + . . . + 2−23 ) × 2(2
= (2 − u) × 2127 ≈ 2128 = (3.402823)10+38

Unidade de arredondamento para truncatura : u = 21−24 = (1.192092)10−7

A 0/0 corresponde a mensagem NaN (Not a Number) e a 1/0 corresponde a men-


sagem INF. ¥

A resposta na janela de comando do MATLAB para cada um dos casos é:


» 0/0
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans =
NaN
» 1/0
Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.)
ans =

Inf ¡
4

TÓPICOS: Condicionamento de uma Função. Condicionamento de


uma Função e Cancelamento Subtractivo. Interpolação Polinomial:
Formas de Lagrange e Newton; Algoritmo de Horner.
LEITURAS RECOMENDADAS: Capítulo 1 (pp. 23–27) e Capítulo 2 (pp. 35–
52) do livro [Pina(1995)]

4.1 CONDICIONAMENTO DE UMA FUNÇÃO


Estime o número de condição da função f (x) = tg(x2 ) na origem. A função é bem
ou mal condicionada nesse ponto? Justifique.

CONCEITOS TEÓRICOS
Número de condição da função f (x): Para analisar em aritmética de Ponto Flu-
tuante a influência do erro de representação do argumento x no cálculo de uma dada
função f (x), a Análise de Erros Directa pode não ser a mais adequada. A alternativa
é uma Análise de Erros Indirecta, a qual fornece uma indicação do factor de ampli-
ficação dos erros relativos baseada no número de condição de uma função num dado
ponto.
Considerando que x sofre um erro de representação, o argumento utilizado no
cálculo será x̃ e o erro de representação (erro absoluto) será E = x̃ − x. Do teorema
do valor médio, e dado que x e x̃ podem considerar-se suficientemente próximos e f
suficientemente regular, obtém-se a seguinte relação:

f (x̃) − f (x) f 0 (ξ) × (x̃ − x) x


f (x̃) − f (x) = f 0 (ξ) × (x̃ − x) ⇒ = ×
f (x) f (x) x

ξ ∈ {[xmin − xmax ] : xmin = min (x̃, x) e xmax = max (x̃, x)}

¯ ¯ ¯ ¯ ¯ ¯
¯ f (x̃) − f (x) ¯ ¯ f 0 (x) × x ¯ ¯ x̃ − x ¯
¯ ¯≈¯ ¯×¯ ¯
¯ f (x) ¯ ¯ f (x) ¯ ¯ x ¯

ou, por outras palavras,

ef ≈ condf (x) × ex ,
20 SEMANA 4

considerando-se geralmente no lugar de ex o valor da unidade de arredondamento u.


Diz-se que uma função é bem condicionada se condf (x) for pequeno e diz-se mal
condicionada nos restantes casos.
Para exemplificar melhor a distinção, recorre-se à seguinte comparação baseada
num cálculo em F P (2, 24, 8, A) onde a unidade de arredondamento é:

1 1−p 1
u= b = 21−24 ≈ (0.6) 10−7 .
2 2

Com este valor de erro relativo de representação, obtém-se no caso de


condf (x) = 104 um ef = 10−3 ou seja 0.1% (f (x) é bem condicionada)
e no caso de
condf (x) = 106 um ef = 10−1 ou seja 10% (f (x) é mal condicionada).
Portanto, uma função ser bem condicionada ou mal condicionada é uma caracte-
rística relativa. ¤

RESOLUÇÃO
¯ 0 ¯ ¯ ¡ ¢ ¯
¯ f (x) × x ¯ ¯¯ 2 × x × 1 + tg2 (x2 ) × x ¯¯
condf (x) = ¯¯ ¯=¯ ¯
f (x) ¯ ¯ tg(x2 ) ¯

Lembrando-nos que na vizinhança de x = 0 se tem tg(x2 ) ≈ (x)2 facilmente se


conclui que condf (x = 0) = 2. Uma via mais trabalhosa é fazer o que se segue!
Em x = 0, teremos
¯ ¯
¯ 2 × 02 × ¡1 + tg2 (02 )¢ ¯ 0
¯ ¯
condf (x = 0) = ¯ ¯=
¯ tg(02 ) ¯ 0

A indeterminação pode ser levantada aplicando sucessivamente a Regra de L’Hôpital-


Cauchy:
¯ 2 ¯
¯ 2x + 2x2 tg2 (x2 ) ¯
¯
condf (x = 0) = lim ¯ ¯
x→0 tg(x2 ) ¯
¯ ¯
¯ 4x + 4xtg2 (x2 ) + 8x3 tg(x2 ) ¡1 + tg2 (x2 )¢ ¯
¯ ¡ ¢ ¯
= lim ¯ 2 2 ¯
x→0 ¯ 2x 1 + tg (x ) ¯
4
= =2
2

A função é bem condicionada em torno da origem, pois os erros são apenas ampli-
ados para o dobro.
Por exemplo, em precisão simples — onde o majorante do erro relativo de repre-
sentação de x é de aproximadamente u = (0.6)10−7 — o erro relativo no cálculo da
função em F P será cerca de (1.2)10−7 , ou seja, aproximadamente 0.000012%. ¥

4.2 CONDICIONAMENTO DE UMA FUNÇÃO E


CANCELAMENTO SUBTRACTIVO
a) Mostre que f (x) = sin(x) − x é bem condicionada na vizinhança da origem.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 21

b) Calcule o valor de f (10−2 ) em F P (10, 3, 2, T ).


c) Determine os erros absolutos e relativos cometidos.
d) Em face do resultado da alínea c) proponha uma forma alternativa para o cálculo
de f (10−2 ).

RESOLUÇÃO
a) A aplicação directa da expressão origina uma indeterminação que se pode levan-
tar aplicando sucessivamente a regra de L’Hôpital-Cauchy, em três aplicações. Uma
alternativa é utilizar a expansão em série
¯ ³h i ´ ¯
¯ 0 ¯ ¯ ¯ ¯ 1 − x2 + O ¡x4 ¢ − 1 x ¯
¯ f (x) x ¯ ¯ (cos (x) − 1) x ¯ ¯ 2! ¯
cond (f ) = ¯¯ ¯=¯ ¯=¯ £ ¤ ¯
f (x) ¯ ¯ sin (x) − x ¯ ¯¯ x − 3! + O (x ) − x ¯¯
x3 5

¯ 3 ¯ ¯ ¯
¯ x + O ¡x5 ¢ ¯ ¯ 1 + O ¡x2 ¢ ¯ 1
¯ 2! ¯ ¯2 ¯ 2
= ¯ x3 ¯ =¯1 ¯ ≈ 1 =3
¯ + O (x5 ) ¯ ¯ 6 + O (x2 ) ¯ 6
3!

A função é bem condicionada em torno da origem pois os erros são apenas ampli-
ados para o triplo. Por exemplo, em precisão simples — onde o majorante do erro
relativo de representação de x é de u = (0.6)10−7 — o erro relativo no cálculo da
função em FP será cerca de (1.8)10−7 , ou seja, aproximadamente 0.000018%.

b) Para calcular f (x) = sin(x) − x no ponto x = 10−2 em F P (10, 3, 2, T ) tem-se:

fl(x) = fl(10−2 ) = +(0.100)10−01

Assumindo que sin(x) esteja implementada computacionalmente como função:

:×Truncar
fl(sin(x)) = sin(0.100 × 10−01 ) = 0.9999833 10−02 = +(0.999)10−02

Alinhar
fl(sin(x) − x) = 0.999 × 10−02 − 0.100 × 10−01 = (0.099 − 0.100)º × 10−01
= −0.001 × 10−01
= −(0.100)10−03

Como iremos ver de seguida, a truncatura para um número reduzido de dígitos,


seguidamente agravada por um alinhamento das mantissas, é potencialmente perigosa
para a precisão dos resultados, ocorrendo cancelamento subtractivo.

c) O valor exacto, na precisão da calculadora,† é

f (10−2 ) = sin(10−02 ) − 10−02 = −(0.16666)10−6

pelo que

E = −0.100 × 10−03 − (−0.166 × 10−06 ) = −0.000099834

† Não esquecer de efectuar os cálculos em radianos e não em graus ou grados!


22 SEMANA 4

¯ ¯
¯ E ¯
|e| = ¯¯ ¯ = 0.000099834/(0.16666 × 10−06 ) = 599.03 ≡ 59903%
f (10 ) ¯
−2

Obtemos, assim, um valor muito elevado.


Observa-se que f ser bem condicionada na vizinhança deste ponto não significa
imune ao cancelamento subtractivo, realçando-se neste exemplo que se tratam de dois
conceitos diferentes.

d) Para evitar o cancelamento subtractivo quando x é pequeno, pode utilizar-


se neste caso a expansão em série da função seno:

· ¸
x3 x5 ¡ ¢ x3
sin (x) − x = x − + − O x7 − x ≈ −
3! 5! 6

fl(sin(x) − x) = fl(−x3 /6) = −(0.100 × 10−01 )/(0.600 × 10+01 ) = 0.166 × 10−06


obtendo-se a máxima precisão em F P (10, 3, 2, T ). ¥
No caso de f (x) = ln(1 + x) com x < |u|, para evitar erros de FP usa-se o primeiro
termo da expansão ln(1 + x) = x − x2 /2 + x3 /3 − x4 /4 + . . .
Em MATLAB temos os logaritmos natural, log, de base 10, log10 e de base 2, log2,
enquanto u é obtido por eps. ¡

4.3 INTERPOLAÇÃO POLINOMIAL:


Formas de Lagrange e Newton

Determine o polinómio interpolador dos valores (0, 1); (1, 3) e (2, 2).
a) Na forma de Lagrange.
b) Na forma de Newton com centros nos nós.

RESOLUÇÃO
a) Na forma de Lagrange este polinómio obtém-se como se segue:
n é o número de pontos, ou nós, menos 1, ou seja o grau do polinómio (desde que
os pontos (xk , yk ) dados não sejam colineares).

n
X n
Y x − xi
pn (x) = Lk (x) yk com Lk =
xk − xi
k=0 i=0 i6=k

µ ¶µ ¶
x − x1 x − x2 x−1 x−2
L0 = =
x0 − x1 x0 − x2 −1 −2
x − x0 x − x2
L1 = = −x (x − 2)
x1 − x0 x1 − x2
x − x0 x − x1 x
L2 = = (x − 1)
x2 − x0 x2 − x1 2
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 23

Obtemos:

p2 (x) = L0 y0 + L1 y1 + L2 y2
(x − 1) (x − 2)
p2 (x) = − 3x (x − 2) + x (x − 1)
2

Podemos verificar rapidamente que p2 (0) = 1 sendo L1 = L2 = 0; p2 (1) = 3 com


L0 = L2 = 0 e p2 (2) = 2 com L0 = L1 = 0. Tal é ilustrado pela representação gráfica
dos polinómios na Figura 4.3.1.

3.5

p(x)
3

2.5

1.5
L0 (x)
L1 (x)
1 L2 (x)

0.5

−0.5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figura 4.3.1: Polinómio interpolador e polinómios de Lagrange

b) Na forma de Newton com centros nos nós o polinómio é obtido por:

pn (x) = y [x0 ] + y [x0 , x1 ] W0 + y [x0 , x1 , x2 ] W1 + ... + y [x0 , x1 , ..., xn ] Wn−1

com

y [xi+1 , ..., xk ] − y [xi , ..., xk−1 ]


y [xk ] = yk e y [xi , xi+1 , ..., xk−1 , xk ] =
xk − xi

onde as diferenças divididas se obtêm como indicado na tabela seguinte:

x y[·] y[·, ·] y[·, ·, ·]


0 1
2
1 3 −3/2
−1
2 2

e Wi = (x − x0 ) . . . (x − xi−1 ) são os polinómios nodais.


24 SEMANA 4

O polinómio que se obtém na forma de Newton com centros nos nós é

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

Podemos verificar rapidamente que p2 (0) = 1 sendo W0 = W1 = 0, p2 (1) = 3 com


W1 = 0 e p2 (2) = 1 + 4 − 3 = 2. Na Figura 4.3.2 observa-se a representação de p(x)
e dos polinómios nodais Wi .

3 p(x)

2
2x

1
1

0
− 23 x(x − 1)

−1

−2

−3
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figura 4.3.2: Polinómio interpolador e respectivas parcelas ¥


As diferentes representações polinomiais obtidas nas alíneas a) e b) são exacta-
mente o mesmo polinómio interpolador, pois este é único (ver Teorema 2.2.2. da
Unicidade, na p. 44 em [Pina(1995)]). ¡

4.4 INTERPOLAÇÃO POLINOMIAL:


Algoritmo de Horner
Determine o polinómio interpolador dos valores (0, -1); (1, 1); (2, 4) e (3, 2).
a) Na forma de Newton com centros nos nós.
b) Na forma de Lagrange.
c) Calcule p(4) pelo algoritmo de Horner.

ALGORITMOS
Cálculo do valor do polinómio num dado ponto x através de 3 algoritmos distintos

Algoritmo 1 - Cálculo do valor de polinómios num dado ponto x:


Ler/Introduzir valor de n, a0 , a1 , . . ., an
Ler/Introduzir valor de x
Inicializar p = a0
Ciclo de i = 1 até n
p = p + a i × xi (1 flop soma + 1 flop produto + (i − 1) flops potência)
Repetir ciclo
Escrever p
Logo o número de flops é (2 + 3 + 4 + . . . + (n + 2)) = n[(n + 2) + 2]/2 = n2 /2 + 2n.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 25

Algoritmo 2 - Técnica de Horner para cálculo do valor de um polinómio num


dado ponto x:
Ler/Introduzir valor de n, a0 , a1 , . . ., an
Ler/Introduzir valor de x
Inicializar p = an
Ciclo de i = n - 1 até 0
p = ai + p × x (1 flop soma + 1 flop produto)
Repetir ciclo
Escrever p
Logo o número de flops é 2[(n − 1) + 1] = 2n, o que torna o algoritmo 1 «impró-
prio»
em termos de métodos computacionais, porque sendo o número de operações aritmé-
ticas maior, considera-se também menos preciso.

Algoritmo 3 - Algoritmo de Horner para polinómios na forma de Newton com


centros nos nós:
Ler/Introduzir valor de n, a0 , a1 , . . ., an , c1 , . . ., cn
Ler/Introduzir valor de x
Inicializar p = an
Ciclo de i = n - 1 até 0
p = ai + p × (x - ci+1 ) (2 flops soma + 1 flop produto)
Repetir ciclo
Escrever p
Logo o número de flops é 3[(n − 1) + 1] = 3n. ¤

RESOLUÇÃO
a) O polinómio interpolador na forma de Newton determina-se recorrendo à tabela
de diferenças divididas

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


0 −1
2
1 1 1/2
3 −1
2 4 −5/2
−2
3 2

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

b) A expressão para determinar o polinómio interpolador na forma de Lagrange é

n
X n
Y x − xi
pn (x) = Lk (x) yk com Lk =
xk − xi
k=0 i=0 i6=k
26 SEMANA 4

pelo que
µ ¶µ ¶µ ¶
x−1 x−2 x−3
L0 =
−1 −2 −3

x
L1 = (x − 2)(x − 3)
2

x
L2 = − (x − 1) (x − 3)
2

x
L3 = (x − 1) (x − 2)
6

obtendo-se

(x − 1)(x − 2)(x − 3) x
p3 (x) = + (x − 2)(x − 3)
6 2

x
− 2x(x − 1)(x − 3) + (x − 1)(x − 2)
3

c) Aplica-se aqui o Algoritmo 3 ao polinómio da alínea a)

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

Logo n = 3 e x = 4. Precisamos também de C1 = 0, C2 = 1 e C3 = 2. Os centros


contam-se de 1 a n, não existindo C0 .
Seguindo o algoritmo, obtém-se sucessivamente:

p = a3 = −1
p = a2 + p(x − C3 ) = (1/2) + (−1)(4 − 2) = −(3/2)
p = a1 + p(x − C2 ) = 2 − (3/2)(4 − 1) = −(5/2)
p = a0 + p(x − C1 ) = −1 − (5/2)(4 − 0) = −11

Pelo que, o valor de p em x = 4 é p(4) = −11. ¥


5

TÓPICOS: Interpolação Polinomial: Máximos e mínimos locais, Pontos de


inflexão; Interpolação de Hermite, Nós duplos e triplos e diferença dividida confluente.
LEITURAS RECOMENDADAS: Capítulo 2 (pp. 52–73 excepto secção 2.5
e pp. 77–80) do livro [Pina(1995)]

5.1 INTERPOLAÇÃO POLINOMIAL:


Máximos e mínimos locais, Pontos de inflexão
Considere a tabela de valores de uma função y = f (x):

x 0 1 3 4
y −21 5 −15 35

a) Determine as aproximações no intervalo [0, 4] para a localização de um máximo


local, um mínimo local e um ponto de inflexão da função.
b) Obtenha uma interpolante de f (x) na forma de Newton com centros em x0 =
1/2, x1 = 1 e x2 = 3/2.
c) Se a tabela tivesse um maior número de pontos, por exemplo superior a 5, o
método da alínea a) seria recomendável? Justifique.

RESOLUÇÃO
a) As aproximações são aqui obtidas por interpolação polinomial na forma de
Newton, com centros nos nós.

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


0 −21
26
1 5 −12
−10 8
3 −15 20
50
4 35
O polinómio obtido é

p3 (x) = −21 + 26(x − 0) − 12(x − 0)(x − 1) + 8(x − 0)(x − 1)(x − 3)


= −21 + 62x − 44x2 + 8x3
28 SEMANA 5

Há que ter cuidado em colocar como coeficientes do polinómio os elementos da


primeira diagonal (a negro), na ordem indicada.
Por exemplo, se escolhêssemos os elementos da diagonal inferior 35, 50, 20, 8 obte-
ríamos o polinómio 35 + 50(x − 4) + 20(x − 3)(x − 4) + 8(x − 3)(x − 4)(x − 1) que é
uma interpolante correcta (Porquê? Que centros foram agora utilizados?).
Deste modo, se pretendermos que os centros sejam 1, 3 e 4, deixando de fora o 0,
teremos de construir uma nova tabela de diferenças divididas, tal que

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


1 5
−10
3 −15 20
50 8
4 35 12
14
0 −21

obtendo-se o polinómio:
p3 (x) = 5−10(x−1)+20(x−1)(x−3)+8(x−1)(x−3)(x−4), que após expansão na
forma de potências simples fica p3 (x) = −21 + 62x − 44x2 + 8x3 . Como esperávamos,
o polinómio é o mesmo.
Podemos verificar rapidamente que as condições de interpolação são verificadas
para o polinómio obtido, pois, por exemplo, p3 (0) = −21 e p3 (1) = 70 − 65 = 5.

40

30

20

10

−10

−20

−30
0 0.5 1 1.5 2 2.5 3 3.5 4

Figura 5.1.1: Polinómio interpolador

As primeira e segunda derivadas do polinómio interpolador são:

p03 (x) = 62 − 88x + 24x2 , p003 (x) = −88 + 48x


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 29

Donde se conclui que os pontos de estacionaridade são:



88 ± 882 − 4 × 24 × 62
p03 (x) 2
= 62 − 88x + 24x = 0 ⇔ x =
2 × 24
⇔ x1 = 0.95142 ∨ x2 = 2.7152

O ponto de inflexão é:

p003 (x) = −88 + 48x = 0 ⇔ x = 1.8333

Como p3 é de grau 3 e p003 é negativa para x < 1.8333 e positiva para x > 1.8333
então 0.95142 corresponde a um máximo local e 2.7152 a um mínimo local.

b) Na alínea a) obteve-se o polinómio na forma de Newton com centros nos nós


da tabela. Para considerar a sua representação nos nós 1/2, 1 e 3/2 há que proceder
a uma mudança de nós.

Alternativa 1 - Aplicar um algoritmo de mudança de nós.


Algoritmo de Horner para mudança de centros de um polinómio (Algoritmo 2.2.2,
p. 42 de [Pina(1995)]):†

Introduzir o centro c e retirar o centro cn

Ler/Introduzir valor de n, a0 , a1 , . . ., an , c1 , . . ., cn
0
Inicializar an = an
Ciclo de i = n - 1 até 0
0 0
ai = ai + ai+1 × (c - c i+1 ) (2 flops soma + 1 flop produto)
Repetir ciclo
0
Escrever a

Utilize-se a representação com centros na origem:

p3 (x) = −21 + 62x − 44x2 + 8x3

e introduzam-se sucessivamente os centros pretendidos. Tal é feito introduzindo estes


centros por ordem inversa à definida.

Introdução do centro c = 3/2 (n = 3)


a3 = 8 a03 = 8
a2 = −44 c3 = 0 c = 3/2 −44 + 8 × (3/2 − 0) a02 = −32
a1 = +62 c2 = 0 c = 3/2 +62 − 32 × (3/2 − 0) a01 = 14
a0 = −21 c1 = 0 c = 3/2 −21 + 14 × (3/2 − 0) a00 = 0
2
p3 (x) = 0 + 14 (x − 3/2) − 32 (x − 3/2) (x − 0) + 8 (x − 3/2) (x − 0)

†O polinómio inicial deve estar na forma de potências simples.


30 SEMANA 5

Introdução do centro c = 1 (n = 3)
a3 = 8 a03 = 8
a2 = −32 c3 = 0 c=1 −32 + 8 × (1 − 0) a02 = −24
a1 = +14 c2 = 0 c=1 +14 − 24 × (1 − 0) a01 = −10
a0 = 0 c1 = 3/2 c = 1 0 − 10 × (1 − 3/2) a00 = 5
p3 (x) = 5 − 10(x − 1) − 24(x − 1)(x − 3/2) + 8(x − 1)(x − 3/2)(x − 0)

Introdução do centro c = 1/2 (n = 3)


a3 = 8 a03 = 8
a2 = −24 c3 = 0 c = 1/2 −24 + 8 × (1/2 − 0) a02 = −20
a1 = −10 c2 = 3/2 c = 1/2 −10 − 20 × (1/2 − 3/2) a01 = 10
a0 = 5 c1 = 1 c = 1/2 5 + 10 × (1/2 − 1) a00 = 0
p3 (x) = 0 + 10(x − 1/2) − 20(x − 1/2)(x − 1) + 8(x − 1/2)(x − 1)(x − 3/2)

Alternativa 2 - Como a representação polinomial é única, podemos fazer:

p3 (x) = −21 + 62x − 44x2 + 8x3


p3 (0.5) = −21 + 62 × 0.5 − 44 × 0.25 + 8 × 0.125 = −21 + 31 − 11 + 1 = 0
p3 (1.0) = −21 + 62 − 44 + 8 = 5
p3 (1.5) = −21 + 62 × 1.5 − 44 × 1.52 + 8 × 1.53 = 0

Utilizamos, então, estes pontos para construir a nova representação, usando como
ponto auxiliar x = 3:

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


0.5 0
10
1 5 −20
−10 8
1.5 0 0
−10
3 −15

Obtemos exactamente a representação esperada devido à unicidade acima referida:


p3 (x) = 0 + 10(x − 1/2) − 20(x − 1/2)(x − 1) + 8(x − 1/2)(x − 1)(x − 3/2)
O mesmo sucede com o ponto auxiliar x = 4, pois, neste caso, a tabela de diferenças
divididas é
x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]
0.5 0
10
1 5 −20
−10 8
1.5 0 8
14
4 35
ou o ponto auxiliar x = 0:
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 31

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


0.5 0
10
1 5 −20
−10 8
1.5 0 −24
14
0 −21

d) Se a tabela tivesse um maior número de pontos, por exemplo superior a 5, o


método da alínea a) não seria recomendável porque:
- obteríamos uma equação polinomial de elevado grau cuja derivada seria morosa
de resolver.
- as oscilações são maiores em polinómios interpoladores de elevado grau.
Nesse caso seria preferível utilizar um método de diferenças finitas apropriado
seguido de interpolação. ¥

5.2 INTERPOLAÇÃO POLINOMIAL:


Interpolação de Hermite, Nós duplos e diferença
dividida confluente
a) Construa o polinómio de menor grau que interpola a função f (x) = ln(1 + x) e a
sua primeira derivada f 0 (x) nos extremos do intervalo [0, 1].
b) Majore o erro cometido.

RESOLUÇÃO
a) Interpolar com valores de f e f 0 em cada nó corresponde à interpolação de
Hermite, a qual se obtém aplicando as expressões do Exemplo 2.6.1, pp. 71–72 de
[Pina(1995)], [U0 , U1 , V0 e V1 ] com f (0) = 0, f (1) = ln(2), f 0 (0) = 1 e f 0 (1) = 1/2.
Contudo, podemos também utilizar a tabela de diferenças divididas com a técnica
de nós múltiplos. De facto, da definição de diferença dividida podemos constatar que

1 (k) f (x0 ) − f (x1 )


f [x0 , x1 , ..., xk ] = f (ξ) → f [x0 , x1 ] = ,
k! (x0 − x1 )

obtendo-se a diferença dividida confluente

lim f [x0 , x1 ] = f [x0 , x0 ] = f 0 (x0 ) .


x1 →x0

De igual modo, obtemos

f 00 (x0 )
f [x0 , x0 , x0 ] = .
2!

Podemos então construir a tabela seguinte:


32 SEMANA 5

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·]


0 0
1
0 0 ln(2) − 1
ln(2) 3/2 − 2ln(2)
1 ln(2) 1/2 − ln(2)
1/2
1 ln(2)

· ¸
3
p3 (x) = x + [ln(2) − 1] x2 + − 2 ln(2) x2 (x − 1)
2

0.7 1

0.95
0.6

0.9

0.5
0.85

0.8
0.4

0.75

0.3
0.7

0.2 0.65

0.6
0.1
0.55

0 0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

(a) Polinómio (b) Primeira derivada


Figura 5.2.1: Polinómio interpolador e respectiva primeira derivada

b) Análise de Erros de Interpolação - Quanto é que no máximo um polinómio


interpolador se afasta da respectiva função.
Pelo Teorema 2.4.1, p. 55, [Pina(1995)], sabemos que

1
en (x) ≡ f (x) − pn (x) = f (n+1) (ξ) Wn (x)
(n + 1)!

Com base neste Teorema obtemos o majorante do erro dado por (2.4.3):

1
ken k∞ ≤ kf (n+1) k∞ kWn k∞
(n + 1)!

A estimativa do erro (2.4.4)

1 1 6 3
ken k∞ ≤ kf (n+1) k∞ hn+1 = 6×1= = = 0.3750,
4 (n + 1) 4 (3 + 1) 16 8

não deve ser utilizada quando se pede um majorante, porque, tratando-se de uma
interpolação da função e da derivada, i.e., uma interpolação de Hermite, considera-se
o número de pontos apenas 2, logo n = 1, e o grau do polinómio é 2n + 1, podendo
mostrar-se que o erro é dado, neste caso, por (p. 73, [Pina(1995)]):
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 33

2 max Wn2 (x)


(Wn (x)) (2n+2) [xmin ,xmax ]
en (x) = f (ξ) ≤ kf (2n+2) k∞ .
(2n + 2)! (2n + 2)!

Concretizando para o caso presente, obtemos


h i
2 2
max (x − 0) (x − 1) °h i°
W12 (x) (2+2) x∈[0,1] ° −4 °
e (x) = kf (ξ)k∞ ≤ ° −6 (1 + x) °
(2 + 2)! 24 ∞
1
1
= 16
6= = 0.15625 × 10−1 ,
24 64

pois

f (x) = ln(1 + x)
f 0 (x) = (1 + x)−1
..
.
f (iv) = −6(1 + x)−4
° °
sendo °f (iv) ° monótona decrescente em [−1, +∞] e, logo, no intervalo [0, 1] tem má-
ximo em x = 0. ¥

5.3 INTERPOLAÇÃO POLINOMIAL:


Interpolação de Hermite, Nós triplos e diferença
dividida confluente

Construa o polinómio de menor grau que satisfaz as seguintes condições de interpo-


lação: p(1) = 2, p0 (1) = 0, p00 (1) = 2, p(2) = 2 e p(3) = 3.

RESOLUÇÃO

a) Tendo por base a definição de diferença dividida:

1 (k)
f [x0 , x1 , ..., xk ] = f (ξ) ,
k!

verificamos que

f 00 (x0 )
f [x0 , x0 , x0 ] = .
2!

Utilizando a tabela de diferenças finitas com a técnica de nós múltiplos (neste


caso, nó triplo):
34 SEMANA 5

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] y[·, ·, ·, ·, ·]


1 2
0
1 2 1
0 −1
1 2 0 5/8
0 1/4
2 2 1/2
1
3 3
obtemos a representação

5
p4 (x) = 2 + (x − 1)2 − (x − 1)3 + (x − 1)3 (x − 2) ¥
8

Como suplemento à resolução do problema, mostramos o gráfico do polinómio e


as suas primeira e segunda derivadas, obtidas analiticamente (Figuras 5.3.1 e 5.3.2 ).
Observamos que as condições de interpolação são respeitadas.

2.8

2.6

2.4

2.2

1.8
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3

Figura 5.3.1: Polinómio interpolador

14
4.5

4 12

3.5
10

8
2.5

2 6

1.5
4

1
2
0.5

0
0

−0.5 −2
1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3

(a) Primeira derivada (b) Segunda derivada


Figura 5.3.2: Derivadas analíticas do polinómio interpolador ¡
6

TÓPICOS: Interpolação Polinomial: Spline quadrático; Spline cúbico; Erros


em splines cúbicos.
LEITURAS RECOMENDADAS: Capítulo 2 (pp. 77–87) do livro [Pina(1995)]

6.1 INTERPOLAÇÃO POLINOMIAL:


Spline quadrático
Construa o spline quadrático para f (x) = sin(π/2 × x) em [0, 1] com malha uniforme
de 4 nós. Determine uma aproximação para f 0 (0.5) e f 00 (0.5). Obtenha os respectivos
erros absoluto e relativo.

CONCEITOS TEÓRICOS
Os splines correspondem a aproximações de funções por troços.† No caso de
um spline quadrático esta aproximação é obtida entre cada dois pontos consecutivos
através da expressão para cada subintervalo ou, mais prosaicamente, troço (Exp.
(2.7.3), p. 80, [Pina(1995)]):

 Mi

 Si (x) = yi−1 + mi−1 (x − xi−1 ) + 2 (x − xi−1 )2







 mi −mi−1
 Mi =
 hi
x ∈ [xi−1 , xi ], i = 1, 2, . . . , n



 hi = xi − xi−1





 ³ ´


 mi = 2 yi−1 −yi − mi−1
hi

RESOLUÇÃO
Construção do spline:
Neste caso, f é contínua e continuamente diferenciável.
Uma malha uniforme, isto é, nós igualmente espaçados, com quatro pontos no
intervalo [0, 1] terá os nós 0, 1/3, 2/3 e 1.

† Para uma definição mais rigorosa de splines ver p. 77 de [Pina(1995)].


36 SEMANA 6

Podemos calcular os momentos mi se conhecermos o valor de um deles. Em geral


m0 define-se como m0 = f 0 (x0 ). Neste problema temos m0 = f 0 (x0 ) = π/2×cos(π/2×
x0 ) = π/2 = 1.5708. ³ ´
Obtemos os restantes mi aplicando a fórmula recorrente mi = 2 yi−1hi−yi −mi−1 .

i xi−1 yi−1 xi yi mi−1 mi Mi

1
1 0 0 3 0.5 1.5708 1.4292 −0.42478

1 2
2 3 0.5 3 0.86602 1.4292 0.76695 −1.9868

2
3 3 0.86602 1 1 0.76695 0.036899 −2.1901

Então, ficamos com o spline:

−0.42478
x ∈ [0, 1/3] : S1 = 0 + 1.5708(x − 0) + (x − 0)2
2
= 1.5708x − 0.2124x2

µ ¶ µ ¶2
1 −1.9868 1
x ∈ [1/3, 2/3] : S2 = 0.5 + 1.4292 x − + x−
3 2 3
µ ¶ µ ¶2
1 1
= 0.5 + 1.4292 x − − 0.99340 x −
3 3

µ ¶ µ ¶2
2 −2.1901 2
x ∈ [2/3, 1] : S3 = 0.86602 + 0.76695 x − + x−
3 2 3
µ ¶ µ ¶2
2 2
= 0.86602 + 0.76695 x − − 1.0950 x −
3 3

A Figura mostra graficamente o spline.

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 6.1.1: Spline constituído por três troços


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 37

Determinação de uma aproximação para f 0 (x):

E 0 (0.5) = f 0 (0.5) − S 0 (0.5) = f 0 (0.5) − S20 (0.5)


= π/2 × cos(π/2 × 1/2) − 1.0981 = 0.012621

E 00 (0.5) = f 00 (0.5) − S 00 (0.5) = f 00 (0.5) − S200 (0.5)


= −(π/2)2 sin(π/2 × 1/2) + 1.9868 = 0.24208

e0 (0.5) = E 0 (0.5)/f 0 (0.5) = 0.012621/(π/2 × cos(π/2 × 1/2)) = 1.1363 × 10−2 ,

ou seja, 1.14%.

e00 (0.5) = E 00 (0.5)/f 00 (0.5) = 0.24208/(−(π/2)2 sin(π/2 × 1/2)) = −0.13875,

ou seja, 13.9%.
f (x) e S(x) são praticamente coincidentes.
Justifica-se um erro maior em S 00 (0.5) do que em S 0 (0.5), porque nos splines
quadráticos S 0 (x) é linear e S 00 (x) é constante por troços (Ver Figura 6.1.2).

1.6 2

1.4 1.5

1
1.2

0.5
1

0
0.8

−0.5

0.6
−1

0.4
−1.5

0.2
−2

0 −2.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

(a) Primeira derivada (b) Segunda derivada


Figura 6.1.2: Derivadas dos três troços do spline ¥

6.2 INTERPOLAÇÃO POLINOMIAL:


Spline cúbico
Construir o spline cúbico que interpole os pontos: (0, 0); (0.5, 0.0625); (1, 1); (1.5, 5.0625)
e (2, 16).

CONCEITOS TEÓRICOS
Os splines correspondem a aproximações de funções por troços.† No caso de um
spline cúbico esta aproximação é obtida entre cada dois pontos consecutivos através
da expressão para cada subintervalo ou, mais prosaicamente, troço (Exp. (2.7.10),
† Para uma definição mais rigorosa de splines ver p. 77 de [Pina(1995)].
38 SEMANA 6

p. 82, [Pina(1995)]):
 −x)3 3

 Si (x) = Mi−1 (xi6h + Mi (x−x i−1 )
+

 i 6h i



 ³ ´

 h2i xi −x

 yi−1 − M i−1 hi +

 6





 ³ ´

 y − M
h2i x−xi−1
 i i 6 hi
x ∈ [xi−1 , xi ], i = 1, 2, . . . , n









 hi = xi − xi−1













Mi = Si00 (xi ) = S 00 (xi )

Os Mi , designados momentos, são dados pela exp. (2.7.13), p. 82 de [Pina(1995)]


obtida impondo S 0 (xi −) = S 0 (xi +), isto é, impondo continuidade da primeira deri-
vada nos nós:

hi hi + hi+1 hi+1 yi+1 − yi yi − yi−1


Mi−1 + Mi + Mi+1 = − ,
6 3 6 hi+1 hi
com i = 1, 2, . . . , n − 1

Obtemos então n − 1 equações com n + 1 incógnitas Mi , i. e., M0 , . . . , Mn , pelo


que são necessárias duas condições suplementares. Há várias possibilidades, embora
as três a seguir descritas sejam as mais usadas:
1) Spline completo: S10 (x0 ) = y00 , Sn0 (xn ) = yn0 .

2) Spline natural: S100 (x0 ) = M0 = 0, Sn00 (xn ) = Mn = 0.


Este tipo de spline é indicado quando não conhecemos as derivadas y00 e yn0 . No en-
tanto, estas condições podem reduzir a precisão do spline.

3) Spline periódico: y0 = yn , S 0 (x0 ) = S 0 (xn ), M0 = Mn . ¤

RESOLUÇÃO
Construção do spline:
Neste caso vamos recorrer ao spline natural, n = 4 e hi = h = 0.5. Como o
espaçamento h é constante, a expressão simplifica-se e com i = 1, 2, 3, ficamos com:

M0 = 0
µ ¶
1 1 y2 − 2y1 + y0
M0 + 2M1 + M2 = 3
2 2 h2
µ ¶
1 1 y3 − 2y2 + y1
M1 + 2M2 + M3 = 3
2 2 h2
µ ¶
1 1 y4 − 2y3 + y2
M2 + 2M3 + M4 = 3
2 2 h2
M4 = 0
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 39

ou, na forma matricial,


    
1 0 0 0 0 M0 0
    
    
    £ ¤ 
 1/2 2 1/2 0 0   M1   3 (y2 − 2y1 + y0 )/h2 
    
    
    
    £ ¤ 
 0 0   M2 
   2 
 1/2 2 1/2  =  3 (y3 − 2y2 + y1 )/h 
    
    
    £ ¤ 
 0 0 1/2 2 1/2   M3   3 (y4 − 2y3 + y2 )/h2 
    
    
    
0 0 0 0 1 M4 0

Substituindo os valores de yi , i = 0, 1, 2, 3, 4 e eliminando as primeiras e últimas


linhas e colunas obtemos sucessivamente,†
   
2 1/2 0 10.5 2 0.5 0 10.5
   
   
   
 1/2 2 1/2 
37.5   0 1.875 0.5 34.875 
  
 → →
   
   
 0 1/2 2 
82.5   0 0.5 2 82.5 
  

 
2 0.5 0 10.5
 
 
 
 0 1.875 0.5 34.875 
 
→ 
 
 
 0 0 1.8667 73.2 
 

Portanto, os momentos são

M3 = 73.2/1.8667 = 39.214
M2 = (34.875 − 0.5M3 )/1.875 = 8.1429
M1 = (10.5 − 0.5M2 )/2 = 3.2143

† O leitor poderá consultar o Capítulo 12 referente a Sistemas de Equações Lineares para compre-

ender a obtenção dos valores M1 , M2 e M3 .


40 SEMANA 6

O primeiro troço do spline corresponde a x ∈ [x0 , x1 ], sendo

(x1 − x)3 (x − x0 )3
S1 (x) = M0 + M1 +
6h 6h

µ ¶
h2 x1 − x
y0 − M0 +
6 h

µ ¶
h2 x − x0
y1 − M1
6 h

(x − 0)3
= 0 + 3.2143 +
6 × 12

0.5 − x
(0 − 0) 1 +
2
µ ¶
( 12 )2 x−0
0.0625 − 3.2143 1 ,
6 2

ou seja,

S1 (x) = 1.0714x3 − 0.14286x para 0 6 x 6 0.5.

Os restantes troços determinam-se da mesma forma, obtendo-se

S2 = 1.6428x3 − 0.85714x2 + 0.2857x − 0.071428 para 0.5 6 x 6 1

S3 = 10.357x3 − 26.999x2 + 26.428x − 8.7857 para 1 6 x 6 1.5

S4 = −13.071x3 − 78.428x2 − 131.71x + 70.286 para 1.5 6 x 6 2

16

14

12

10

−2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Figura 6.2.1: Spline cúbico natural resultante


¥
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 41

6.3 INTERPOLAÇÃO POLINOMIAL:


Erros em splines cúbicos
Pretende-se interpolar por um spline cúbico numa malha uniforme no intervalo [0, 1]
a função f (x) = exp(1 + x). Determine o número de nós necessário para obter um
erro relativo em valor absoluto inferior a 10−3 .

CONCEITOS TEÓRICOS
O cálculo de erros de interpolação com splines cúbicos tem por base o Teorema
2.7.4, p. 86, [Pina(1995)]:

Teorema 2.7.4: Seja f ∈ C 4 (Ω̄) e S o spline cúbico satisfazendo qualquer das


condições suplementares referidas nesta subsecção [pp. 82–83, [Pina(1995)]]. Então,

5 ° °
° D 4 f ° h4
kf − Sk∞ 6 ∞
384
à !

3 1 ° °
°D4 f ° h3
kD(f − S)k∞ 6 + ∞
216 24
µ ¶
° 2 ° 1 1 ° °
°D (f − S)° 6 + (h/h) °D4 f °∞ h2
∞ 12 3
° 3 ° 1¡ ¢° °
°D (f − S)° 6 1 + (h/h)2 °D4 f °∞ h
∞ 2

em que

h = min hi ¤
16i6n

RESOLUÇÃO
O erro relativo em valor absoluto é tal que
¯ ¯
¯ f (x) − S(x) ¯ maj |f (x) − S(x)|
¯
|e(x)| = ¯ ¯6
f (x) ¯ min |f (x)|

sendo maj |f (x) − S(x)| ≡ kf − Sk∞ .


Pelo Teorema 2.7.4, fica
° 4 °
5 °D f ° h4 5
kexp(1 + x)k∞ h4
384 ∞
6 ² = 10−3 → 384
6 ² = 10−3
min |f (x)| min | exp(1 + x)|

5
max |exp(1
384 x∈[0,1] + x)| h4
⇔ 6 ² = 10−3
min |exp(1 + x)|
x∈[0,1]

5
exp(2)h4
⇔ 384
6 ² = 10−3 ,
exp(1)
¯ ¯
pois, ¯D4 f ¯ = exp(1 + x) é monótona crescente no intervalo [0, +∞] e, logo, tem um
mínimo em x = 0 e um máximo em x = 1 no intervalo [0, 1].
42 SEMANA 6

Assim, resulta
µ ¶1/4
10−3 exp(1)
h< 5
384 exp(2)

b−a 1−0
h < 0.40998 → h = = < 0.40998 → N > 2.43914,
N N

ou seja, 3 intervalos. Assim, são necessários pelo menos 4 nós. ¥


7

TÓPICOS: Diferenciação Numérica: Diferenças finitas de primeira e segunda


ordens; Majorante do erro; Espaçamento óptimo; Ponto de inflexão; Espaçamento
desigual.
LEITURAS RECOMENDADAS: Capítulo 3 (pp. 97–111) do livro [Pina(1995)]

7.1 DIFERENCIAÇÃO NUMÉRICA:


Diferenças finitas de primeira e segunda ordens
Considere a seguinte tabela de valores para a função y = cosh x:

x 0.1 0.2 0.3 0.4


y 1.0050 1.0201 1.0453 1.0811

Determine os valores de f 0 (0.2) e f 00 (0.2) pelas várias fórmulas de diferenças finitas


e compare os resultados com os valores exactos.

CONCEITOS TEÓRICOS
Consultar as Secções 3.2 e 3.3 de [Pina(1995)]. ¤

15

10

−5

−10

−15
−4 −3 −2 −1 0 1 2 3 4

Figura 7.1.1: Funções cosh(x) (—) e sinh(x) (- - -)


44 SEMANA 7

RESOLUÇÃO

Valores exactos:

ex + e−x ex − e−x ex + e−x


y = cosh x = , y 0 = sinh x = , y 00 = cosh x = =y
2 2 2

y 0 (0.2) = sinh(0.2) = 0.20134, y 00 (0.2) = cosh(0.2) = 1.0201

Valores por diferenças finitas:

Para o cálculo da primeira derivada, vamos usar diferenças finitas de primeira e


segunda ordens.

Diferenças finitas de 1.a ordem Dh f (x) com h = 0.1:

f (x+h)−f (x) f (0.2+0.1)−f (0.2)


Progressiva (exp. (3.2.8)) h = 0.1 = 0.2520

f (x)−f (x−h) f (0.2)−f (0.2−0.1)


Regressiva (exp. (3.2.10)) h = 0.1 = 0.1510

f (x+h)−f (x−h) f (0.2+0.1)−f (0.2−0.1)


Central (exp. (3.2.12)) 2h = 2×0.1 = 0.2015

Diferenças finitas de 2.a ordem Dh f (x) com h = 0.1:

−3f (x)+4f (x+h)−f (x+2h)


Progressiva (Exp. (3.2.16)) 2h = ... = 0.1990

3f (x)−4f (x−h)+f (x−2h)


Regressiva (Exp. (3.2.20)) 2h = ... = 0.20150

Central (Exp. (3.2.12)) Expressão e valor iguais a 1.a ordem

Para calcular a diferença finita regressiva de 2.a ordem precisamos de saber o valor
da função em x = 0, que neste caso é f (0) = cosh(0) = 1.

A Figura abaixo mostra as tangentes, isto é, polinómios de ordem um, dados pelas
diferenças finitas de primeira ordem.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 45

1.1

1.08

1.06
P

C
1.04

1.02
R

0.98

0.96

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4

Figura 7.1.2: Diferenças Finitas: (P) Progressiva, (R) regressiva e (C) central

A melhor aproximação foi obtida com a Diferença Finita Central, e com a Dife-
rença Regressiva de 2.a ordem, mas esta última requer um maior número de pontos e
inclusive um valor de f (x) que não está na tabela dada.

Para a segunda derivada, vamos considerar apenas a diferença finita central (ob-
viamente de segunda ordem).

Exp. (3.3.1) com h = 0.1:

f (x + h) − 2f (x) + f (x − h)
Dh2 f (x) =
h2
f (0.3) − 2f (0.2) + f (0.1) 1.0453 − 2 × 1.0201 + 1.005
= = = 1.0100,
0.12 0.12

ou seja, sendo o valor exacto y 00 (0.2) = 1.0201, esta aproximação dispõe de dois dígitos
correctos. ¥

7.2 DIFERENCIAÇÃO NUMÉRICA:


Majorante do erro

Obtenha o valor de f 0 (1.0) para a função f (x) = exp(−x) usando diferenças finitas
progressivas e passo h = 0.001. Determine o erro efectivamente cometido e compare-o
com o majorante teórico.

CONCEITOS TEÓRICOS

Consultar as Secções 3.2 e 3.3 de [Pina(1995)]. ¤


46 SEMANA 7

RESOLUÇÃO

Valores aproximado e exacto:

f (x + h) − f (x)
Dh f (x) =
h
f (1.001) − f (1.0) e−1.001 − e−1
= = = −0.3676956
0.001 0.001

f 0 (x) = −ex ⇒ f 0 (1.0) = −e−1.0 = −0.3678794

Erro efectivamente cometido:

E(1.0) = f 0 (1.0) − Dh f (1.0) = −0.3678794 − (−0.3676956)


= −0.0001838 = −(1.838)10−4

O majorante teórico do erro (erro devido apenas à aproximação da derivada) é


dado pela exp. (3.2.9), p. 100 de [Pina(1995)]: †

1
e01 (x) = − hf 00 (ξ) em que ξ ∈ [x0 , x1 ] = Ω̄
2

1
|e01 (x)| 6 h kf 00 (x)k∞
2

Neste problema, f 00 (x) = e−x em Ω̄ = [1.0, 1.0 + h]. Concretizando, e atendendo


a que a função é monótona, o máximo encontra-se num extremo do intervalo (ver
Figura 7.2.1), fica

Ω̄
kf 00 (x)k∞ = f 00 (1.0) = f (1.0) = 0.367879

1
|e01 (1.0)| 6 × 0.001 × 0.367879 = (1.839)10−4
2

Constatamos que, de facto, |E(1.0)| 6 |e01 (1.0)|, sendo praticamente igual.

† Utiliza-se para o erro de interpolação a letra minúscula e de forma a manter a coerência com a

nomenclatura utilizada no livro de [Pina(1995)]. Note-se no entanto que se trata de um erro absoluto
e por isso deveríamos utilizar uma letra maiúscula.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 47

4.5

3.5

2.5

1.5

0.5

0
−1.5 −1 −0.5 0 0.5 1 1.5

Figura 7.2.1: Funções exp(−x) (—) e exp(x) (- - -)


¥

7.3 DIFERENCIAÇÃO NUMÉRICA:


Espaçamento óptimo

Dada a seguinte tabela de tempos e posições:

t 0 1/3 2/3 1
y(t) 0 sen(π/6) sen(π/3) 1

a) Determine uma aproximação da velocidade e da aceleração nos 2 nós interiores


usando diferenças finitas centrais.
b) Deduza uma estimativa para o espaçamento óptimo no cálculo da aceleração
por diferenças finitas centrais.

RESOLUÇÃO
a) Antes de mais, devemos observar que h = 1/3 e que os 2 pontos interiores são
t = 1/3 e t = 2/3.
Expressão para cálculo das velocidades por diferenças finitas centrais (p. 101, exp.
(3.2.12)):

f (x + h) − f (x − h)
Dh f (x) =
2h

Expressão para cálculo das acelerações por diferenças finitas centrais (p. 103, exp.
(3.3.1)):

f (x − h) − 2f (x) + f (x + h)
Dh2 f (x) =
h2
48 SEMANA 7

Concretizando para os valores dados na tabela e recorrendo à calculadora, obte-


mos, sucessivamente:

f (1/3 + 1/3) − f (1/3 − 1/3) f (2/3) − f (0)


Dh f (1/3) = =
2 × 1/3 2 × 1/3
sen(π/3) − 0
= = 1.299
2 × 1/3
f (2/3 + 1/3) − f (2/3 − 1/3) f (1) − f (1/3)
Dh f (2/3) = =
2 × 1/3 2 × 1/3
1 − sen(π/6)
= = 0.75
2 × 1/3

f (1/3 − 1/3) − 2f (1/3) + f (1/3 + 1/3)


Dh2 f (1/3) =
(1/3)2
f (0) − 2f (1/3) + f (2/3) 0 − 2sen(π/6) + sen(π/3)
= =
(1/3)2 (1/3)2
= −1.2057
f (2/3 − 1/3) − 2f (2/3) + f (2/3 + 1/3)
Dh2 f (2/3) =
(1/3)2
f (1/3) − 2f (2/3) + f (1) sen(π/6) − 2sen(π/3) + 1
= 2
=
(1/3) (1/3)2
= −2.088457

b) Neste caso, o espaçamento h óptimo é desconhecido.

O valor exacto da segunda derivada f 00 (x) relaciona-se com o valor por diferenças
finitas centrais e o erro de aproximação, e002 (x), inerente ao cálculo por este processo,
do seguinte modo:

f (x − h) − 2f (h) + f (x + h) 1
f 00 (x) = 2
− h2 f (4) (η)
h 12
f (x − h) − 2f (h) + f (x + h)
= − e002 (x)
h2

Em representação em ponto flutuante, temos de contar ainda com os erros de


arredondamento, ẽ(x), no cálculo do valor da própria função, ou seja,

f (x) = f˜(x) + ẽ(x) e, portanto


f˜(x − h) − 2f˜(h) + f˜(x + h)
f 00 (x) =
h2
ẽ(x − h) − 2ẽ(h) + ẽ(x + h) 1
+ 2
− h2 f (4) (η)
h 12
f˜(x − h) − 2f˜(h) + f˜(x + h)
= +E
h2

onde

ẽ(x − h) − 2ẽ(h) + ẽ(x + h) 1


E= − h2 f (4) (η)
h2 12
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 49

Considerando
° °
° (4) °
°f ° 6 M4 e |ẽ(x − h) − 2ẽ(h) + ẽ(x + h)| 6 4²

onde M4 é o majorante das quartas derivadas e ² é um parâmetro que depende da


forma como a função f é calculada, ou seja, é da ordem de grandeza da unidade de
arredondamento do computador utilizado, podemos fazer

4² M 4 h2
|E| 6 2
+
h 12

O segundo membro é mínimo quando a sua primeira derivada, em ordem a h, for


nula, isto é, quando
µ ¶1/4
8² M4 h 48²
− 3
+ =0⇒h=
h 6 M4

Portanto, o valor de h deduzido será a estimativa para o espaçamento óptimo no


cálculo da aceleração por diferenças finitas centrais. ¥
Como complemento teórico à resolução deste problema, sugerimos a observação
atenta da Figura 3.5.1, na p. 108. do livro [Pina(1995)]. ¡

7.4 DIFERENCIAÇÃO NUMÉRICA:


Ponto de inflexão
Obtenha o ponto de inflexão de uma função f no intervalo [0, 1] sendo conhecidos os
seguintes valores:

x 0.00 0.25 0.50 0.75 1.00


f (x) 0.00 0.56 0.72 1.34 4.00

RESOLUÇÃO
Podemos considerar os seguintes processos para resolver o problema:
i) Determinar o polinómio interpolador e depois derivar analiticamente;
ii) Determinar as derivadas aproximadas Dh2 f (x) pela tabela e interpolar os valores
obtidos;
iii) Determinar os splines, seguido de derivação analítica.
Em qualquer dos casos obtemos uma equação polinomial a solucionar. De notar
que existem outros processos, igualmente válidos para resolver este problema.

Processo i:
Esquematicamente temos

pn (x) → p00n (x) → p00n (x) = 0

Assim, primeiro determinamos o polinómio interpolador p4 (x) por diferenças di-


vididas:
50 SEMANA 7

x y[·] y[·, ·] y[·, ·, ·] y[·, ·, ·, ·] y[·, ·, ·, ·, ·]


0.00 0.00
2.24
0.25 0.56 −3.2
0.64 9.17(3)
0.50 0.72 3.68 7.68
2.48 16.85(3)
0.75 1.34 16.32
10.64
1.00 4.00

O polinómio é então

p(x) = 2.24x − 3.2x(x − 0.25) + 9.17(3)x(x − 0.25)(x − 0.50)


+ 7.68x(x − 0.25)(x − 0.50)(x − 0.75)

que, desenvolvido e agrupado na forma de potências simples de x corresponde a

p(x) = 3.4(6)x − 4.8x2 − 2.34(6)x3 + 7.68x4 .

Derivando sucessivamente, obtemos

p0 (x) = 3.4(6) − 9.6x − 7.04x2 + 30.72x3


p00 (x) = −9.6 − 14.08x + 92.16x2

O ponto de inflexão é tal que



−b ± b2 − 4ac
p00 (x) = 0 ⇔ x = ou seja, x = 0.408054 ∨ x = −0.255276
2a

Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é
x ≈ 0.40805.

Processo ii:
Esquematicamente temos

Dh2 f (x) → p00n (x) → p00n (x) = 0

A segunda derivada é obtida por diferenças finitas centrais:

f (x − h) − 2f (x) + f (x + h)
Dh2 f (x) = tal que h = 0.25. Assim, obtemos
h2

x 0.00 0.25 0.50 0.75 1.00


y 0.00 0.56 0.72 1.34 4.00
00
y −6.4 7.36 32.64

e a correspondente tabela de diferenças divididas para determinar a interpolação de


Dh2 f (x):
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 51

x y 00 [·] y 00 [·, ·] y 00 [·, ·, ·]


0.25 −6.4
55.04
0.50 7.36 92.16
101.12
0.75 32.64

O polinómio que interpola a segunda derivada é, então

p00 (x) = −6.4 + 55.04(x − 0.25) + 92.16(x − 0.25)(x − 0.50)

que, desenvolvido e agrupado em potências de x corresponde a

p00 (x) = −8.64 − 14.08x + 92.16x2

O ponto de inflexão é tal que



−b ± b2 − 4ac
p00 (x) = 0 ⇔ x = ou seja, x = 0.391960 ∨ x = −0.239182
2a

Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é
x ≈ 0.39196.

Processo iii:
Esquematicamente temos

Mi → Si00 (x) → Si00 (x) = 0

Reparar que não necessitamos de determinar o próprio spline cúbico Si (x), bas-
tando, para o que pretendemos, calcular Si00 (x).
Dado que desconhecemos as derivadas y 0 nos extremos x0 e x4 , temos M0 = M4 =
0, isto é, impomos S100 (x0 ) = 0 = M0 e S400 (x4 ) = 0 = M4 .†
Para determinar M1 , M3 e M3 faz-se

h 2h h yi+1 − 2yi + yi−1


Mi−1 + Mi + Mi+1 = com i = 1, 2, 3
6 3 6 h

1 1 3
Mi−1 + 2Mi + Mi+1 = 2 (yi+1 − 2yi + yi−1 ) com i = 1, 2, 3
2 2 h

o que origina, na forma matricial,


      
2 1/2 0 M1 y2 − 2y1 + y0 −19.2
   3    
 1/2 2 1/2   M2  = 2  y3 − 2y2 + y1  =  22.08 
h
0 1/2 2 M3 y4 − 2y3 + y2 97.92

† Como veremos, ao impor estas igualdades, os resultados deterioram-se.


52 SEMANA 7

Resolvendo o sistema de equações, por exemplo, através do método de Gauss e


substituição descendente, obtemos
   
M1 48.6171
   
 M2  =  1.3714 
M3 −9.9428

Dado que Si00 = Mi , é de esperar que o ponto de inflexão esteja no segundo troço,
pois M2 e M3 têm sinais diferentes.
Então, como a segunda derivada do i-ésimo troço de spline é tal que (Exp. (2.7.7),
p. 81, [Pina(1995)])

xi − x x − xi−1
Si00 (x) = Mi−1 + Mi
h h

obtemos para o segundo troço, isto é, para o subintervalo [0.25, 0.5]

x2 − x x − x1
S200 (x) = M1 + M2
h h
0.50 − x x − 0.25
= −9.9428 + 1.3714
0.25 0.25

O ponto de inflexão é tal que

0.50 − x x − 0.25
S200 (x) = 0 ⇔ −9.9428 + 1.3714 = 0 ⇔ x = 0.469697.
0.25 0.25

Portanto, o ponto de inflexão no intervalo [0, 1], obtido por este processo, é
x ≈ 0.46970.

Comparação entre os três processos:


Observando as Figuras 7.4.1(a) e 7.4.1(b), que mostram o polinómio obtido pelo
processo i), é possível concluirmos que o ponto de inflexão positivo se encontra na
vizinhança de 0.4. No entanto, existe um outro ponto de inflexão negativo, perto de
0.25.

5 4.5

4 4

3.5
3

3
2

2.5
1

0
1.5

−1
1

−2
0.5

−3 0
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

(a) (b)
Figura 7.4.1: Polinómio de quarta ordem obtido pelo processo i

Os valores do ponto de inflexão obtidos pelos processos i e ii são bastante seme-


lhantes, pois os polinómios de grau 2 obtidos são quase coincidentes (Figura 7.4.2).
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 53

O resultado com o processo iii não será o melhor, dado que impusemos um va-
lor nulo às segundas derivadas nas extremidades do intervalo (Si00 (0) = 0 = M0 e
Si00 (1) = 0 = M4 ).

70

60

50

40
Processo ii
30

Processo i
20

10

Processo iii
−10

−20
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 7.4.2: Polinómios obtidos por derivação analítica (Processos i e ii) e por
spline cúbico natural (Processo iii) )

A título comparativo e para reflexão , mostramos o polinómio obtido pelo processo


i e o spline cúbico natural na Figura 7.4.3.† Porque se verificam grandes discrepâncias
nos intervalos [0, 0.25] e [0.75, 1]?

3.5

3
Processo iii

2.5

Processo i
1.5

0.5

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 7.4.3: Polinómios de quarta ordem (Processo i) e spline cúbico (Processo iii)

¥
† Relembramos que não é necessário construir o spline para calcular o ponto de inflexão.
54 SEMANA 7

7.5 DIFERENCIAÇÃO NUMÉRICA:


Espaçamento desigual

Dados 3 pontos, (x1 , y1 ), (x2 , y2 ), (x3 , y3 ), com espaçamento desigual entre as suas
abcissas, deduza uma fórmula para calcular uma aproximação da segunda derivada
num ponto qualquer do intervalo [x1 , x3 ]. Considerando os pontos (1, 1), (2, 4), (5, 5),
utilize a fórmula para calcular y 00 (2) e y 00 (3).
Em qual dos pontos, x2 ou (x1 + x3 )/2, é de esperar um erro absoluto menor?
Justifique (admita que as derivadas de y = f (x) se mantêm na mesma ordem de
grandeza em [x1 , x3 ]).

RESOLUÇÃO
Pretendemos deduzir uma fórmula para calcular Dh2 f ≈ f 00 (x) = y 00 .
De entre as várias possibilidades, a dedução da diferença finita com espaçamento
desigual é a mais simples. De notar que o recurso a splines não é o mais adequado, pois
não se conhece a função e estes requerem o conhecimento de m0 (splines quadráticos)
ou M0 e Mn (splines cúbicos). Assim,

f [x1 , x2 ] − f [x2 , x3 ]
Dh2 = p002 (x) = 2f [x1 , x2 , x3 ] = 2
x1 − x3
f (x1 )−f (x2 ) f (x2 )−f (x3 )
x1 −x2 − x2 −x3
=2
x1 − x3

Como Dh2 não depende de x, temos

1−4
− 4−5 4
f 00 (2) ≡ f 00 (3) ≈ 2 1−2 2−5 = −
1−5 3

A expressão do erro de Dh2 é

e002 = f [x1 , x2 , x3 , x, x, x] W2 (x)


+ 2f [x1 , x2 , x3 , x, x] W20 (x)
+ f [x1 , x2 , x3 , x] W200 (x)

onde, usando

f (k) (ξ)
f [x1 , x2 , x3 , . . . , xk ] =
k!

vem

f (5) (r)
e002 = W2 (x)
120
f (4) (ξ) 0
+ W2 (x)
12
f (3) (η) 00
+ W2 (x)
6
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 55

Como as derivadas mantêm a mesma ordem de grandeza, ficamos com


µ ¶
M 1
e002 6 |W2 (x)| + |W20 (x)| + 2|W200 (x)|
12 10

onde

W2 = (x − x1 )(x − x2 )(x − x3 ) = (x − 1)(x − 2)(x − 5)


W20 = (x − x2 )(x − x3 ) + (x − x1 )(x − x3 ) + (x − x1 )(x − x2 )
W200 = 2(x − x3 ) + 2(x − x2 ) + 2(x − x1 ) = 6x − 16

Compilando os valores numa tabela, obtemos

x |W2 (x)| |W20 (x)| |W200 (x)| e002


11
x = x2 = 2 0 3 4 12 M
8.4
x = (x1 + x3 )/2 = 3 4 4 2 12 M

Concluímos então que é de esperar um erro absoluto menor em x, embora em


termos de majorante a diferença encontrada não seja significativa. ¥
8

TÓPICOS: Integração Numérica: Regras de Newton-Cotes simples e com-


postas; Regra de Gauss-Legendre-Lobatto; Regras de Gauss-Legendre e do trapézio
composta. Erros absoluto e relativo. Estimativa e majorante do erro.
LEITURAS RECOMENDADAS: Capítulo 4 (pp. 115–139) do livro [Pina(1995)]

8.1 INTEGRAÇÃO NUMÉRICA:


Regras do trapézio simples e de Simpson simples
e composta
(a) Calcule, pela regra do trapézio simples e pela regra de Simpson simples, o valor
aproximado do integral
Z 3
I= exp (1 + cos x)dx.
2

(b) Idem pela regra de Simpson composta com 2 subintervalos.


(c) Estime o erro absoluto cometido na alínea anterior.

RESOLUÇÃO
(a) As regras referidas correspondem, respectivamente, às expressões (4.2.6) e
(4.2.7), p. 120, de [Pina(1995)]:

T b−a
Ih (f ) = [f (a) + f (b)]
2 · ¸
S b−a a+b
Ih (f ) = f (a) + 4f ( ) + f (b)
6 2

onde a e b são os limites de integração.


Concretizado para a função f (x) = exp (1 + cos x), com a = 2 e b = 3 obtemos

T 3−2
Ih (f ) = [f (2) + f (3)] = 1.401495675
2 · ¸
S 3−2 2+3
Ih (f ) = f (2) + 4f ( ) + f (3) = 1.280503052
6 2

(b)
58 SEMANA 8

Aplicação directa da exp. (4.5.10): A exp. para o cálculo com a regra de


Simpson composta com N subintervalos é (Exp. (4.5.10), p. 138, de [Pina(1995)]):
" N −1 N
#
h X X
Sc
Ih (f ) = f (a) + f (b) + 2 f (ai ) + 4 f (ai−1 + h/2)
6 i=1 i=1

onde h = (b − a)/N .
No caso presente, como N = 2 teremos

Sc h
Ih (f ) = [f (a) + f (b) + 2f (a1 ) + 4(f (a0 + h/2) + f (a1 + h/2))]
6

com a = 2, b = 3, h = (3 − 2)/2 = 0.5, a0 = 2 = a, a1 = a0 + h = 2.5, a2 = a1 + h = b.


Assim, vem, sucessivamente

Sc 0.5
Ih (f ) = {f (2) + f (3) + 2f (2.5) + 4[f (2 + 0.5/2) + f (2.5 + 0.5/2)]}
6
0.5
= {f (2) + f (3) + 2f (2.5) + 4[f (2.25) + f (2.75)]}
6
= 1.279922906

Resolução alternativa e justificação da exp. (4.5.10): Neste caso conside-


ramos 2 intervalos, usamos a regra de Simpson simples em cada um deles e somamos
os valores obtidos, pois sabemos que
Z b Z a1 Z b
I= f (x)dx = f (x)dx + f (x)dx
a a a1
Z a1 Z a2 Z 2.5 Z 3
= f (x)dx + f (x)dx = f (x)dx + f (x)dx.
a0 a1 2 2.5

Portanto, aplicando a regra de Simpson simples a cada um dos integrais acima,


obtemos

Sc 2.5 − 2
Ih (f ) = [f (2) + 4f (2.25) + f (2.5)]
6
3 − 2.5
+ [f (2.5) + 4f (2.75) + f (3)] = 1.279922906
6

(c) Antes de mais, há que notar que se pretende uma estimativa, pois desconhe-
cemos o valor exacto do integral.
Os erros de integração das regras de Simpson simples e composta são dados, res-
pectivamente pelas expressões (4.2.18), p. 124 e (4.5.11), p. 138, de [Pina(1995)]:

S 1 (4)
Eh (f ) = − f (ξ)(b − a)5 = I − S Ih (f ) (8.1.1)
2880
Sc b − a (4) b−a
Eh (f ) = − f (ξ)h4 = I − Sc Ih (f ) onde h= (8.1.2)
2880 N

A exp. (8.1.2) pode escrever-se da seguinte forma:


µ ¶4
Sc b − a (4) b−a 1 1 (4) 5
Eh (f ) = − f (ξ) =− f (ξ) (b − a) (8.1.3)
2880 N N 4 2880
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 59

pelo que, e como N = 2, fica

1 (4)
I − S Ih (f ) = − f (ξ)(b − a)5 = −c (8.1.4)
2880
1 1 (4) 5 1
I − Sc Ih (f ) = − 4 f (ξ) (b − a) = − c (8.1.5)
2 2880 16

Subtraindo (4) a (5), membro a membro, fica


µ ¶
S Sc 1 Sc S 1
I − Ih (f ) − I + Ih (f ) = −c + 4 c ⇔ Ih (f ) − Ih (f ) = −1 c
2 16
(8.1.6)

ou seja,
µ ¶−1 µ ¶−1
1 £Sc ¤ 15 £Sc ¤
c= −1 Ih (f ) − S Ih (f ) = − Ih (f ) − S Ih (f )
16 16
16 £Sc ¤
=− Ih (f ) − S Ih (f ) (8.1.7)
15

Substituindo c em (5), obtemos


µ ¶
1 16 £Sc ¤ Sc
Ih (f ) − S Ih (f )
I − Sc Ih (f ) = − − Ih (f ) − S Ih (f ) = (8.1.8)
16 15 15

Então, substituindo os valores calculados nas alíneas anteriores, obtemos uma


estimativa de erro absoluto cometido na alínea b) de 3.9 × 10−5 .† ¥
A Figura 8.1.1 mostra a negro a diferença entre as áreas abaixo da curva da função
f (x) = exp(1 + cos(x)) e dos polinómios de grau 1 (Figura 8.1.1(a): Regra do trapézio
simples) e grau 2 (Figura 8.1.1(b): Regra de Simpson simples). É notório o melhor
desempenho da regra de Simpson que, recordamos, é de ordem 3.

2.5 2.5

2 2

1.5 1.5

1 1

0.5 0.5

0 0
2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3

(a) Regra do trapézio simples (b) Regra de Simpson simples


Figura 8.1.1: Diferenças entre integração exacta e com regras do trapézio e Simpson
simples

† Admitimos que a estimativa de f (4) é válida em ambos os casos, sendo o máximo no intervalo

[2, 3].
60 SEMANA 8

8.2 INTEGRAÇÃO NUMÉRICA:


Regra de Gauss-Legendre e de Gauss-Legendre-
Lobatto

Pretende-se calcular o seguinte integral


Z 2
I= sinh(x)dx.
0

(a) Obtenha uma aproximação com 2 pontos de Gauss-Legendre.


(b) Idem, com 3 pontos de Gauss-Legendre-Lobatto.
(c) Calcule o erro absoluto e relativo cometido em cada caso.

RESOLUÇÃO
(a) Mudança de coordenadas (exp. (4.1.2), p. 116):

a(1 − ξ) b(1 + ξ) 0(1 − ξ) 2(1 + ξ)


T (ξ) = + = + =1+ξ
2 2 2 2
b−a 2
J(ξ) = = =1
2 2

Então,
Z 2 Z 1 Z 1
I= sinh(x)dx = sinh(1 + ξ) × 1dξ = sinh(1 + ξ)dξ.
0 −1 −1

Com 2 pontos, temos as abcissas e os pesos (Tabela 4.4.1, p. 132)

ξ1 = −0.5773502692, A1 = 1,
ξ1 = +0.5773502692, A2 = 1.

e, portanto
Z 2
I= sinh(x)dx ≈ A1 f (ξ1 ) + A2 f (ξ2 ) = 0.4353457822 + 2.317793457
0

= 2.753139239

(b) As regras de Gauss-Lobatto são tais que possuem os dois pontos dos extremos
do intervalo (p. 135, de [Pina(1995)]) e os restantes no interior:

n
X
Ih (f ) = Af (a) + Bf (b) + Ai f (xi )
i=1

Para n = 3 obtemos a regra de Simpson (ver Problema 4.12.11, p. 158, [Pina(1995)]):


· ¸
b−a a+b
Ih (f ) = f (a) + 4f ( ) + f (b) ou seja
6 2
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 61

Z 2
2−0
I= sinh(x)dx ≈ [f (0) + 4f (1) + f (2)]
0 6
1
= (0 + 4 × 1.175201194 + 3.626860408) = 2.775888395
3

(c) O valor exacto do integral é


Z 2
I= sinh(x)dx = cosh(x)|20 = 2.762195691 pelo que
0

Alínea a)

E = I(f ) − Ih (f ) = +0.009056452
E
e= = +3.2787 × 10−3
I(f )

Alínea b)

E = I(f ) − Ih (f ) = −0.013692704
E
e= = −4.9571 × 10−3
I(f )

8.3 INTEGRAÇÃO NUMÉRICA:


Regras de Gauss-Legendre e do trapézio com-
posta
Pretende-se calcular o seguinte integral
Z 2
I= ln(x)dx.
1

(a) Calcule uma aproximação pela regra de Gauss-Legendre com 2 pontos.


(b) Calcule outra aproximação pela regra do trapézio composta usando 5 valores
da função integranda e um espaçamento uniforme.
(c) Calcule um majorante do erro em cada caso. Obtenha também os erros abso-
luto e relativo cometidos em cada caso.

RESOLUÇÃO
(a) Mudança de coordenadas (exp. (4.1.2), p. 116):

a(1 − ξ) b(1 + ξ) 1(1 − ξ) 2(1 + ξ) 1


T (ξ) = + = + = (3 + ξ)
2 2 2 2 2
b−a 1
J(ξ) = =
2 2

Então,
Z 2 Z 1 · ¸ Z · ¸
1 1 1 1 1
I= ln(x)dx = ln (3 + ξ) × dξ = ln (3 + ξ) dξ.
1 −1 2 2 2 −1 2
62 SEMANA 8

Com 2 pontos, temos as abcissas e os pesos


p
ξ1 = − 1/3, A1 = 1,
p
ξ2 = + 1/3, A2 = 1.

e, portanto
Z 2
I= ln(x)dx ≈ A1 f (ξ1 ) + A2 f (ξ2 )
1
½ · ¸ · ¸¾
1 1 p 1 p
= ln (3 − 1/3) + ln (3 + 1/3) = 0.3865949441
2 2 2

(b) Considerando 5 valores da função e um espaçamento uniforme, temos

| — | — | — | — |
1.00 1.25 1.50 1.75 2.00

sendo h = 1/4 = 0.25.


Concretizando,
· ¸
ln(1.00) ln(2.00)
Ih (f ) = h + + ln (1.25) + ln (1.50) + ln (1.75)
2 2
· ¸
ln(2.00)
= 0.25 0.00 + + ln (1.25 × 1.50 × 1.75)
2
= 0.3836995094

(c)
Um majorante do erro:
Alínea a)
Atendendo às expressões (4.4.9) e (4.4.10), p. 130, de [Pina(1995)], obtemos para
a regra de Gauss-Legendre com 2 pontos (n = 2):
° °[1,2] ¯ ¯
1 2×2+1 ° (2×2) ° 1 ¯ 1 ¯¯
|E| 6 (2 − 1) °f ° = (2 − 1)2×2+1 ¯
max −6 4 ¯
4320 ∞ 4320 x∈[1,2] ¯ x
1
= (2 − 1)2×2+1 × 6 = 0.1388888889 × 10−2
4320

Alínea b)
Atendendo à expressão (4.5.9), p. 137, de [Pina(1995)], obtemos para a regra do
trapézio composta usando 5 valores da função (h = 1/4):
¯ ¯ µ ¶2
b − a 00 [1,2] 2 2−1 ¯ 1¯ 1
|E| 6 kf k∞ h = max ¯¯− 2 ¯¯ ×
12 12 x∈[1,2] x 4
2−1 1
= × 1 × 2 = 0.5208333333 × 10−2
12 4

Erros absolutos e relativo:


O valor exacto do integral é
Z 2
I= ln(x)dx = x ln(x) − x|21 = 0.386294361 pelo que
0
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 63

Alínea a)

E = I(f ) − Ih (f ) = −0.0003005831
E
e= = −0.0007781193058
I(f )

Alínea b)

E = I(f ) − Ih (f ) = +0.0025948516
E
e= = +0.006717290911
I(f )

¥
9

TÓPICOS: Integração Numérica (CONT.): Dedução e grau de regras de


integração; Regra do trapézio corrigida; Regra de Simpson adaptativa iterativa.
LEITURAS RECOMENDADAS: Capítulo 4 (pp. 135–15) do livro [Pina(1995)]

9.1 INTEGRAÇÃO NUMÉRICA:


Dedução e grau de regras de integração
Pretende-se deduzir uma regra de integração do tipo
Z +1
I(f ) = sinh(x)f (x)dx ≈ Ih (f ) = A1 [f (−1) + f (+1)] + A2 [f (−ξ) + f (+ξ)]
−1

a) Calcule os pesos
q A1 e A2 de modo a que a regra tenha o maior grau de exactidão
possível para ξ = 13 .
b) Que polinómios são integrados exactamente por esta regra?
c) Caracterize esta regra quanto à família, ao número de pontos usados, à estima-
tiva de erro e ao grau de exactidão da regra justificando a resposta.

RESOLUÇÃO
a) Como a regra é referida a um intervalo simétrico em relação à origem , todos
os integrais do tipo,:

Z +1
Im (f ) = xm dx,
−1

a que se dá o nome de momentos, com m ímpar anulam-se. Assim sendo, a regra de


integração terá de integrar exactamente os dois primeiros momentos de ordem par,
ou seja,
Z +1 Z +1
0 2
I0 (f ) = x dx = 2 e I2 (f ) = x2 dx = .
−1 −1 3

Para estabelecer as duas equações que determinam os pesos A1 e A2 , temos de


obrigar a regra a um cálculo exacto das funções f (x) = 1 e f (x) = x2 . Substituindo,
obtemos o seguinte sistema de equações
66 SEMANA 9



 2A1 + 2A2 = 2


2A1 + 32 A2 = 2
3

A solução deste sistema é A1 = 0 e A2 = 1.


b) Como os momentos ímpares são todos integrados exactamente devido à dispo-
sição simétrica dos pontos, é de esperar que pelo menos a regra integre exactamente
as funções 1, x, x2 e x3 . Ou seja, para estabelecer que o grau de exactidão da regra é
3 há que comprovar que a função x4 não é integrada exactamente. Com efeito, o valor
exacto é I4 = 25 enquanto que o valor calculado pela regra é Ih (f ) = 29 6= I(f ) = 25 .
Então, são integrados exactamente todos os polinómios de grau ≤ 3, pelo que a
regra é de grau de exactidão 3.
c) Como A1 = 0, a contribuição dos pontos
q nos extremos do intervalo é nula, pelo
que só há dois pontos interiores em ξ = ± 13 .
A regra obtida corresponde à regra de Gauss-Legendre com 2 pontos a qual tem
um grau de exactidão de 3.
A estimativa de erro é dada pelas expressões (4.4.9) e (4.4.10) em [Pina(1995)], p.
130, com n = 2 e b − a = 2.
¥

9.2 INTEGRAÇÃO NUMÉRICA:


Regra do trapézio corrigida
R1 ¡ ¢
a) Calcular o integral I(f ) = 0
f (x)dx com f (x) = ln 1 + x2 pela regra do trapézio
corrigida.
b) Obtenha um majorante para o erro cometido.
¡ ¢ ¡ ¢4
Nota: f 4 (x) = 12 6x2 − x4 − 1 / 1 + x2 .
c) Há, neste caso, alguma vantagem particular em usar esta regra?

RESOLUÇÃO
a) A expressão desta regra é

b−a (b − a)2 0
Ih (f ) = [f (a) + f (b)] + [f (a) − f 0 (b)]
2 12

Concretizando para o caso presente, isto é,

a = 0, b = 1, f (0) = 0, f (1) = 0.6931471806,

2x
f 0 (x) = , f 0 (0) = 0, f 0 (1) = 1.
1 + x2
obtemos

1−0 (1 − 0)2
Ih (f ) = [0 + 0.6931471806] + [0 − 1] = 0.263240257
2 12
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 67

b) O erro é tal que

(b − a)5 (4)
Eh (f ) 6 f (ξ)
720

sendo o majorante dado por

(b − a)5 ° °
° (4) °[0,1] (b − a)5 ¯
¯
¯
¯
|Eh (f )| 6 °f ° = max ¯f (4) ¯
720 ∞ 720 x∈[0,1]

Determinação do majorante:
Os valores de f (4) (x) nos extremos do intervalo são:

f (4) (0) = −12 e f (4) (1) = 3.

O ponto intermédio é tal que f (5) (x) = 0, sendo

12(12x − 4x3 )(1 + x2 )4 − 12(6x2 − x4 − 1) × 4(1 + x2 )3 × 2x


f (5) (x) =
(1 + x2 )8

48(3x − x3 )(1 + x2 )4 − 48(6x2 − x4 − 1) × (1 + x2 )3 × 2x


=
(1 + x2 )8

48[(3x − x3 )(1 + x2 ) − (6x2 − x4 − 1) × 2x]


=
(1 + x2 )5

48(x5 − 10x3 + 5x) 48x(x4 − 10x2 + 5)


= =
(1 + x2 )5 (1 + x2 )5

Então, vem

f (5) (x) = 0 ⇒ z 2 − 10z + 5 = 0



−b ± b2 − 4ac
⇔z= ⇔ z = 9.472135955 ∨ z = 0.5278640450
2a

ou seja,

f (5) (x) = 0 ⇔ x = ±3.077683537 ∨ x = ±0.7265425280

O ponto de estacionaridade no intervalo [0, 1] é x = 0.7265425280, sendo


f (4) (0.7265425280) = 4.158813728.
Contudo, este não é o máximo em valor absoluto da função f (4) (x) para x ∈ [0, 1],
mas sim
f (4) (0) = 12.
Portanto, o majorante do erro é

(1 − 0)5
|Eh (f )| 6 × 12 = 0.0166666
720
68 SEMANA 9

Na Figura 9.2.1 podemos ver graficamente a quarta derivada.

−2

−4

−6

−8

−10

−12
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

¡ ¢ ¡ ¢4
Figura 9.2.1: f 4 (x) = 12 6x2 − x4 − 1 / 1 + x2 para x ∈ [0, 1]

c) Neste caso, e como a função é tal que f (x) ∈ C 4 (Ω), a regra do trapézio corrigida
tem como erro (exp. (4.5.13), p. 138, de [Pina(1995)]):

b − a (4)
Eh (f ) = f (ξ)h4
720

dependendo de h à quarta e não ao quadrado como na regra do trapézio simples (exp.


(4.5.9), p. 138, de [Pina(1995)]):

b − a 00
Eh (f ) = − f (ξ)h2
12

Só não haverá vantagens quando f 0 (a) = f 0 (b), pois neste caso a regra do trapézio
corrigida coincide com a regra do trapézio simples. ¥

9.3 INTEGRAÇÃO NUMÉRICA:


Regra de Simpson adaptativa iterativa
Use uma regra de Simpson adaptativa iterativa para aproximar o integral
Z 1 √
I= x dx
0

com as tolerâncias de erro total ² = 0.0025 e ² = 0.0002.

CONCEITOS TEÓRICOS
O valor de um integral num dado troço [xi , xi+h ] de comprimento h pode ser
aproximado por, I˜h ,

| — × — |
xi xi + h/2 xi + h
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 69

h
I˜h = [f (xi ) + 4f (xi + h/2) + f (xi + h)] (9.3.1)
6

ou 2 subintervalos, [xi , xi+h/2 ] e [xi+h/2 , xi+h ], cada um com comprimento h/2, I h :

| — × — | — × — |
xi xi + h/4 xi + h/2 xi + 3h/2 xi + h

h/2
Ih = [f (xi ) + 4f (xi + h/4) + 2f (xi + h/2) + 4f (xi + 3h/4) + f (xi + h)]
6
h
= [f (xi ) + 4f (xi + h/4) + 2f (xi + h/2) + 4f (xi + 3h/4) + f (xi + h)]
12
(9.3.2)

Uma estimativa do erro para a integração num subintervalo de comprimento h é


dada por†

1 ³ ´
E = I − Ih ≈ I h − I˜h
15

Considerando que cada troço contribui para o erro total, ², com um erro proporci-
onal ao seu comprimento (ler segundo parágrafo na p. 145 e enunciado do Problema
4.12.25, p. 160, de [Pina(1995)]), teremos

1 ³ ´ h
E = I − Ih ≈ I h − I˜h 6 ² (9.3.3)
15 b−a

onde a e b são os limites de integração de todo o integral.

Como complemento a estes Conceitos Teóricos, remetemos o leitor para as páginas


144 e 145 de [Pina(1995)].

RESOLUÇÃO

A Figura 9.3.1 representa graficamente a função f (x) = x no intervalo [0, 1].
Observamos que o troço [1/2, 1] apresenta menor variação da função, pelo que o es-
colhemos como primeiro subintervalo a analisar. Se iniciássemos o cálculo pelo troço
[0, 1/2] teríamos mais trabalho. Uma implementação computacional calcularia as es-
timativas de erro para saber onde começar.

† Ver resolução do Exercício 8.1, em particular a exp. (8.1.8), p. 59.


70 SEMANA 9

0.9
Elevada variação em f (x)
0.8

Pequena variação em f (x)


0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


Figura 9.3.1: f (x) = x para x ∈ [0, 1]

• Troço [1/2, 1]:


Neste caso temos h = 1/2.

| — × — | — × — |
1/2 5/8 3/4 7/8 1

1/2 ³p p √ ´
1 subintervalo: I˜h1 [1/2,1] = 1/2 + 4 3/4 + 1
6
= 0.43093403302703

1/2 ³p p p p √ ´
2 subintervalos: I h2 [1/2,1] = 1/2 + 4 5/8 + 2 3/4 + 4 7/8 + 1
12
= 0.43096219315407

(²=0.0025) I h2 [1/2,1] − I˜h1 [1/2,1]


E[1/2,1] = = 1.877341803169230 × 10−6
15
1/2 0.0025
< × 0.0025 = = 0.00125 = 1.25 × 10−3
1−0 2

(²=0.0002) I h2 [1/2,1] − I˜h1 [1/2,1]


E[1/2,1] = = 1.877341803169230 × 10−6
15
1/2 0.0002
< × 0.0002 = = 0.0001 = 1.00 × 10−4
1−0 2

Ambos os critérios de erro são satisfeitos para este troço, pelo que passamos para
o troço [0, 1/2].

• Troço [0, 1/2]:


Também neste caso temos h = 1/2.

| — × — | — × — |
0 1/8 1/4 3/8 1/2
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 71

1/2 ³√ p p ´
1 subintervalo: I˜h1 [0,1/2] = 0 + 4 1/4 + 1/2
6
= 0.22559223176555

1/2 ³√ p p p p ´
2 subintervalos: I h2 [0,1/2] = 0 + 4 1/8 + 2 1/4 + 4 3/8 + 1/2
12
= 0.23211708693095

(²=0.0025) I h2 [0,1/2] − I˜h1 [0,1/2]


E[0,1/2] = = 4.349903443603494 × 10−4
15
1/2
< × 0.0025 = 0.00125 = 1.25 × 10−3
1−0

(²=0.0002) I h2 [0,1/2] − I˜h1 [0,1/2]


E[0,1/2] = = 4.349903443603494 × 10−4
15
1/2
> × 0.0002 = 0.0001 = 1.00 × 10−4
1−0

O critério de erro ² = 0.0025 é satisfeito para este troço, mas não o critério
² = 0.0002.
Para este último caso temos de subdividir o intervalo [0, 1/2]. Ficaremos, então,
com dois novos troços: [1/4, 1/2] e [0, 1/4].

Troço [1/4, 1/2]:


Agora temos h = 1/4.

| — × — | — × — |
1/4 5/16 3/8 7/16 1/2

1/4 ³p p p ´
1 subintervalo: I˜h1 [1/4,1/2] = 1/4 + 4 3/8 + 1/2
6
= 0.15235818849874

1/4 ³p p p p p ´
2 subintervalos: I h2 [1/4,1/2] = 1/4 + 4 5/16 + 2 3/8 + 4 7/16 + 1/2
12
= 0.15236814460714

(²=0.0002) I h2 [1/4,1/2] − I˜h1 [1/4,1/2]


E[1/4,1/2] = = 6.637405598142187 × 10−7
15
1/4
< × 0.0002 = 0.00005 = 5.00 × 10−5
1−0

Troço [0, 1/4]:


À semelhança do troço [1/4, 1/2] temos também h = 1/4.
72 SEMANA 9

| — × — | — × — |
0 1/16 1/8 3/16 1/4

1/4 ³√ p p ´
1 subintervalo: I˜h1 [0,1/4] = 0 + 4 1/8 + 1/4
6
= 0.07975889843221

1/4 ³√ p p p p ´
2 subintervalos: I h2 [0,1/4] = 0 + 4 1/16 + 2 1/8 + 4 3/16 + 1/4
12
= 0.08206578309907

(²=0.0002) I h2 [0,1/4] − I˜h1 [0,1/4]


E[0,1/4] = = 1.537923111239366 × 10−4
15
1/4
> × 0.0002 = 0.00005 = 5.00 × 10−4
1−0

Como vemos, para a tolerância ² = 0.0002, é necessário subdividir o troço [0, 1/4]
nos troços [1/8, 1/4] e [0, 1/8]. Em ambos os casos temos h = 1/8.
Troço [1/8, 1/4]:

| — × — | — × — |
1/8 5/32 3/16 7/32 1/4

1/8 ³p p p ´
1 subintervalo: I˜h1 [1/8,1/4] = 1/8 + 4 3/16 + 1/4
6
= 0.05386675412838

1/8 ³p p p p p ´
2 subintervalos: I h2 [1/8,1/4] = 1/8 + 4 5/32 + 2 3/16 + 4 7/32 + 1/4
12
= 0.05387027414426

(²=0.0002) I h2 [0,1/4] − I˜h1 [0,1/4]


E[0,1/4] = = 2.346677253961538 × 10−7
15
1/8
< × 0.0002 = 0.000025 = 2.50 × 10−5
1−0

Troço [0, 1/8]:

| — × — | — × — |
0 1/32 1/16 3/32 1/8
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 73

1/8 ³√ p p ´
1 subintervalo: I˜h1 [0,1/8] = 0 + 4 1/16 + 1/8
6
= 0.02819902897069

1/8 ³√ p p p p ´
2 subintervalos: I h2 [0,1/8] = 0 + 4 1/32 + 2 1/16 + 4 3/32 + 1/8
12
= 0.02901463586637

(²=0.0002) I h2 [0,1/8] − I˜h1 [0,1/8]


E[0,1/8] = = 5.437379304504368 × 10−5
15
1/8
> × 0.0002 = 0.000025 = 2.50 × 10−5
1−0

Verificamos que é ainda necessário subdividir este troço em dois e começamos a


suspeitar que existe algures um problema na resolução deste exercício.
A aproximação do integral é, nesta iteração e para o critério ² = 0.0002,

Ih = I h2 [1/2,1] + I h2 [1/4,1/2]
+ I h2 [1/8,1/4] + I h2 [0,1/8]
= 0.43096219315407 + 0.15236814460714
+ 0.05387027414426 + 0.02901463586637
= 0.66621524777184

O valor exacto do integral é 2/3.


Reflectindo um pouco, notamos que a estimativa do erro utilizada não tem suporte
quando a derivada envolvida não é limitada, como acontece para x = 0 neste problema.
Assim, no cálculo do integral dado existem problemas de convergência. Estes pro-
blemas também se encontram nos actuais programas comerciais como, por exemplo,
na função QUAD do MATLAB que efectua a quadratura de Simpson adaptativa.
Para verificar o que atrás foi dito, convidamos o leitor a emitir os comandos

f = @(x)sqrt(x); (f (x) = x)
a = 0; b = 1; (limites de integração)
tolerancia_do_erro = 0.0002; (² = 0.0002)
I_S_adapt = quad(f,a,b,tolerancia_do_erro); (valor numérico)
I_exacto = 2/3; (valor exacto)
E = I_exacto - I_S_adapt; (erro absoluto)

no MATLAB e a observar os resultados.


Um utilizador menos avisado pode ver-se na situação de o resultado fornecido não
cumprir a tolerância exigida, pois o MATLAB não o avisa de tal. ¥
10

TÓPICOS: Equações Não-Lineares: Métodos da Bissecção, Falsa Posição e


Secante; Método da Bissecção e zeros múltiplos; Método da Falsa Posição.
LEITURAS RECOMENDADAS: Capítulo 5 (pp. 163–178) do livro [Pina(1995)]

10.1 DETERMINAÇÃO DE ZEROS DE EQUAÇÕES


NÃO-LINEARES:
Métodos da Bissecção, Falsa Posição e Secante
Verifique que a função f (x) = x3 − 2 exp(−x) tem um zero no intervalo [0, 1]. Calcule
este zero com 3 dígitos decimais correctos utilizando os métodos: i) da Bissecção, ii)
da Falsa Posição e iii) da Secante.

RESOLUÇÃO
Pelo teorema do valor intermédio (p. 315 do livro [Ferreira(1985)]), sendo f (x)
uma função contínua com mudança de sinal no valor da função nos pontos extremos
do intervalo [0, 1], então entre estes existe um ponto z ∈ [0, 1] : f (z) = 0.
Neste caso mostra-se que:



 f (0) = −2
f (x) = x3 − 2 exp(−x) ⇒


f (1) ≈ 0.26421

ou seja,
f (0) × f (1) < 0,
i.e., a função apresenta pelo menos um zero no intervalo. Sendo f (x) monótona
crescente, só pode ter um zero.

i) Método da Bisseção (Ordem de convergência 1):


Há 3 etapas a considerar na determinação do zero:
1. Aproximação inicial ao zero.
Considere-se um intervalo [a, b] tal que sendo f (x) uma função contínua, verifica-se
obrigatoriamente f (a) × f (b) < 0.
76 SEMANA 10

2. Processo iterativo: Começar com o intervalo [a, b] = [a0 , b0 ] iterando da


seguinte forma:


 f (ak ) × f (xk+1 ) < 0 ⇒ ak+1 = ak , bk+1 = xk+1
ak + bk
xk+1 = →
2 

f (ak ) × f (xk+1 ) > 0 ⇒ ak+1 = xk+1 , bk+1 = bk

O processo consiste em subdivisão sucessiva do intervalo em dois e escolha de um


deles.
3. Critério de paragem:
Se |ak − bk | < ε, parar.
O comprimento total do último intervalo escolhido é na pior das situações a medida
de erro na aproximação ao zero. Por isso diz-se que mede a incerteza na localização
do zero.
É possível neste caso saber a priori o número de iterações (exp. (5.2.2), [Pina(1995)])
necessário para garantir que o erro entre a aproximação e o zero exacto é menor que
um determinado valor de desvio ε. Esse número de divisões pode ser calculado com
base no comprimento do intervalo na última bissecção da seguinte forma:

|a − b|
|ek | ≤ ,
2k

ou seja, expressando o critério de paragem em termos do número de iterações neces-


sárias, vem
µ ¶
|a − b| |a − b| |a − b|
|en | ≤ <ε⇒ < 2n ⇔ n log 2 > log
2n ε ε
³ ´
log |a−b|
ε
⇔n> .
log 2

Pretendemos 3 dígitos decimais exactos no intervalo [a0 , b0 ] = [0, 1] pelo que


ε = 0.001 = 10−3 . Assim, obtemos
³ ´ ³ ´
|a−b| |1−0|
log ε log 10−3
n> = = 9.97 ⇔ n > 10.
log 2 log 2

A seguinte tabela apresenta os resultados em cada iteração.

k ak f (ak ) bk f (bk ) xk+1 f (xk+1 )


0 0 −2 1 +0.2642 0.5 −1.088
1 0.5 −1.088 1 +0.2642 0.75 −0.5229
2 0.75 −0.5229 1 +0.2642 0.875 −0.1638
3 0.875 −0.1638 1 +0.2642 0.9375 +(.4076)10−1
4 0.875 −0.1638 0.9375 +(.4076)10−1 0.90625 −(.6378)10−1
−1 −1
5 0.90625 −(.6378)10 0.9375 +(.4076)10 0.921875 −(.1209)10−1
−1 −1
6 0.921875 −(.1209)10 0.9375 +(.4076)10 0.929688 +(.1419)10−1
7 0.921875 −(.1209)10−1 0.929688 +(.1419)10−1 0.925781 +(.1017)10−2
−1 −2
8 0.921875 −(.1209)10 0.925781 +(.1017)10 0.923828 −(.5544)10−2
9 0.923828 −(.5544)10−2 0.925781 +(.1017)10−2 0.924805 −(.2266)10−2
−2 −2
10 0.924805 −(.2266)10 0.925781 +(.1017)10 0.925293 −(.6252)10−3
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 77

A aproximação ao zero obtida pelo método da Bissecção é z ≈ 0.925293.

ii) Método da Falsa Posição (Ordem de convergência 1 para zeros simples):


1. Aproximação inicial ao zero.
Considere-se um intervalo [a, b], tal que sendo f (x) uma função contínua, verifica-
se obrigatoriamente f (a) × f (b) < 0.
2. Processo iterativo:
Começar com o intervalo [a, b]=[a0 , b0 ] iterando da seguinte forma:

 f (ak ) × f (xk+1 ) < 0 ⇒ ak+1 = ak , bk+1 = xk+1
ak f (bk ) − bk f (ak ) 
xk+1 =
f (bk ) − f (ak )  
f (ak ) × f (xk+1 ) > 0 ⇒ ak+1 = xk+1 , bk+1 = bk

3. Critério de paragem:
Neste caso utiliza-se um critério universal baseado na série de Taylor. Numa vizi-
nhança suficientemente pequena do zero pode considerar-se a seguinte aproximação

(xk+1 − z)
f (xk+1 ) ∼
= f (z) + f 0 (z)× .
1!

Logo,

|f (xn )| ∼
= |(xn − z)| = |en | 6 ε.
|f 0 (x)|

Sendo m um minorante de f 0 (x) no intervalo, tem-se

|f (xn )| 6 mε.

Por outro lado sendo M um majorante de f 0 (x) no intervalo, tem-se

|f (xn )| |f (xn )|
6 |en | 6
M m

M |z − xn | 6 |f (xn )| 6 m |z − xn | ,

Assim transforma-se um critério de paragem definido para as abcissas (mas cujo


z é desconhecido), num definido para as ordenadas onde se conhece f (xn ).

|f (xn )| 6 mε.

Este é o critério de paragem universal que se vai utilizar.


Neste problema a tolerância requerida é ε = 10−3 pois o intervalo onde está o zero
z ∈ [0, 1].
Cálculo do minorante m:
78 SEMANA 10

O valor de m minorante de f 0 (x) no intervalo é obtido estudando f 0 (x) no intervalo,


sendo

f (x) = x3 − 2 exp(−x),
f 0 (x) = 3x2 + 2 exp(−x) e
f 00 (x) = 6x − 2 exp(−x).

Podemos observar que no intervalo [0, 1] a derivada f 0 (x) será primeiro decrescente
(até aproximadamente x = 0.26 e depois crescente. Uma forma expedita de estimar
um minorante e um majorante para f 0 (x) consiste em considerar a pior situação:

0 + 2 exp(−1) 6 f 0 (x) = 3x2 + 2 exp(−x) 6 3 + 2

0.7358 6 f 0 (x) 6 5

Então, m = 0.7358 e o critério de paragem vem |f (xn )| 6 0.7358 × 10−3 .

Aproximação inicial: (a0 = 0, b0 = 1).


Processo iterativo:
Os valores obtidos no processo iterativo são apresentados na tabela a seguir, sendo
o critério de paragem |f (xn )| 6 0.7358 × 10−3 testado no fim de cada iteração (ver
coluna da direita na tabela que se segue).
Note-se que este critério de paragem foi deduzido na hipótese de a aproximação
estar numa vizinhança suficientemente pequena do zero.
Se o cálculo da derivada for simples de obter, pode ajustar-se em cada iteração o
valor de m através da seguinte aproximação m ≈ f 0 (x).

k ak f (ak ) bk f (bk ) xk+1 f (xk+1 )


0 0 −2 1 +0.2642 0.88329 −0.1377
1 0.88329 −0.1377 1 +0.2642 0.92327 −(0.7404)10−2
2 0.92327 −(0.7404)10−2 1 +0.2642 0.92536 −(0.3843)10−3

A aproximação do zero obtida pelo método da Falsa Posição é z = 0.925365.


O extremo bk imobilizou-se no ponto x = 1. A convergência nestas situações pode
ser acelerada utilizando a variante de Illinois ([Pina(1995)]).

¡ √ ¢
iii) Método da Secante (Ordem de convergência 1 + 5 /2 ≈ 1.618 para zeros
simples):
1. Aproximação inicial ao zero.
Sejam (x−1 , f (x−1 )), (x0 , f (x0 )) duas estimativas iniciais.
2. Processo iterativo:
Aplicar de forma sucessiva a seguinte expressão com k = 0, 1, 2, ...

f (xk ) f (xk ) − f (xk−1 )


xk+1 = xk − onde f [xk−1 , xk ] =
f [xk−1 , xk ] xk − xk−1
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 79

3. Critério de paragem:

i) |f (xn )| 6 mε,
ou
ii) |xk+1 − xk | 6 mε.

Utiliza-se ii) caso z seja um zero simples. Caso não se saiba ou não o seja, utiliza-se
o critério universal i) onde m é o minorante da primeira derivada, f 0 (x), no intervalo.
Deste modo, temos para este problema com o método da secante a mesma expres-
são |f (xn )| 6 0.7358 × 10−3 utilizada no método da Falsa Posição.

Aproximação inicial: (a0 = 0, b0 = 1).


Processo iterativo:
Os valores obtidos no processo iterativo são apresentados na tabela a seguir, sendo
o critério de paragem |f (xn )| 6 0.7358 × 10−3 testado no fim de cada iteração (ver
coluna da direita na tabela que se segue).

k xk f (xk ) xk+1 f (xk+1 )


0 1 +0.26424 0.88329 −0.1377
1 0.88329 −0.13767 0.92327 −(0.7404)10−2
2 0.92327 −(0.7404)10−2 0.92554 −(0.2236)10−3

A aproximação do zero obtida pelo método da Secante é z = 0.92554. Note-se que


pelo critério ii) seria necessário continuar o processo iterativo até k = 3. ¥

Em ambiente de MATLAB encontram-se várias aplicações (funções do MATLAB)


para a determinação de zeros de funções. No caso de funções de uma variável o al-
goritmo utilizado combina os métodos da bissecção, secante e interpolação inversa
quadrática. Uma implementação em FORTRAN deste algoritmo encontra-se em
Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathema-
tical Computations, Prentice-Hall, 1976.
A determinação de zeros de funções não-lineares com mais de uma variável está
fora dos objectivos deste livro, apenas se referindo que em MATLAB se utiliza a
função fsolve. Os algoritmos utilizados são os do método de Gauss-Newton, de
Levenberg-Marquardt e em problemas de grande dimensão recorre-se a métodos dos
mínimos quadrados.
No caso particular de polinómios utiliza-se a função root que se baseia num algo-
ritmo de cálculo de valores e vectores próprios de uma matriz associada ao problema.
Para uma leitura mais detalhada sobre este assunto recomenda-se a consulta da
respectiva parte do manual do MATLAB e as referências indicadas. ¡

10.2 EQUAÇÕES NÃO-LINEARES:


Método da Bissecção e zeros múltiplos
Indique como se comporta o método da bissecção no caso de zeros múltiplos? Consi-
dere para a resposta, os casos de zeros de multiplicidade par e multiplicidade ímpar.
80 SEMANA 10

CONCEITOS TEÓRICOS
A Figura 10.2.1 exemplifica alguns dos diferentes tipos de zeros e a tabela define
as características de zeros simples, duplos e triplos (ver definição 5.1.2 e teorema 5.1.1
em Pina[1995]).

10 100 1000

8 80 800

6 60 600

4 40 400

2 20 200

0 0 0

−2 −20 −200

−4 −40 −400

−6 −60 −600

−8 −80 −800

−10 −100 −1000


−10 −8 −6 −4 −2 0 2 4 6 8 10 −10 −8 −6 −4 −2 0 2 4 6 8 10 −10 −8 −6 −4 −2 0 2 4 6 8 10

(a) f (x) = x: Zero simples (b) f (x) = x2 : Zero duplo (c) f (x) = x3 : Zero triplo
Figura 10.2.1: Exemplos de funções com zeros de diferentes multiplicidades

Tabela 10.2.1: Características dos zeros simples, duplos e triplos.

a) b) c)

Zero simples Zero duplo Zero triplo

f (z) = 0 f (z) = f 0 (z) = 0 f (z) = f 0 (z) = f 00 (z) = 0

f 0 (z) 6= 0 f 00 (z) 6= 0 f 000 (z) 6= 0

Em termos geométricos, dizemos que ao zero simples corresponde um declive não


nulo, ao zero duplo corresponde um declive nulo, mas curvatura não nula, e ao zero
triplo um declive e uma curvatura nulos. ¤

RESOLUÇÃO
No caso de multiplicidade par, o método da bissecção não pode iterar por não ser
possível encontrar um intervalo

I = [a, b] : f (a) × f (b) < 0

.
No caso de multiplicidade ímpar o método da bissecção funciona num intervalo
com mudança de sinal nos valores da função para os extremos do intervalo. ¥

10.3 EQUAÇÕES NÃO-LINEARES:


Método da Falsa Posição
O cálculo da carga crítica de instabilidade de Euler de uma estrutura, conduziu à
seguinte equação: f (x) = x(x2 − 120) sin(x) − 24(x2 + 12) cos(x) + 288 = 0. Da
análise de casos-limite sabe-se que a solução da equação está situada no intervalo
[π, 2π]. Usando este intervalo inicial, efectue 4 iterações pelo método da falsa posição
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 81

para obter uma solução aproximada x4 . Verifique, justificando, se o erro absoluto de


x4 na aproximação ao zero nesse intervalo é inferior a 10−4 .

RESOLUÇÃO
Pelo teorema do valor intermédio, se f (x) for uma função contínua, existe um
ponto z ∈ [π, 2π] : f (z) = 0.
A função f (x) é contínua verificando-se que:


 f (π) = 812.87
f (x) = x(x2 − 120) sin(x) − 24(x2 + 12) cos(x) + 288 = 0


f (2π) ≈ −947.48

f (π) × f (2π) < 0

Método da Falsa Posição (Ordem de convergência 1 para zeros simples):


1. Aproximação inicial ao zero.
Sejam (ak , f (ak )), (bk , f (bk )) duas estimativas iniciais.
2. Processo iterativo:


 f (ak ) × f (xk+1 ) < 0 ⇒ ak+1 = ak , bk+1 = xk+1
ak f (bk ) − bk f (ak ) 
xk+1 =
f (bk ) − f (ak )  
f (ak ) × f (xk+1 ) > 0 ⇒ ak+1 = xk+1 , bk+1 = bk

A aproximação inicial é a0 = π, b0 = 2π.


Os resultados do processo iterativo até obter x4 são apresentados na seguinte
tabela.

k ak f (ak ) bk f (bk ) xk+1 f (xk+1 )

0 (.31415)10+1 +(.81287)10+3 (.62831)10+1 −(.94748)10+3 (.45922)10+1 +(.83411)10+3


+1 +3 +1 +3 +1
1 (.45922)10 +(.83411)10 (.62831)10 −(.94748)10 (.53839)10 +(.59571)10+2
2 (.53839)10+1 +(.59571)10+2 (.62831)10+1 −(.94748)10+3 (.54371)10+1 −(.51381)10+1
+1 +2 +1 +1 +1
3 (.53839)10 +(.59571)10 (.54371)10 −(.51381)10 (.54329)10 +(.23102)10−1

A aproximação obtida pelo método da Falsa Posição é x4 = 5.4329.


A verificação do erro absoluto de x4 faz-se da seguinte forma:
E = |z − x4 | < 10−4 ↔ f (x4 ) < mε
sendo o valor de m obtido no ponto x4 por:
f 0 (x) = (27x2 + 168) sin(x) + (x3 − 168x) cos(x),
f 0 (x4 ) = f 0 (5.432901) = 1221.5.
Com este valor de m, verifica-se que:
f (x4 ) = 0.023102 < 1221.5 × 10−4 = 0.12215,
confirmando-se de facto que o erro absoluto é Ex4 < 10−4 . ¥
11

TÓPICOS: Equações Não-Lineares (cont.): Natureza e localização de zeros


de polinómios (Regra de Descartes e de Budan); Método de Newton-Raphson; Método
do ponto fixo e aceleração de Aitken. Localização de zeros de polinómios.
LEITURAS RECOMENDADAS: Capítulo 5 (pp. 179–201) do livro [Pina(1995)]

11.1 EQUAÇÕES NÃO-LINEARES:


Natureza e localização de zeros de polinómios
(metodologia)

Para o polinómio p(x) = x3 + 2x2 + 10x − 20:


a) Determine a natureza dos seus zeros,
b) Obtenha a localização do zero positivo, e
c) Determine o zero positivo pelo método da secante com 3 decimais exactos.

RESOLUÇÃO
a)
Natureza dos zeros
Aplicando a regra dos sinais de Descartes I (p. 192, [Pina(1995)]) ao polinómio
p(x) = x3 + 2x2 + 10x − 20, observa-se que o número V de mudanças de sinal dos
coeficientes do polinómio permite concluir pela existência de um zero real positivo,
i.e.,


N+ 6 V = 1 

⇒ N+ = 1 (1 zero real positivo)


V − N+ é par

Aplicando agora a regra dos sinais de Descartes II (p. 192-3, [Pina(1995)]) constrói-
se o polinómio p(−x):
q(x) = p(−x) ⇔ q(x) = −x3 + 2x2 − 10x − 20 onde se observa que o número
V de mudanças de sinal dos coeficientes do polinómio p(−x) permite concluir pela
existência de nenhum zero real negativo ou dois, i.e.,
84 SEMANA 11


V = 2 ⇒ N− 6 2 

⇒ N− = 0 ∨ N− = 2 (0 ou 2 zeros reais negativos)


V − N− é par

Por fim, tratando-se de um polinómio de grau 3 pode concluir-se que o polinómio


p(x) tem duas possibilidades:
i) 1 zero real positivo e 2 zeros reais negativos, ou
ii) 1 zero real positivo e 2 zeros complexos.

b)
Localização dos zeros do polinómio
Pelo Teorema 5.9.1 (p. 193, [Pina(1995)]) os zeros do polinómio estão no interior
de um círculo centrado na origem de raio:
¯ ¯
¯ ak ¯
Ω = 1 + max ¯¯ ¯¯ .
06k6n−1 an

Com n = 3 e com os os coeficientes ak do polinómio obtém-se o valor:


¯ ¯
¯ ak ¯
Ω = 1 + max ¯¯ ¯¯ = 1 + 20 = 21.
06k62 a3

Todos os zeros do polinómio p(x) estão situados no círculo do plano complexo


centrado na origem e de raio 21.
Verificação: Pode-se testar se existe mudança de sinal no valor do polinómio entre
dois pontos do intervalo [0, 21], i.e.
(
3 2 p(0) = −20
p(x) = x + 2x + 10x − 20 ⇒
p(21) = 10333

observando-se que p(0) × p(21) < 0.


Pelo teorema do valor intermédio, se f (x) for uma função contínua, existe um
ponto z ∈ [0, 21] : f (z) = 0.
Podemos ainda proceder ao refinamento do intervalo onde se encontra o zero real
positivo utilizando a Regra de Budan (p. 195, [Pina(1995)]) num intervalo. para isso
precisamos das derivadas até à ordem n do polinómio .

p(x) = x3 + 2x2 + 10x − 20


p0 (x) = 3x2 + 4x + 10
p00 (x) = 6x + 4
p000 (x) = 6

Para um intervalo [a, b] = [0, 2] tem-se:


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 85

a=0: p(0) = −20; p0 (0) = 10; p00 (0) = 4; p000 (0) = 6


b=2: p(2) = 16; p0 (2) = 30; p00 (2) = 16; p000 (2) = 6

onde pela regra de Budan se concluí que


N 6 Va − Vb = 1 

⇒N =1 (1 zero real positivo no intervalo [0, 2]),


(Va − Vb ) − N é par

i.e., o zero real está neste intervalo.


Por fim sugere-se que aplique a regra de Budan ao intervalo [2, 21].

c)
¡ √ ¢
Método da Secante (Ordem de convergência 1 + 5 /2 ≈ 1.618 para zeros
simples):
Aproximação inicial: Sejam os pontos (x−1 , f (x−1 )), (x0 , f (x0 )) duas estimativas
iniciais.
Processo iterativo:Itera-se sucessivamente em k=0,1,2,...

f (xk ) f (xk ) − f (xk−1 )


xk+1 = xk − onde f [xk−1 , xk ] =
f [xk−1 , xk ] xk − xk−1

Critério de paragem:

|f (xn )| |f (xn )|
6 |en | 6
M m

M |z − xn | 6 |f (xn )| 6 m |z − xn |

Logo

|f (xn )| 6 mε

onde m é o minorante da primeira derivada, f 0 (x), no intervalo.


Tratando-se de um zero simples pode utilizar-se também o seguinte critério de
paragem:
|xk+1 − xk | ≤ ε
Neste problema como pretendemos 3 decimais exactas no intervalo [0, 2], então
ε = 10−3 . Para utilizar o critério universal calcula-se da seguinte forma o minorante,
m:

f (x) = p(x) = x3 + 2x2 + 10x − 20


f 0 (x) = p0 (x) = 3x2 + 4x + 10
f 00 (x) = p00 (x) = 6x + 4 > 0 no intervalo [0, 2], logo aí f 0 (x) é monótona crescente.
86 SEMANA 11

Conclui-se de

10 6 3x2 + 4x + 10 6 30,

que o minorante m ocorre em x = 0, com valor m = 10 e por isso o critério de paragem


será |f (xn )| 6 10 × 10−3 = 10−2 .

Aproximação inicial: x−1 = 0, x0 = 2


Processo iterativo: Os resultados encontram-se na seguinte tabela.

k xk f (xk ) xk+1 f (xk+1 )


0 2 16 1.11111 −5.0480
1 1.11111 −5.0480 1.32429 −0.9270
2 1.32429 −0.9270 1.37225 +0.0727
3 1.37225 +0.0727 1.36876 −0.0009

A aproximação do zero obtida pelo método da Secante é z = 1.36876, pois


|f (x4 )| 6 mε.
¥

11.2 EQUAÇÕES NÃO-LINEARES:


Método de Newton-Raphson
a) Verifique que a função f (x) = 16 exp(x)−48+27 exp(−x) tem um zero no intervalo
[0.5, 1] e outro no intervalo [−0.5, 0]. Verifique também que não existem mais zeros
(justifique).
b) Pretende-se obter uma aproximação do zero positivo da equação f (x) = 0. Par-
tindo de x0 = 1.0, efectue 3 iterações de Newton-Raphson. Verifique se o erro da
aproximação de x3 ao zero é inferior a 10−5 .

RESOLUÇÃO
a) A função

f (x) = 16 exp(x) − 48 + 27 exp(−x)

tem os seguintes limites:

lim f (x) = +∞,


x→±∞

e a sua derivada

f 0 (x) = 16 exp(x) − 27 exp(−x)

anula-se no ponto

f 0 (x) = 0 ⇔ 16 exp(x) − 27 exp(−x) = 0 ⇔ x = 0.26162.


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 87

Se x ∈] − ∞, 0.26162[, f 0 (x) < 0 ⇒ f (x) é monótona decrescente.


Se x ∈]0.26162, +∞[, f 0 (x) > 0 ⇒ f (x) é monótona crescente.

Logo, como f (0.26162) = −6.43 < 0, então existe um único zero no intervalo
] − ∞, 0.26162[ e mais outro único zero no intervalo ]0.261624, +∞[.

b)

Método de Newton-Raphson (Ordem de convergência 2 para zeros simples)

1. Aproximação inicial ao zero.

Seja x0 uma estimativa inicial do zero.

2. Processo iterativo:

Itera-se sucessivamente em k=0,1,2,... utilizando a seguinte expressão:

f (xk )
xk+1 = xk −
f 0 (xk )

Aproximação inicial: x0 = 1

Processo iterativo: São pedidas 3 iterações. Os resultados são apresentados na


seguinte tabela.

k xk f (xk ) f 0 (xk )
0 1 (.5425)101 (.33559)102
1 0.83833 (.6760)100 (.25324)102
2 0.81164 (.1726)10−1 (.24034)102
3 0.81093 (.1881)10−4

A aproximação ao zero é z = 0.81093.

Para a verificação do erro absoluto em x3 faz-se:

E = |z − x3 | < 10−5 ⇒ f (x3 ) < mε,

f 0 (x) = 16 exp(x) − 27 exp(−x),

f 0 (x3 ) = f 0 (0.81093) = (.23998)102 ,

f (x3 ) = (.1881)10−4 < (.23998)102 × 10−5 = (.23998)10−3 .

Confirma-se que Ex3 < 10−5 .

Poderia ter utilizado o critério aplicável a converg encias supralineares já que se


trata de um zero simples. ¥
88 SEMANA 11

As Figuras 11.2.1 e 11.2.2 mostram a função f (x) e a sua derivada no intervalo


[−1, 1].

35

30

25

20

15

10

−5

−10
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

Figura 11.2.1: Função f (x) = 16 exp(x) − 48 + 27 exp(−x) no intervalo [−1, 1]

40

20

−20

−40

−60

−80
−1 −0.8 −0.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 1

Figura 11.2.2: Função f 0 (x) = 16 exp(x) − 27 exp(−x) no intervalo [−1, 1]

11.3 EQUAÇÕES NÃO-LINEARES:


Método do Ponto Fixo. Localização de zeros de
polinómios e aceleração de Aitken
Determine com 5 dígitos correctos o zero positivo da equação x3 − x2 − x − 1 = 0
utilizando o método do Ponto Fixo.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 89

CONCEITOS TEÓRICOS
Teorema 5.8.1 para a convergência do método do Ponto Fixo (p. 186, [Pina(1995)]):
Se existir um intervalo I ⊂ [a, b] tal que g(I) ⊂ I e relativamente ao qual a função g é
contractiva, |g 0 (x)| < 1, então esta função possui um único ponto fixo neste intervalo,
e a sucessão {xk } gerada por xk+1 = g(xk ), com k = 0, 1, . . . converge para este ponto
fixo qualquer que seja a estimativa inicial x0 ∈ I.
Uma função g(x) contínua num intervalo I diz-se contractiva nesse intervalo se
0
|g (x)| < 1 para todo x ∈ I.
Observando a Figura 11.3.1 constatamos que o método do ponto fixo tem como
base geométrica a determinação do ponto de intersecção de g(x) com a recta y = x,
correspondendo este ponto ao zero da função f (x). Ou seja, transforma-se o problema
de localização de zeros de f (x) no problema matematicamente equivalente de deter-
minação da intersecção da g(x) com a recta y = x. A vantagem é, como veremos, em
termos de algoritmo o mais simples que se pode obter.
Dada uma aproximação inicial x0 o processo iterativo consiste simplesmente em
calcular sucessivamente para k = 0, 1, ...:

xk+1 = g (xk )

A prova de convergência pode tornar-se num problema de alguma dificuldade.


Em termos práticos, podemos limitarmo-nos a verificar se existe convergência dos
resultados numéricos para o ponto fixo da função no intervalo pretendido.
Na Figura estão exemplificados os casos: a) processo iterativo convergente e b)
processo iterativo divergente. Quer os casos convergentes, quer os divergentes, podem
ocorrer em "escada"ou por "envolvente".

(a) Convergência (b) Divergência


Figura 11.3.1: Convergência e divergência do método do ponto fixo

Aceleração de Aitken: Como escreve [Pina(1995)] na p. 188: Se g 0 (z) 6= 0,


a convergência do método iterativo de ponto fixo é linear, o que, frequentemente
significa que é lenta. No entanto, é possível acelerar a convergência por um processo
devido a Aitken.
A fórmula para proceder à aceleração de Aitken é:
2
(∆xk )
x0k = xk −
∆2 x k
90 SEMANA 11

onde se tem o operador de diferença progressiva:

∆xk = xk+1 − xk e ∆2 xk = xk+2 − 2xk+1 + xk ,

ou seja,

2
(xk+1,m − xk,m )
x0k,m+1 = xk,m − com k, m = 0, 1, ...
xk+2,m − 2xk+1,m + xk,m

O indíce m é para o cálculo com a aceleração de Aitken.

RESOLUÇÃO
Método do ponto fixo (Ordem de convergência 1):
Como é pedido para aplicar o método do ponto fixo, considere-se a equação f (x) =
0 escrita na forma x = g(x). De imediato verificamos que podemos escolher várias
funções g(x), mas como se verá nem todas são escolhas válidas para utilizar com este
método. Para cada função escolhida verificam-se as condições de convergência.
Escolha-se a seguinte função.
Função 1: g(x) = x3 − x2 − 1 = x(3x − x)
Para se garantir que o processo é convergente teremos desde já que verificar se
0
|g (x)| < 1 num intervalo I que contenha a raiz e depois se g(I) ⊂ I .
Convergência:
O processo não é convergente em todos os pontos, pois
g 0 (x) = 3x2 − 2x = 3x(x − 2)
dependendo do intervalo escolhido poderá em módulo ser maior do que 1.
Neste problema não nos é indicado um intervalo que contenha o zero, pelo que
temos de determinar uma localização dos zeros desta função polinomial.
Localização dos zeros
Pelo Teorema 5.9.1 (p. 193, [Pina(1995)]):
¯ ¯
¯ ak ¯
Ω=1+ max ¯ ¯
06k6n−1 ¯ an ¯

Com n = 3, fica
¯ ¯
¯ ak ¯
Ω = 1 + max ¯¯ ¯¯ = 1 + 1 = 2
06k62 a3

Todos os zeros estão situados no círculo do plano complexo de raio 2.


Verificação:
(
3 2 p(0) = −1
p(x) = x − x − x − 1 ⇒
p(2) = 1

p(0) × p(2) < 0


Pelo teorema do valor intermédio (p. 315 do livro [Ferreira(1985)]), se f (x) for
uma função contínua, existe um ponto z ∈ [0, 2] : f (z) = 0.
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 91

Um refinamento do intervalo onde se encontra o zero real positivo pode ser deter-
minado pela Regra de Budan (p. 195, [Pina(1995)]):

p(x) = x3 − x2 − x − 1,
p0 (x) = 3x2 − 2x − 1,
p00 (x) = 6x − 2,
p000 (x) = 6,

onde para verificar se o zero está no intervalo [0, 1] basta fazer:

a=0: p(0) = −1; p0 (0) = −1; p00 (0) = −2; p000 (0) = 6
b=1: p(1) = −2; p0 (1) = 0; p00 (1) = 4; p000 (1) = 6


N 6 Va − Vb = 0 

⇒N =0 (0 zeros reais positivo no intervalo [0, 1])


(Va − Vb ) − N é par

O zero real positivo está localizado no intervalo [1, 2], pois não existe nenhum em
[0, 1], como verificámos.
Ora, para x > 1 facilmente se conclui que g 0 (x) = 3x(x − 2) em módulo é maior
do que 1. Temos por isso que escolher outra função que esta não possui as condições
de convergência.
Função 2:
Como f (x) = x3 − x2 − x − 1, pode obter-se para g(x) a seguinte função:

g(x) = (x2 + x + 1)1/3

Como anteriormente referido, para se garantir que o processo é convergente tem


que se assegurar que |g 0 (x)| < 1 num intervalo que contenha a raiz.
Ora

1 2x + 1
g 0 (x) = ,
3 (x2 + x + 1)2/3

não sendo óbvio que no intervalo [1, 2] se tenha |g 0 (x)| < 1. Para isso vai-se estudar
a segunda derivada:

1 2(x2 + x + 1)2/3 − (2x + 1)2 2/3(x2 + x + 1)−1/3


g 00 (x) = ,
3 (x2 + x + 1)4/3

onde, multiplicando a segunda parcela do numerador por

(x2 + x + 1)
,
(x2 + x + 1)

permite obter a expressão:


92 SEMANA 11

2
2 2/3 1 (2x+1)
00 2 (x + x + 1) [1 − 3 (x2 +x+1) ]
g (x) = ,
3 (x2 + x + 1)2/3

−2 (x2 + x − 2)
g 00 (x) = .
9 (x2 + x + 1)5/3

Pode agora concluir-se que para x ∈ [1, 2] se terá g 0 (x) monotona decrescente. É
agora suficiente conhecer os valores da derivada nos extremos deste intervalo.

0

 g (1) ≈ 0.48075 < 1
1 2x + 1
g 0 (x) = ⇒
3 (x + x + 1)2/3
2 

g 0 (2) ≈ 0.45546 < 1

Falta verificar que g(I) ⊂ I. Como no intervalo x ∈ [1, 2] se verifica

1 2x + 1
g 0 (x) = ,
3 (x2 + x + 1)2/3

então a função g(x) é monotona. Basta agora verificar o que se passa nos extremos
do intervalo.
(
2 1/3 g(1) ≈ 1.4422 ∈ [1, 2]
g(x) = (x + x + 1) ⇒
g(2) ≈ 1.9129 ∈ [1, 2]

Como [g(1), g(2)] ⊃⊂ [1, 2] estão assim garantidas as condições de convergência


para o ponto fixo no caso da segunda função.

0.5

−0.5

−1

−1.5

−2
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2

Figura 11.3.2: Polinómio x3 − x2 − x − 1 no intervalo [1, 2]


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 93

2 0.5

0.48
1.9

0.46

1.8 0.44

0.42
1.7

0.4

1.6 0.38

0.36
1.5

0.34

1.4 0.32
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2

(a) Função g(x) (b) Função g 0 (x)


Figura 11.3.3: Funções g(x) e g 0 (x) no intervalo [1, 2]

A aproximação inicial pode agora ser escolhida como x0 = 1.5.


O processo iterativo consiste simplesmente em calcular sucessivamente para k=0,1,...:

xk+1 = g (xk )

O critério de paragem de acordo com o enunciado do Problema 5.13.32 em [Pina(1995)]


(sugere-se a resolução desse problema), para o método do ponto fixo prevê a seguinte
condição:

M
|ek | 6 |xk − xk−1 | onde |g 0 (x)| 6 M < 1 em I = [a, b],
1−M

onde, se M 6 1/2 então

|ek | 6 |xk − xk−1 | ⇒ |xk − xk−1 | < ε

Como são pedidos 5 dígitos correctos e tendo em conta que o zero está localizado
entre 1 e 10 (em ordem de grandeza) então
ε = 10−5 × 101 = 10−4 ou seja quatro decimais correctos.

k xk |xk − xk−1 |
0 1.5
1 1.6809 (.18)100
2 1.7658 (.85)10−1
3 1.8053 (.39)10−1
4 1.8236 (.18)10−1
5 1.8320 (.84)10−2
6 1.8359 (.39)10−2
7 1.8377 (.18)10−2
8 1.8385 (.83)10−3
9 1.8389 (.38)10−3
10 1.8391 (.18)10−3
11 1.8392 (.80)10−4

Verifica-se que |x11 − x10 | = (.80)10−4 < 10−4 , pelo que a aproximação do zero
obtida pelo método do ponto fixo é z = (.18392)101 .
94 SEMANA 11

Aceleração de Aitken: Depois de calculados x0 , x1 e x2 podemos usar a acele-


ração de Aitken, ou seja

k x0k |x0k − x0k−1 |


0 1.8409
1 1.8396 (.12)10−2
2 1.8393 (.28)10−3
3 1.8392 (.90)10−4
4 1.8393 (.40)10−4
5 1.8392 (.50)10−4

Verifica-se que |x05 − x04 | = (.50)10−4 < 10−4 , pelo que a aproximação do zero
obtida pelo método do ponto fixo é z = (.18392)101 .
Bastava pararmos em k = 3, dado que |x03 − x02 | = (.90)10−4 . ¥
7

SISTEMAS DE EQUAÇÕES
LINEARES

TÓPICOS
Método de Gauss
Métodos de Doolittle e Crout. Factorização LU
Escolha de pivot total ou parcial
Escolha de pivot com patamar
Cálculo do determinante
Método de Choleski, factorização LDLT
algoritmo de Thomas
Inversa e número de condição

7.1 Método de Gauss


Resolva pelo método de Gauss o seguinte sistema de equações lineares:

x1 + x2 + x3 = 4
x1 − x2 + 2x3 = 4
2x1 + x2 + x3 = 5

algoritmo
algoritmo para o método de condensação de Gauss:
Transformar por n-1 etapas sucessivas a matriz A numa matriz triangular supe-
rior.
Ciclo de k = 1, 2, ..., n-1 (coluna a condensar)
Ciclo de i = k+1, 2, ..., n (linhas abaixo do pivot akk )
(k) (k)
mik = aik /akk (o pivot akk não pode ser nulo)
Ciclo de j = k+1, 2, ..., n (colunas à direita do pivot akk )
(k+1) (k) (k)
aij = aij − mik × akj
Continuar ciclo em j
(k+1) (k) (k)
bi = bi − mik × bk
110 7. SISTEMAS DE EQUAÇÕES LINEARES

Continuar ciclo em i

Continuar ciclo em k

algoritmo para as substituições ascendentes:

xn = bn /ann

Ciclo de i = n-1,...,1 (linhas)

sum=0

Ciclo de k = i+1, ..., n

sum = sum + aik × xk

Continuar ciclo em k

xi = (bi − sum) /aii

Continuar ciclo em i 

RESOLUÇÃO

Sistema de equações Ax = b escrito na forma matricial:


    
1 1 1 x1 4
 1 −1 2   x2  =  4 
    

2 1 1 x3 5

Condensação:

Procedendo sucessivamente, obtemos

k = 1:

 
1 1 1 4
 1 −1 2 4 
 

2 1 1 5

(1)
a21 1
m21 = (1)
= =1
a11 1

(2) (1) (1)


a22 = a22 − m21 a12 = −1 − 1 × 1 = −2

(2) (1) (1)


a23 = a23 − m21 a13 = 2 − 1 × 1 = 1

(2) (1) (1)


b2 = b2 − m21 b1 = 4 − 1 × 4 = 0
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 111

(1)
a31 2
m31 = (1)
= =2
a11 1

(2) (1) (1)


a32 = a32 − m31 a12 = 1 − 2 × 1 = −1

(2) (1) (1)


a33 = a33 − m31 a13 = 1 − 2 × 1 = −1

(2) (1) (1)


b3 = b3 − m31 b1 = 5 − 2 × 4 = −3

k = 2:

 
1 1 1 4
 0 −2 1 0 
 

0 −1 1 −3

(2)
a32 −1 1
m32 = (2)
= =
a22 −2 2

(3) (2) (2) 1 3


a33 = a33 − m32 a23 = −1 − ×1=−
2 2

(3) (2) (2) 1


b3 = b3 − m32 b2 = −3 − × 0 = −3
2

 
1 1 14
 0 −2 10 
 

0 0 −3/2 −3

O sistema fica então,


 
  
1 1 1 x1 4
 0 −2 1  x2  =  0 
    

0 0 −3/2 x3 −3

Por substituição ascendente obtém-se:

3
− x3 = −3 ⇔ x3 = 2,
2
−2x2 + x3 = 0 ⇔ −2x2 + 2 = 0 ⇔ x2 = 1,
x1 + x2 + x3 = 4 ⇔ x1 + 1 + 2 = 4 = 0 ⇔ x1 = 1.
112 7. SISTEMAS DE EQUAÇÕES LINEARES

A solução do sistema de equações é:


   
x1 1
 x2  =  1 
   

x3 2

7.2 Métodos de Doolittle e Crout. Factorização LU


Repita o exercício 7.1 empregando agora em aritmética exacta o método da factor-
ização triangular de Doolittle e de Crout, ou seja, resolva pelos métodos referidos o
seguinte sistema de equações lineares:

x1 + x2 + x3 = 4
x1 − x2 + 2x3 = 4
2x1 + x2 + x3 = 5

CONCEITOS TEÓRICOS
Método de Doolittle: Factorizar LU com L de diagonal unitária.
Através do produto de matrizes — aqui ilustrado apenas para o caso de dimensão
n = 3 — podem obter-se os coeficientes Lij e Uij com
    
1 0 0 U11 U12 U13 A11 A12 A13
 L21 1 0  0 U22 U23  =  A21 A22 A23  ,
    

L31 L32 1 0 0 U33 A31 A32 A33

de onde se obtém sucessivamente U11 , L21 e L31 ; U12 , U22 e L32 ; U13 , U23 e U33 ,
originando as seguintes expressões:

i−1
X
uij = aij − lim umj ; j≥i
m=1

j−1
!
X
lij = aij − lim umj /ujj ; j<i
m=1

À sucessão de Uij e Lij indicada antes destas expressões, chamaremos varrimento


por colunas (em Doolittle).

Método de Crout: Factorizar LU com U de diagonal unitária.


Através do produto de matrizes — aqui ilustrado apenas para o caso de dimensão
n = 3 — podem obter-se os coeficientes Lij e Uij com
    
L11 0 0 1 U12 U13 A11 A12 A13
 L21 L22 0  0 1 U23  =  A21 A22 A23  ,
    

L31 L32 L33 0 0 1 A31 A32 A33


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 113

de onde se obtém sucessivamente L11 , U12 e U13 ; L21 , L22 e U32 ; L31 , L32 e U33 ,
originando as seguintes expressões:

j−1
X
lij = aij − lim umj ; j6i
m=1

i−1
!
X
uij = aij − lim umj /lii , j>i
m=1

À sucessão de Lij e Uij indicada antes destas expressões, chamaremos varrimento


por linhas (em Crout).

RESOLUÇÃO

O sistema de equações Ax = b é escrito na forma matricial:


    
1 1 1 x1 4
 1 −1 2   x2  =  4  .
    

2 1 1 x3 5

Aplicando o método de Doolittle com o seu varrimento por colunas j = 1, 2, ..., n


tem-se:

Coluna 1 (j = 1):

ui1 = ai1 , i61


⇒ u11 = a11 ⇒ u11 = 1

li1 = ai1 /u11 , i>1


⇒ li1 = ai1 ⇒ l21 = a21 = 1; l31 = a31 = 2

Coluna 2 (j = 2):

i−1
X
ui2 = ai2 − lim um2 , i62
m=1

⇒ u12 = a12 = 1; u22 = a22 − (l21 u12 ) = −1 − (1 × 1) = −2

1
!
X
li2 = ai2 − lim um2 /u22 , i>2
m=1
1−2×1 1
⇒ l32 = (a32 − l31 u12 )/u22 = =
−2 2
114 7. SISTEMAS DE EQUAÇÕES LINEARES

Coluna 3 (j = 3):

i−1
X
ui3 = ai3 − lim um3 , i63
m=1

⇒ u13 = a13 = 1; u23 = a23 − (l21 u13 ) = 2 − (1 × 1) = 1;


 
1 3
u33 = a33 − (l31 u13 + l32 u23 ) = 1 − 2 × 1 + × 1 = −
2 2

   
1 0 0 1 1 1
L= 1 1 0  e U= 0 −2 1
   

2 1/2 1 0 0 −3/2

Após a factorização de A = LU fazemos a substituição Ux = y e resolve-se


primeiro para y, i.e.:

 Ly = b

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

Ux = y

Faz-se a determinação de y resolvendo Ly = b:


      
1 0 0 y1 4 4
 1 1 0   y2  =  4  ⇔ y =  0 
      

2 1/2 1 y3 5 −3

seguido da determinação de x resolvendo Ux = y:


     
1 1 1 x1 4 1
 0 −2 1  x2  =  0  ⇔ x =  1 
      

0 0 −3/2 x3 −3 2

O vector x é a solução do sistema de equações.

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

Aplicando o método de Crout com o seu varrimento por linhas i = 1, 2, ..., n tem-
se:

Linha 1 (i = 1):

l1j = a1j , j61


⇒ l11 = a11 ⇒ l11 = 1

u1j = a1j /l11 , j>1


⇒ u1j = a1j ⇒ u12 = a12 = 1; u13 = a13 = 1
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 115

Linha 2 (i = 2):

j−1
X
l2j = a2j − l2m umj , j62
m=1

⇒ l21 = a21 = 1; l22 = a22 − (l21 u12 ) = −1 − (1 × 1) = −2

u2j = (a2j − l21 u1j ) /l22 , j>2


2−1×1 1
⇒ u23 = (a23 − l21 u13 )/l22 = =−
−2 2

Linha 3 (i = 3):

j−1
X
l3j = a3j − l3m umj , j63
m=1

⇒ l31 = a31 = 2; l32 = a32 − (l31 u12 ) = 1 − (2 × 1) = −1;


  
1 3
l33 = a33 − (l31 u32 + l32 u23 ) = 1 − 2 × 1 + (−1) × − =−
2 2

   
1 0 0 1 1 1
L= 1 −2 0 e U= 0 1 −1/2 
   

2 −1 −3/2 0 0 1

À semelhança do que efectuamos anteriormente, após a factorização de A = LU


fazemos

 Ly = b

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

Ux = y

A determinação de y faz-se resolvendo Ly = b:


      
1 0 0 y1 4 4
 1 −2 0   y2  =  4  ⇔ y =  0 
      

2 −1 −3/2 y3 5 2

E, por fim, a determinação de x faz-se resolvendo Ux = y:


      
1 1 1 x1 4 1
 0 1 −1/2   x2  =  0  ⇔ x =  1 
      

0 0 1 x3 2 2

O vector x é a solução do sistema de equações, que em aritmética exacta tem de


ser o mesmo que o obtido pelo método de Doolittle.


116 7. SISTEMAS DE EQUAÇÕES LINEARES

7.3 Método de Gauss com escolha de pivot total


Considere os sistemas de equações cujas matrizes A e segundos membros b são dados
por:
aij = (i − j)2 /(i + j), i, j = 1, . . . , n; bk = 1/k, k = 1, . . . , n
Resolva o sistema em aritmética exacta para n = 3 pelo método de Gauss com
escolha de pivot total.
CONCEITOS TEÓRICOS E S
Método de Gauss com escolha de pivot total: Consiste em transformar por etapas
sucessivas a matriz A numa matriz triangular superior. De acordo com a técnica
(k)
de pivot total, são candidatos a pivot todos os elementos aij , i, j = k, . . . , n, ou
(k)
seja, todos os elementos abaixo e à direita de akk incluindo o próprio, i.e., todos os
elementos da parte activa de A(k) , determinando-se dois índices pk e qk tais que

(k)
apk qk = max |aij |
k6i,j6n

Se pk 6= k trocam-se as linhas k e pk e se qk 6= k efectua-se também uma troca


das colunas k e qk .
Trocadas as linhas e colunas no início da etapa, quando da escolha de pivot, a
factorização prossegue como no método sem escolha de pivot.
Os índices de troca de colunas devem ser memorizados, já que correspondem a
troca de variáveis.
Algoritmo para o método de condensação de Gauss com pivot total:
Ciclo de k = 1, 2, ..., n-1 (coluna a condensar)
(k)
Escolher pivot (total) tal que akk = maxk6i,j6n aij
Trocar as linhas e colunas necessárias
Registar as trocas de coluna efectuadas
Ciclo de i = k+1, 2, ..., n (linhas abaixo do pivot akk )
(k) (k)
mik = aik /akk (o pivot akk não pode ser nulo)
Ciclo de j = k+1, 2, ..., n (colunas à direita do pivot akk )
(k+1) (k) (k)
aij = aij − mik akj
Continuar ciclo em j
(k+1) (k) (k)
bi = bi − mik bk
Continuar ciclo em i
Continuar ciclo em k
Caso se tenha procedido a alguma troca de colunas repôr os índices de acordo com
as trocas realizadas. 

RESOLUÇÃO
Com n = 3 temos o seguinte sistema de equações Ax = b escrito na forma
matricial:
    
0 1/3 1 x1 1
 1/3 0 1/5   x2  =  1/2 
    

1 1/5 0 x3 1/3
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 117

Este sistema só pode ser resolvido com troca de linhas ou colunas, já que os valores
zero na posição de pivot não são admissíveis.
Permutação e condensação:
Procedendo sucessivamente, obtemos
k = 1:
 
0 1/3 1 1
 1/3 0 1/5 1/2 
 

1 1/5 0 1/3
x1 x2 x3

O elemento pivot está na posição (3,1). É preciso trocar a 1.a linha com a 3.a
linha (troca equações mas não afecta a ordem das variáveis):
 
1 1/5 0 1/3
 1/3 0 1/5 1/2 
 

0 1/3 1 1
x1 x2 x3

A transformação elementar de Gauss é


 
1 0 0
M1 =  −1/3 1 0 
 

0 0 1

(1)
a21 1/3 1
m21 = (1)
= =
a11 1 3

(2) (1) (1) 1 1 1


a22 = a22 − m21 a12 = 0 − × =−
3 5 15

(2) (1) (1) 1 1 1


a23 = a23 − m21 a13 = − ×0=
5 3 5

(2) (1) (1) 1 1 1 7


b2 = b2 − m21 b1 = − × =
2 3 3 18

k = 2:

 
1 1/5 0 1/3
 0 −1/15 1/5 7/18 
 

0 1/3 1 1
x1 x2 x3
118 7. SISTEMAS DE EQUAÇÕES LINEARES

A escolha de pivot na submatriz activa requer trocar a 2.a linha com a 3.a linha
seguida de troca da 2.a coluna com a 3.a coluna:
 
1 0 1/5 1/3
 0 1 1/3 1 
 

0 1/5 −1/15 7/18


x1 x3 x2

A condensação prossegue da mesma forma. A transformação elementar de Gauss


é
 
1 0 0
M2 =  0 1 0 
 

0 −1/5 1

(2)
a32 1/5 1
m32 = (2)
= =
a22 1 5

(3) (2) (2) 1 1 1 2


a33 = a33 − m32 a23 = − − × =−
15 5 3 15

(3) (2) (2) 7 1 17


b3 = b3 − m32 b2 = − ×1=
18 5 90

obtendo-se:
 
1 0 1/3
1/5
 0 1 1/3
1 
 

0 0 −2/15 17/90
x1 x3 x2

O sistema fica então com a ordem das variáveis trocada em resultado da troca de
colunas anteriormente efectuada:
    
1 0 1/5 x1 1/3
 0 1   x3  =  1 
1/3
    

0 0 −2/15 x2 17/90

Por substituição ascendente obtém-se:

2 17 17
− x2 = ⇔ x2 = −
15 90 12
 
1 1 17 53
x3 + x2 = 1 ⇔ x3 + × − x2 = 0 ⇔ x3 =
3 3 12 36
 
1 1 1 17 1 37
x1 + x2 = ⇔ x1 + × − = ⇔ x1 =
5 3 5 12 3 60
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 119

A solução do sistema de equações é dada por:


   
x1 +37/60
 x2  =  −17/12 
   

x3 +53/36

7.4 Método de Gauss com escolha de pivot parcial e


com patamar
a) Resolver pelo método de Gauss com pivot parcial o seguinte sistema de equações
lineares

    
0 3 2 x1 8
 −1 3/2 1   x2  =  1 
    

2 −1 0 x3 4

b) Investigue, usando o método de Gauss com pivot parcial com patamar (τ = 0.4),
se a matriz é singular ou não singular.
c) Calcule o determinante e indique a dimensão do espaço de nulidade da matriz
do sistema.

CONCEITOS TEÓRICOS
Método de Gauss com pivot parcial: Transformar por etapas sucessivas a matriz
A numa matriz triangular superior. De acordo com a técnica de pivot parcial, são
(k)
candidatos a pivot os elementos aik , i = k, . . . , n da matriz A(k) , escolhendo-se
aquele que tiver maior valor absoluto na parte activa da respectiva coluna. Mais
precisamente, seja pk um índice tal que

(k) (k)
apk k = max aik
k6i6n

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


Trocadas as linhas, a aplicação do algoritmo prossegue normalmente, não havendo
necessidade de registar as trocas para o cálculo das incógnitas já que trocas de linha
não afectam a ordem das incógnitas.
Pivot com patamar: Com este método pretendemos evitar algumas trocas quando
o elemento na diagonal é suficientemente grande.

(k) (k)
akk = τ max aik
k+16i6n

onde τ ∈ [0, 1]. Se τ = 0 não haverá escolha de pivot e se τ = 1 temos a técnica de


pivot parcial.
algoritmo para o método de condensação de Gauss com pivot parcial:
Ciclo de k = 1, 2, ..., n-1 (coluna a condensar)
(k)
Escolher pivot (parcial) tal que akk = maxk6i6n aij
120 7. SISTEMAS DE EQUAÇÕES LINEARES

Trocar as linhas e colunas necessárias


Ciclo de i = k+1, 2, ..., n (linhas abaixo do pivot akk )
(k) (k)
mik = aik /akk (o pivot akk não pode ser nulo)
Ciclo de j = k+1, 2, ..., n (colunas à direita do pivot akk )
(k+1) (k) (k)
aij = aij − mik akj
Continuar ciclo em j
(k+1) (k) (k)
bi = bi − mik bk
Continuar ciclo em i
Continuar ciclo em k

RESOLUÇÃO
a)
Permutação e condensação:
Procedendo sucessivamente, obtemos
k = 1:
 
0 3 2 8
 −1 3/2 1 1 
 

2 −1 0 4
x1 x2 x3

 
2 −1 0 4
 −1 3/2 1 1 
 

0 3 2 8
x1 x2 x3

A transformação elementar de Gauss é


 
1 0 0
M1 =  1/2 1 0 
 

0 0 1

 
2 −1 0 4
 0 1 1 3 
 

0 3 2 8
x1 x2 x3

 
2 −1 0 4
 0 3 2 8 
 

0 1 1 3
x1 x2 x3
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 121

A transformação elementar de Gauss é


 
1 00
M2 =  0 10 
 

0 −1/3 1

 
2 −1 0 4
 0 3 2 8 
 

0 0 1/3 1/3
x1 x2 x3

A solução do sistema de equações é dada por:


   
x1 1
 x2  =  2 
   

x3 3

b)

 
0 3 2 8
 −1 3/2 1 1 
 

2 −1 0 4
x1 x2 x3

Como neste caso o element a11 é zero, imediatamente se verifica que, independen-
temente do valor de τ , a troca terá de ser feita.

 
2 −1 0 4
 −1 3/2 1 1 
 

0 3 2 8
x1 x2 x3

A transformação elementar de Gauss é


 
1 0 0
M1 =  1/2 1 0 
 

0 0 1

 
2 −1 0 4
 0 1 1 3 
 

0 3 2 8
x1 x2 x3
122 7. SISTEMAS DE EQUAÇÕES LINEARES

Como τ = 0.4, vem τ × a32 = 0.4 × 3 = 1.2 e a22 = 1 < 1.2, é necessário efectuar
a troca.
A solução é idêntica à do pivot parcial.
Se τ = 0.1 teríamos τ × a32 = 0.1 × 3 = 0.3 e nesse caso poupava-se a troca.
A matriz é não singular, porque conseguimos realizar a condensação até ao fim.
c)
O determinante é 2. Notemos que o número de trocas de linhas é par.
O espaço de nulidade é de dimensão zero, porque a matriz é não singular.


7.5 Método de Gauss e cálculo do determinante

a) Calcule, em aritmética exacta, a factorização LU da matriz (com L unitária)


 
1 0 9 0
 
 0 9 0 0 
A=
 5

 0 0 5 

0 1 0 3

b) Calcule o determinante de A a partir da factorização obtida.

CONCEITOS TEÓRICOS
Na resolução que se segue, da aplicação do método de condensação de Gauss
obtém-se a factorização LU, onde L é uma matriz de diagonal unitária cujos restantes
elementos não nulos são os coeficientes mij , sendo U a matriz resultante da conden-
sação (sem escolha de pivot).
Definição: O determinante de uma matriz A de dimensão n × n é obtido após a
condensação de Gauss sem escolha de pivot fazendo:
n
Y n
Y n
Y
det A = det(LU) = det L × det U = lii × uii = 1 × uii
i=1 i=1 i=1

pois L é uma matriz de diagonal unitária, isto é, lii = 1 para i = 1, . . . , n. 


RESOLUÇÃO
a) Condensação de Gauss:
Procedendo sucessivamente, obtemos
k = 1:
 
1 0 9 0
 
 0 9 0 0 
 
 5 0 0 5 
 
0 1 0 3
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 123

(1)
a31 5
m31 = (1)
= =5
a11 1

(2) (1) (1)


a32 = a32 − m31 a12 = 0 − 5 × 0 = 0

(2) (1) (1)


a33 = a33 − m31 a13 = 0 − 5 × 9 = −45

(2) (1) (1)


a34 = a34 − m31 a14 = 5 − 5 × 0 = 5

k = 2:
 
1 0 9
0
 
 0 9 0
0 
 
 0 0 −45 5 
 
0 1 0 3

(2)
a42 1
m42 = (2)
=
a22 9

(3) (2) (2) 1


a43 = a43 − m42 a23 = 0 − ×0=0
9

(3) (2) (2) 1


a44 = a44 − m42 a24 = 3 − ×0=3
9

Obteve-se desta forma a factorização LU da matriz (com L unitária) dada pelas


matrizes:
 
1 0 9 0
 
 0 9 0 0 
U=  
 0 0 −45 5 

0 0 0 3

e
   
1 0 0 0 1 0 0 0
   
 m21 1 0 0 
= 0
 1 0 0 
L= .
 m
 31 m32 1 0  

 5 0 1 0 

m41 m42 m43 1 0 1/9 0 1
124 7. SISTEMAS DE EQUAÇÕES LINEARES

b) O cálculo do determinante da matriz A é feito por:

4
Y
det A = det(LU) = det L × det U = 1 × uii
i=1

= 1 × [1 × 9 × (−45) × 3] = −1215.

7.6 Método de Choleski, factorização LDLT , algo-


ritmo de Thomas, inversa e número de condição
a) Obtenha a inversa e o determinante da matriz
 
4 1 0
 1 4 1 
 

0 1 4

usando a factorização LDLT .


b) A matriz é definida positiva, definida negativa ou indefinida?
c) Seria possível obter a factorização de Choleski desta matriz? Indique como a
obteria aproveitando o resultado da alínea a). Confirme este resultado efectuando a
factorização de Choleski segundo os conceitos teóricos abaixo.
d) Calcule o número de condição desta matriz na norma de Frobenius. A matriz
é bem condicionada? Justifique.
e) Resolva o sistema com b = (5 6 5)T usando o algoritmo de Thomas.

CONCEITOS TEÓRICOS
- Método de Choleski: Factorizar LLT .
Através do produto de matrizes — aqui ilustrado apenas para o caso de dimensão
n = 3 — podem obter-se os coeficientes Lij numa só etapa com:
    
L11 0 0 L11 L12 L13 A11 A12 A13
 L21 L22 0  0 L22 L23  =  A21 A22 A23  ,
    

L31 L32 L33 0 0 L33 A31 A32 A33

ou seja, calculando sucessivamente L11 , L21 e L31 ; L22 e L32 ; L33 o que origina as
seguintes expressões:

j−1
!1/2
X
2
ljj = ajj − ljm
m=1

j−1
!
X
lij = aij − lim ljm /ljj , i>j 
m=1

De notar que se escolhe a raiz positiva.


EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 125

À sucessão de Lij indicada antes destas expressões, chamaremos varrimento por


colunas (em Choleski).
- Norma de Frobenius de uma matriz A: Esta norma é dada por:
 1/2
n
2
X
k A kF =  |aij | .
i,j=1

- Número de condição e norma de Frobenius: cond A =k A kF × k A−1 kF . 

RESOLUÇÃO
a) Vamos obter a factorização LDLT tendo em conta que

     
1 0 0 D1 0 0 1 L21 0 a11 a12 0
 L21 1 0  0 D2 0  0 1 L31  =  a21 a22 a23  ,
     

0 L31 1 0 0 D33 0 0 1 0 a32 a33

vem

   
D1 D1 L21 0 4 1 0
 21 D1
L D2 + L221 D1 D2 L31 =
  1 4 1 , (7.6.1)
   

0 L31 D1 D3 + D2 L231 0 1 4

Igualando os dois membros podemos obter os coeficientes de L e as entradas de


D:
D1 = 4, L21 = 14 ,
1 15 4
D2 = 4 − 4 = 4 , L31 = 15 ,
4 56
D3 = 4 − 15 = 15 .
O determinante é o produto dos determinantes:
detA = detL × detD × detLT = detD = D1 D2 D3
15
detA = 4 × 4 × 5615.
Para se obter a inversa temos de resolver o sistema

   
4 1 0 1 0 0
 1 4 1 X =  0 1 0 , (7.6.2)
   

0 1 4 0 0 1

ou três sistemas em que consideramos como segundo membro cada uma das colunas
da matriz identidade. Vamos ilustrar o processo considerando a primeira daquelas
colunas.
1) Resolver o sistema Ly = b
126 7. SISTEMAS DE EQUAÇÕES LINEARES

    
1 0 0 y1 1
1
1 0   y2  =  0 
    
 4
4
0 15 1 y3 0

Fazendo as substituições descendentes, obtemos


y1 = 1, y2 = − 41 , y3 = 1
15 .
2) Resolver Dz = y

    
4 0 0 z1 1
15
 0 0   z2  =  − 14 
    
4
56 1
0 0 15 z3 15

Resolvendo vem
z1 = 14 , z2 = − 15
1
e z3 = 1
56 .
3) Agora falta resolver L x = z T

1
    1 
1 4 0 x1 4
4  = 1 
 0 1 x −
  
15   2   15 
1
0 0 1 x3 56

Neste caso trata-se de substituições ascendentes de que resultam


1 1 15
x3 = 56 , x2 = − 14 , x1 = 56 .
Procedendo de modo semelhante para as restantes colunas da matriz identidade,
vem

15 1 1
 
56 − 14 56
A = 1 2 1
− 14 − 14 .
 
7
1 1 15
56 − 14 56

b) A factorização LDLT produz entradas na matriz diagonal D com o mesmo


sinal dos valores próprios da matriz A. Como neste exemplo as entradas de D são
todas positivas, podemos concluir que a matriz é definida positiva, porque tem três
valores próprios positivos. Nota: O comando eig em MATLAB dá o seguinte vector:
(2.5858 4 5.4142).
c) Sendo a matriz definida positiva, é aplicável a factorização de Choleski. Como
já possuímos a factorização LDLT , podemos obter o factor de Choleski L′ = LD1/2 ,
o que dá

 
2 0 0

L′ =  1 15
0 .
 
2 √2 √
2 15 2√ 14
0 15 15
EXERCÍCIOS DE MATEMÁTICA COMPUTACIONAL 127

d) Cálculo do número de condição na norma de Frobenius (ver definição no


apêndice A [Pina(1995)]):

 1/2
n
X 2
p √
k A kF =  |aij | = 42 + 42 + 42 + 4 × 12 = 52.
i,j=1

s 2  2  2  2 √
−1 15 1 1 2 193
kA kF == ×2+ ×2+ ×4+ = .
56 56 14 7 28
√ √
cond A = 5228 193 = 3.57785
A matriz é bem condicionada. Se admitirmos que os erros relativos se devem
unicamente a efeitos de precisão finita (aritmética computacional), um factor de am-
plificação de cerca de 3.58 mantém os erros relativos na mesma ordem de grandeza.
e) O algoritmo de Thomas não é mais do que uma eliminação de Gauss sem
pivotagem aplicada a um sistema de matriz tridiagonal. Usando as expressões do
livro [Pina(1995)], p. 252-253, verificamos que a co-diagonal superior ci permanece
inalterada, enquanto que, a diagonal é actualizada por
′ ′
dk = dk − ak ck−1 /dk−1
′ ′
d2 = d2 − a2 c1 /d1
′ ′
d3 = d3 − a3 c3 /d3 .
O segundo membro é alterado para
′ ′
bk = bk − ak bk−1 /dk−1 .
Vem,
′ ′
1 15
d2 = d2 − a2 c1 /d1 = 4 − 4 = 4
′ ′
4 56
d3 = d3 − a3 c2 /d2 = 4 − 15 = 15
O segundo membro é alterado para
′ ′
5 19
b2 = b2 − a2 b1 /d1 = 6 − 4 = 4
′ ′
b3 = b3 − a3 b2 /d2 = 56
15
O sistema modificado escreve-se
    
4 1 0 x1 5
15
 0 1   x2  =  19
    
4 4 
56 56
0 0 15 x3 15

A solução obtida por substituições ascendentes dá x1 = x2 = x3 = 1.


REFERÊNCIAS

[Ferreira(1985)] Ferreira, J. C. Introdução À Análise Matemática. Fundação Calouste


Gulbenkian, Lisboa, 4.a edição, 1985.

[Lemos e Pina(2006)] Lemos, C. e Pina, H. Métodos Numéricos: Complementos e


Guia Prático. IST Press, Lisboa, 2006.

[Pina(1995)] Pina, H. Métodos Numéricos. McGraw-Hill, Lisboa, 1995.