Cálculo Numérico

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 100

Calculo Numerico Representacao e Erros

Numericos
Joao Paulo Gois
Universidade Federal do ABC

Adaptac
ao
Prof. Harlen C. Batagelo (UFABC), do livro C
alculo Num
erico (N.B. Franco, 2006) e dos Slides da Marina Andretta/Franklina Toledo (ICMC-USP)

A aritmetica usada em nosso mundo matematico tradicional


diferente da usada em computadores.

A aritmetica usada em nosso mundo matematico tradicional


diferente da usada em computadores.
Por exemplo, operamos com n
umeros irracionais e fracoes.
Por exemplo 1 = 2 .

A aritmetica usada em nosso mundo matematico tradicional


diferente da usada em computadores.
Por exemplo, operamos com n
umeros irracionais e fracoes.
Por exemplo 1 = 2 .

Supomos que temos precisao infinita;

A aritmetica usada em nosso mundo matematico tradicional


diferente da usada em computadores.
Por exemplo, operamos com n
umeros irracionais e fracoes.
Por exemplo 1 = 2 .

Supomos que temos precisao infinita;


Contudo representac
oes no computador e finita, o que limita a
representacao de n
umeros racionais e irracionais.

A aritmetica usada em nosso mundo matematico tradicional


diferente da usada em computadores.
Por exemplo, operamos com n
umeros irracionais e fracoes.
Por exemplo 1 = 2 .

Supomos que temos precisao infinita;


Contudo representac
oes no computador e finita, o que limita a
representacao de n
umeros racionais e irracionais.
Na pratica substitumos um n
umero que nao e representavel
no computador por um pr
oximo dele.

Resolvendo Problemas no Computador


Considere o seguinte c
odigo em Matlab:
1
2
3
4
5
6
7
8
9
10

x = 0;
for i = 1:1000000
x = x + exp (1) / pi ;
end
format long ;
display ( x ) ;
y = 1000000* exp (1) / pi ;
display ( y ) ;
dif = abs ( x - y ) ;
display ( dif ) ;

Aparemtemente ambos os calculos de x e y fazem a mesma coisa,


contudo as respostas no computador sao diferentes.

Sada

x =
8.652559794435985e+05
y =
8.652559794322652e+05
dif =
1.133338082581758e-05

Resolvendo Problemas no Computador


Considere o seguinte c
odigo em Matlab:
1
2
3
4
5
6
7
8
9
10

x = 0;
for i = 1:1000000
x = x + 1/( sqrt (88139) - sqrt (88137) ) ;
end
format long ;
display ( x ) ;
y = 1000000*(1/( sqrt (88139) - sqrt (88137) ) ) ;
display ( y ) ;
dif = abs ( x - y ) ;
display ( dif ) ;

Aparemtemente ambos os calculos de x e y fazem a mesma coisa,


contudo as respostas no computador sao diferentes.

Sada

x =
2.968804473078792e+08

y =
2.968804473130453e+08

dif =
0.005166113376617

Representacao de n
umeros inteiros

Representacao de n
umeros inteiros

Todo computador trabalha internamente com uma base fixa


, onde e um inteiro 2, geralmente escolhido como uma
potencia de 2.

Representacao de n
umeros inteiros

Todo computador trabalha internamente com uma base fixa


, onde e um inteiro 2, geralmente escolhido como uma
potencia de 2.
Assim, dado um n
umero inteiro n 6= 0, ele possui uma u
nica
representacao:
n = (nk . . . n1 n0 ) = (n0 0 + n1 1 + . . . + nk k ),
onde os ni (i = 0, 1, . . . , k) sao inteiros satisfazendo
0 ni < e nk 6= 0.

Exemplo 1
Na base = 10, o n
umero 1997 e representado por
1997 = 7 100 + 9 101 + 9 102 + 1 103 ,
e e armazenado como n3 n2 n1 n0 .

