Anda di halaman 1dari 55

Calculo Numerico

Computacional
Dalcidio Moraes Claudio
Jussara Maria Marins
24 de agosto de 2005
2
Sumario
1 Introducao a Matematica Numerica 5
1.1 Natureza e Objetivos da Matematica Numerica . . . . . . . . . . . . . . . . . . . . . 5
1.2 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Algoritmos Numericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Introducao `a Aritmetica de Maquina 13
2.1 Sistema de Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Arredondamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Digitos Signicativos Exatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.5 Precisao e Exatidao de Maquinas Digital . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 Instabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.1 Instabilidade dos Algaritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6.2 Instabilidade de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 Resolucao de Sistemas de Equacoes Lineares 41
3.1 Revisao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.1 Colocacao do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.2 Denicoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.3 Aritmetica Matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2 Erros Computacionais no Calculo Numerico de SELAs . . . . . . . . . . . . . 47
3.2.1 Tipos de algoritmos usados no Calculo Numerico de SELAs . . . . . . . . . . 47
3.2.2 Tipos de erros computacionais nos algoritmos . . . . . . . . . . . . . . . . . . 48
3.3 Etapas de resolucao dos SELAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3.1 Etapa: Descomplexicacao dos SELAs . . . . . . . . . . . . . . . . . . . . . . 49
3.3.2 Etapa: Os algoritmos calculadores de SELAs e suas estruturas . . . . . . . . . 51
3.4 Metodo de Eliminacao de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.1 Algoritmo basico de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4.2 Etapa: Triangularizacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.4.3 Etapa: Retrossubstituicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.4.4 Instabilidade numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.4.5 Algoritmo de Gauss com pivotamento . . . . . . . . . . . . . . . . . . . . . . . 60
3.4.6 Condicionamento de uma matriz . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.4.7 Renamento da solucao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.4.8 Equacionamento matricial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.4.9 Metodos de Gauss-Jordam . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4.10 O renador para Gauss-Jordam . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.5 Metodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.5.1 Metodo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3
4 SUM

ARIO
3.5.2 Metodos de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
3.5.3 Os algoritmos preparados para o Gauss-Seidel/Jacobi . . . . . . . . . . . . . . 86
3.5.4 Condicoes de convergencia do metodo . . . . . . . . . . . . . . . . . . . . . . . 87
4 Equacoes e Sistemas nao Lineares 99
4.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.2 Revisao sobre Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.3 Enumeracao das Razes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.3.1 Enumeracao das razes de uma equacao polinomial . . . . . . . . . . . . . . . 104
4.3.2 Enumeracao das razes complexas de uma equacao polinomial . . . . . . . . . 105
4.4 Localizacao das Razes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
4.4.1 Localizacao das razes reais de uma equacao polinomial . . . . . . . . . . . . . 107
4.4.2 Localizacao das razes complexas de uma equacao polinomial . . . . . . . . . . 109
4.5 Separacao das razes de uma equacao polinomial ou transcendente . . . . . . . . . . . 111
4.6 Ordem de Covergencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4.7 Metodos Iterativos para resolucao de equacoes polinomiais ou transcendentes . . . . . 115
4.7.1 Metodos de quebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.7.2 Metodos de Ponto Fxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.7.3 Metodos de m ultiplos passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.8 Aceleracao de Aitken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
4.9 Comparacao dos metodos do ponto de vista computacional . . . . . . . . . . . . . . . 144
4.10 Resolucao de sistemas de equacoes algebricas ou transcedentes . . . . . . . . . . . . . 146
4.10.1 Metodos de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.10.2 Metodos de Newton modicado . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.11 Software para resolucao de equacoes e sistemas de equacoes nao lineares . . . . . . . . 150
.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
.2 Formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
.3 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
.4 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
.5 arredondamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Captulo 1
Introducao a Matematica Numerica
1.1 Natureza e Objetivos da Matematica Numerica
O estudo da Matematica do ponto de vista computacional constitui a
Matematica Computacional.
A Matematica Numerica insere-se no contexto da Matematica Computa-
cional, que pode ser visualizada pela gura 1.1.
Vira gura
Figura 1.1: A Matematica Computacional
Nao formalizaremos aqui a descricao de cada item da gura.
Por metodos construtivos entendemos todo o metodo que envolve ape-
nas um sistema de operacoes elementares dadas a priori, utilizadas em
um n umero nito de vezes e que construirao todo o processo de calculo
envolvido.
O sistema de operacoes escolhido para a Matematica Numerica e eviden-
temente o conjunto basico de operacoes aritmeticas +, , , /, e atraves
delas serao denidas as demais operacoes necessarias. Tal escolha e devida
`a facilidade de implementacao, compreencao universal e possibilidade de
expansoes que formam operacoes mais complexas.
A Matematica Numerica tem por objetivo estudar processos numericos
(algoritmos) para a solucao de problemas, visando `a maxima economia e
conabilidade em termos dos fatores envolvidos. Como estes algoritmos
5
6 CAP

ITULO 1. INTRODU C

AO A MATEM

ATICA NUM

ERICA
serao implementados em computadores, os fatores envolvidos podem ser:
tempo de execucao, memoria utilizada e erros de arredondamento.
1.2 Algoritmos
Para que possamos resolver um problema atraves de um computador e
necessario ter toda a sequencia de passos e operacoes estabelecida de modo
formal para a resolucao do problema ou seja um algoritmo.
Um conceito (e nao denicao) de um algoritmo pode ser uma sequencia
de instrucoes ordenadas de maneira a dar em seu decurso a solucao para
um problema especco.
Tais instrucoes devem aparecer em um n umero nito e serem exe-
cutaveis mecanicamente com uma quantidade limitada de esforco.
Um algoritmo podera depender ou nao de dados iniciais (entradas),
mas tera obrigatoriamente de produzir pelo menos um resultado nal
(sada).
Deve ter apenas um ponto de incio e pelo menos um ponto de parada.
1.3 Algoritmos Numericos
Sao os algoritmos voltados ao processamento numerico, isto e, as ope-
racoes aritmeticas formam o cerne do algoritmo e seu objetivo e obter um
ou mais resultados numericos. Um algoritmo numerico de boa qualidade
tem as seguintes caractersticas:
1. Inexistencia do Erro Logico ou Matematico
Exemplo 1.3.1. Procura-se uma solucao x

da equacao ax = b.
Um algoritmo ingenuo e errado, do ponto de vista matematico, seria:
1.3. ALGORITMOS NUM

ERICOS 7
Algoritmo 1.3.1.
1. Incio
2. Ler a, b;
3. x = b/a;
4. Imprimir x;
O algoritmo correto e:
Algoritmo 1.3.2.
1. Incio
2. Ler a, b;
3. Se a = 0 entao se b = 0 entao imprimir Identidade
4. senao imprimir Contradicao
5. senao x = b/a;
6. imprimir x;
Os erros l ogicos ocorrem quando nao sao vericadas as diversas possibi-
lidades entre as opcoes dos testes, principalmente quando sao encadeados ou
mesmo quando se faz mais testes do que o necessario. No ultimo algoritmo,
por exemplo, nao e mais necessario testar se b e nulo ou nao, pois nao
importa este resultado e teremos a solucao correta. De fato isto faz parte
da propria denicao da equacao e nao da Logica.
2. Inexistencia do Erro Operacional
Mesmo que nao haja erro logico ou de denicao, o algoritmo pode falhar
por violar restricoes fsicas da maquina e teremos erros que sao detectados
em tempo de execucao. O proximo exemplo deixa isto mais claro.
Seja T o conjunto de n umeros possveis de serem representados por uma
maquina e que valha:
1. x T, x T
2. t
1
= infx [ x T x > 0
t
2
= supx [ T x > 0
8 CAP

ITULO 1. INTRODU C

AO A MATEM

ATICA NUM

ERICA
Se temos valores y, tais que [y[ < t
1
(underow) ou [y[ > t
2
(overow),
1
ocorrera um erro operacional. Algumas vezes tais erros nao sao indicados
pelo sistemas operacional ou compilador em muitos computadores. Ocorre,
entao que se obtem um resultado mas que nao possui conabilidade.
Exemplo 1.3.2. Seja z = x + iy C, x, y R.
Procuramos [z[ = mz =

x
2
+ y
2
.
Se num algoritmo implementamos diretamente a formula acima, con-
forme forem os valores de x ou y podemos ter overow em x
2
ou y
2
,
embora valha

x
2
+ y
2
< t
2
Este problema nao ocorre se o algoritmo for o seguinte:
Algoritmo 1.3.3.
1. Incio
2. Ler x, y
3. Se x = y = 0 entao mz = 0
3.1 senao se [x[ >= [y[ entao mz = [x[

1 +

y
x

2
3.2 senao mz = [x[

1 +

x
y

2
4. sada mz;
3. Quantidade nita de calculos
Exemplo 1.3.3. Determinar pelo metodo de Newton uma raiz da equacao:
f(x) = signl(x)

[x[ = 0
onde signl(x) e a funcao sinal que e denida por:
sign(x) =

1 se x > 0
0 se x = 0
1 caso contrario
Um algoritmo problematico e dado por:
1
Ver conceitos no exemplo 2.1.3.
1.3. ALGORITMOS NUM

ERICOS 9
Algoritmo 1.3.4.
1. entrada x
0
,
2. enquanto [f(x
i
)[ > faca:
2.1 se f
/
(x
i
) = 0 entao x
i+1
= x
i

f(x
i
)
f
/
(x
i
)
3. sada i, x
i

4. pare.
Na realidade, tal algoritmo nao ira parar, alem de estar incompleto, pois
para diferentes valores de x
0
= 0 e de o metodo de Newton alterna
seus valores entre x
0
e x
1
= x
0
, embora tenhamos f
/
(x) = 0 para cada
x (0, ).
Para corrigir tal problema precisamos estabelecer um n umero maximo
de iteracoes a serem executadas pelo algoritmo. Por exemplo, o comando
1 e 2 pode mudar para:
1. entrada x
0
, , MAX
2. enquanto [f(x
i
)[ > e i < MAX faca.
Com esta funcao e a correcao proposta nao atingiremos a solucao correta
embora tenhamos evitado um loop no comando 2. Outro modo de resolver
o problema e utilizar o metodo de Newton Intervalar que sera visto no
captulo 10.
4. Existencia de um criterio de exatidao
Na Matematica Intervalar todos os metodos apresentam tal caracters-
tica, uma vez que os resultados sao sempre um intervalo que contem a
solucao exata e da temos implicitamente o limite para o erro.
Normalmente os limites de rros sao empricos e pouco conaveis.
5. Independencia da Maquina
Nos algoritmos numericos nao deve haver dados dependentes da maquina.
6. Com precisao innita, os limites de erro devem convergir
a zero
10 CAP

ITULO 1. INTRODU C

AO A MATEM

ATICA NUM

ERICA
Exemplo 1.3.4. Dado a R, queremos determinar x = sin(a). Um
algoritmo ingenuo, que explora o fato de que sin(x) varia sempre entre 1
e +1, onde o sinal pode ser determinado aleatoriamente, e dado por:
Algoritmo 1.3.5.
1. Entrada:a
2. x = 0 1;
3. Sada:a, x
Este algoritmo errado satisfaz as exigencias de 1 a 5: nao ha erro logico
nem operacional, o algoritmo e nito, os dados nao dependem de maquina,
temos que o resultado dentro dos limites de erro; contudo para preencher
o criterio 6 deve haver um criterio de truncamento apropriado. Se ele e
satisfeito, temos o que se chama de convergencia numerica. Para calcular
a funcao seno ou mesmo outras funcoes trigonometricas ou transcendentes
devemos usar a Serie de Taylor que sera exemplicada para a funcao expo-
nencial na secao de Instabilidade.
7. Eciencia
Quando se deseja encontrar a solucao para um problema, sempre visamos
obter economia de recursos envolvidos.
Sobre ele formulamos condicoes de rapidez, alta exatidao, trabalhar com
poucos dados de referencias, ocupar menor espaco de memoria, ser facil-
mente representavel etc.
A eciencia como caracterstica de um bom algoritmo e bem diferente
das caractersitcas 1 e 2 que dizem respeito a ecacia. Explicando melhor,
ecacia e a qualidade de produzir um resposta de forma correta para o
problema dado, enquanto a eciencia, alem de intuir a ideia anterior, exige
que o processo seja economico nos termos citados.
Exemplo 1.3.5. Fazer contas com os dedos da mao.


E inecaz para calculos nao aritmeticos.


E ecaz, mas nao eciente para calculos aritmeticos nao triviais.
1.3. ALGORITMOS NUM

ERICOS 11


E eciente para certos calculos aritmeticos triviais.
Exemplo 1.3.6. Algoritmo de Cramer para solucao de sistemas de Equacoes
Lineares.
De forma geral, dado o sistema n n:

a
11
a
12
a
13
. . . a
1n
a
21
a
22
a
23
. . . a
2n
a
31
a
32
a
33
. . . a
3n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a
n1
a
n2
. . . a
n3
a
nn

x
1
x
2
x
3
.
.
.
x
n

y
1
y
2
y
3
.
.
.
y
n

(1.1)
Calcula-se o determinante da matriz dos coecientes e mais os n de-
terminantes x
i
resultantes da substituicao da coluna i da matriz dos
coecientes pelo vetor dos termos independentes. Assim, pelo teorema de
Cramer a solucao (x
1
, x
2
, ..., x
n
) e dada por:
x
i
=
x
i

Tal algoritmo envolve no mnimo (n + 1)!(n 1) operacoes aritmeticas.


Levando em conta. o tempo para cada operacao (Adicoes e Subtracoes:
40s e Multiplicacoes: 400s), temos o seguinte quadro:
n = 5 n = 10 n = 20
Cramer ( pela denicao) 2,5 s 3,4 dias 20 bilhoes de anos
Cramer ( por Laplace) 0,4 s 6 min 5 meses
Gauss Metodo de Eliminacao 36 ms 0,22 s 1,5 s
12 CAP

ITULO 1. INTRODU C

AO A MATEM

ATICA NUM

ERICA
Captulo 2
Introducao `a Aritmetica de Maquina
2.1 Sistema de Ponto Flutuante
Introducao
Os n umeros inteiros possuem representacao computacional exata, den-
tro da regiao de representabilidade.
Existem varios codigos mas o mais comum e o complemento de dois
Dentro da regiao de representabilidade, a aritmetica e exata.
Os n umeros reais, em geral, nao tem representacao exata e sao aproxi-
mados.
Exemplo 2.1.1. H = 1/2
X = 2/3 H
Y = 3/5 H
E = (X + X + X) H
F = (Y + Y + Y + Y + Y ) H
G = F/E
Alguns resultados:
13
14 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
HP 48G SR 50 PC
1
H = 0.5 H = 0.5 H = 0.5
X = 0.166666666667 X = 0.1666666667 X = 0.166667
Y = 0.1 Y = 0.1 Y = 0.1
E = 0.000000000001 E = 2.0E(13) E = 0
F = 0 F = 0 F = 0
G =
F
E
0 G =
F
E
?! G = 0.5
A expressao ?! indica uma operacao invalida.
Resultados de G em oat e 0.5 e para double ca em 1.0.
Denicao 2.1.1. Um n umero real x R e dito um n umero de ponto
utuante normalizado se valerem:
1. x = mb
e
2. m = d
1
d
2
d
3
...d
n
, n N
3. 1 d
1
b 1, 0 d
i
b 1, i = 2(1)n
4. e
1
e e
2
sendo e
1
0, e
2
1, e
1
, e
2
Z
onde:
b e chamado base, b 2.
e e chamado expoente, e
1
e o menor e e
2
e o maior expoente.
m e chamado mantissa.
n e o n umero maximo de dgitos usados na representacao do n umero.
d
i
, i = 1(1)n, sao os dgitos da mantissa.

