Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos...

40

Transcript of Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos...

Page 1: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

Métodos Numéricos para Engenheiros com Scilab

Sérgio Galdino

26 de Setembro de 2013

Page 2: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa
Page 3: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

Capítulo 1

Erros em computações

numéricas

1.1 Glamour da computação

A opinião geral é que computadores são capazes de fazer operações aritmé-ticas rapidamente e com grande exatidão. Em parte correta quando com-parada ao cálculo manual. Por exemplo, taxas típicas para multiplicaçãomanual de números são 0.05s−1 ( são 20s para efetuar uma multiplicação)enquanto num computador são tipicamente maiores que 106s−1 chegandofacilmente a 1012s−1 em supercomputadores. Os cálculos computacionaissuperam em várias ordens de magnitude os cálculos manuais, permitindo,assim, enfrentar verdadeiros desa�os computacionais. Só para produzir oefeito psicodélico pode ser dito que em 1 segundo um computador de 106/spode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa iráfazer manualmente em sua vida inteira. Desviando-se do glamour da compu-tação, este capítulo dará bases pra mostrar que resultados de computaçõesnuméricas devem ser vistas com cautela.

1.2 Análise numérica versus análise matemática

A análise matemática (no cotidiano) e análise numérica diferem muito quandosão utilizadas. A análise matemática normalmente assume uma representa-ção in�nita para números e processos, enquanto computações numéricas sãorealizadas em maquinas �nitas em tempo �nito. A representação �nita dosnúmeros em uma máquina produz erros de arredondamento, enquanto a re-presentação �nita de um processo produz erro de truncamento:

Exemplos:

Números:

π = 3.1415926535 . . . (1.1)

3

Page 4: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

4 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

1

3= 0.33333 . . . (1.2)

Processos:∫ b

af(x)dx = lim

∆xi→0

n∑i=1

f(xi)∆xi, ∆xi = (xi+1 − xi) (1.3)

df(x)

dx= lim

∆x→0

(f(x+∆x)− f(x)

∆x

)(1.4)

Grande parte da matemática é sensível aos efeitos produzidos pelo arre-dondamento numérico; esta vulnerabilidade é que os estatísticos chamam de"não é robusto".

Esta diferença é fundamental, pois somente partes da matemática resis-tente aos erros de arredondamentos são úteis em matemática aplicada aomundo real.

Signi�cados diferentes surgem para as mesmas palavras. A expressão ze-ros de um polinômio pode ter vários signi�cados em computação e um únicosigni�cado em matemática (ver [4] sec 1.10).

A matemática lida preferencialmente com teoremas exatos e precisos;análise numérica usa muitos métodos heurísticos. A existência de um te-orema não é su�ciente em cálculos computacionais. Estas diferenças sãomuitas vezes sérias e conduzem a grandes desentendimentos.

1.3 Dígitos signi�cativos, precisão, exatidão e erros

Quando se trata com valores numéricos e cálculos numéricos, existem váriosconceitos que devem ser considerados: ,

1. Dígitos signi�cativos

2. Precisão e exatidão

3. Representação do número

4. Erros

Os três primeiros conceitos são discutidos brevemente nesta seção e osdemais nas próximas.

Dígitos signi�cativos

Page 5: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 5

Os algarismos signi�cativos, ou dígitos signi�cativos em um número, sãoos dígitos do número que se sabe serem corretos. Cálculos de engenharia ecientí�cos geralmente começam com um conjunto de dados com um númerolimitado de dígitos signi�cativos. Quando estes números são processadosatravés de um algoritmo numérico, é importante estimar quantos dígitos sig-ni�cativos estão presentes no resultado �nal computado.

Precisão e Exatidão

Precisão refere-se a quão próximo um número representa o número queele está representando.

Exatidão refere-se a quão próximo um número está do valor real do nú-mero que está representando quanti�cado pelo erro absoluto ou relativo. Otermo precisão refere-se a exatidão com as quias as operações aritméticas sãorealizadas. A precisão é governada pelo número de dígitos a ser utilizado noscálculos numéricos. A exatidão é regida por erros na aproximação numérica.Precisão e exatidão são quanti�cados pelos erros de cálculos numéricos.

1.4 Computações Numéricas

A aritmética das máquinas digitais (computadores, calculadoras, ...) nãoé a mesma que é usada em cursos de cálculo ou álgebra. Assume-se comoa�rmações verdadeiras que 2 + 2 = 4, 22 = 4, e (

√2)2 = 2. Na aritmética

padrão das máquinas digitais as duas primeiras são verdadeiras mas a terceiranão. Para entender poque isto é verdadeiro deve-se explorar o mundo daaritmética de precisão �nita utilizada por máquinas digitais.

1.4.1 Representação

O sistema de numeração decimal é o mais usado pelo homem nos dias dehoje. O número 10 tem papel fundamental, é chamado de base do sistema.Os símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, são usados para representar qual-quer grandeza. O fato de o sistema decimal ser largamente utilizado temevidentemente razões históricas, pois na realidade qualquer número inteiromaior que 1 poderia ter sido escolhido. De fato, no mundo dos computadoresdigitais o sistema binário é o utilizado. O número 2 é a base do sistema e ossímbolos 0 e 1 servem para representar uma grandeza qualquer. Ao lado dosistema binário, os sistemas octal, hexadecimal, base 8 e 16 respectivamente,são também utilizados. Isto ocorre pelo fato de que cada símbolo octal ehexadecimal representa um equivalente a três e quatro símbolos no sistemabinário e vice-versa.

Page 6: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

6 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

1.4.2 Conversão

Dado um número x representado na base N, isto é, na N-representação, e nósqueremos saber como representa-lo na base M, isso é, na M-representação.Temos então a equação:

x = amNm + · · ·+ a1N1 + a0N

0 + a−1N−1 + · · ·+ a−nN

−n

= bjMj + · · ·+ b1M

1 + b0M0 + b−1M

−1 + · · ·+ b−kM−k (1.5)

onde os coe�cientes am, am−1, · · · , a1, a0, a−1, · · · , an−1, a−n são conhe-cidos e os coe�cientes bj , bj−1, · · · , b1, b0, b−1, · · · , bk−1, b−k devem serdeterminados. Observe que bj , bj−1, · · · , b1, b0, b−1, · · · , bk−1, b−k devemser expressos com símbolos de dígitos da N-representação. Para realizar aconversão dividiremos x em uma parte inteira i e uma parte fracionária f .Nós temos i = bjM

j + · · ·+ b1M1+ b0M

0, e dividindo i por M nós obtemosum quociente q1 e um resto r1 = b0. Continuando, dividiremos q1 por M ,nós conseguiremos q2 e o resto r2 = b1, e, obviamente, b0, b1, b2, · · · são osrestos consecutivos quando i é dividido repetitivamente por M . De formasemelhante nós encontramos a parte fracionária como as partes inteiras con-secutivas quando f é multiplicado repetitivamente por M e a parte inteiraé removida. Os cálculos devem ser feitos na N-representação e M deve sertambém dado nesta representação.

Exemplo 1 Conversão o número decimal 261, 359 para a representação bi-

nária.

Conversão: Decimal para binário

Inteiro: Divisão sucessiva do número decimal por 2

261 21 130 2

0 65 21 32 2

0 16 20 8 2

0 4 20 2 2

0 1

O número inteiro binário é obtido através dos restos das divisões escritos

na ordem inversa da sua obtenção. Então 26110 = 1.0000.01012.

Fração: Multiplicação sucessiva da fração decimal por 2

Page 7: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 7

Multiplicação Sobra

0,359x2 = 0,718 0

0,718x2 = 1,436 1

0,436x2 = 0,872 0

0,872x2 = 1,774 1

0,774x2 = 1,488 1

0,488x2 = 0,976 0

0,976x2 = 1,952 1

0,952x2 = 1,904 1

0,904x2 = 1,808 1...

......

...

A fração binária é obtida através das sobras, parte inteira, das multiplicações

escritas na ordem direta de sus obtenção. Então 0, 35910 = 0, 0101.1011.1 · · ·2.

Somando-se as partes inteiras e fracionárias dos binários obtidos têm-se

261, 35910 = 1.0000.0101, 0101.1011.1 · · ·2

Exemplo 2 Conversão o número decimal 261, 359 para a representação ter-

nária.

Conversão: Decimal para ternário

Inteiro: Divisão sucessiva do número decimal por 3

261 30 87 3

0 29 32 9 3

0 3 30 1

O número inteiro ternário é obtido através dos restos das divisões escritos

na ordem inversa da sua obtenção. Então 26110 = 100.2003.

Fração: Multiplicação sucessiva da fração decimal por 3

Page 8: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

8 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Multiplicação Sobra

0,359x3 = 1,077 1

0,077x3 = 0,231 0