Exerccio 1.1
Represente os seguintes n
umeros inteiros nas bases dadas:
(a) 28 em = 10.
(b) 306 em = 10.
(c) 9 em = 3.

(d) 1 em = 2.
(e) 2 em = 2.
(f) 3 em = 2.

Representacao de n
umeros reais

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):


, Calculos muito rapidos; mesmos circuitos utilizados para
n
umeros inteiros.

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):


, Calculos muito rapidos; mesmos circuitos utilizados para
n
umeros inteiros.
/ Pouco flexvel.

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):


, Calculos muito rapidos; mesmos circuitos utilizados para
n
umeros inteiros.
/ Pouco flexvel.

Representacao em ponto flutuante (floating point):

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):


, Calculos muito rapidos; mesmos circuitos utilizados para
n
umeros inteiros.
/ Pouco flexvel.

Representacao em ponto flutuante (floating point):


, Bastante flexvel.

Representacao de n
umeros reais

Representacao em ponto fixo (fixed point):


, Calculos muito rapidos; mesmos circuitos utilizados para
n
umeros inteiros.
/ Pouco flexvel.

Representacao em ponto flutuante (floating point):

, Bastante flexvel.
/ Calculos mais lentos; requer circuitos especializados.

Representacao em ponto fixo

Definicao (ponto fixo)


Dado um n
umero x 6= 0, ele e representado em ponto fixo por:
x=

n
X

xi i ,

i=k

onde k e n sao inteiros satisfazendo k < n e, em geral, k 0,


n > 0, e os xi sao inteiros satisfazendo 0 xi < .

Exemplo 2
Na base = 10, o n
umero 1997,16 e representado por:
1997,16 =

2
X

xi i

i=3

= 1 103 + 9 102 + 9 101 + 7 100 + 1 101 + 6 102

= 1 1000 + 9 100 + 9 10 + 7 1 + 1 0, 1 + 6 0, 01.

e e armazenado como x3 x2 x1 x0 ,x1 x2 .

Exerccio 2.1
Represente os seguintes n
umeros em notacao de ponto fixo:
(a) 1,5 em = 10 e n = 1.
(b) 32 em = 10 e n = 2.

(c) 32,32 em = 10 e n = 2.
(d) 300,123 em = 10 e n = 1.

Representacao em ponto flutuante


Definicao (ponto flutuante)
Dado um x 6= 0, ele e representado em ponto flutuante por
x = d e ,
onde e a base, d e a mantissa (ou significando) e e e o expoente.
A mantissa e um n
umero em ponto fixo, isto e,
d=

t
X

di i ,

i=1

tal que, se x 6= 0, entao d1 =


6 0. t e a quantidade de dgitos
significativos, 1 d < 1 e m e M .

Exemplo 3
Na base = 10, o n
umero 0,35 e representado por:
0,35 = (3 101 + 5 102 ) 100
= 0,35 100 .

x = d ,

d=

t
X
i=1

di i

Exemplo 4
Na base = 10, o n
umero 5,172 e representado por:
5,172 = (5 101 + 1 102 + 7 103
+2 104 ) 101

= 0,5712 101 .

x = d e ,

d=

t
X
i=1

di i

Exemplo 5
Na base = 10, o n
umero 0,0123 e representado por:
0,0123 = (1 101 + 2 102 + 3 103 ) 101
= 0,123 101 .

x = d ,

d=

t
X
i=1

di i

Exemplo 6
Na base = 10, o n
umero 5391,3 e representado por:
5391,3 = (5 101 + 3 102 + 9 103
+1 104 + 3 105 ) 104

= 0,53913 104 .

x = d e ,

d=

t
X
i=1

di i

Exemplo 7
Na base = 10, o n
umero 0,0003 e representado por:
0,0003 = (3 101 ) 103
= 0,3 103 .

x = d ,

d=

t
X
i=1

di i