Denicao 2.1.2. A uniao de todos os n umeros de ponto utuante com o


zero, que e representado na seguinte forma:
0 = 0.000...0
. .. .
n vezes
b
e
1
e chamado de Sistema de Ponto Flutuante T.
2.1. SISTEMA DE PONTO FLUTUANTE 15
Usualmente, procuramos representar um sistema de ponto utuante por
T = F(b, n, e
1
, e
2
)
onde e
1
e e
2
sao respectivamente o menor e o maior expoente, b e a base e
n e a precis ao.

Exemplo 2.1.2. Sistema de Ponto utuante da:


a) HP 25 : F(10, 9, 98, 100)
b) Texas SR50 : F(10, 10, 98, 100)
c) Texas SR52 : F(10, 12, 98, 100)
d) HP 48G : F(10, 12, 500, 499)
Vamos indicar por L e , respectivamente, o menor e o maior n umero
positivo de T.
L = 0.1 b
e
1
ou ainda
L = (0. 1000 . . . 0
. .. .
n casas
)
b
= b
1
= 0.[b 1][b 1][b 1] . . . [b 1] b
e
2
= (1 b
n
)
Vejamos algumas propriedades dos n umeros de ponto utuante. Seja T
um sistema de um ponto utuante da por T = F(b, n, e
1
, e
2
), entao:
#T = 2 (b 1) b
n1
(e
2
e
1
+ 1) + 1 (2.1)
Para qualquer mantissa m vale:
b
1
[m[ < 1 (2.2)
[m[ < 1, pois toda mantissa tem como primeiro dgito (antes do ponto)
o zero.
[m[ b
1
, pois se [m[ < b
1
, nao teramos um n umero normalizado,
pois o primeiro dgito apos o ponto e nao nulo.
16 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Vira gura
Figura 2.1: O Sistema T = F(2, 3, 1, 2).
(x T)[x T] (2.3)
Exemplo 2.1.3. Seja T = F(2, 3, 1, 2).
Como a base e 2, os dgitos sao 0 e 1, logo, todas as mantissas sao:
0.100 0.101 0.110 0.111
e os expoentes possveis sao -1, 0, 1 e 2.
Assim temos os seguintes n umeros positivos:
(0.100x2
1
) = (0.01)
2
= 0.2
0
+ 0.2
1
+ 1.2
2
= 1/4
(0.100x2
0
) = (0.1)
2
= 0.2
0
+ 0.2
1
= 1/2
(0.100x2
1
) = (1.0)
2
= 1.2
0
+ 0.2
1
= 1
(0.100x2
2
) = (10.0)
2
= 1.2
1
+ 0.2
0
+ 0.2
1
= 2
(0.101x2
1
) = (0.0101)
2
= 0.2
0
+ 0.2
1
+ 1.2
2
+ 0.2
3
+ 1.2
4
= 5/16
(0.101x2
0
) = (0.101)
2
= 0.2
0
+ 1.2
1
+ 0.2
2
+ 1.2
3
= 5/8
E assim, sucessivamente, teremos a seguinte tabela:
e b
e
m 0.100 0.101 0.110 0.111
-1 1/2 1/4 5/16 3/8 7/16
0 1 1/2 5/8 3/4 7/8
1 2 1 5/4 3/2 7/4
2 4 2 5/2 3 7/2
Tais n umeros positivos estao representados na reta real na Figura 3.2.
2.1. SISTEMA DE PONTO FLUTUANTE 17
Os n umeros do ponto utuante de T nao estao uniformemente dis-
tribudos no intervalo [7/2, 7/2];
Mas 1/4, 5/16, 3/8, 7/16 estao igualmente espacados.
Logo, entre potencias sucessivas da base existe uma quantidade cons-
tante de n umeros de ponto utuante, dada por:
c = b
n1
.(b 1) (2.4)
A Regiao de Underow esta em torno do zero
A regiao de Overow esta acima e abaixo da regiao de representacao.
Exemplo 2.1.4. Seja T = F(3, 2, 1, 2).
1. #T = 2.(3 1).3
21
.(2 (1) + 1) + 1 = 49
2. As mantissas e os n umeros de ponto utuante positivos estao na seguinte
tabela:
e b
e
m 0.10 0.11 0.12 0.20 0.21 0.22
-1 1/3 1/9 4/27 5/27 2/9 7/27 8/27
0 1 1/3 4/9 5/9 2/3 7/9 8/9
1 3 1 4/3 5/3 2 7/3 8/3
2 9 3 4 5 6 7 8
3. Regiao de Underow: (1/9, 0) (0, 1/9)
Regiao de Overow: (, 8) (8, )
Caractersticas basicas das operacoes em T
As leis que valem para a aritmetica em R nao valem para T.
Exemplo 2.1.5. Seja T o mesmo sistema do exemplo 2.1.3: T =
F(2, 3, 1, 2). Tomemos em T :
x =
5
4
e y =
3
8
18 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
x + y =
5
4
+
3
8
=
13
8
No entanto,
13
8
/ T, pois
13
8
= (1.625)
10
= (0.1101 2
1
)
2
que possui
um dgito a mais na mantissa do que o permitido. Na realidade, podemos
escolher entre
3/2 = (1.5)
10
= (0.110)
2
ou
7/4 = (1.75)
10
= (0.111)
2
para um resultado aproximado.
x y = x + y
x y = x y
Tais fenomenos nao ocorrem apenas em alguns sistemas de ponto u-
tuante restritos, conforme os vistos nos exemplos. Consideremos T =
F(2, 5, 98, 100). Neste caso, temos:
(0.1)
10
= (0.0001100110011...)
2
ou arredondando em T para:
(0.1)
10
= (0.11001 2
3
)
2
Somando (0.11001 2
3
) sucessivamente dez vezes, teremos:
(0.11111)
2
= (0.96875)
1
0 = (1.0)
10
Exemplo 2.1.6. Seja T = F(2, 3, 1, 2).
Se x =
5
8
, y =
3
8
e z =
3
4
, entao:
(x y) z = (0.101 2
0
0.110 2
1
) 0.110 2
0
=
(0.101 0.011) 0.110 = 1.000 0.110 = 1.11
x (y z) = 0.101 (0.011 0.110) = 0.101 1.001 = 0.101 1.00 1 = 1.00
0.101 1.00 = 1.10 1 = 1.10
2.2. ARREDONDAMENTOS 19
Logo:
(x y) z = x (y z)
Se x =
7
8
, y =
5
4
e z =
3
8
Tambem temos que:
x (y z) = 0.111 (1.01 0.011)
= 0.111 1.001 = 1.0101 = 1.01
x y x z = (0.111 1.01) (0.111 0.011)
= 1.00011 0.10101 = 1.101 = 1.10
Logo:
x (y z) = (x y) (x z)
2.2 Arredondamentos
Denicao 2.2.1. Seja T = F(b, n, e
1
, e
2
) um sistema de ponto utuante.
Uma funcao : R F e considerada um arredondamento se valer:
(x T)[x = x] (2.5)

Como arredondar?
Tipos de arredondamentos
Os mais conhecidos sao:
Arredondamento para cima ou por excesso (x)
Arredondamento para baixo ou por falta (x)
Arredondamento para o n umero de maquina mais proximo ((x)
Exemplo 2.2.1. Seja T = F(2, 3, 1, 2).
O n umero real
9
8
/ T, pois:
20 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
9
8
= (1.125)
1
0 = (0.1001 2
1
)
2
.
Podemos arredondar de duas maneiras:
9
8
(0.100 2
1
) = (1.0)
10
9
8
(0.101 2
1
) =
5
4
No primeiro caso temos:
(
9
8
) = (0.100 2
1
)
(
9
8
) = (0.101 2
1
)
Exemplo 2.2.2. Na base 10 podemos citar casos mais ilustrativos.
Seja T = F(10, 4, 98, 10) e sejam:
x = 0.333333
y = 0.348436
z = 0.666666...
Temos entao:
x = 0.3333 , y = 0.3484 e z = 0.6666
x = 0.3334 , y = 0.3485 z = 0.6667
(x = 0.3333 , (y = 0.3484 (z = 0.6667
se w = 0.12345, entao:
2.2. ARREDONDAMENTOS 21
Vira gura
Figura 2.2: Arredondamentos
w = 0.1234
w = 0.1235
(w = 0.1235
Podemos representar os tres tipos de arredondamento na Figura 2.2
Vamos deixar mais claros os conceitos anteriores.
Denicao 2.2.2. Um arredondamento : R T e dito por falta, ou
por excesso se valerem, repectivamente:
(x R)[x x] (2.6)
(x R)[x x] (2.7)
Se, alem disso, valer:
(x, y R)[x y x y] (2.8)
que e tambem chamada propriedade monotonica, entao denimos:
x = arredondamento monotonico por falta.
x = arredondamento monotonico por excesso.

Se T = F(b, n, e
1
, e
2
) tem para a base b um n umero par, entao o
arredondamento para o n umero de maquina (ou ponto utuante) mais
proximo e notado por (x e denido como:
22 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
x [0, b
e
1
1
), (x = 0
x [b
e
1
, ],

(x = x, para x

x,
x+x
2

(x = x, para x

x+x
2
, x

(2.9)
Se x < 0, (x = ((x)
A regiao (b
e
1
1
, 0)(0, b
e
1
1
) e chamada de Regiao de Underow pois
nestes intervalos nao ha representacao adequada em T, e o erro relativo e
grande.
A regiao [, b
e
1
] [b
e
1
, ] e chamada Regiao de Representabili-
dade de T pois nesta regiao o erro relativo e limitado.
A regiao de (, ) cup(, ) e chamada de Regiao de Overow
e novamente nesta zona o erro relativo nao e limitado.
Toda vez que executamos o arredondamento de um n umero que nao
admite uma representacao exata em T fazemos um erro.
Mais detalhes podem ser vistos na Norma IEEE 754 - Standart for Binary
Floating-Point Arithmetic, que foi adotado como padrao a partir da decada
de 1980.
2.3 Erros
Existem varios tipos de erros e varias sao as suas causas. Vamos es-
tudar tres tipos de erros: os inerentes, os de discretizacao e os de
arredondamento.
Erros Inerentes
Aparecem na criacao ou simplicacao de um modelo matematico de
determinado sistema, ou ainda nas medidas, em geral. Os valores de
medidas como tempo, temperatura, distancia, intensidade luminosa
etc. sao obtidos de instrumentos que tem precisao limitada.
2.3. ERROS 23
Os erros de Discretizacao
Ou de Aproximacao, ou Truncamento sao os erros cometidos quando
se substitui qualquer processo innito por um processo nito ou dis-
creto. Seja, por exemplo, o calculo da constante de Euler e que e dada
por:
e =

i=0
1
i!
Os erros de Arredondamento surgem quando trabalhamos com maquinas
digitais para representar os n umeros reais.
Em geral, trabalhamos com arredondamento para o n umero de ponto
utuante mais proximo ou com o arredondamento por falta.
A diferenca entre o valor arredondado e o valor exato pode ser medida
pelo erro absoluto ou pelo erro relativo.
Denicao 2.3.1. O erro absoluto, que e indicado por E
A
, e dado por:
E
A
= [x x[ (2.10)

Denicao 2.3.2. O erro relativo, que e indicado por E


R
, e dado por:
E
R
=
[x x[
[x[
ou E
R
=
[x x[
[x[
(2.11)

Exemplo 2.3.1. Se x = 0.00006


e se x = 0.00005
E
A
= 0.00001
E
R
=
0.00001
0.00005
= 0.2 ou 20%
Neste caso podemos ate dizer que E
A
e pequeno; no entanto, nao ha
d uvida a respeito do E
R
que e da ordem de 20%.
24 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Vira gura
Figura 2.3: Erro Relativo =
|xx|
|x|
em T = F(2, 3, 1, 2)
Teorema 2.3.1. Seja T = F(b, n, e
1
, e
2
) um sistema de ponto utuante
e um arredondamento, entao vale:
(x R)

b
e
1
1
[x[
[x x[
[x[

onde:
=

1
2
b
1n
no caso de x = (x
b
n1
no caso de x = x
(2.12)

Exemplo 2.3.2. Nas calculadoras Hewllet Packard 48G, temos:


= (e para b = 10 e n = 12
=
1
2
10
12
= 0.000 000 000 005
Observa-se que na regiao de underow o erro e sempre igual a 1. Para
diminuir este erro e preciso que aumentemos o n umero de casas na mantissa.
Isto cusara maior densidade de n umeros representaveis em T.
2.4 Digitos Signicativos Exatos
Na pratica, nao sabemos o valor exato.


E impossvel, em geral, calcular o erro relativo ou absoluto.
2.4. DIGITOS SIGNIFICATIVOS EXATOS 25
Precisamos, no entanto, avaliar o resultado, ou seja, saber quao exato e
o resultado. revisemos o conceito de dgito signicante ou signicativo.
Denicao 2.4.1. Num sistema decimal, um dgito e signicante se qual-
quer dos dgitos for 1, 2, 3, 4, 5, 6, 7, 8 ou 9. O dgito 0 (zero) e signicante,
exceto quando for usado para xar a vrgula ou ponto decimal ou preencher
o lugar de dgitos descartados.

Exemplo 2.4.1. Em 0.008735 temos quatro dgitos signicantes ou sig-


nicativos, a saber, o 8, o 7, o 3 e o 5. Em 30.457 temos cinco dgitos
signicantes, ou seja, todos eles. Em 23.000 temos so dois dgitos signica-
tivos.
2
Denicao 2.4.2. Um dgito signicativo e exato se, aredondando-se o
n umero aproximado para uma posicao imediatamente apos aquela posicao
do dgito, isso zer com que o erro absoluto nao seja maior do que a meia
unidade naquela posicao do dgito. Abraviaremos Dgito Signifcativo Exato
por Digse.

Exemplo 2.4.2. Os n umeros 0.66667 e 0.666998 sao aproximacoes para


2/3; no entanto, todos os dgitos signicativos do primeiro sao exatos, en-
quanto no segundo, so os tres primeiros.
Vejamos com mais detalhes:
1. 0.66667 No primeiro dgito 6 camos com o n umero 0.66 e o erro ab-
soluto em relacao a 2/3 e:
[0.66 0.666 . . . [ = 0.006 66 . . . < 0.05
No segundo dgito 6, temos:
[0.666 0.666 . . . [ = 0.000 666 . . . < 0.005
No terceiro dgito 6, temos:
2
Em Fsica, o zero apos o ponto pode ser considerado signicativo no caso de representar a precisao de uma medida.
26 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
[0.666 6 0.666 . . . [ = 0.000 066 6 . . . < 0.000 5
No quarto dgito 6, temos:
[0.666 67 0.666 . . . [ = 0.000 003 333 . . . < 0.000 05
No dgito 7, temos:
[0.666 670 0.666 . . . [ = 0.000 003 333 . . . < 0.000 005
Logo todos os dgito signicativos sao exatos
2. 0.666 998 Para o primeiro dgito 6, temos:
[0.66 0.666 . . . [ = 0.006 666 . . . < 0.05
No segundo dgito 6, temos:
[0.666 0.666 . . . [ = 0.000 6 . . . < 0.005
No terceiro dgito 6, temos:
[0.6669 0.666 . . . [ = 0.000 233 . . . < 0.000 5
Para o primeiro dgito 9, temos:
[0.66699 0.666 . . . [ = 0.000 323 . . . 0.000 05
Logo o dgito 9 ja nao e exato.
Teorema 2.4.1. Se E
R

1
2
b
m
, entao o n umero e correto em m dgitos
signicativos exatos. A demonstracao pode ser vista em [3].
Utilizando este teorema, vejamos a maneira mais pratica que a denicao
para calcular o n umero de dgitos signicativos corretos. Tomemos o loga-
rtmo decimal da desigualdade: E
R

1
2
b
m
e b = 10.
[xx[
[x[

1
2
10
m
log

[xx[
[x[

log
1
2
m
m log
1
2
log

[xx[
[x[

(2.13)
2.5. PRECIS

AO E EXATID

AO DE M

AQUINAS DIGITAL 27

Logo, para achar o maior n umero de dgitos signicativos exatos temos:


m =

log
1
2
+ log

[x x[
[x[

(2.14)
Se ocorrer que x = x, entao podemos aplicar a formula anterior do
seguinte modo:
m =

log
1
2
+ log

+
[x x[
[x[

(2.15)
Logo, se E
R

1
2
b
m
para b = 10, podemos dizer que:
m =

0.3 + log

+
[x x[
[x[

(2.16)
onde e a unidade de erro de arredondamento.
Genericamente podemos calcular o n umero de dgitos signicativos exa-
tos pelo logaritmo decimal do E
R
.
Quando nao temos o valor exato para fazermos as comparacoes, o que
ocorre em geral, temos que: se x = lim
i
x
i
, entao podemos modicar a
formula anterior para:
Digse(x
i
, x
i+1
) =

0.3 + log

+
[x
i+1
x
i
[
[x
i
[

(2.17)
O que nos da o n umero de dgitos signicativos exatos de x
i+1
em relacao
x
i
2.5 Precisao e Exatidao de Maquinas Digital
Conforme vimos para cada maquina, calculadora ou computador ha um
sistema de ponto utuante associado. Este sistema automaticamente dene
a precisao da maquina.
Denicao 2.5.1. A precisao de uma maquina digital e denida como o
n umero de dgitos da mantissa dessa maquina.
28 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Vira gura
Figura 2.4: Aproximacoes para
Portanto, a precisao e algo claro, nao variavel para uma maquina. Ja a
denicao seguinte nao nos da as mesmas caractersticas.

Denicao 2.5.2. Exatidao e uma medida de perfeicao do resultado.


A exatidao da um resultado depende da precisao da maquina e do metodo
utilizado para obtencao desse resultado.

Exemplo 2.5.1. Vejamos varias aproximacoes para o n umero , na gura


2.4 e a seguir o calculo dos dgitos signicativos exatos das aproximacoes,
na proxima tabela.
Aproximacao x
i
Digse (x
i
, ) Aproximacao x
i
Digse (x
i
, )
3.410 3.4 3.415 4.2
3.411 3.5 3.416 5.3
3.412 3.6 3.417 4.2
3.413 3.7 3.418 3.7
3.414 3.9 3.419 3.6
Embora todas as aproxima coes possuam um precisao de cinco casas
decimais, somente uma delas possui os cinco dgitos signicantes exatos,
levando em conta o valor de = 3.14159265359 o que confere com o valor
arredondado para o n umero de maquina mais proximo, com 5 casas deci-
mais.
Logo, a exatidao de um processo depende, alem da maquina, tambem
do algortimo. Para termos uma ideia da capacidade numerica de uma
2.5. PRECIS

AO E EXATID

AO DE M

AQUINAS DIGITAL 29
maquina, devemos conhecer, alem da sua precisao que, em geral, e dada
em termos de dgitos binarios, octais ou hexadecimais, conforme for a base
de funcionamento de T, qual e a sua precisao decimal. No caso de termos
T = F(16, 6, 64, 63) a precisao hexadecimal e 6, mas a precisao p
10
decimal correspondete e:
16
6
= 10
p
10
6 log
10
16 = p
1
log
10
10 p
1
= 6 1.204 = 7.224 (2.18)
Da, a precisao decimal de T e de 7.224,e 22.4% das vezes temos 8 casas
decimais. Contudo, nem todo n umero que tenha uma representacao exata
com sete casas ou menos sera exatamente representado internamente. Por
exemplo, 0.1 nao admite representacao exata na base 2.
Alem da precisao decimal, o calculo do chamado

Epsilon da Maquina
nos da uma ideia da exatidao da maquina.
O da m aquina e o n umero de ponto utuante, tal que:
1 + > 1
Alguns metodos para o calculo de nao dao seu valor exato, mas isto
nem sempre e necessario, pois o que importa e a sua oredem de grandeza.
O programa Pascal seguinte calcula uma aproximacao de da maquina:
PROGRAM EPSMAQ (OUT PUT);
VAR EPSILON, EPS : REAL;
BEGIN
EPS: = 1;
REPEAT EPSILON: = EPS;
EPS: = 0.5 * EPS
UNTIL EPS + 1 = 1;
WRITELN(EPSILON DA M

AQUINA = :30, EPSILON : 30);


END.
O resultado e

= 0.7105427357601 10
14
Exemplo 2.5.2. seja o n umero irracional

2 = 1.414213562...
30 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
1. 1.4142 e mais preciso e mais exato que 1.41, pois o primeiro tem maior
n umero de casas e aproxima melhor

2.
2. 1.4149 e mais preciso que 1.414, pois tem mais casas decimais, porem
e menos exato do que 1.414, pois o dgito 9 do primeiro nao e exato.
2.6 Instabilidade
Veremos agora uma serie de problemas cujos diferentes modos de solucao
podem acarretar diferentes resultados.

E claro que para muitos problemas
nao importa qual a solucao utilizada que teremos sempre o mesmo e bom
resultado. Quando nao temos um bom resultado, os erros podem ser cau-
sados pelos modelos ou entrada de dados (inerentes), pelo truncamento e
pelo arredondamento conforme ja citamos anteriormente. Nao trataremos
aqui dos erros inerentes. Na realidade, podemos ver os problemas do ponto
de vista da instabilidade. Esta instabilidade pode ser entendida como uma
sensibilidade a perturbacoese pode ocorrer tanto no problema em si como
no algoritmo, isto e, na maneira de resolve-lo.
2.6.1 Instabilidade dos Algaritmos
Comecemos com dois exemplos que sao citados em [2].
Exemplo 2.6.1. Calcular e e e
5.5
pela expansao na serie de Taylor.
Dado que:
e
x
= 1 + x +
x
2
2
+
x
3
3!
+
x
4
4!
+ . . .
Entao para x = 1 temos:
e

= 1 + 1 + 0.5 + 0.16667 + 4.1667E 2 + 8.3333E 3+


+1.3889E 3 + 19841E 4 + 2.4801E 5+
+2.7557E 6 = 2.7183
(2.19)
Comparando a soma anterior com a valor 2.718281828, temos um erro
relativo de 6.6E 6, que e bem pequeno.
2.6. INSTABILIDADE 31
Para x = 5.5 temos:
e
5.5

= 1 5.5 + 15.125 27.730 27.730 + 38.129


41.942 + 38.446 30.208 + 20.768 12.692+
6.9803 3.4902 + 1.5997 . . . = 0.0026363
(2.20)
Comparando agora com e
5.5
dado por uma calculadora, temos que:
e
5.5
= 0.004 086 771 439
E o erro relativo e de 0.35 que e bem maior que o erro anterior.
Qual a causa da diferenca?
Observando os termos da soma do segundo caso, vemos que ha uma
combinacao de dois fatores:
somas de grandezas de diferentes ordens;
subtracao e grandezas quase iguais.
Este fenomeno e chamado de cancelamento subtrativo ou con-
celamento catastroco, que e bastante comum em calculos. se nao
houvessemos arredondado cada parcela, o erro seria sensivelmente menor.
Temos so esta causa?
O cancelamento subtrativo nao e a real causa do erro nal da soma;
Como melhorar?
Se mudamos o calculo de e
5.5
para 1/e
5.5
e utilizarmos as mesmas
parcelas, teremos 0.0040865 e o erro relativo e 6.6E 5.
Logo, podemos utilizar a serie de taylor para argumentos positivos.
Exemplo 2.6.2. Calcular I
n
=

1
0
x
n
e
x1
dx para n = 1, 2 . . .
Solucao: integrando por partes:

1
0
x
n
....
u
e
x1
dx
. .. .
dv
=

x
n
e
x1

1
0

1
0
n x
n1
e
x1
dx = 1nI
n1
, n = 2, 3, . . .
(2.21)
32 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Ou seja:
I
n
=

1
0
x
n
e
x1
dx = 1 n I
n1
onde:
I
1
=

1
0
xe
x1
dx =
1
e
Usando T = F(10, 6, 98, 99), temos os seguintes valores:
I
1

= 0.367879 I
6

= 0.127120
I
2

= 0.264242 I
7

= 0.110160
I
3

= 0.207274 I
8

= 0.118720
I
4

= 0.170904 I
9

= -0.068480
I
5

= 0.145480
Olhando o integrando I
9
=

x
9
e
x1
, vericamos que e sempre positivo
em [0, 1] e, no entanto, o valor computado foi Negativo.
O que causou tal erro?
Notemos que so foi feito um erro de arredondamento emI
1
quando 1/e foi
tomado por 0.367879 em vez de 0.3678794412. Como a formula esta correta,
o erro nal e devido apenas a este erro feito em I
1
. Observemos como tal
ocorreu: em I
2
o erro foi multiplicado por 2, depois em I
3
foi multiplicado
por 3,1 etc. Entao, o erro de I
9
e exatamente (2)(3) . . . (9) = 9!
Sendo:
E
1
= [1/e 0.367879] = 4.412 10
7
(2.22)
Temos no nal:
4.412 10
7
9!

= 0.1601
Na realidade, o valor correto de I
9
e:
I
9
= 0.06848 + 0.1601 = 0.00916
que e uma valor razoavel para I
9
. Logo, embora a formula 2.21 esteja
correta, ela e sensvel em relacao ao ac umulo de erro, ou seja, o algoritmo
2.6. INSTABILIDADE 33
gerado e de ma exatidao. Um algoritmo estavel e dado pela formula equiv-
alente:
I
n1
=
1 1
n
n
n = . . . , 4, 3, 2 (2.23)
Nesta formula, a cada passo, o valor do erro em I
n
e decrescido por
1
n
,
(em vez de multiplicado por n). Se nos comecamos por n 1, voltaremos
e entao o erro inicial ou erros de arredondamento diminuirao a cada passo.
Resta-nos saber qual sera o valor nal para I
n
. Observemos que:
I
n
=

x
n
e
x1
dx

1
o
x
n
dx =

x
n+1
n + 1

1
0
=
1
n + 1
(2.24)
Portanto, I
n
tende a zero quando n tende ao innito. se aproximadamamos
I
20
para zero e o usamos como valor inicial, temos:
I
20

= 0 I
14

= 0.0627322
I
19

= 0.0500000 I
13

= 0.0669477
I
18

= 0.0500000 I
12

= 0.0717733
I
17

= 0.0527778 I
11

= 0.0773523
I
16

= 0.0557190 I
10

= 0.0838771
I
15

= 0.0590176 I
9

= 0.0916123
Majorando o erro em I
20
por
1
21
, temos:
para E
19
=
1
20

1
21

= 0.0024
para E
18
=
1
19

1
20

1
21
Em E
15
temos 4 10
8
, o que mostra que o erro inicial esta praticamente
diludo. Continuando o algoritmo dado por 2.23, temos:
I
8
= 0.1009320 I
4
= 0.1708934
I
7
= 0.1123835 I
3
= 0.2072767
I
6
= 0.1268024 I
2
= 0.2642411
I
5
= 0.1455329 I
1
= 0.3678795
34 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Exemplo 2.6.3. Calcular a media aritmetica de dois n umeros a e b.
Algoritmo 1:
1. entrada a, b
2. s a + b
3. m s/2
4. sada m
Algoritmo 2:
1. entrada a, b
2. s
1
a/2
3. s
2
b/2
4. m s
1
+ s
2
5. sada m
Algoritmo 3:
1. entrada a, b
2. d
1
a b
3. d
1
d
1
/2
4. m b + d
1
5. sada m
Para um dado T = F(b, n, e
1
, e
2
) podemos ter, conforme a, b F os
seguintes problemas:
Algoritmo 1: overow em 2.
underow em 2 e 3.
2.6. INSTABILIDADE 35
No algoritmo 3 nao teremos provavelmente nenhum erro operacional, mas
poderemos ter um erro no comando 2 se houver cancelamento subtrativo.
Vejamos agora um algoritmo classico para calcular as razes de equacao
do 2
o
grau cujas as formulas sao dadas pelas equacoes seguintes:
x
1
=
b +

b
2
4ac
2a
(2.25)
x
2
=
b

b
2
4ac
2a
(2.26)
Vamos analisar alguns cassos a serem resolvidos emT = F(10, 8, 50, 50)
Exemplo 2.6.4. Caso a:
a = 1 , b = 10
5
, c = 1
As razes exatas corretamente arredondadas para 11 dgitos sao:
x
1
= 99999.999990
x
2
= 0.000010000000001
Se as razes forem calculadas por (22), teremos:
x
1
= 100000.0 (muito boa)
x
2
= 0 (ruin)
Na realidade, no calculo de x
2
fomo vtimas do chamado cancelamento
catastroco. Facamos um parentese para explicar tal fenomeno.
Considerando x = 12345678.0 e y = 12345677.0, temos uma diferenca
x y = 1.00000000, porem, com uma pequena mudanca de x para x =
12345678.1 e de y para y = 12345676.9, obtemos uma diferenca de:
z = 1.20000000
36 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Portanto, uma mudanca no nono dgito de um dado causou uma mu-
danca no segundo dgito da resposta. Neste caso, quando estamos sub-
traindo grandezas aproximadamente iguais e ha um erro muito grande,
dizemos que houve um cancelamento subtrativo (o mesmo vale para somar
grandezas iguais, mas de sinais diferentes).
Voltando para o exemplo inicial, para calcular x
2
por 2.25 ocorre:
x
2
=
+10
5

10
10
2
=
0
2
= 0 (2.27)
Que e identicado cancelamento subtrativo.
Uma forma de evitar tal problema, e usar o seguinte algoritmo:
x
1
=
b sign(b)

b
2
4ac
2a
(2.28)
Como ax
2
+bx+c = a(xx
1
)(xx
2
) implica que ax
1
x
2
= c, podemos
calcular a raiz por:
x
2
=
c
ax
1
(2.29)
Aplicando este algoritmo, nao tao ingenuo como 2.25, temos:
x
1
= 10000.00
x
2
= 1.0000000/100000.00 = 0.000010000000
Caso b:
a = 6 , b = 5 , c = 4
Aqui nao ha diculdades em calcular para x
1
e x
2
os valores:
x
1
= 0.50000000
x
2
= 1.3333333
Seja qual for a formula utilizada.
Caso c:
2.6. INSTABILIDADE 37
a = 6x10
30
, b = 5x10
30
, c = 4x10
30
Desde que os coecientes foram multiplicados por 10
30
nao ha mudanca
nas razes. Contudo, a aplicacao das formulas pode levar a um problema
de overow, desde b
2
> 10
50
(considerando o T dado).
Caso d:
a = 10
30
, b = 10
30
, c = 10
30
Aqui, x
1
esta muito perto de 1, enquanto x
2
esta perto de 10
6
. Portanto,
nosso algoritmo deve determinar x
1
muito aproximadamente, mas ira falhar
para x
2
.
Caso e:
a = 1.0000000 , b = 4.0000000 , c = 3.9999999
As razes verdadeiras sao:
x
1
= 1.999683772
x
2
= 2.000316228
Mas aplicando a formula 2.28, obtemos x
1
= x
2
= 2.0000000, com
quatro dgitos corretos.
Exemplo 2.6.5. Seja o sistema:

0.117 10
2
x + 0.648 y = 0.649
0.512 x 0.920 10
3
y = 0.511
(2.30)
Que, resolvidos em T = F(10, 3, 3, 3) com arredondamento para o
n umero de maquina mais proximo, temos:

0.117 10
2
x + 0.648 y = 0.649
0x + 0.284 10
3
y = 0.511
(2.31)
E da y = 0.996 e x = 3.42.
38 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Trocando a ordem das equacoes e resolvendo no mesmo sistema de ponto
utuante, temos x = 1 e y = 1, a qual se acha bem mais proxima da solucao
exata que e:
x = 0.999843279 . . . e y = 0.999737937 . . .
Voltaremos a apresentar este exemplo no Captulo 3 quando veremos o
Metodo de Eliminacao de gauss com Pivotamento Parcial.
Com os exemplos anteriores vemos que os algoritmos podem gerar, sob
certos dados, erros consideraveis de modo a tornar in util o resulstado.
Vejamos agora outro tipo de instabilidade.
2.6.2 Instabilidade de problemas
Consideremos a tarefa de colocar um lapis comum, de base plana, em pe.
Se a base for colocada para baixo, a terefa sera facil; contudo, se a parte
conica da ponta car para baixo, a tarefa e quase impossvel (sem truques).
A primeira tarefa constitui um problema estavel, enquanto a segunda e dita
instavel, pois, efetivamente, se o lapis car em pe, sera apenas por algumas
fracoes de segundo e depois caira. Algo semelhante ocorre com problemas
numericos.
Veremos agora um problema classico em metematica Numerica que e
citado em [26[ Wilkinson.
Exemplo 2.6.6.
p(x) = x
20
210x
19
+. . . = (x1)(x2)(x3) . . . (x19)(x20) = 0

E claro que as razes sao 1, 2, 3, . . . , 19 e 20 e estao bem separadas.


Computando as razes de p(x) + 2
23
210x
19
= 0, num computador com
sistema de ponto utuante T = F(2, 90, e
1
, e
2
), teremos:
2.6. INSTABILIDADE 39
R
1
= 1.000 000 000
R
2
= 2.000 000 000
R
3
= 3.000 000 000
R
4
= 4.000 000 000
R
5
= 4.999 999 928
R
6
= 6.000 006 944
R
7
= 6.999 697 234
R
8
= 8.007 267 603
R
9
= 8.917 250 249
R
10
, R
11
= 10.095 266 145 0.643 500 904i
R
12
, R
13
= 11.793 633 881 1.652 329 728i
R
14
, R
15
= 13.992 358 137 2.518 830 070i
R
16
, R
17
= 16.730 737 466 2.812 624 894i
R
18
, R
19
= 19.502 439 400 1.940 330 347i
R
20
= 20.846 908 101
Notemos que um termo da equacao mudou de 210
19
para 210 +
2
23
x
19
, ou seja, uma mudanca no trigesimo dgito da base 2 em apenas
um dos coecientes. O resultado e completamente inesperado e as mu-
dancas nas razes sao grandes. A razao dessa mudanca drastica nao e
arredondamento nem o algoritmo e sem problema de condicionamento.
Ha certos problemas que, quando sofrem pequena alteracao nos dados
de entrada, tem na sua resposta pequena diferenca proporcional, enquanto
outros mostram grande variacao no resultado do mesmo com uma pequens-
sima alteracao nos dados de entrada. Os primeiros problemas sao ditos bem
condicionados e os segundos sao ditos mal condicionados.
No caso de polinomio podemos analisar o seguinte:
Seja p(x, ) = x
20
x
19
+ . . .
Deferanciando p(x, ) = 0 em relacao a , temos:
p(x, )
x
x

+
p(x, )

= 0
40 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
x

=
p/
p
x

=
x
19

20
i=1

20
j=1, j=i
(x j)
Calculando em cada raiz, temos:
x

x=i
=
i
19

20
j=1, j=i
(i j)
, i = 1, 2, . . . , 20. (2.32)
Vejamos a seguinte tabela:
Raiz
x

[
x
= i Raiz
x

[
x
= i
1 8.2x10
18
11 4.6x10
7
2 8.2x10
11
12 2.0x10
8
3 1.6x10
6
13 6.1x10
8
4 2.2x10
3
14 1.3x10
9
5 6.1x10
1
15 2.1x10
9
6 5.8x10
1
16 2.4x10
9
7 2.5x10
3
17 1.9x10
9
8 6.0x10
4
18 1.0x10
9
9 8.3x10
5
19 3.1x10
8
10 7.6x10
6
20 4.3x10
7
Estes n umeros dao uma medida direta da sensibilidade ou condiciona-
mentodas razes para o coeciente . Logo, as razes maiores sao as mais
sensveis. Na unidade quatro voltaremos a falar do condicionamento das
razes de equacoes nao lineares.
Exemplo 2.6.7. Dada uma curva y = f(x), determinar a tangente a
essa curva em x = x
0
, assim como a area limitada por esta curva e as retas
x = a, x = b, e y = 0.
2.6. INSTABILIDADE 41
Vira gura
Figura 2.5: Estabiladade da integracao e instabildade da diferenciacao
Se pequenas variacoes ocorrerem em f(x) em virtude, por exemplo, de
arredondamento ou truncamento, podemos ter grandes variacoes no calculo
da tangente `a curva no ponto (x
0
, f(x
0
)), como pode ser visto na Figura
2.5, onde a curva g constitui uma perturbacao na curva f.
No entanto, a area sob a curva f ou g mantem-se praticamente a mesma.
Exemplo 2.6.8. Consideremos a equacao diferencial:
y
/
(x) = y 0 x 1.0
y(0) = 1
(2.33)
Aproximando y
/
()x por:
(h/2)[3y(x) + 4y(x + h) y(x + 2h)]
Obtido pela aproximacao de y(x) por um polinomio do 2
o
grau e asso-
ciando y(x) com y
i
, y(x + y) com y(x + 2y) com y
i+2
, temos:
y
i+2
= 4y
i+1
3y
i
2hy
i
i = 0, 1, 2, . . .
Onde y
0
= 1 e y
1
= e
h
.
Se tomarmos h = 0.1, teremos:
42 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
y
2
= 1.220 683 672
y
3
= 1.346 187 75
y
4
= 1.478 563 25
y
5
= 1.606 452 2
y
6
= 1.694 406 4
y
7
= 1.636 978 56
y
8
= 1.225 813 76
y
9
= -0.735 076 352
y
10
= -6.542 909 44
E da deveramos ter em uma aproximacao para y(1) = e. Contudo, y
10
nada tem a ver com y(1).
Os dois ultimos exemplos mostram que a diferenciacao pode ser um
problema numericamente mais instavel do que a integracao. Contudo, do
ponto de vista analtico o processo da diferenciacao de funcoes que surgem
na pratica e mais simples do que a integracao.
Com isso, concluimos esta unidade mostrando alguns problemas que a
Matematica Numerica lida em funcao da aritmetica feita numa maquina
como um computador digital. Felizmente, os problemas causados pelo
arredondamento ou pelo condicionamento dos problemas nao sao maiores
que as vantagens do uso do computador. Estes exemplos devem levar-nos
a pensar que nao devemos em qualquer hipotese conar cegamente nos
resultados produzidos pela maquina.
.1. INTRODU C

AO 157
Topicos sobre a Norma IEEE 754
.1 Introducao
Historicamente existem alguns marcos na representacao dos n umeros tanto
dos naturais ou inteiros como dos racionais como reais. Na notacao decimal
o uso do zero e o sistema posicional foi um deles. Isto facilitou nao so a
representacao em si, como tambem os algoritmos de operacoes aritmeticas
tornaram-se mais simples. Neste sistema a representacao de n umeros de
forma nita ou de fracoes periodicas ou nao, esta bem estabelecido e usado
de modo mundial.
Com o advento dos computadores e sua memoria com palavras de tamanho
nito tornaram-se necessarios criar novas representacoes. Os n umeros in-
teiros sao representados com sistemas de ponto xo. Para estes, usualmente
temos a representacao usando o codigo de complemento de dois, para re-
presentar adequadamente o zero, os positivos e negativos. Para os n umeros
racionais sao usados os sistemas de ponto utuante. Os n umeros reais, sao
aproximados por racionais. De fato em qualquer sistema de ponto utuante
so temos representacoes para racionais. Isto traz varios problemas com os
arredondamentos.
Ate a decada de 80 cada fabricante de computador escolhia um sistema de
representacao e o implementava e todos os demais aplicativos de software
que usariam estas maquinas usavam necessariamente este sistema. Por
exemplo, no software basico de mainframes com IBM usava-se um tipo de
representacao, com base interna de 16, onde o n umero de ponto utuante
era representado com mantisa, sinal da mantissa e caracterstica que re-
presentava o exponte sem sinal, fazendo um deslocamento. Ja nos antigos
computadores Burroughs ou CDC, usava-se base 8 e o n umero de ponto
utuante possui, sinal da mantissa, mantissa, expoente e sinal do expoente.
Com a difusao de computadores de pequeno porte onde a exibilidade
de aplicativos tornou-se maior, foi necessario desenvolver um padrao para
viabilizar o uso, reuso e intercambio de informacoes sobre a aritmetica de
158 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
ponto utuante de modo mais uniforme. Estes problemas foram estudados
por um comite do Instituto de Engenharia Eletrica e Eletronica do Estados
Unidos da America do Norte.
3
O objetivo da Norma IEEE 754 e estabelecer as diretivas para a imple-
mentacao da aritmetica binaria de ponto utuante. Ela especica formatos,
operacoes basicas: adicao subtracao, multiplicacao, divisao, raiz quadrada,
comparacoes, conversoes, e quais sao as situacoes de excessao. A norma
IEEE 854-1987 generaliza a 754 e abrange a aritmetica de ponto utuante
na base decimal, que e usada principalmente nas calculadoras.
Embora a Norma propicie suporte para para diagnosticar certas situacoes
de risco, isto nem sempre e implementado pelo fabricante em sua totalidade.
O link da IEEE onde pode-se comprar a norma e www.ieee.org.
ou http://standards.ieee.org/
O link para mais informacoes e onde existem artigos como o do David
Goldberg e outros e http://grouper.ieee.org/groups/754/
Um link muito interessante, criada por Quanfei Wen e:
http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html
.2 Formatos
Toda a maquina ou qualquer instrumento material tem implicitamente uma
limitacao fsica. Por exemplo, uma ta metrica comum nao serve para medir
corretamente com milmetros e sim apenas com centmetros; se usarmos um
paqumetro, podemos medir corretamente com milmetros. Uma maquina
como um carro tem um limite maximo de velocidade. Para atingir veloci-
dades maiores temos que usar outro tipo de carro ou ate mesmo outro tipo
de veculo, como um aviao. Estas limitacoes estao associadas `a precisao.
No caso de calculos feitos em maquinas digitais temos a chamada precisao
simples, dupla ou precisao extendida que dependem de varios parametros
estabelecidos pelo hardware, como tamanho em bits da palavra de memoria,
3
Institute of Electrical and Electronics Engineers: IEEE ou EYE triple E.O IEEE e uma sociedade cujos membros
sao tecnicos prossionais da area de engenharia eletronica, eletrica e atualmente de computacao e outras tecnologias
emergentes.
.2. FORMATOS 159
tamanho de registradores especiais, n umero de bits extras da palavra de
memoria, como os tagsbits ouagsque indicam a paridade, qual o tipo
de conte udo, underow, overow, divisao por zero, operacao invalida ou
outros indicadores para o sistema operacional.
Na Norma sao assumidos as seguintes denicoes:
N umero de Ponto Flutuante Binario

E uma seq uencia de dgitos binarios armazenados em bits, composto


de 3 campos, O bit mais signicativo e o sinal da mantissa, 0 para
positivo e 1 para negativo; um expoente deslocado (biased em ingles)
e uma mantissa que contem a parte fracionaria.
N umero Normalizado

E o n umero de ponto utuante cujo expoente esta dentro dos limites e


a mantissa representa qualquer fracao binaria.
Expoente

E o mesmo expoente da denicao usual de n umero de ponto utuante,


ou seja, e o expoente da base 2 nao deslocado, ou seja, not-biased.
Expoente biased ou Caracterstica

E a soma de uma constantebiascom o expoente gerando um expoente


deslocado, para evitar que tenhamos que armazenar um sinal para
o expoente, o que diculta os algoritmos aritmeticos. Nas maquinas
IBM era chamado de Caracterstica para nao confundir com o expoente
normal.
N umero Desnormalizado

E um n umero nao nulo cujo expoente tem um valor reservado, usual-


mente o valor mnimo e cujo primeiro bit da mantissa e 0.

E util para
representar os n umeros que cam na regiao de underow.
Mantissa ou Fracao
160 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA

E uma seq uencia de bits que representa a mantissa da denicao usual


e que de fato possui como primeiro bit o valor 1 que se torna implcito,
antes do ponto separador que tambem e implcito.
Innitos e Zeros
Com as possibilidades de bits temos duas conguracoes para o zero:
+0 e 0, o que e comum em certos codigos, e dois innitos: +, .
NaN: Nao e um n umero de ponto utuante

E uma seq uencia de bits que possui valores indenidos e representam


operacoes invalidas.
Para cada formato temos a seguinte expressao:
(1)
S
2
e
(b
0
.b
1
b
2
b
3
. . . b
n1
)
onde S=0 se a mantissa for positiva ou S=1, se for negativa, E
min
e
E
max
, o valor b
0
tem o valor 1, na base binaria e assume-se que este 1
/
econstante e ca subentendido e nao ocupa um espaco ou bit; os demais
dgitos binarios sao nulos ou 1.
No formato simples temos 32 bits dispostos na seguinte forma:
Quantidade de bits 1 8 23
Conte udo Sinal Expoente fracao
Bits 31 30, 29, . . . 23 22,21 . . . 1, 0
Com esta conguracao temos as seguintes possibilidades:
.3. EXEMPLOS 161
Classe Sinal Exp Fracao
Zeros 1 0 0
0 0 0
N umero Normalizado 0 1-254 qualquer
1 1-254 qualquer
N umero Desnormalizado 0 0 nao nulo
1 0 nao nulo
Innitos 0 255 0
1 255 0
NaN( Not a Number) 255 nao nulo
No formato duplo temos 64 bits dispostos na seguinte forma:
Quantidade de bits 1 11 52
Conte udo Sinal Expoente fracao
Bits 63 62, 61, . . . 50 51,50 . . . 1, 0
Para outros formatos temos o seguinte resumo:
Parametro Formato
Basico Basico Duplo Duplo
single Estendido double Estendido
n (precisao) 24 32 53 64
E
max
+127 1023 +1023 16383
E
min
-126 1022 16382
Bias +127 Nao +1023 Nao
especicado especicado
Bits do expoente 8 11 11 15
Total em bits 32 43 64 79
.3 Exemplos
Estes exemplos se referem ao formato simples, que correspondem ao tipo
oat na linguagem C ou Real em Pascal nos atuais PC com palavra
162 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
basica de 32 bits ou 4 bytes. Na linguagem C, atraves das bibliotecas de
I/O a especicacao de formato % converte o conte udo apontado para a
sada desejada.
especicador o argumento e
convertido para a
d ou i int notacao decimal de
inteiro com sinal
o int valor octal sem sinal
sem os zeros nais
x ou X int notacao hexadecimal, sem os
zeros nao signicativos
u int notacao decimal sem sinal
e ou E oat or notacao decimal cientca
double com []m.mmm. . . mE[]nnn
f oat or notacao decimal
double com []mmmm.nn. . . n
g ou G oat or usa a forma mais curta dentre e ou f
double e sem os zeros nao signicativos
u int notacao hexadecimal, sem sinal
p pointer endereco armazenado num ponteiro
O formato %p.qf indica que serao usadas p espacos para o n umero, con-
tando o sinal e o ponto, e q indica o n umero de casas decimais apos o
ponto.
Observacoes:
Muito cuidado e necessario ao usar os formatos adequados ao tipo de
variavel.
1. No caso de inteiros a linguagem C, como normalmente e implementada
nao avisa sobre o overow ou underow.
2. A divis ao por zero nao causa uma interrupcao em si, embora quando
o valor e impresso temos: (1/0) = 1.#INF00. e seu conte udo ca:
7f800000x = (0[111 1111 1[00000 . . . 0)
2
que sinaliza +. Se este
.4. EXEMPLOS 163
valor for reusado o processo de inderterminacao continua.
3. Se por exemplo, o valor (1.0/0.0) e somado a 10.0 temos: (1/0 1 +
10)
f
= 1.40445e + 306
4. No caso de oat ....
.4 Exemplos
Exemplo .4.1. Indicar a conguracao de bits que assumem os seguintes
valores:
1. oat num=357.8125;
(a) Convertendo para binario:
(357.8125)
10
= (1 0110 0101.1101)
2
(b) Deslocar o ponto fracionario:
(357.8125)
10
= (1.0110 0101 1101)
2
2
+8
(c) Completar a mantissa ate completar os 23 bits ou preencher com
zeros o que faltar
m = 011 0010 1110 1000 0000 0000
Lembrar que o primeiro 1 ca subentendido e foi cortado, e comecamos
a preecher do bit mais signicativo, da esquerda para direita.
(d) Deslocando o expoente: Somar a constante do bias=127
127 + 8 = 135 = (1000 0111)
2
(e) Preencher o expoente com o resultado do item anterior.
Se nao houver 8 bits preencher com zeros.
(f) Determinar o sinal da mantissa.
S = 0
164 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
(g) Juntando as partes:
(357.8125)
10
= 0[100 0011 1[011 0010 1110 1000 0000 0000
ou ainda em hexa:
(357.8125)
10
= 43b2e800x
Se o n umero fosse negativo, caramos com:
(357.8125)
10
= c3b2e800x
Atencao, isto nao e converter o n umero para a base 16.
Exemplo .4.2. Seja agora o caso de n umeros inteiros: int i=-357; int
j=357;
Usa-se o complemeto de 2.
1. Convertendo para binario e completando com zeros:
357 = (1 0110 0101)
2
357 = (0 . . . 0 0001 0110 0101)
2
2. Fazendo o complemento de 2:
1 . . . 1 0 1001 1010
+ 1
1 . . . 1 1110 1001 1011
3. para o valor positivo, nao e necessario nenhuma outra conta, alem da
convers ao inicial.
Logo:
(357)
10
= 00000165x
(357)
10
= fffffe9bx
.4. EXEMPLOS 165
Exemplo .4.3. Outro n umero real float num = 951.339 843 75;
1. Convertendo para binario:
(951.33984375)
10
= (11 1011 0111.0101 0111)
2
2. Deslocar o ponto fracionario:
(951.33984375)
10
= (1.11011011101010111)
2
) 2
9
3. Completar a mantissa ate completar os 23 bits ou preencher com zeros
o que faltar
m = 1.11011011101010111000000
4. Deslocando o expoente: Somar a constante do bias=127
127 + 9 = 136 = (1000 1000)
2
5. Preencher o expoente com o resultado do item anterior.
Se nao houver 8 bits preencher com zeros.
6. Determinar o sinal da mantissa.
S = 1
7. Juntando as partes:
(951.33984375)
10
= 1[100 0100 0[110 1101 1101 0101 1100 0000
ou ainda em hexa:
(951.33984375)
10
= c46dd5c0x
Se o n umero fosse positivo, caramos com:
(951.33984375)
10
= 446dd5c0x
166 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Exemplo .4.4. Consideremos um n umero real com precisao dupla:
1. double x=245.;
2. Convertendo para binario:
(245.)
10
= (1111 0101)
2
3. Deslocar o ponto fracionario:
(245.)
10
= (1.111 0101)
2
2
+7
4. Completar a mantissa ate completar os 52 bits ou preencher com zeros
o que faltar
m = 111 0101 0000 000 . . . 0000
Lembrar que o primeiro 1 ca subentendido e foi cortado, como na
precisao simples e comecamos a preecher do bit mais signicativo, da
esquerda para direita.
5. Deslocando o expoente: Somar a constante do bias=1023 = 2
10
1
1023 + 7 = 1030 = (100 0000 0110)
2
6. Preencher o expoente com o resultado do item anterior.
7. Determinar o sinal da mantissa.
S = 0
8. Juntando as partes:
(245.)
10
= 0[100 0000 0110 1110 1010 0000 . . . 0000
ou ainda em hexa:
(245)
10
= 406ea000 00000000x
.5. ARREDONDAMENTOS 167
.5 arredondamentos
O arredondamento e um ponto crtico da aritmetica de ponto utuante.
Para fazer o arredondamento de modo correto e necessario evitemente con-
hecer os demais dgitos do resultado. De fato nas unidades de aritmetica
existem mais informacoes do que e mostrado na palavra de memoria.

E a
aprtir destas informacoes que e calculado o arredondamento.
Existem 4 tipos de arredondamento denidos na norma.
Unbiased: arredonda para o mais proximo
Direcionado ao Zero
Direcionado ao innito positivo
Direcionado ao innito negativo
Sera continuado.
Revisao de Calculo
O seguintes resultados sao vistos nos cursos basicos e as referencias estao
na Bibliograa.
168 CAP

ITULO 2. INTRODU C

AO
`
A ARITM

ETICA DE M

AQUINA
Referencias Bibliogracas
[1] Lamport, L., LaTeX : A Documentation Preparation System Users
Guide and Reference Manual, Addison-Wesley Pub Co., 2nd edition,
August 1994.
[2] Forsythe, G.E.;Malcom, M.A. & Moler

C.B. Computer Methods for


mathematical computations Englewood Clifs, Prentice Hall, 1977.
[3] Pennington, R.H. Introductory computer methods and numerical
analysis. New York, MacMilan, 1965.
169

Anda mungkin juga menyukai