0,231x3 = 0,693 0

0,693x3 = 2,079 2

0,079x3 = 0,237 0

0,237x3 = 0,711 0

0,711x3 = 2,133 2

0,133x3 = 0,399 0

0,399x3 = 1,197 1...

......

...

A fração ternária é obtida através das sobras, parte inteira, das mul-

tiplicações escritas na ordem direta de sus obtenção. Então 0, 35910 =0, 100.200.201 · · ·3. Somando-se as partes inteiras e fracionárias dos biná-

rios obtidos têm-se

261, 35910 = 100.200, 100.200.201 · · ·3

Exemplo 3 Conversão o número decimal 261, 359 para a representação hexa-

decimal.

Conversão: Decimal para hexadecimal

Inteira: Divisão sucessiva do número decimal por 16

261 165 16 16

0 1

O número inteiro hexadecimal é obtido através dos restos das divisões

escritos na ordem inversa da sua obtenção. Então 26110 = 10516.

Fração: Multiplicação sucessiva da fração decimal por 16

Multiplicação Sobra

0,359x16 = 5,744 5

0,744x16 = 11,904 11

0,904x16 = 14,464 14

0,464x16 = 7,424 7

0,424x16 = 6,784 6

0,784x16 = 12,544 12

0,544x16 = 8,704 8

0,704x16 = 11,264 11

0,264x16 = 4,224 4...

......

...

Page 9: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 9

Tabela 1.1: Símbolos Hexadecimais.

Grandeza Símbolodecimal hexadecimal

0 01 12 23 34 45 56 67 78 89 910 A11 B12 C13 D14 E15 F

A fração hexadecimal é obtida através das sobras, parte inteira, das mul-

tiplicações escritas na ordem direta de sus obtenção. Então

0, 35910 = 0, 5 11 14 7 6 12 8 11 4 · · ·16

ou utilizando-se os símbolos hexadecimais (Tabela 1.1)

0, 35910 = 0, 5BE.76C.8B4 · · ·16

Somando-se as partes inteiras e fracionárias dos binários obtidos têm-se

261, 35910 = 105, 5BE.76C.8B4 · · ·16

Conv10.sce

Este roteiro Scilab realiza a conversão de inteiros na base 10 para basequalquer.

1. // Conversão de inteiros da base 10 para uma base qualquer

2. function y=conv10(x,b)

3. y=''

4. while x > 0

5. cx=modulo(x,b)

6. x=int(x/b)

7. y=string(cx)+'.'+y

Page 10: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

10 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

8. end

9. endfunction

Ao executar o roteiro Conv10.sce pode-se realizar as conversões. Aquiestão os resultados:

-->conv10(261,2)

ans =

1.0.0.0.0.0.1.0.1.

-->

-->conv10(261,3)

ans =

1.0.0.2.0.0.

-->

-->conv10(261,16)

ans =

1.0.5.

-->

ConvF10.sce

Este roteiro Scilab realiza a conversão de fracionários na base 10 parabase qualquer.

1. // Conversão de fracionários da base 10 para uma base qualquer

2. function y=convF10(x,b,n)

3. y='0,'

4. i=0

5. while i < n

6. p=x*b

7. cx=int(p)

8. y=y+string(cx)+'.'

9. x=p-cx

10. i=i+1

11. end

12. endfunction

Ao executar o roteiro ConvF10.sce pode-se realizar as conversões. Aquiestão os resultados:

-->convF10(0.359,2,9)

ans =

0,0.1.0.1.1.0.1.1.1.

-->

-->convF10(0.359,3,9)

ans =

Page 11: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 11

0,1.0.0.2.0.0.2.0.1.

-->

-->convF10(0.359,16,9)

ans =

0,5.11.14.7.6.12.8.11.4.

-->

Conv10X.sce

Este roteiro Scilab realiza a conversão de um número na base 10 parabase qualquer (combina Conv10.sce e ConvF10.sce ) .

1. // Conversão da base 10 para uma base qualquer: Inteiro + Fração

2. function y=conv10X(xx,b,n)

3. x=int(xx)

4. yi=''

5. while x > 0

6. cx=modulo(x,b)

7. x=int(x/b)

8. yi=string(cx)+'.'+yi

9. end

10. y=yi

11. x=xx-int(xx)

12. yf=','

13. i=0

14. while i < n

15. p=x*b

16. cx=int(p)

17. yf=yf+string(cx)+'.'

18. x=p-cx

19. i=i+1

20. end

21. y=y+yf

22. endfunction

Ao executar o roteiroConv10X.sce pode-se realizar as conversões. Aquiestão os resultados:

-->conv10X(261,2,0)

ans =

1.0.0.0.0.0.1.0.1.,

-->

-->conv10X(0.359,2,9)

ans =

,0.1.0.1.1.0.1.1.1.

-->

-->conv10X(261.359,2,9)

ans =

Page 12: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

12 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

1.0.0.0.0.0.1.0.1.,0.1.0.1.1.0.1.1.1.

-->

-->conv10X(261,16,0)

ans =

1.0.5.,

-->

-->conv10X(0.359,16,9)

ans =

,5.11.14.7.6.12.8.11.4.

-->

-->conv10X(261.359,16,9)

ans =

1.0.5.,5.11.14.7.6.12.8.11.4.

-->

1.4.3 Conversão de uma base qualquer para base 10

Para obter-se o número decimal equivalente a um número escrito em qualquerbase é só multiplicar cada dígito por sua potência:

Exemplo 4 261, 35910 ∼= 1.0000.0101, 0101.1011.12

Parte inteira

1 · 28 + 0 · 27 + 0 · 26 + 0 · 25 + 0 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 0 · 20= 261

Parte fracionária

0 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 + 1 · 2−5 + 0 · 2−6 + 1 · 2−7+1 · 2−8 + 1 · 2−9 ∼= 0, 3574

Erro

|261, 359− 261, 3574| = 0, 0016

Exemplo 5 261, 35910 ∼= 100.200, 100.200.2013

Parte inteira

1 · 35 + 0 · 34 + 0 · 33 + 2 · 32 + 0 · 31 + 0 · 30= 261

Page 13: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 13

Parte fracionária

1 · 3−1 + 0 · 3−2 + 0 · 3−3 + 2 · 3−4 + 0 · 3−5 + 0 · 3−6 + 2 · 3−7+0 · 3−8 + 1 · 3−9 ∼= 0, 35899

Erro

|261, 359− 261, 35899| = 0, 00001

Exemplo 6 261, 35910 ∼= 105, 5 11 14 7 6 12 8 11 416 ou seja,

261, 35910 ∼= 105, 5BE.76C.8B416

Parte inteira

1 · 162 + 0 · 161 + 5 · 160 = 261

Parte fracionária

5

161+

11

162+

14

163+

7

164+

6

165+

12

166+

8

167+

11

168+

4

169

∼= 0, 35899999999674

Erro

|261, 359− 0, 35899999999674| ∼= 3, 24× 10−12

1.4.4 Representação de um número inteiro

A representação de um número inteiro num computador qualquer quetrabalha internamente com uma base �xa β ≥ 2 (um número inteiro); sendogeralmente escolhido como uma potência de 2.

Dado um número inteiro n ≥ 0, ele possui uma única representação,

n = ±(nknk−1 · · ·n1n0)= ±(nkβ

k + nk−1βk−1 + · · ·+ n1β

1 + n0β0),

(1.6)

onde os ni, i = 0, 1, · · · , k são inteiros satisfazendo 0 ≤ ni < β e nk = 0.

Por exemplo, na base β = 10, o número 1957 é representado por:

1957 = 1× 103 + 9× 102 + 5× 101 + 7× 100

e é armazenado como n3n2n1n0.

Page 14: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

14 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

1.4.5 Representação de um número real

A representação de um número real no computador pode ser feita de duasmaneiras:

a) Representação do ponto �xo

Este foi o sistema usado, no passado, por muitos computadores. Sendo aindausado por ser simples em aplicações de microprocessadores. Um número real,x = 0, ele será representado em ponto �xo por:

x = ±−l∑i=k

xiβi (1.7)

onde k e l são o comprimento da parte inteira e fracionária do número x,respectivamente.

Por exemplo, na base β = 10, o número 1957.325 é representado por:

1957.325 = +−3∑i=3

xiβi

= 1× 103 + 9× 102 + 5× 101 + 7× 100 + 3× 10−1 + 2× 10−2 + 5× 10−3

e é armazenado como x3x2x1x0.x−1x−2x−3.

b) Representação do ponto-�utuante

Em geral, um número x na representação do ponto-�utuante tem a forma seguinte:

x = ±m · βk (1.8)

onde

m = mantissa, um número fracionário em ponto �xo, isto é, m =

n∑i=l

m−iβ−i