Definicao [Sistema F (, t, m, M )]
Para representarmos um sistema de n
umeros em ponto flutuante
na base , com t dgitos significativos e com limites do expoentes
m e M , usaremos a notacao F (, t, m, M ).
Assim, um n
umero em F (, t, m, M ) sera representado por
0,d1 d2 . . . dt e ,
onde d1 6= 0 e m e M .

Exemplo 8
No sistema F (10, 3, 2, 2), os n
umeros sao representados por
0,d1 d2 d3 10e ,

onde 2 e 2.

Os n
umeros dos exemplos anteriores sao representados como
0,35 = 0,350 100 ,

5,172 = 0,517 101 ,


0,0123 = 0,123 101 ,

5391,3 = 0,539 104 = overflow,

0,0003 = 0,300 103 = underflow.

Exerccio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes n
umeros:
(a) 43,21.
(b) 5, 748.
(c) 0,001352.

(d) 125,64.
(e) 0,000034.
(f) 1.

Exerccio 3.1
Represente no sistema F (10, 4, 4, 4) os seguintes n
umeros:
(a) 43,21.
(b) 5, 748.
(c) 0,001352.

(d) 125,64.
(e) 0,000034.
(f) 1.

Exerccio 3.2
Represente no sistema F (10, 3, 1, 2) os n
umeros do exerccio
anterior. Neste caso, alguns n
umeros resultarao em erro de
underflow ou overflow. Se isso acontecer, explique o motivo.

Mudanca de base ( = 10)

Mudanca de base ( = 10)

A maioria dos computadores trabalha na base , onde e um


inteiro 2, e e normalmente escolhido como uma potencia de
2.

Mudanca de base ( = 10)

A maioria dos computadores trabalha na base , onde e um


inteiro 2, e e normalmente escolhido como uma potencia de
2.
Assim, um mesmo n
umero pode ser representado em mais de
uma base.

Mudanca de base ( = 10)

A maioria dos computadores trabalha na base , onde e um


inteiro 2, e e normalmente escolhido como uma potencia de
2.
Assim, um mesmo n
umero pode ser representado em mais de
uma base.
Atraves de uma mudanca de base, e possvel determinar a
representacao em uma nova base.

Exemplo 9
Converter 1101 que esta na base 2, para a base 10.
Neste caso, o procedimento e multiplicar cada algarismo do
n
umero na base 2 por potencias crescentes de 2, da direita para a
esquerda, e somar todas as parcelas. Desse modo,
1101 = 1 20 + 0 21 + 1 22 + 1 23 = 1 + 0 + 4 + 8 = 13.
Logo, (1101)2 = (13)10 .

Exemplo 10
Converter 0,110 que esta na base 2, para a base 10.
Neste caso, o procedimento e multiplicar cada algarismo do
n
umero na base 2, apos a vrgula, por potencias decrescentes de 2,
da esquerda para a direita, e somar todas as parcelas. Desse modo,
0,110 = 1 21 + 1 22 + 0 23 =
Logo, (0,110)2 = (0,75)10 .

1 1
+ + 0 = 0,75.
2 4

Exemplo 11
Converter 13 que esta na base 10, para a base 2.
Neste caso, o procedimento e dividir o n
umero por 2. A seguir,
continuamos dividindo o quociente por 2, ate que o u
ltimo
quociente seja igual a 1. O n
umero na base 2 sera entao obtido
tomando-se o u
ltimo quociente e todos os restos das divisoes
anteriores. Assim,
13
1

Logo, (13)10 = (1101)2 .

2
6
0

2
3
1

2
1

Exemplo 12
Converter 0,75 que esta na base 10, para a base 2.
Neste caso, o procedimento e multiplicar a parte decimal por 2. A
seguir, continuamos multiplicando por 2 a parte decimal do
resultado obtido. O n
umero na base 2 sera entao obtido
tomando-se a parte inteira do resultado de cada multiplicacao.
Desse modo,
0,75 2 = 1,50
0,50 2 = 1,00
0,00 2 = 0,00
Logo, (0,75)10 = (0,110)2 .