(onde l > 0, frequentemente l = 1, tal que se x = 0, então m−1 = 0; 0 ≤ m−i < β,i = 1, 2, · · · t, com t a quantidade de dígitos signi�cativos ou precisão do sistema ,β−1 ≤ m < 1 e −m ≤ k ≤ M) ;

β = base, 2 se o sistemas de numeração for binário, 10 se o sistema denumeração for decimal, etc.;

k = expoente, um inteiro.

Observação 1 m−1 = 0 ou1

β< m < 1 (signi�ca que devemos ter um digito não

nulo após a virgula) caracteriza o sistema de números em ponto �utuante normali-zado.

Observação 2 o número zero pertence a qualquer sistema e é representado commantissa igual a zero e k = −m.

Page 15: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 15

Exemplo 7 Escrever o número N = −19.2 · 10−8 em ponto �utuante na formanormalizada.

Reescrevendo o número para a forma N = −0.192 · 10−6 , o número �ca na re-presentação do ponto-�utuante, o expoente é igual a -6, a mantissa é igual a -0.192e a base é 10.

Escrevendo agora os números: x1 = 0.53;x2 = −8.472;x3 = 0.0913;x4 =35391.3 e x5 = 0.0004 , onde todos estão na base β = 10, em ponto �utuante naforma normalizada:

x1 = 0.53 = 0.53× 100,x2 = −8.472 = −0.8472× 101,x3 = 0.0913 = 0.913× 10−1,x4 = 35391.3 = 0.353913× 105,x5 = 0.0004 = 0.4× 10−3.

Para representarmos um sistema de números em ponto �utuante normalizado,na base β, com t dígitos signi�cativos e com limites do expoente m e M , usa-se anotação: FN (β, t,m,M).

Um número em FN (β, t,m,M) será representado por:

±0.m−1m−2m−3 · · ·m−t × β−k (1.9)

onde m−1 = 0 e −m ≤ k ≤ M .

Exemplo 8 Considere o sistema FN (10, 3,−2, 2). Represente nesse sistema osnúmeros do exemplo anterior.Solução: Os número serão representado por ±0.m−1m−2m−3 · · ·m−t×β−k, onde−2 ≤ k ≤ 2. Então:

x1 = 0.53 = 0.53× 100,x2 = −8.472 = −0.8472× 101,x3 = 0.0913 = 0.913× 10−1,x4 = 35391.3 = 0.353913× 105,x5 = 0.0004 = 0.4× 10−3.

Observe que os números x4 = 35391.3 e x5 = 0.0004 não podem ser representa-dos no sistema. De fato, o número 35391.3 = 0.353913× 105 tem o expoente maiorque 2, causando over�ow, por outro lado 0.0004 = 0.4× 10−3 e assim o expoenteé menor que −2 causando under�ow.

Exemplo 9 Diferença entre dois números na aritmética em ponto �utuante nor-malizada.

0.27143247 · 107−0.27072236 · 107

0.00071011 · 107Vemos que a diferença entre estes dois números ponto-�utuante normalizados,

resulta num número em ponto-�utuante não normalizado. Podemos, entretanto,normaliza-lo se deslocarmos o ponto três lugares à direita e somar -3 ao expoente,obtendo-se 0.71011000 · 104 normalizado.

Page 16: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

16 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

1.4.6 Armazenamento na memória

Para começar vamos representar o número 0.00053474839 num computador deci-mal. A notação ponto-�utuante normalizada deste número é 0.53474839 · 10−3.Par evitar expoente negativo, nós adicionamos, arbitrariamente, 50 (deslocamento)ao expoente e o número agora é 0.53474839 · 1047. O expoente somado a umaconstante arbitrária é chamado de característica. O número pode ser representado,unicamente, através da normalização da notação ponto-�utuante, na memória docomputado utilizando o esquema de representação seguinte:

+ 5 3 4 7 4 8 3 9 4 7

↘ ↘sinal característica = expoente + 50

Deve ser observado que a característica coloca o expoente limitado a expressãoseguinte: −50 ≤ k ≤ 49. O número tem o máximo de oito dígitos de precisão ea representação falha quando temos números muito grande ou muito pequeno. Demodo análogo, um número binário na representação do ponto-�utuante tambémpode ser armazenado na memória de um computador digital. Uma palavra arma-zenada tendo um bit de "sinal"e 31 bits regulares pode representar um númerobinário ponto-�utuante na forma seguinte:

0 1 8 9 31

sinal característica mantissa normalizada

ondesinal = sinal do número codi�cado, 0 se positivo e 1 se negativo;característica = 128 + expoente (resultado escrito em binário);mantissa = fração binária normalizada.

Exemplo 10 Represente o número 12.625 numa palavra de 32 bits conforme es-quema de representação acima.

12 20 6 2

0 3 21 1

Multiplicação Sobra0.625x2 = 1.25 10.25 x2 = 0.50 00.5 x2 = 1.0 1

12.62510 = 1100.1012 = 0.1100101× 24

Ajustando a característica: 4 + 128 = 132

Page 17: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.4. COMPUTAÇÕES NUMÉRICAS 17

132 20 66 2

0 33 21 16 2

0 8 20 4 2

0 2 20 1

13210 = 100001002

0 1 8 9 31

0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 . . . . . . 0

1.4.7 Aritmética do ponto-�utuante

Os princípios das operações aritméticas básicas de um computador serão discuti-dos agora. Para isto iremos considerar que estamos trabalhando num computadordecimal com uma palavra de 10 dígitos de comprimento. Princípios semelhantessão utilizados em computadores binários (digitais). Na adição ou subtração de doisnúmeros o computador examina a característica ajustada dos dois números. Osseguintes casos são possíveis:

1- Características iguais: Adiciona-se as mantissas e mantém-se a característica.

32109876 54+12340123 54

44449999 54

2- Quando existe estouro (over�ow) na adição das mantissas: O resultado seráajustado.

51319212 55+98756431 55

150075643 55↘ ↘estouro característica

Resulta em:

15007564 56↘característica ajustada

3- Características distintas: Mantém-se a de maior módulo e ajusta-se a demenor valor.

Page 18: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

18 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

31411122 55 31411122 55+12344321 53 −→ +00123443 55

31534565 55

4- Resultado com zero, ou zeros, à esquerda: Normaliza-se o resultado.

34122222 73−34000122 7300122100 73 resulta em: 12210000 71

Na multiplicação e divisão as mantissas e características são tratadas separa-damente.

31313142 51×12315782 65

mantissa = 0.31313142× 0.12315782 = 0, 038564583

característica = 51 + 65 − 50 = 66, onde −50 é o desconto para compensar oajuste +50 em cada ajuste do expoente da representação.

A produto é:

31313142 51× 12315782 65 = 038564583 66

Com a normalização obtém-se o resultado: 38564583 65

1.5 Análise de erros

Resultados exatos dos cálculos são um supremo ideal em análise numérica. Quatrotipos de erro afetam a exatidão dos cálculos [1]: erros de modelo, erros de dados,erros de algoritmos e erros de arredondamento. A maioria da literatura em línguainglesa faz classi�cação diferente. Estes erros não são conseqüências de equívocosou decisões precipitadas. Diferente, por exemplo, de erros de programação, elessão inevitáveis. Em muitos casos eles podem ser antecipados, e requerimentos deexatidão podem ser impostos, i.e., eles podem ser controlados para permaneceremabaixo de certos limites de erros. Os limites de erro são parte da especi�cação doproblema numérico:

|Erros do modelo + erros dos dados + erros de algoritmos + erro de arredondamento|≤ tolerância

Todos os erros relevantes têm que ser identi�cados e seus efeitos nos resultadosnuméricos devem ser avaliados. Nas seções seguintes os quatro tipos de erros sãocaracterizados.

1.5.1 Erros de modelo

Em qualquer processo de modelagem, várias grandezas são desprezadas. O modeloresultante é uma abstração da realidade e vários modelos podem ser utilizados.

Page 19: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.5. ANÁLISE DE ERROS 19

O desvio inevitável entre o modelo e o objeto modelado é denotado por erro demodelagem. É necessário estimar a magnitude dos efeitos dos erros de modelagempara garantir os requisitos de tolerância de erro. Normalmente tais estimativas nãosão obtidas pois os fatores envolvidos são desconhecidos e não quanti�cados.

1.5.2 Erro de dados

Geralmente modelos não são para uma aplicação especí�ca, mas para uma classede aplicações similares. Uma instância é identi�cada por valores de parâmetrosdo modelo. Por exemplo, o comprimento l, o deslocamento angular inicial θ e aconstante gravitacional g (que depende da localização geográ�ca) são parâmetrosdo modelo matemático do pêndulo simples. Devido a medições inexatas e outrosfatores, os valores usados para parâmetros do modelo diferem do verdadeiro valor(normalmente desconhecido); isto é chamado de erro de dados. Os impactos doserros de dados são objetos de análise.

1.5.3 Erro de algoritmo

Quando um problema matemático não pode ser resolvido analiticamente usandomanipulações algébricas, então pode ser tentada uma solução por algoritmo numé-rico. No desenvolvimento de algoritmos numéricos são feitas simpli�cações antesque uma formulação �nita do problema possa ser obtida para que o esforço com-putacional requerido seja reduzido a um nível razoável. O desvio resultante dosresultados obtidos pelo algoritmo dos da solução do problema matemático é deno-tado por erro de algoritmo.

Exemplo:A solução do sistema de equações

Ax = b, A ∈ Rnxn, b, x ∈ Rn

requer um esforço computacional proporcional a n3. Se uma solução aproximada xsatisfazendo

||Ax− b|| < ϵ

é su�ciente, o custo computacional pode ser reduzido signi�cativamente. Se A nãopossui estrutura especial, então somente

k ≈√κ2

ln(2/ϵ)

2, κ2 := ∥A∥2

∥∥A−1∥∥2

multiplicações matriz-vetor são necessárias para solução iterativa [3]. O número κ2

é o número condição euclidiano da matriz A (ver seção 13.8 [1]).

1.5.4 Erro de truncamento

Algoritmos numéricos implantados em um computador podem somente realizaruma seqüência �nita de operações aritméticas (adição, subtração, multiplicação,divisão e lógicas). Para calcular funções prede�nidas sin, exp, ln, . . . somenteuma seqüência �nita de operações aritméticas são executados pelo computador. Oerro devido a troca de um processo in�nito por uma seqüência �nita de operaçõesaritméticas é chamado de erro de truncamento.

Page 20: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

20 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Exemplo 11 A troca da série in�nita da exponencial:

ex =∞∑k=0

xk

k!com Pn(x) =

n∑k=0

xk

k!

produz um erro de truncamento

etrunc(x) := Pn(x)− cos(x)

que cresce com a distância entre x e zero.

1.5.5 Erros de discretização

O erro resultante de uma troca de informação contínua por informação discreta,num processo de amostragem, é referido como erro de discretização. Muitos autoresestendem o termo erro de truncamento para incluir o erro de discretização.

Exemplo 12 O cálculo de uma integral de�nida

I =

∫ b

a

f(x)dx

são aproximados por somas �nitas envolvendo uma malha de pontos xi ∈ [a, b], i =1, 2, · · ·n que pertencem ao conjunto de números de pontos �utuantes e as corres-pondentes avaliações aproximadas das funções {f(x1), · · · f(xn)}. Os erros de ar-redondamento comprometem a exatidão dos resultados quando tenta-se minimizaros erros de truncamento re�nando-se a malha de discretização.

1.5.6 Erros de arredondamento

Um computador fornece somente um conjunto �nito de números: inteiros, e númerode ponto-�utuante com mantissa de comprimento �xo. Desta forma as operaçõesfeitas num programa de computador não são geralmente executadas exatamente.Cada passo mapeia seu resultado em um dos números de ponto-�utuante disponí-veis, normalmente o mias próximo. A diferença entre o resultado exato e o resultadoarredondado de uma operação á chamado de erro de arredondamento. O efeito doserros de arredondamento acumulados sobre o resultado �nal do método de aproxi-mação é chamado de efeito de erro de arredondamento.

1.5.7 Estudo de caso

É interessante ilustrar diferentes tipos de erro mais explicitamente [13]. Suponhaque se quer computar f(x) para um dado x real. No cálculo prático x é aproximadopor x pois o computador tem uma palavra �nita. A diferença entre x− x é o erro

inicial, enquanto ϵ1 = f(x)−f(x) é o erro propagado correspondente. Normalmentef é trocado por uma função mais simples f1 (freqüentemente uma expansão em sériede potência truncada). A diferença ϵ2 = f1(x)− f(x) é o erro de truncamento. Oscálculos são feitos por um computador, portanto não são operações exatas. Narealidade calculamos f2(x) no lugar de f1(x), o qual é um valor calculado errado

Page 21: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.6. PROPAGAÇÃO DE ERROS 21

de uma função errada com argumento errado. A diferença ϵ3 = f2(x) − f1(x) é oerro de arredondamento propagado. O erro total é

ϵ = f2(x)− f(x) = ϵ1 + ϵ2 + ϵ3.

Exemplo 13 Calcular e1/3 fazendo todos os cálculos com 4 decimais. (Obs. Oscálculos foram feitas com uma calculadora)

ϵ1 = e0.3333 − e1/3 = −0.000465196

ex ≈ f1(x) = 1 +x

1!+

x2

2!+

x3

3!+

x4

4!

para x = 0.3333

ϵ2 = f1(x)− f(x) = −(0.33335

5!+

0.33336

6!+ · · ·

)= −0.0000362750

f2(x) = 1 + 0.3333 + 0.0555 + 0.0062 + 0.0005 = 1.3955

f1(x) = 1.3955296304 obtidos com 10 decimais

ϵ3 = −0.0000296304

ϵ = 1.3955− e1/3 = ϵ3 + ϵ3 + ϵ3 = −0.0001124250

1.6 Propagação de erros

Os erros são de�nidos como absoluto e relativo. Se x é o número exato e x umaaproximação, então temos:

Erro absoluto : ϵ = |x− x| (1.10)

e

Erro relativo :∣∣∣ ϵx

∣∣∣ = ∣∣∣∣x− x

x

∣∣∣∣ , (1.11)

Um número decimal é arredondado na posição n desprezando-se todos os dígi-tos à direita desta posição. O dígito na posição n é deixado inalterado ou acrescidode uma unidade se o dígito da posição n + 1 é um número menor que 5 ou maiorque 5. Se o número na posição n+1 for igual a 5, o digito na posição n é acrescidode uma unidade se ele for par e é deixado inalterado se for impar ( a regra podeser o contrário: o digito na posição n é acrescido de uma unidade se ele for impare é deixado inalterado se for par ) . Frequentemente é feito o truncamento para ndecimais onde todos os dígitos além da posição n são simplesmente desprezados.

Page 22: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

22 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Exemplo 14 3.1415926535

Arredondamento:3.14 (2d)3.141 (3d)3.1416 (4d)3.1415927 (7d)

onde (nd) = número de casas decimais.

Pode-se dizer de forma simplória que dígitos signi�cativos são aqueles que têminformação sobre a dimensão do número sem contar com a parte exponencial. Na-turalmente um dígito d localizado mais à esquerda tem mais informação do queum mais à direita. Quando um número é escrito com somente seus dígitos signi-�cativos estes formam uma cadeia de símbolos que começa com o primeiro dígitodiferente de zero. Portanto se a parte fracionária termina com um ou vários zeros,eles são signi�cativos por de�nição. Se o número é inteiro e termina com zeros,somente com o conhecimento da situação é que podemos decidir se eles são signi�-cativos ou não. Por exemplo, 8630574 escrito com 4 dígitos signi�cativos é 8630000.

Em muitos casos nós estimamos o erro de uma função f(x1, x2, . . . , xn) comerros individuais nas variáveis (x1, x2, ..., xn) conhecidos. Nós encontramos direta-mente que

∆f =∂f

∂x1∆x1 +

∂f

∂x2∆x2 + · · ·+ ∂f

∂xn∆xn (1.12)

onde os termos de ordem superior foram desprezados. O erro máximo é dado por

|∆f | =∣∣∣∣ ∂f∂x1

∣∣∣∣ |∆x1|+∣∣∣∣ ∂f∂x2

∣∣∣∣ |∆x2|+ · · ·+∣∣∣∣ ∂f∂xn

∣∣∣∣ |∆xn| (1.13)

O limite superior do erro é geralmente bastante pessimista, em computações prá-ticas os erros têm uma tendência a cancelar [13]. Por exemplo, se 20000 númerossão arredondados com quatro casa decimais e adicionados, o erro máximo é

1

2× 10−4 × 20000 = 1

O experimento com simulação Monte Carlo abaixo demonstra que a

previsão acima é pessimista para o cenário examinado.

Exemplo 15 Cálculo de z =x

y.

Se x = x+ δ e y = y+ γ são duas aproximações para os números exatos x e y.

Calcula-se z =

(x

y

)arredondado

=x

y=

x+ δ

y + γ+ ϵ

então

z ∼= z +1

y· δ − x

y2· γ + ϵ

Page 23: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.6. PROPAGAÇÃO DE ERROS 23

Caso A:

x = 8 δ = 0.009 y = 5 δ = 0.04

x = x+ δ y = y + γ

x

y= 1.6

x

y= 1.589 z +

1

y· δ − x

y2· γ + ϵ = 1.589

Caso B:

x = 8 δ = −0.07 y = 5 δ = 0.08

x = x+ δ y = y + γ

x

y= 1.6

x

y= 1.561 z +

1

y· δ − x

y2· γ + ϵ = 1.56

O erro em z é constituído dos erros propagados de x e y acrescido de um novoerro de arredondamento.

1.6.1 Cancelamento numérico

Devido ao comprimento limitado das palavras em computadores, e em conseqüênciado uso da aritmética do ponto-�utuante com representação normalizada, as leis daaritmética elementar não são satisfeitas. Os efeitos do uso da aritmética do ponto-�utuante serão vistos em alguns exemplos que seguem.

Os exemplos a seguir violam a lei associativa da adição:

Exemplo 16 (usando-se uma máquina com quatro dígitos decimais na mantissada representação)

x = 9.909 y = 1.000 z = −0.990(x+ y) + z = 10.90 + (−0.990) = 9.910x+ (y + z) = 9.909 + (0.010) = 9.919

Exemplo 17 (usando-se uma máquina com quatro dígitos decimais na mantissada representação)

Page 24: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

24 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

x = 4561 y = 0.3472

(y + x)− x = (−0.3472 + 4561)− 4561 = 4561− 4561 = 0.0000

y + (x− x) = 0.3472 + (4561− 4561) = 0.3472 + 0.0000 = 0.3472

Vejamos agora um exemplo (usando-se uma máquina com quatro dígitos deci-mais na mantissa da representação) que viola a lei distributiva.

Exemplo 18 x = 9909 y = −1.000 z = 0.999

(x× y) + (x× z) = −9909 + 9899 = −10.00

x× (y + z) = 9909× (−0.0001) = −9, 909

Exemplo 19 A equação do segundo grau x2 − b · x+ ϵ = 0 tem duas soluções:

x1 =b+

√b2 − 4ϵ

2e x2 =

b−√b2 − 4ϵ

2

Se b < 0 e ϵ << b , x2 é expresso como a diferença de dois números pratica-mente iguais e poderá perder muitos dígitos signi�cativos.

Se x2 for reescrito como:

x2 =ϵ

x1=

b+√b2 − 4ϵ

a raiz é aproximadamenteϵ

bsem perda de dígitos signi�cativos.

Usando-se uma máquina com quatro dígitos decimais na mantissa da repre-sentação:

b = 300.0 e ϵ = 1.000√90000− 4.000 = 300.0

x1 =600.0

2.000= 300.0

x2 =300.0− 300.0

2.000=

0.0000

2.000= 0.0000

usando a relação x2 =ϵ

x1=

1.000

300.0= 0.0033 é um resultado mais preciso.

Exemplo 20 Sabe-se que para x grande senh(x) ∼= cosh(x) ∼=ex

2. Se quisermos

calcular e−x podemos dizer que e−x = cosh(x) − senh(x), o que conduz a um

cancelamento perigoso. Por outro lado e−x =1

cosh(x) + senh(x)fornece resultados

mais precisos.

Page 25: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.6. PROPAGAÇÃO DE ERROS 25

1.6.2 Aritmética intervalar

O cálculo de erro de arredondamento estimado por aproximação de primeira or-dem, descrito no �nal da indrodução da seção 1.6 acima, são inviáveis para seremutilizados em métodos numéricos típicos onde o número de operações aritméticas émuito grande para permitir uma estimativa satisfatória do efeito total de todos oserros de arredondamentos.

A aritmética intervalar é uma alternativa para determinar limites para o erroabsoluto de um algoritmo, considerando todos erros de dados e arredondamento.A aritmética intervalar faz cálculos sistemáticos através de intervalos [x] = [x, x]limitados de números de máquinas x, x ∈ F, em vez de números reais simples x. Asoperações aritméticas +, −, ×, ÷ são de�nidas através de intervalos. Algoritmosintervalares são implementados em computadores produzindo resultados intervala-res garantidos conterem a solução desejada.

A aritmética intervalar deve ser usada com bastante senso crítico, caso contrá-rio os resultados con�áveis de limites de erro serão, na maioria das vezes, muitopessimísticos.

Exemplo 21 Calcule y = x3 − 3x2 + 3x para [x] = [0.9, 1.1] ?Pelo esquema de Hornery = ((x− 3)x+ 3)x[y] = [0.6209, 1.4191] (muito largo)usandoy = 1 + (x− 1)3

[y] = [0.9989, 1.0011] (resultado otimo)

Para o sucesso da aplicação da aritmética intervalar é necessário desenvolvernovos algoritmos que produzam limites de erros aceitáveis. Um tratamento maisprofundo da aritmética intervalar pode ser visto emMoore [5], Alefeld [6] e Kulish [7](para inclusão dos arredondamentos direcionados da aritmética de ponto �utuante).

1.6.3 Estimativa estatística de erros de arredondamento

Para obtenção de estimativas estatísticas de erros de arredondamento relativo (verRademacher [8]) que é causado por uma operação elementar, seus resultados sãoconsiderados uma variável aleatória no intervalo [−eps, eps] onde |ϵ| ≤ eps . Alemdisso assume-se que os erros de arredondamento atribuídos as operações diferentessão variáveis independentes. Por µϵ e σ2

ϵ denota-se o valor esperado e variância dadistribuição do arredondamento. Eles satisfazem as seguintes relações gerais