Exemplo 13
Converter 3,8 que esta na base 10, para a base 2.

Exemplo 13
Converter 3,8 que esta na base 10, para a base 2.
Neste caso, o procedimento e transformar a parte inteira, o que
nos fornece (3)10 = (11)2 , e a parte decimal. Assim, obtemos
0,8 2 = 1,6
0,6 2 = 1,2
0,2 2 = 0,4
0,4 2 = 0,8
0,8 2 = . . .

Logo, (3, 8)10 = (11,11001100 . . .)2 . Portanto, o n


umero (3,8)10
nao tem representacao exata na base 2.

Mudanca de base (caso geral)

Mudanca de base (caso geral)

Vimos como mudar n


umeros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.

Mudanca de base (caso geral)

Vimos como mudar n


umeros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um n
umero que esta numa dada base 1
em uma outra base 2 , onde 1 6= 2 6= 10?

Mudanca de base (caso geral)

Vimos como mudar n


umeros na base 10 para a base 2 e
vice-versa. O mesmo procedimento pode ser utilizado para
mudar da base 10 para outra base qualquer e vice-versa.
Como representar um n
umero que esta numa dada base 1
em uma outra base 2 , onde 1 6= 2 6= 10?
Neste caso, a regra e a seguinte:

Primeiro representamos o n
umero que esta na base 1 , na
base 10 e, a seguir, representamos esse n
umero na base
2 .

Exemplo 14
Converter 12,20 que esta na base 4, para a base 3.
12 = 2 40 + 1 41 = 6,
0,20 = 2 41 + 0 42 =
Portanto, (12,20)4 = (6,5)10 .
(continua...)

2
= 0,5.
4

Exemplo 14 (continuacao)
Agora, convertemos 6,5 que esta na base 10, para a base 3.
6
0

3
2

0,5 3 = 1,5
0,5 3 = 1,5
..
.
Assim, (6,5)10 = (20,111 . . .)3 . Logo, (12,20)4 = (20,111 . . .)3 .
Observe que o n
umero dado na base 4 tem representacao exata na
base 10, mas nao na base 3.

Exerccio 4.1
Os n
umeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.
Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.

Exerccio 4.1
Os n
umeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.
Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.

Exerccio 4.2
Os n
umeros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 estao em
= 2. Escreva-os em = 10.

Exerccio 4.1
Os n
umeros x1 = 34, x2 = 0,125 e x3 = 33,023 estao em = 10.
Escreva-os em = 2 com ate 7 dgitos na parte fracionaria.

Exerccio 4.2
Os n
umeros x1 = 110111, x2 = 0,01011 e x3 = 11,0101 estao em
= 2. Escreva-os em = 10.

Exerccio 4.3
Os n
umeros: x1 = 34, x2 = 0,132 e x3 = 32,013 estao em = 4.
Escreva-os em = 5, com ate 5 dgitos na parte fracionaria.

N
umeros em F (, t, m, M )

Atraves de um exemplo, vamos ver como podemos calcular, para


qualquer sistema F (, t, m, M ):

N
umeros em F (, t, m, M )

Atraves de um exemplo, vamos ver como podemos calcular, para


qualquer sistema F (, t, m, M ):
Quantos n
umeros podem ser representados em F .

N
umeros em F (, t, m, M )

Atraves de um exemplo, vamos ver como podemos calcular, para


qualquer sistema F (, t, m, M ):
Quantos n
umeros podem ser representados em F .
Quais n
umeros podem ser representados em F .