σ2ϵ = E(ϵ− E(ϵ))2 = E(ϵ2)− ((E(ϵ))2 = µϵ2 − µ2

ϵ

Assumindo uma distribuição uniforme no intervalo [−eps, /eps], obtém-se

µϵ := E(ϵ) = 0, σ2ϵ = E(ϵ2) =

1

2 eps

∫ eps

−eps

t2dt =1

3eps2 =: ϵ−2 (1.14)

Exames rigorosos mostram que a distribuição de arredondamento não é muitouniforme (ver Sterbenz [9]). Deve-se ter em mente que o padrão ideal do erro

Page 26: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

26 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

de arredondamento é somente uma aproximação do padrão observado em cálcu-los computacionais, assim os as estimativas de µϵ e σ2

ϵ devem ser determinadasempiricamente. Os resultados x dos algoritmos estando sujeitos a erros de arredon-damento aleatórios tornam-se variaríeis aleatórias com valor esperado µx e variânciaσ2x satisfazendo a mesma relação básica

σ2x = E(x− E(x))2 = E(x2)− ((E(x))2 = µx2 − µ2

x

Os efeitos da propagação de erros de arredondamento das operações elementaressão descritas pelas seguintes fórmulas para variáveis aleatórias independentes x, ye constantes α, β ∈ R:

µαx±βy = E(αx± βy) = αE(x)± βE(y) = αµx ± βµy

σ2αx±βy = E((αx± βy)2)− (E(αx± βy))2

= α2E(x− E(x))2 + β2E(y − E(y))2 = α2σ2x + β2σ2

y

(1.15)

A primeira fórmula acima resulta da linearidade do valor esperado. Ela é validapara variáveis aleatórias x, y. A segunda fórmula segue da relação E(xy) = E(x) ·E(y), que é satisfeita se x e y são independentes. Assim

µx×y = E(x× y) = E(x)E(y) = µxµy

σ2x×y = E(x× y − E(x)E(y))2 = µx2µy2 − µ2

xµ2y

= σ2xσ

2y + µ2

xσ2y + µ2

yσ2x

(1.16)

Alem disso os valores esperados µx são trocados por valores estimados x evariâncias relativas ϵ2x = σ2

x/µ2x ≈ σ2

x/x2 são considerados, então de (1.15) e (1.16):

z = x+ y ou z = x− y : ϵ2z = (xz )2ϵ2x + (yz )

2ϵ2y + ϵ2

z = x× y ou z = x÷ y : ϵ2z = ϵ2x + ϵ2y + ϵ2

Os limites de erros para o resultado �nal r de uma computação numérica sãoobtidos da variância relativa ϵ2r, assumindo que o erro �nal tem distribuição normal.Esta suposição é justi�cada uma vez as distribuições dos erros propagados tendema ser normal se sujeitas as muitas operações elementares. Supondo o resultado �nalser normal, o erro relativo do resultado �nal r é limitado com probabilidade 0.9 por2ϵr

1.7 Padronização do sistema de números de ponto

�utuante

Padrões internacionais são desenvolvidos pelo ISO (International StandardizationOrganization) com suas organizações nacionais a�liadas de padronização (ABNT- Associação Brasileira de Normas Técnicas) . Um caso especial é o campo daengenharia elétrica e eletrônica, na qual os padrões são desenvolvidos pela IEC (In-ternational Electrotecnical Commission).

Nos anos 70 tentou-se desenvolver padrões para a aritmética de ponto �utuantebinária para microcomputadores. Um dos principais objetivos era tornar programasmias portáveis para que técnicas de programação particulares usadas para tratar

Page 27: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.7. PADRONIZAÇÃODO SISTEMADE NÚMEROS DE PONTO FLUTUANTE27

erros de arredondamento exceções (e.g. , over�ow de expoentes) fossem efetivaspara arquiteturas de computadores diferentes.

Após lenta negociação, a sociedade americana de computadores IEEE (Instituteof Electrical and Eletronics Engineers) adota o padrão IEE 754-1985, o padrão paraa aritmética de ponto �utuante binária (abreviadamente IEEE-754). Em 1984 oIEC decide considerar este padrão nacional um padrão internacional , IEC 559:1989da aritmética de ponto �utuante para sistemas de microcomputadores. O padrãorelacionado IEEE 854-1987 generaliza 754 para cobrir tanto decimal como binário.

Padrão IEEE 754 ponto �utuante é a representação mais comum hoje em diapara os números reais em computadores, incluindo PC com processador Intel, Ma-cintoshes e a maioria das plataformas Unix.

1.7.1 O que são os números em ponto �utuante?

Existem várias maneiras de representar números reais em computadores. A repre-sentação do ponto �xo coloca um ponto (potência) em algum lugar no meio dosdígitos, e é equivalente ao uso de números inteiros que representam partes de uni-dades. Por exemplo, pode representar um centésimo (1/100) de uma unidade, comquatro dígitos decimais, pode-se representar 32.45 ou 00.03. Outra possibilidade éusar racionais e representar cada número como a razão entre dois inteiros.

A representação de ponto �utuante - a solução mais usual - basicamente repre-senta reais em notação cientí�ca. A notação cientí�ca representa os números comoum número de base e um expoente. Por exemplo, 123.123 pode ser representadocomo 1.23123 × 102. Em hexadecimal, o 123.FAC número pode ser representadocomo 1.23FAC× 162.

A representação de ponto �utuante resolve alguns problemas de representação.O Ponto �xo tem uma janela �xa de representação, o que limita de representarnúmeros muito grandes ou muito pequenos. O ponto �xo é propenso a uma perdade precisão quando dois grandes números são divididos.

A representação de ponto �utuante emprega uma �janela deslizante� de pre-cisão adequada à escala do número. Isso permite que ele represente números de0, 0000000000000001 e 1.000.000.000.000 com facilidade.

1.7.2 Esquema de armazenamento

Os números de ponto �utuante IEEE tem três componentes básicos: o sinal, o ex-poente e a mantissa. A mantissa é composta por fração e um dígito líder implícito(explicado abaixo). A base do expoente (2) é implícita e não precisa ser armazenado.

A tabela a seguir mostra os esquemas de armazenamento de precisão simples(32 bits) e precisão dupla (64 bits)s de ponto �utuante. O número de bits paracada campo são mostradas (intervalo dos bits estão entre colchetes):

Page 28: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

28 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Precisão Sinal Expoente Fração DeslocamentoSimples 1 [0] 8 [1-8] 23 [9-31] 127Dupla 1 [0] 11 [1-11] 52 [12-63] 1023

Gra�camente:

0 1 8 9 31sinal característica mantissa

e0 1 11 12 63

sinal característica mantissa

O bit de sinal

O bit de sinal é simples: 0 denota um número positivo; 1 denota um númeronegativo. Invertendo-se o valor deste bit inverte o sinal do número.

O expoente

O campo de expoente precisa representar expoentes positivos e negativos. Parafazer isso, um deslocamento é adicionado ao verdadeiro expoente, a �m de se obtero expoente de armazenamento. Para IEEE de precisão simples, este valor é de 127.Assim, um expoente zero signi�ca que 127 é armazenado no campo de expoente.Um valor armazenado de 150 indica um expoente de (150-127), ou 23. Por razõesapresentadas mais tarde,os expoentes de −127 (todos bits 0's) e 128 (todos bits 1's)são reservados para números especiais. Para precisão dupla, o campo de expoentetem 11 bits e um deslocamento de 1023.

A mantissa

A mantissa, também conhecida como o signi�cando, representa os bits de precisãodo número. É composto de um bit implícito e os bits da fração.

Para saber o valor do bit líder implícito, considerar que qualquer número podeser expresso em notação de ponto �utuante de muitas maneiras diferentes. Porexemplo, o número 4957 pode ser representado por qualquer uma dessas:

4957× 100

0.4957× 104

4.957× 103

0.004957× 106

Para maximizar a quantidade de números representáveis, os números de ponto�utuante são normalmente armazenados na forma normalizada. Na forma norma-lizada 4957 é representado como 4.957× 103.

Uma otimização pequena e agradável está disponível na base dois, já que aúnica forma possível do dígito zero é 1. Pode-se supor apenas um dígito de 1,

Page 29: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.7. PADRONIZAÇÃODO SISTEMADE NÚMEROS DE PONTO FLUTUANTE29

e não precisa-se representá-lo explicitamente. Como resultado, a mantissa temefetivamente 24 bits de resolução com fração de 23 bits.

Ressumindo:

1. O bit de sinal é 0 para positivo, 1 para o negativo.

2. A base do expoente é dois.

3. O campo de expoente contém 127 mais o verdadeiro expoente de precisãosimples ou 1023 mais verdadeiro para o expoente de precisão dupla.

4. O primeiro bit da mantissa é geralmente assumida como 1.f , onde f é ocampo fração de bits.

Intervalo de números de ponto �utuante

O intervalo de números positivos de ponto �utuante podem ser divididos em nú-meros normalizados (que preserva toda a precisão da mantissa), e os números des-normalizados (discutido mais tarde) que usam apenas uma porção de precisão damantissa.

• Números positivos normalizados são de�nidos dentro da faixa de:2(1−deslocamento) até (2− 2−precisao)× 2deslocamento.

• Números negativos normalizados são de�nidos dentro da faixa de:−2(1−deslocamento) até −(2− 2−precisao)× 2deslocamento.

• Números positivos normalizados superiores (2− 2−precisao)× 2deslocamento enúmeros negativos normalizados inferiores −(2 − 2−precisao) × 2deslocamento

são transbordados (over�ows).

• Números positivos normalizados menores que 2(1−deslocamento) enúmeros negativos normalizados maiores que −21−deslocamento são insu�ci-entes (under�ows).

Precisão Desnormalizados Normalizados

Simples±2−149 ≈ ±10−44.85 ate

(1− 2−23)× 2126 ≈ 1037.93±2−126 ≈ ±10−37.93 ate

(2− 2−23)× 2127 ≈ 1038.53

Dupla±2−1074 ≈ ±10−323.31 ate

(1− 2−52)× 21022 ≈ 10307.65±2−1022 ≈ ±10−307.65 ate

(2− 2−52)× 21023 ≈ 10308.25

Dado que o sinal dos números de ponto �utuante é dado por um bit líder especial,o intervalo de números negativos é dado pela negação dos valores acima.

Há cinco diferentes intervalos numéricos que a precisão simples de números deponto �utuante não são capazes de representar:

• Números negativos menores do que −(2− 2−23)× 2127. (over�ow negativo)

• Números negativos maiores do que −2−149. (under�ow negativo)

• Zero.

• Números positivos menores do que 2−149. (under�ow positivo)

Page 30: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

30 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

• Números positivos superiores à (2− 2−23)× 2127. (over�ow positivo)

Over�ow signi�ca que os valores são muito grande para a representação, e assim,da mesma forma que os inteiros podem transbordar. Under�ow é um problemamenos grave, porque ele apenas denota uma perda de precisão, que é garantido sermuito próximo de zero.

Segue uma tabela com o intervalo efetivo (excluindo valores in�nitos) de núme-ros IEEE de ponto �utuante:

Precisão Binário DecimalSimples ±(2− 2−23)× 2127 ≈ ±1038.53

Dupla ±(2− 2−52)× 21023 ≈ ±10308.25

Observação 3 Note-se que os valores extremos ocorrem (independentemente dosinal), quando o expoente é o valor máximo para os números �nitos (2127 paraprecisão simples, 21023 para o dupla), e, a mantissa está completa de 1's (incluindo1 bit da normalização).

1.7.3 Valores Especiais

IEEE reserva valores do campo expoente com todos 0's e 1's para representar todosos valores especiais no sistema de ponto �utuante.

Zero

Como mencionado acima, o zero não é diretamente representável no formato direto,devido à suposição de um 1 à esquerda (que seria preciso especi�car numa mantissazero real para produzir o valor de zero). Zero é um valor especial denotado comum campo de expoente zero e um campo de mantissa zero. Observe que −0 e 0 sãovalores distintos, embora ambos são comparados como iguais.

Desnormalizados

Se o expoente é todo de 0's, mas a mantissa for diferente de zero (o que poderiaser interpretado como zero), então o valor é um número desnormalizado, que nãotem um líder assumido 1 antes do ponto binário. Portanto representa um número(−1)s × 0.m× 2−126, onde s é o bit de sinal e m é a mantissa. Para precisão dupla,desnormalizada números são da forma (−1)s×0.m×2−1022. A partir disto se podeinterpretar o zero como um tipo especial de número desnormalizado.

In�nito

Os valores (+)in�nito (+∞) e (-)in�nito (−∞), são indicados com um expoente de1's e uma mantissa de 0's. O bit de sinal faz a distinção entre in�nito positivo ein�nito negativo. Ser capaz de denotar o in�nito como um valor especí�co é útilporque permite as operações para tratar de situações de estouro (over�ow). Asoperações com valores in�nitos são bem de�nidas no IEEE de ponto �utuante.

Page 31: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.7. PADRONIZAÇÃODO SISTEMADE NÚMEROS DE PONTO FLUTUANTE31

Não é um número

O valor NaN (Not a Number) é usado para representar um valor que não representaum número real. NaN são representados por um padrão de bits com um expoentede 1's e uma mantissa diferente de zero. Existem duas categorias de NaN: QNaN(Quiet NaN) e SNaN (Sinalização NaN).

A QNaN é um NaN com o conjunto mais signi�cativo de bits na mantissa.QNaN propaga livremente através da maioria das operações aritméticas. Estes va-lores saltam de uma operação quando o resultado não é de�nido matematicamente.

Um SNaN é um NaN com o bit mais signi�cativo da mantissa limpa. Ela éusada para sinalizar uma exceção quando utilizado em operações. SNaN pode serútil para atribuir a variáveis não inicializadas como armadilha de uso prematuro.

Semanticamente, QNaN denotam operações indeterminadas, enquanto SNaNdenotam operações inválidas.

1.7.4 Parâmetros de um sistema de número de ponto-�utuante

A notação de um sistema de ponto �utuante é

F(β, t, m, M, dnorm)

Quatro parâmetros e um valor booleano:

1. Base: β ≥ 2

2. Precisão: t ≥ 2

3. menor expoente: m < 0

4. maior expoente: M > 0

5. indicador de normalização: dnorm ∈ booleano

caracterizam cada sistema de números IEEE/IEC

dnorm= true caso o sistema contenhanúmeros denormalizados (sub-normal)

= false para o sistema normalizado

A notação de um sistema de ponto �utuante F(β, t, m, M, dnorm) satisfazas seguintes relações

F(b, p, emin, emax, true) = FN (b, p, emin, emax) ∪ FD(b, p, emin, emax)

F(b, p, emin, emax, false) = FN (b, p, emin, emax).

Exemplo 22 (Intel) De acordo com a norma IEC/IEEE os sistemas de numeraçãoutilizados nos microprocessadores Intel são F(2, 24,−125, 128, true) e F(2, 53,−1021, 1024, true)para precisão simples e precisão dupla. Microprocessadores Intel têm precisão es-tendida F(2, 64,−16381, 16384, true).

Page 32: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

32 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Exemplo 23 (IBM System/390) Fornece três sistemas de numeração hexadecimalF(16, 6,−64, 63, false) para short precision, F(16, 14,−64, 63, false) para long pre-

cision e F(16, 28,−64, 63, false) para extended precison.

Exemplo 24 (Cray) Fornece dois sistemas de numeração F(2, 48,−16384 , 8191, false)e F(2, 96,−16384, 8191, false).

Exemplo 25 (Calculadoras) Calculadoras cienti�cas são normalmente fornecidascom um único sistema de numeração F(10, 10,−98, 100, false). Algumas trabalhamcom maior precisão interna enquanto exibem somente dez casas decimais.

Exemplo 26 Sabemos que os números reais podem ser representados por uma retacontínua. Entretanto, em ponto �utuante podemos representar apenas pontos dis-cretos da reta real. Para ilustrar este fato consideremos o seguinte exemplo.

Quantos e quais números podem ser representados no sistema FN (2, 3, 1, 2)?

Solução: Temos que β = 2 então os dígitos podem ser 0 ou 1; m = 1 e M =2 então −1 ≤ k ≤ 2 e t = 3. Então os números são da forma:

±0.m1m2m3 × βk.

Tem-se duas possibilidades para o sinal, uma possibilidade para m1, duas param2 , duas para m3 e quatro para as formas de βk. Fazendo o produto 2 · 1 · 2 · 2 · 4obtém-se 32. Portanto neste sistema pode-se representar 33 números visto que ozero faz parte de qualquer sistema. Para responder quais são os números lista-seas formas da mantissa: 0.100, 0.101, 0.110 e 0.111 e as formas de βk são: 2−1, 20,21 e 22. Tem-se então os seguintes números:

0.100(2) ×

2−1

20

21

22

=

0.25(10)0.5(10)1.0(10)2.0(10)

desde que 0.100(2) = 0.5(10);

0.101(2) ×

2−1

20

21

22

=

0.3125(10)0.625(10)1.25(10)2.5(10)

desde que 0.101(2) = 0.625(10);

0.110(2) ×

2−1

20

21

22

=

0.375(10)0.75(10)1.5(10)3.0(10)

desde que 0.110(2) = 0.75(10);

Page 33: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.8. PROGRAMAS DE PRECISÃO MÚLTIPLA 33

0.111(2) ×

2−1

20

21

22

=

0.4375(10)0.875(10)1.75(10)3.5(10)

desde que 0.111(2) = 0.875(10);

Exemplo 27 Considerando o mesmo sistema do exemplo 26, represente os núme-ros: x1 = 0.48, x2 = 4.8 e x3 = 0.18 dados na base 10.

Solução: Fazendo os cálculos obtemos que: 0.4810 = 0.111 × 2−1, 4.810 =0.100×23 e 0.1310 = 0.100×2−2. Apenas o primeiro número pode ser representadono sistema, pois para o segundo teremos over�ow e para o terceiro under�ow.Observe que o número 0.4810 tem no sistema dado, a mesma representação que onúmero 0.4375(10).

1.8 Programas de precisão múltipla

Em certas aplicações o sistema de ponto �utuante fornecido pelo computador temprecisão ou intervalo insu�ciente. Se os cálculos são feitos em precisão simples,então se usa precisão dupla para tentar remediar di�culdades e, se ainda assim, aprecisão dupla é insu�ciente, tenta-se a precisão estendida. Contudo esta estratégiaprejudica a portabilidade dos programas, pois poucos sistemas de computadoresfornecem mais que dois níveis de precisão. Além disso, esta estratégia é de usolimitado: existem raramente quatro níveis, então o nível de precisão pode não seradaptado aos requisitos de uma aplicação particular. Uma solução é o uso de umsoftware de precisão múltipla (Maple, Matlab, etc.) , que permite aumentar aprecisão independente da arquitetura.

Estes softwares permitem uma escolha �exível da precisão e/ou intervalo neces-sário dos números de ponto �utuante. A desvantagem mais séria das implementa-ções de sistemas de numeração via software comparada a hardware é o tempo deprocessamento (crescimento em tempo de execução por um fator > 100 [10]

1.9 A in�uência da aritmética do ponto �utuante

Os problemas com o uso da aritmética de ponto �utuante são fartamente discutidona literatura, o artigo [11] é clássico. A seguir veremos alguns casos selecionados.

Para resolver um sistema de equações na linear, a função f : Rn → Rn deve serimplementada na forma de um (sub)programa. Então os zeros da implementaçãof : Fn → Fn são determinados, em vez da função matematicamente de�nida f . Otermo zero perde seu signi�cado comum mesmo no caso de funções de uma variável(n = 1) porque a equação

f(x) = 0 com f : F → F

pode ter várias soluções (zeros) ou nenhuma solução na vizinhança de um zeroisolado da função original.

Exemplo 28 (zeros não encontados[12], pag. 279)

Page 34: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

34 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Figura 1.1: Planilha do software matemático Mathcad usada para traçar ográ�co da função f(x) = 3x2 + 1

π4 ln(π − x)2 + 1. A função não tem zerosquando calculada numericamente com F(2, 53,−1021, 1024, true) (analitica-mente tem dois)

A função

f(x) = 3x2 +1

π4ln(π − x)2 + 1 (1.17)

Tem duas raízes no intervalo [3.14, 3.15]; ϵ1 ∈ [3.14, π] e ϵ2 ∈ [π, 3.15]. Esteszeros não podem ser determinados numericamente, desde que

f(x) > 0

Para todo x ∈ F(2, 53,−1021, 1024, true) para a qual 1.17 pode se calculado. Osdois zeros de f ,

x∗1 ≈ π − 10−647 e x∗

2 ≈ π + 10−647

estão localizados muito próximos de π, e f(x) ≤ 0 é valido somente no intervalolocalizado entre dois números de máquina. A implementação f : F → F não possuizeros (ver �gura 1.1).

Exemplo 29 (grande número de zeros [12], pag. 279 )O polinômio

P7(x) = x7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x− 1 =

= ((((((x− 7) + 21)x− 35)x+ 35)x− 21)x+ 7)x− 1 = (x− 1)7

tem somente um zero em x∗ = 1. A implementação de P7 : F → F usando oesquema de Horner tem milhares de zeros na vizinhança de x = 1 [cálculo com

Page 35: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.9. A INFLUÊNCIA DA ARITMÉTICA DO PONTO FLUTUANTE 35

F(2, 24,−125, 128, true), i.e., com uma aritmética de precisão simples IEC/IEEE];para x > 1 existem milhares de pontos com valores P7 < 0, embora P7 > 0 nestaregião e, similarmente, para x < 1 existem milhares de pontos com valores P7 > 0,embora P7 < 0 nesta região. A fenômeno do Caos surge do cancelamento dos dígi-tos mais signi�cativos (ver �gura 4.10 e 4.11 [1], pag 145).

Exemplo 30 (solução do sistema linear inspirado em [12], pag. 233)

A =

8 3 07 8 3

7 8 3. . .

. . .7 8 3

0 7 8

e b =

111818..

1815

A �gura 1.2 mostra uma planilha Mathcad para resolução do sistema linear

A · x = b. Embora o residual seja praticamente zero para todos as componentes dovetor solução, temos um resultado numericamente insatisfatório:

x =

111··11

= solução EXATA !

Obs. A função verifylss do Matlab Intlab toolbox produziu os resultados deacordo.

Exemplo 31 (avaliação de função)Abaixo vamos avaliar a função f(x, y) = 333.75 ∗ y6 + x2 ∗ (11 ∗ x2 ∗ y2 − y6 −

121 ∗ y4 − 2) + 5.5 ∗ y8 + x/(2 ∗ y) usando o Maple com precisão variada. A �gura1.3 mostra a planilha Maple onde só a partir de 37 dígitos é que os resultadosapresentados são numericamente válidos.

Page 36: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

36 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

Figura 1.2: Software matemático Mathcad usado na solução do sistema linear

Figura 1.3: Software matemático Maple usado na avaliação da funçãof(x, y) = 333.75∗y6+x2 ∗(11∗x2 ∗y2−y6−121∗y4−2)+5.5∗y8+x/(2∗y)

Page 37: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

1.10. EXERCÍCIOS PROPOSTOS 37

1.10 Exercícios Propostos

1) Converta os seguintes números decimais para sua forma binária:

a) 35 b) 2345 c) 0.1218 d) 67.67 e) 95 f) 2500g) 2000 h) 655 i) 722 j) 3.6× 1021 l) 231 m) 2.5× 10−18