Exemplo 15
Quantos n
umeros podem ser representados no sistema
F (2, 3, 1, 2)?
Temos que = 2, entao os dgitos podem ser 0 ou 1; m = 1 e
M = 2, entao 1 e 2 e t = 3. Assim, os n
umeros sao da
forma:
0,d1 d2 d3 e .
Logo, temos duas possibilidades para o sinal, uma possibilidade
para d1 , duas para d2 , duas para d3 e quatro para as formas de e .
Fazendo o produto 2 1 2 2 4, obtemos 32. Assim, neste
sistema podemos representar 33 n
umeros, visto que o zero faz
parte de qualquer sistema.

Exemplo 16
Quais n
umeros podem ser representados em F (2, 3, 1, 2)?
Note que as formas da mantissa sao: 0,100; 0,101; 0,110 e 0,111;
e as formas de e sao: 21 , 20 , 21 , 22 . Assim, para 0,100 temos:
1
2
= (0,25)10

0
2
= (0,5)10
0,100
21
= (1,0)10

2
2
= (2,0)10 ,
(continua...)

Exemplo 16 (continuacao)
Para 0,101 temos:

1
2

0
2
0,101
21

2
2

=
=
=
=

(0,3125)10
(0,625)10
(1,25)10
(2,5)10 ,

=
=
=
=

(0,375)10
(0,75)10
(1,5)10
(3,0)10 ,

Para 0,110 temos:

(continua...)

1
2

0
2
0,110
21

2
2

Exemplo 16 (continuacao)
Para 0,111 temos:
1
2

0
2
0,111
21

2
2

=
=
=
=

(0,4375)10
(0,875)10
(1,75)10
(3,5)10 ,

Isso totaliza 16 n
umeros. Considerando os 16 n
umeros negativos
correspondentes, e mais o zero, temos 33 n
umeros, como calculado
no exemplo anterior.

Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).

Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos n
umeros podemos representar neste sistema?

Exerccio 5.1
Considere o sistema F (3, 3, 2, 1).
(a) Quantos n
umeros podemos representar neste sistema?
(b) Represente no sistema os n
umeros x1 = (0,40)10 e
x2 = (2,8)10 .

Padrao IEEE

Padrao IEEE

O que acontece na pratica e que substitumos um n


umero nao
representavel por um n
umero pr
oximo dele. Isso pode ser
satisfatorio em algumas situac
oes;

Padrao IEEE

O que acontece na pratica e que substitumos um n


umero nao
representavel por um n
umero pr
oximo dele. Isso pode ser
satisfatorio em algumas situac
oes;
Mas e preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritmetica diferente quando fazemos contas
no computador (por ex. soma nao e comutativa nem
associatiava no computador)

Padrao IEEE

O que acontece na pratica e que substitumos um n


umero nao
representavel por um n
umero pr
oximo dele. Isso pode ser
satisfatorio em algumas situac
oes;
Mas e preciso tomar cuidado e se lembrar sempre que estamos
lidando com uma aritmetica diferente quando fazemos contas
no computador (por ex. soma nao e comutativa nem
associatiava no computador)
O erro produzido pelo computador para realizar calculos com
n
umeros reais e chamado de erro de arredondamento.

Padrao IEEE

Padrao IEEE

Em 1985, o IEEE (Instituto de Engenheiros Eletricos e


Eletronicos) publicou um relat
orio chamado Binary Floating
Point Arithmetic Standard

Padrao IEEE

Em 1985, o IEEE (Instituto de Engenheiros Eletricos e


Eletronicos) publicou um relat
orio chamado Binary Floating
Point Arithmetic Standard
Neste relatorio foram especificados formatos de precisao
simples, dupla e estendida, que geralmente sao seguidos pelos
fabricantes de computadores

Padrao IEEE-754
Representacao em ponto flutuante
Por exemplo, em um sistema de 64 bits para representar um real longo, os
64 bits sao distribudos da seguinte maneira:
O primeiro bit, denotado por s, e um indicador de sinal (0 para
positivo e 1 para negativo).
Em seguida, ha 11 bits para um expoente, chamados de caracterstica
(denotada por c). Base do sistema e 2.
Os 52 bits restantes representam a mantissa (denotada por f ), que e
uma fracao binaria.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

11 / 37

Padrao IEEE-754
Representacao em ponto flutuante

Como 52 algarismos binarios correspondem a 15 ou 16 algarismos


decimais, podemos dizer que este sistema tem pelo menos 15 algarismos
decimais de precisao.

O exponte, com 11 algarismos binarios, fornece uma faixa de 0 a


211
1 = 2047. Mas, para permitir expoentes negativos e uma melhor
representacao de n
umeros de modulo pequeno, e subtrado 1023 do
expoente. Desta forma, na realidade, a faixa de valores para o expoente
vai de -1023 a 1024.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

12 / 37

Padrao IEEE-754
Representacao em ponto flutuante

Para economizar armazenamento e obter uma representacao u


nica dos
n
umeros em ponto flutuante, e imposta uma normalizacao.

A utilizacao deste sistema fornece um n


umero em ponto flutuante da forma

( 1)s 2c

Marina Andretta/Franklina Toledo (ICMC-USP)

1023 (1

+f)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

13 / 37

Padrao IEEE-754

Figura: Representacao de precisao simples float e dupla double no


padrao IEEE-754

Padrao IEEE-754

Figura: Representacao de precisao simples float e dupla double no


padrao IEEE-754

Valor
Zero
+ Infinito
- Infinito
NaN

Sinal
0
0
1
0

Expoente
0s
1s
1s
1s

Mantissa
0s
1s
1s
Diferente de 0s

Tabela: N
umeros especiais no Padrao IEEE-754

Padrao IEEE-754
Representacao em ponto flutuante - exemplo

Considere o seguinte n
umero, representado no sistema mencionado:
0 10000000011 1011100100010000000000000000000000000000000000000000

O primeiro bit representa o sinal s. Neste caso, 0 ou positivo.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

14 / 37

Padrao IEEE-754
Representacao em ponto flutuante - exemplo

Os 11 bits seguintes, 10000000011, fornecem a caracterstica. Este


n
umero, no sistema decimal, e

c = 1 210 + 1 21 + 1 20 = 1027.
Portanto, a parte exponencial do n
umero e dada por

21027

Marina Andretta/Franklina Toledo (ICMC-USP)

1023

= 24 .

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

15 / 37

Padrao IEEE-754
Representacao em ponto flutuante - exemplo
Os u
ltimos 52 bits representam a mantissa

f =12

+12

+12

+12

+12

+12

12

Assim, o n
umero representado e

( 1)s 2c

( 1)0 21027

1023

1+

1023

(1 + f ) =

1 1
1
1
1
1
+ +
+
+
+
2 8 16 32 256 4096

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

= 27, 56640625.

03 de Agosto de 2012

16 / 37

Padrao IEEE-754

Representacao em ponto flutuante - exemplo

Note que o n
umero de maquina anterior a este e dado por
0 10000000011 1011100100001111111111111111111111111111111111111111

E o n
umero de maquina posterior e dado por
0 10000000011 1011100100010000000000000000000000000000000000000001

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

17 / 37

Padrao IEEE-754
Representacao em ponto flutuante - exemplo

Isso significa que o n


umero de maquina original representa nao somente o
n
umero 27,56640625, mas tambem metade dos n
umeros reais que estao
entre ele e seus n
umeros de maquina mais proximos.
Ou seja, ele representa qualquer n
umero real no intervalo
[27,5664062499999982236431605997495353221893310546875,
27,5664062500000017763568394002504646778106689453125)

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

18 / 37

Padrao IEEE-754
Representacao em ponto flutuante

O menor n
umero em modulo que pode ser representado neste sistema e
dado por s = 0, c = 1 e f = 0.

Ou seja,
( 1)0 21

1023

(1 + 0) 0, 2225 10

307