2) Converta os números binários para suas formas octal, hexadecimal e decimal:

a) 1011012 b) −1101010112 c) −0.11012d) 0.1111111012 e) 0.00001012 f) 101012g) −111010110112 h) −0.11000012 i) 0.1011001111012j) 0.0011001012

3) Reescreva os números seguintes na representação do ponto-�utuante norma-lizada:

a) 27.534 b) −89.901 c) 18× 1021 d) 1.3756× 10−7

e) 11.01112 f) −111.01012 g) 0.001012 h) 1110101012

4) Seja o número seguinte em ponto-�utuante num computador de 32 bits:

0010.0101.0000.0001.0001.1001.1100.1110

Se o primeiro bit é o sinal do número, os oito seguintes a característica obtidacom adição de 128 ao expoente do número ponto-�utuante, e os 23 restantes são amantissa, responda às questões seguintes:

a) O número está normalizado? Se não o normalize.

b) Qual o sinal do número?

c) O valor absoluto do número é menor que 1?

5) Repita a questão 4 com o número:

1000.0000.0110.1101.1010.1101.1011.0110

6) Para a representação da questão 4, quais são aproximadamente o maior e omenor número, o menor número positivo e o próximo menor número positivo.

7) Represente os números binários da questão 2 na maquina binária que utilizao seguinte esquema de representação de ponto-�utuante:

↘ ↘ ↘sinal mantissa característica

a) o bit de sinal é codi�cado 0 se o número é positivo e 1 se o número é negativo.

b) a característica é obtida com adição de 128 ao expoente do número ponto-�utuante.

Page 38: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

38 CAPÍTULO 1. ERROS EM COMPUTAÇÕES NUMÉRICAS

8) Converter para base 10 os valores representados na máquina binária da ques-tão 7) acima:

a)1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1

b)0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1

9) Seja um sistema de aritmética de ponto-�utuante na base decimal com qua-tro dígitos na mantissa e dois na característica, 1 digito de sinal da mantissa e 1digito sinal da característica.

↓ mantissa ↓ expoente

sinal sinal

da mantissa do expoente

O sinal é codi�cado (+) se o número é positivo e (-) se o número é nega-tivo.

Dados os números:

x = 0.77237 y = 0.2145× 10−3 z = 0.2585× 101

Efetue as seguintes operações:

a) x+ y + z b) x− y − z c) x/y d) (xy)/z e) x(y/z)

10) Use a aritmética do ponto-�utuante, com a representação da questão9 acima, para somar e subtrair os seguintes pares de números:

a) 5.414234 e 2.27531 b) 5.414234 e 22.7531c) 54.67 e 0.328 d) 5.4× 10−8 e 3.14× 10−5

11) Use a aritmética do ponto-�utuante, com a representação da questão9 acima, para realizar as operações aritméticas seguintes:

a) 3.14× 7.47 b) 75.81× 8.15 c) 1.35÷ 28.5 d) 4000÷ 150

12) Calcular as cotas dos erros absolutos e relativos que se comete ao setomar como valores de:

a) 22/7 b) 333/116 c) 355/113 d)√3 +

√2

13) Ao se calcular cos(x) ∼= 1− x2

2!− x4

4!− x6

6!para x = 5/7, quais são os

erros: inicial, de truncamento, de arredondamento e total cometidos quandose realiza os cálculos arredondados em duas casas decimais.

Page 39: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

Bibliogra�a

[1] C.W. Ueberhuber: Numerical Computation: Methods, software andanalysis. Springer Berlin Heidelberg (1997) Vol. 1 474 pages

[2] J. Stoer, R. Bulirsh: Introduction to Numerical analysis. 2nd ed.Springer-Verlag, Berlin Heidelberg New York Tokio (1993)

[3] J.F. Traub, H. Wozniakowski: On the Optimal Solution of Large LinearSystems. J. Assoc. Comp. Mach. 31 (1984), pp. 545-559.

[4] R.W. Hamming, E.A. Feigenbaum Introduction to applied numericalanalysis. McGraw-Hill, Inc New York (1971)

[5] R.E. Moore: Interval Analysis. Prentice Hall, Englewood Clifs, NJ, USA(1966)

[6] G. Alefeld, J. Herzberger: Introduction to Interval Computations. Aca-demic Press, New (1966)

[7] U.W. Kulish and W.L. Miranker: The Arithmetic of the Digital Com-puters: A New Approach. SIAM Review 28, 1 (1986)

[8] Rademacher, H, A.: On the accumulation of errors in processes of inte-gration on higg-speed calculating machines. Procedings of a symposiumon large-scale digital calculating machinary. Annals Comp. Labor. Ha-vard Univ. 16 (1948) pp 176-185

[9] Sterbenz, P.H.: Floating Point Computation. Prentice Hall, EnglewoodClifs, NJ, USA (1974)

[10] Bailey, D.H.: MPFUN - A portable High Performance MultiprecisionPackage. NASA Ames Tech. Report RUR-90-022, (1990)

[11] Goldeberg, D: What Every Computer Scientist Should Know AboutFloating-Point Arithimethic. ACM Computing Surveys, 23 (1991) pp5-48

[12] C.W. Ueberhuber: Numerical Computation: Methods, software andanalysis. Springer Berlin Heidelberg (1997) Vol. 2 495 pages

39

Page 40: Sérgio Galdino 26 de Setembro de 2013galdino.pbworks.com/w/file/fetch/74913410/Métodos Numéricos para... · pode fazer mais cálculos (e sem cometer erros grosseiros) que uma pessoa

40 BIBLIOGRAFIA

[13] Fröberg, C-E.: Introduction to numerical analysis. 2nd ed. Addison-Wesley Pub. Co. , Reading, Mass, , 1965

[14] Süli, E and Mayers, D. F.: An Introduction to Numerical Analysis.Cambridge University Press, 2003

[15] Conte, S.D. and Boor, C.: Elementary Numerical Analysis: An algo-rithmic approach. 3rd ed. McGraw-Hill Book Company, New York, 1980