N
umeros que ocorrem em calculos com modulos menores do que este valor
resultam em underflow, e sao, geralmente, arredondados para 0.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

19 / 37

Padrao IEEE-754
Representacao em ponto flutuante

O maior n
umero em modulo que pode ser representado neste sistema e
dado por s = 0, c = 2046 e f = 1 2 52 .

Ou seja,
( 1)0 22046

1023

(1 + 1

52

) 0, 17977 10309 .

N
umeros que ocorrem em calculos com modulos maiores do que este valor
resultam em overflow. Isso geralmente acarreta em parada do calculo, a
menos que o programa tenha sido projetado para detectar este tipo de erro.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

20 / 37

Padrao IEEE-754

Representacao em ponto flutuante

Note que ha duas representacoes possveis para o zero:

uma positiva, com s = 0, c = 0 e f = 0;

e uma negativa, com s = 1, c = 0 e f = 0.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

21 / 37

Padrao IEEE-754
Representacao em ponto flutuante
Para facilitar os calculo daqui em diante, usaremos a forma normalizada de
ponto flutuante decimal

0, d1 d2 ...dk 10n ,

com 1 d1 9 e 0 di 9, para i = 2, ..., k.


Os n
umeros desta forma sao chamados de n
umeros de maquina decimais
de k algarismos.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

22 / 37

Padrao IEEE-754
Representacao em ponto flutuante

Qualquer n
umero real positivo dentro do intervalo numerico da maquina
pode ser normalizado na forma

y = 0, d1 d2 ...dk dk+1 dk+2 10n .


A forma em ponto flutuante y , denotada por fl(y ), e obtida terminando a
mantissa de y em k algarismos decimais.

Ha duas maneiras disto ser realizado: truncamento e arredondamento.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

23 / 37

Padrao IEEE-754
Truncamento

O truncamento consiste em, simplesmente, descartar os dois u


ltimos
algarismos dk+1 dk+2 de y .

Isso produz a forma em ponto flutuante de y

fl(y ) = 0, d1 d2 ...dk 10n .

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

24 / 37

Padrao IEEE-754
Arredondamento

O arredondamento consiste em somar 5 10n


o resultado.

(k+1)

a y e, entao, truncar

Isso produz a forma em ponto flutuante de y

fl(y ) = 0,

Marina Andretta/Franklina Toledo (ICMC-USP)

1 2 ... k

10n .

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

25 / 37

Padrao IEEE-754
Arredondamento

Deste modo, se dk+1

5, adicionamos 1 a dk para obter fl(y ).

Isto e o que chamamos arredondamento para cima.


Mas, se dk+1 < 5, simplesmente truncamos o n
umero.
Isto e o que chamamos arredondamento para baixo.
Note que, quando arredondamos para baixo, di = i para todo 1 i k,
mas isso nao acontece quando arredondamos para cima.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

26 / 37

Padrao IEEE-754
Erros absoluto e relativo
Existem duas maneiras muito usadas para medir erros de aproximacao.
Sao elas: erro absoluto e erro relativo.

Se p e uma aproximacao de p, o erro absoluto e dado por |


p
O erro relativo e dado por

|
p p|
|p| ,

p|.

contanto que p 6= 0.

Como medida de precisao, o erro absoluto pode ser enganoso, ja que nao
leva em consideracao o tamanho do n
umero que esta sendo usado. Neste
caso, o erro relativo pode ser mais significativo.

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

27 / 37

Padrao IEEE-754
Algarismos significativos
Diz-se que o n
umero p aproxima p ate t algarismos significativos se t for o
maior inteiro nao-negativo para o qual

|
p p|
|p|

5 10 t .

possvel mostrar que, usando a representacao em ponto flutuante fl(y )


E
para um n
umero y , com k algarismos decimais, o n
umero de dgitos
significativos e:
k

1, quando o truncamento e usado e

k, quando o arredondamento e usado.


Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

28 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante
Ja vimos que, somente a representacao de n
umeros reais no computador ja
introduz erros de arredondamento.
Alem disso, as contas feitas pelo computador introduzem mais alguns
erros.
A aritmetica feita pelo computador pode ser aproximada com as 4
operac
oes basicas definidas da seguinte maneira:
x

y = fl(fl(x) + fl(y ))

y = fl(fl(x)

fl(y ))

x y = fl(fl(x) fl(y ))
x y = fl(fl(x)/fl(y ))
Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

29 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante

Com esta aritmetica, muitos erros podem ser introduzidos.


Os mais comuns aparecem quando os n
umeros envolvidos tem ordem de
grandeza muito diferentes.
Ou o cancelamento de dgitos significativos quando sao subtrados
n
umeros muito parecidos.
E algumas coisas estranhas acontecem, como, por exemplo, uma conta
(a b) c 6= a (b c).

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

30 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo

Suponha que x = 57 e y = 13 com truncamento em cinco dgitos. Entao,


fl(x) = 0, 71428x100 e fl(y ) = 0, 33333x100 .
Operacao
x y

Resultado
0, 10476x101

Valor real

0, 38095x100

8
21

0, 238x10

0, 625x10

x y

0, 23809x100

5
21

0, 524x10

0, 220x10

x y

0, 214286x101

15
7

0, 571x10

0, 267x10

Marina Andretta/Franklina Toledo (ICMC-USP)

22
21

Erro absoluto
0, 190x10 4

sme0100 - C
alculo Num
erico I

Erro relativo
0, 182x10 4

03 de Agosto de 2012

31 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo

Suponha que a = 3, 25, b = 6, 34 e c = 6, 05 com arredondamento em


tres dgitos. Entao, fl(a) = 0, 325x101 , fl(b) = 0, 634x101 e
fl(c) = 0, 605x101 .

Operacao
(a b) c

Resultado
0, 156x102

0, 157x102

Marina Andretta/Franklina Toledo (ICMC-USP)

(b

c)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

32 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
A f
ormula quadratica afirma que as razes de ax 2 + bx + c = 0, quando
a 6= 0, sao

x1 =

b+

b2
2a

4ac

e x2 =

b2
2a

4ac

Usando a aritmetica de arredondamento com quatro algarismos, considere


esta formula aplicada `a equacao x 2 + 62, 1x + 1 = 0, cujas razes sao,
aproximadamente,

x1 =

0, 01610723 e x2 =

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

62, 0839.

03 de Agosto de 2012

33 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
Nesta equacao, b 2 e muito maior do que 4ac. Entao, o numerador no
calculo de x1 envolve a subtracao de dois n
umeros quase iguais.
Como

b2

4ac =

q
(62, 1)2

411=

3856

4=

3852 = 62, 06,

temos

fl(x1 ) =

62, 10 + 62, 06
=
2

Marina Andretta/Franklina Toledo (ICMC-USP)

0, 04
=
2

sme0100 - C
alculo Num
erico I

0, 02.

03 de Agosto de 2012

34 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo

Esta e uma aproximacao insatisfat


oria para x1 =
erro relativo
|

0, 01611, com grande

0, 02 + 0, 01611|
2, 4 10
| 0, 01611|

Marina Andretta/Franklina Toledo (ICMC-USP)

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

35 / 37

Padrao IEEE-754
Aritmetica de ponto flutuante - exemplo
No entanto, se racionalizarmos o numerador da formula para calculo de x1 ,
obtemos
x1 =

b+

2c
.
b 2 4ac

Usando esta reformulacao, temos

fl(x1 ) =

2
2
=
=
62, 10 + 62, 06
124, 2

com pequeno erro relativo 6, 2 10


Marina Andretta/Franklina Toledo (ICMC-USP)

0, 01610,

pequeno.

sme0100 - C
alculo Num
erico I

03 de Agosto de 2012

36 / 37

Você também pode gostar