• Nenhum resultado encontrado

Topico2 Representacao de numeros

N/A
N/A
Protected

Academic year: 2019

Share "Topico2 Representacao de numeros"

Copied!
139
0
0

Texto

(1)

DCC008 - C´alculo Num´erico

Representa¸c˜ao de N´umeros

Iury Igreja

Departamento de Ciˆencia da Computa¸c˜ao Universidade Federal de Juiz de Fora

(2)

Conte´udo

◮ Representa¸c˜ao de N´umeros Inteiros ◮ Representa¸c˜ao de N´umeros Reais

◮ Ponto Fixo ◮ Ponto Flutuante

◮ Padr˜ao de Ponto Flutuante IEEE 754 ◮ Opera¸c˜oes aritm´eticas com ponto flutuante ◮ No¸c˜oes b´asicas de erro

(3)

Introdu¸c˜ao

Como estamos estudando m´etodos num´ericos para resolver problemas de ciˆencias e engenharias, ´e de extrema importˆancia estudar e entender como os n´umeros s˜ao representados no computador e como as opera¸c˜oes aritm´eticas s˜ao feitas.

Vamos ent˜ao estudar como representar n´umeros no computador e os erros cometidos por conta da representa¸c˜ao e durante as opera¸c˜oes aritm´eticas.

Vamos come¸car revisando sistemas de numera¸c˜ao, convers˜ao de bases, e depois estudamos como s˜ao representados os n´umeros inteiros e reais no computador.

(4)

Sistema Decimal

No dia a dia usamos n´umeros baseados no sistema decimal. O n´umero 257, por exemplo, pode ser escrito como

257 = 2·100 + 5·10 + 7·1 = 2·102

+ 5·101

(5)

Sistema Decimal

No dia a dia usamos n´umeros baseados no sistema decimal. O n´umero 257, por exemplo, pode ser escrito como

257 = 2·100 + 5·10 + 7·1 = 2·102

+ 5·101

+ 7·100

(6)

Sistema Decimal

No dia a dia usamos n´umeros baseados no sistema decimal. O n´umero 257, por exemplo, pode ser escrito como

257 = 2·100 + 5·10 + 7·1 = 2·102

+ 5·101

+ 7·100

Chamamos de 10 debase deste sistema (decimal). Qualquer n´umero inteiro pode ser expresso por um polinˆomio na base 10 com coeficientes entre0 e 9.

Usaremos a nota¸c˜ao

N = (anan−1. . . a0)10 =an·10n+an1·10n−

1

+. . .+a0·10 0

(7)

Sistema Bin´ario

No passado outras civiliza¸c˜oes usaram sistemas de numera¸c˜ao com bases diferentes como 12, 20 e 60.

(8)

Sistema Bin´ario

No passado outras civiliza¸c˜oes usaram sistemas de numera¸c˜ao com bases diferentes como 12, 20 e 60.

Nos computadores modernos, os componentes el´etricos possuem apenas dois estados ”on”e ”off”. Portanto ´e mais conveniente representar n´umeros no computador usando o sistema bin´ario, cuja base ´e 2.

Neste sistema um n´umero n˜ao-negativo ´e representado por

N = (anan1. . . a0)2 =an·2n+an−1·2n−

1

+. . .+a0·2 0

(1)

(9)

Sistema Hexadecimal

O sistema hexadecimal usa base 16 e portanto temos 16 d´ıgitos diferentes. As vezes programadores usam o sistema hexadecimal pois o sistema bin´ario pode ser cansativo e longo para representar algum valor. Exemplo:

(1234)16= 1×163

+ 2×162

+ 3×161

+ 4×160 = 4096 + 512 + 48 + 4

A representa¸c˜ao hexadecimal usa as letras de A at´e F para os seis d´ıgitos adicionais (10, 11, 12, 13, 14, 15). Outros exemplos:

(234)16 (BEEF)16 (DEAD)16 (0AF B)16

(10)

Sistema Hexadecimal

Bin´ario Hexadecimal Bin´ario Hexadecimal

0000 0 1000 8

0001 1 1001 9

0010 2 1010 A

0011 3 1011 B

0100 4 1100 C

0101 5 1101 D

0110 6 1110 E

0111 7 1111 F

(11)

Convers˜ao bin´ario para decimal

Pode ser obtida diretamente pelo uso da Equa¸c˜ao (1).

Exemplos

(11)2 = 1·21

(12)

Convers˜ao bin´ario para decimal

Pode ser obtida diretamente pelo uso da Equa¸c˜ao (1).

Exemplos

(11)2 = 1·21

+ 1·20 = 2 + 1 = 3

(1101)2= 1·2 3

(13)

Convers˜ao decimal para bin´ario

(14)

Convers˜ao decimal para bin´ario

O procedimento ´e dividir o n´umero por 2, a seguir continuar dividindo o quociente por 2, at´e que o quociente seja igual a 0. O n´umero na base 2 ´e obtido tomando-se o resto das divis˜oees anteriores.

Exemplo

Converter(13)10 para bin´ario.

(15)

Convers˜ao decimal para bin´ario

O procedimento ´e dividir o n´umero por 2, a seguir continuar dividindo o quociente por 2, at´e que o quociente seja igual a 0. O n´umero na base 2 ´e obtido tomando-se o resto das divis˜oees anteriores.

Exemplo

Converter(13)10 para bin´ario.

13÷2 = 6, resto=1 6÷2 = 3, resto=0 3÷2 = 1, resto=1 1÷2 = 0, resto=1

Portanto

(16)

Algoritmo convers˜ao decimal para bin´ario

entrada: numero inteiro decimal d

sa´ıda: numero bin´ario b i = 0;

q = d;

fa¸ca

b[i] = q mod 2 ; q = q / 2 ; i = i + 1 ;

(17)

Representa¸c˜ao de n´umeros inteiros no computador

Inteiros s˜ao armazenados usando uma palavra de 32 bits no computador.

◮ Se estamos interessados em n´umerosn˜ao negativos, a

representa¸c˜ao ´e simples:

(71)10 00000000 00000000 00000000 01000111

Podemos representar valores de0a232

(18)

Representa¸c˜ao de n´umeros inteiros no computador

Inteiros s˜ao armazenados usando uma palavra de 32 bits no computador.

◮ Se estamos interessados em n´umerosn˜ao negativos, a

representa¸c˜ao ´e simples:

(71)10 00000000 00000000 00000000 01000111

Podemos representar valores de0a232

−1(= 4.294.967.295).

◮ Para n´umeros inteiros com sinal, uma possibilidade, ´e reservar

1 bit para indicar qual o sinal do n´umero. Exemplo com palavra de 8 bits para simplificar.

(13)10 0 0 0 0 1 1 0 1 bits 7 6 5 4 3 2 1 0 Bit de sinal:

(19)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

◮ Existe uma forma de representa¸c˜ao mais esperta para n´umeros

inteiros com sinal chamada decomplemento a dois.

O bit mais significativo ainda ´e usado para o sinal.

Um n´umero x positivo, tal que 0x231 −1´e

representado normalmente pela representa¸c˜ao bin´aria deste n´umero, com bit de sinal0.

Entretanto, um n´umero negativo y, onde 1y231

´e armazenado como a representa¸c˜ao bin´aria do inteiro positivo:

(20)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

Para ilustrar considere uma palavra de 4 bits. Podemos representar os seguintes n´umeros de 0 a 7 e de -8 a -1. Veja a tabela.

bits n´umero bits n´umero 2By

0000 0 1000 -8 24

−8 = 8

0001 1 1001 -7 24

−7 = 9

0010 2 1010 -6 24

−6 = 10

0011 3 1011 -5 24

−5 = 11

0100 4 1100 -4 24

−4 = 12

0101 5 1101 -3 24

−3 = 13

0110 6 1110 -2 24

−2 = 14

0111 7 1111 -1 24

−1 = 15

Para negar um n´umero em complemento a dois, use o seguinte algoritmo:

1. Inverta todos os bits do n´umeoro (01 e10).

(21)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

Exemplo

Para simplificar, considere uma palavra de 4 bits. Sejax= 2 e

(22)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

Exemplo

Para simplificar, considere uma palavra de 4 bits. Sejax= 2 e

y= 2. Qual a representa¸c˜ao em complemento a dois dey?

Solu¸c˜ao do exemplo

Temos que(2)10= (0010)2. Pelos passos do algoritmo temos: 1. Invertendo os bits00101101

2. Somando 1

1101 +0001

(23)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

Exemplo

Para simplificar, considere uma palavra de 4 bits. Sejax= 2 e

y= 2. Qual a representa¸c˜ao em complemento a dois dey?

Solu¸c˜ao do exemplo

Temos que(2)10= (0010)2. Pelos passos do algoritmo temos: 1. Invertendo os bits00101101

2. Somando 1

1101 +0001

1110

Ou seja,y=2´e representado por 24

(24)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

◮ A grande motiva¸c˜ao para esse sistema ´e que n˜ao precisamos

de hardware espec´ıfico para a opera¸c˜ao de subtra¸c˜ao. O hardware de adi¸c˜ao pode ser usado uma vez que y tenha sido representado com complemento a dois.

(25)

Representa¸c˜ao de n´umeros inteiros no computador

Complemento a dois

◮ A grande motiva¸c˜ao para esse sistema ´e que n˜ao precisamos

de hardware espec´ıfico para a opera¸c˜ao de subtra¸c˜ao. O hardware de adi¸c˜ao pode ser usado uma vez que y tenha sido representado com complemento a dois.

◮ Este sistema ´e usado em muitos dos computadores atuais.

Subtra¸c˜ao: x−y= 2 + (−2)

0010 + 1110

10000

(26)

Representa¸c˜ao de n´umeros fracion´arios

Sex ´e um n´umero real positivo, sua parte integral xi ´e o maior

inteiro menor ou igual ax, enquanto

xf =x−xi

(27)

Representa¸c˜ao de n´umeros fracion´arios

Sex ´e um n´umero real positivo, sua parte integral xi ´e o maior

inteiro menor ou igual ax, enquanto

xf =x−xi

´e a sua parte fracion´aria. A parte fracion´aria sempre pode ser escrita como uma fra¸c˜ao decimal

xf = ∞ X

k=1

bk10−k (2)

(28)

Representa¸c˜ao de n´umeros fracion´arios

Sex ´e um n´umero real positivo, sua parte integral xi ´e o maior

inteiro menor ou igual ax, enquanto

xf =x−xi

´e a sua parte fracion´aria. A parte fracion´aria sempre pode ser escrita como uma fra¸c˜ao decimal

xf = ∞ X

k=1

bk10−k (2)

onde cadabk ´e um inteiro n˜ao-negativo menor que 10.

Sebk = 0para todo kmaior do que algum inteiro, dizemos ent˜ao

(29)

Representa¸c˜ao de n´umeros fracion´arios

Exemplos

1

4 = 0.25 = 2·10 −1

+ 5·10−2

(termina)

1

3 = 0.333. . .= 3·10 −1

+ 3·10−2

+ 3·10−3

(30)

Representa¸c˜ao de n´umeros fracion´arios

Exemplos

1

4 = 0.25 = 2·10 −1

+ 5·10−2

(termina)

1

3 = 0.333. . .= 3·10 −1

+ 3·10−2

+ 3·10−3

(n˜ao termina)

Se a parte integral dex ´e um inteiro no sistema decimal da forma

xi = (anan−1. . . a0)10

enquanto a parte fracion´aria ´e dada por (2), ´e comum escrever

(31)

Representa¸c˜ao de n´umeros fracion´arios

Algoritmo de convers˜ao para bin´ario

De forma an´aloga para o sistema bin´ario podemos escrever

xf = ∞ X

k=1

bk2−k, xi = (anan1. . . a0)2

ent˜aox= (anan−1. . . a0·b1b2b2. . .)2.

A fra¸c˜ao bin´aria(·b1b2b3. . .)2 para um dadoxf entre 0 e 1 pode

ser calculada da seguinte forma: dadox entre 0e 1, gere b1,b2,b3

fazendo:

c0=x

b1= (2·c0)i, c1 = (2·c0)f

b2= (2·c1)i, c2 = (2·c1)f

b3= (2·c2)i, c3 = (2·c2)f, . . .

(32)

Representa¸c˜ao de n´umeros fracion´arios

Algoritmo de convers˜ao para bin´ario

Exemplo 1

Qual a representa¸c˜ao bin´aria de(0.625)10?

Solu¸c˜ao do Exemplo

2·0.625 = 1.25 b1= 1 2·0.25 = 0.50 b2= 0 2·0.5 = 1.00 b3= 1

2·0.0 = 0.00 b4=b5=. . .= 0

(33)

Representa¸c˜ao de n´umeros fracion´arios

Algoritmo de convers˜ao para bin´ario

Exemplo 2

Qual a representa¸c˜ao bin´aria de(0.1)10?

Solu¸c˜ao do Exemplo 2

Temosx= 0.1.

2·0.1 = 0.2 b1 = 0 2·0.2 = 0.4 b2 = 0 2·0.4 = 0.8 b3 = 0 2·0.8 = 1.6 b4 = 1 2·0.6 = 1.2 b5 = 1 2·0.2 = 0.4 b6 = 0 2·0.4 = 0.8 . . .

(34)

Representa¸c˜ao de n´umeros fracion´arios

Algoritmo de convers˜ao para bin´ario

entrada: x menor do que 1

sa´ıda: n´umero bin´ario b

k= 1;

fa¸ca

se2x >= 1 ent˜ao b[k] = 1;

sen˜ao b[k] = 0;

fim-se

x= 2xb[k];

k=k+ 1;

(35)

Mudan¸ca de base

Para transformar um n´umero real que est´a representado na base 10 para a base 2, o procedimento ´e transformar a parte inteira e a parte fracion´aria usando os respectivos algoritmos j´a vistos.

Exemplos

Converter da base 10 para a base 2.

(5.75)10= (3.8)10= (33.023)10=

Exemplo

Converter da base 2 para a base 10.

(36)

Mudan¸ca de base

Para transformar um n´umero real que est´a representado na base 10 para a base 2, o procedimento ´e transformar a parte inteira e a parte fracion´aria usando os respectivos algoritmos j´a vistos.

Exemplos

Converter da base 10 para a base 2.

(5.75)10= (101.110)2

(3.8)10= (11.11001100. . .)2 (33.023)10= (100001.00000101. . .)2

Exemplo

Converter da base 2 para a base 10.

(37)

Representa¸c˜ao de n´umeros reais

No computador n´umeros reais s˜ao armazenados usando o sistema bin´ario e a representa¸c˜ao destes n´umeros ´e finita.

Por exemplo, os n´umeros

π= 3.1415. . . e= 2.71828. . .

n˜ao podem ser representados perfeitamente no computador. O que ´e armazenado ent˜ao ´e uma vers˜ao aproximada destes n´umeros.

De forma geral, existem duas possibilidades para essa representa¸c˜ao:

◮ Representa¸c˜ao em Ponto Fixo

(38)

Representa¸c˜ao em ponto fixo

Neste esquema de representa¸c˜ao, a palavra do computador de usualmente 32 bits ´e dividida em 3 campos:

◮ 1 bit para o sinal

◮ campo de bits para a parte integral ◮ campo de bits para a parte fracion´aria

Exemplo

Sistema com 1 bit para sinal, 15 bits para parte integral e 16 bits para a parte fracion´aria. Neste sistema(11/2)10= (5.5)10 ´e representado da seguinte forma:

(39)

Representa¸c˜ao em ponto fixo

O sistema de ponto fixo ´e severamente limitado pelo tamanho dos n´umeros que este pode armazenar. No exemplo anterior, apenas n´umeros de magnitude entre2−16

(exatamente) e 215

(40)

Representa¸c˜ao em ponto fixo

O sistema de ponto fixo ´e severamente limitado pelo tamanho dos n´umeros que este pode armazenar. No exemplo anterior, apenas n´umeros de magnitude entre2−16

(exatamente) e 215

(um pouco menos) podem ser armazenados no sistema.

(41)

Representa¸c˜ao em ponto fixo

O sistema de ponto fixo ´e severamente limitado pelo tamanho dos n´umeros que este pode armazenar. No exemplo anterior, apenas n´umeros de magnitude entre2−16

(exatamente) e 215

(um pouco menos) podem ser armazenados no sistema.

Em algumas aplica¸c˜oes essa limita¸c˜ao pode n˜ao ser aceit´avel, e portanto este formato de representa¸c˜ao ´e raramente utilizado.

(42)

Representa¸c˜ao em ponto flutuante

A representa¸c˜ao de ponto flutuante ´e baseada na nota¸c˜ao

cient´ıfica. Nessa nota¸c˜ao um n´umero real n˜ao-zero ´e expresso por

x=±d×βe

(43)

Representa¸c˜ao em ponto flutuante

A representa¸c˜ao de ponto flutuante ´e baseada na nota¸c˜ao

cient´ıfica. Nessa nota¸c˜ao um n´umero real n˜ao-zero ´e expresso por

x=±d×βe

ondeβ ´e a base do sistema de numera¸c˜ao,d´e a mantissa ee´e o expoente.

A mantissa ´e um n´umero da forma

(0·d1d2d3. . . dt)β

representada portd´ıgitos, onde0di≤(β−1), parai= 1, . . . , t

comd1 6= 0. O expoenteeest´a no intervalo[L, U].

(44)

Representa¸c˜ao em ponto flutuante

Iremos denotar um sistema de ponto flutuante por

F(β, t, L, U)

onde

◮ β ´e a base do sistema

◮ t n´umero de d´ıgitos da mantissa ◮ L menor valor para o expoente ◮ U maior valor para o expoente

Em qualquer m´aquina apenas um subconjunto dos n´umeros reais ´e representado exatamente, e portanto nesse processo a

representa¸c˜ao de um n´umero real ser´a feita com arredondamento

(45)

Representa¸c˜ao em ponto flutuante

Arredondamento em ponto flutuante

Imagine que s´o dispomos de quatro d´ıgitos para representar os n´umeros em uma m´aquina. Como seria a melhor forma de representar 15

(46)

Representa¸c˜ao em ponto flutuante

Arredondamento em ponto flutuante

Imagine que s´o dispomos de quatro d´ıgitos para representar os n´umeros em uma m´aquina. Como seria a melhor forma de representar 15

7 = 2.142857 =x? Usando 2.142ou talvez2.143? Se

calcularmos o erro vemos que

|2.142x|= 0.000857 |2.143x|= 0.000143

Como o erro ´e menor para2.143concluimos que essa ´e a melhor forma de representar esse n´umero. Este n´umero foi arredondado.

(47)

Representa¸c˜ao em ponto flutuante

Arredondamento em ponto flutuante

Imagine que s´o dispomos de quatro d´ıgitos para representar os n´umeros em uma m´aquina. Como seria a melhor forma de representar 15

7 = 2.142857 =x? Usando 2.142ou talvez2.143? Se

calcularmos o erro vemos que

|2.142x|= 0.000857 |2.143x|= 0.000143

Como o erro ´e menor para2.143concluimos que essa ´e a melhor forma de representar esse n´umero. Este n´umero foi arredondado.

O que significa arredondar um n´umero?

(48)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,3,3).

Neste sistema o n´umero 12.5´e representado por

+(0.125)10×102

O n´umero de Euler

e= 2.718281. . .

(49)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,3,3).

Neste sistema o n´umero 12.5´e representado por

+(0.125)10×102

O n´umero de Euler

e= 2.718281. . .

´e representado por

+ (0.271)10×101

(50)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,3,3).

Neste sistema o n´umero 12.5´e representado por

+(0.125)10×102

O n´umero de Euler

e= 2.718281. . .

´e representado por

+ (0.271)10×101

(com truncamento)

(51)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,5,5). Os n´umeros representados neste sistema ter˜ao a forma

(52)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,5,5). Os n´umeros representados neste sistema ter˜ao a forma

±(0.d1d2d3)×10e, 0≤di≤9, d1 6= 0, e∈[−5,5]

O menor n´umero em valor absoluto representado nessa m´aquina ´e

m= 0.100×10−5

= 10−1

×10−5

(53)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,5,5). Os n´umeros representados neste sistema ter˜ao a forma

±(0.d1d2d3)×10e, 0≤di≤9, d1 6= 0, e∈[−5,5]

O menor n´umero em valor absoluto representado nessa m´aquina ´e

m= 0.100×10−5

= 10−1

×10−5

= 10−6

O maior n´umero em valor absoluto ´e

M = 0.999×105

(54)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o seguinte sistema: F(10,3,5,5). Os n´umeros representados neste sistema ter˜ao a forma

±(0.d1d2d3)×10e, 0≤di≤9, d1 6= 0, e∈[−5,5]

O menor n´umero em valor absoluto representado nessa m´aquina ´e

m= 0.100×10−5

= 10−1

×10−5

= 10−6

O maior n´umero em valor absoluto ´e

M = 0.999×105

= 99900

De forma geral, o menor e o maior n´umero s˜ao dados por

m=βL−1

(55)

Representa¸c˜ao em ponto flutuante

(56)

Representa¸c˜ao em ponto flutuante

Seja um sistemaF(β, t, L, U)onde o menor e maior n´umero s˜ao denotados porm eM, respectivamente. Dado um n´umero realx, ent˜ao temos as seguintes situa¸c˜oes:

1. m≤ |x| ≤M

O n´umero podeser representado no sistema. Exemplo: 235.89 = 0.23589×103

. No sistema F(10,3,3,3)

temos

(0.235)10×10 3

com truncamento

(0.236)10×103

(57)

Representa¸c˜ao em ponto flutuante

Seja um sistemaF(β, t, L, U)onde o menor e maior n´umero s˜ao denotados porm eM, respectivamente. Dado um n´umero realx, ent˜ao temos as seguintes situa¸c˜oes:

1. m≤ |x| ≤M

O n´umero podeser representado no sistema. Exemplo: 235.89 = 0.23589×103

. No sistema F(10,3,3,3)

temos

(0.235)10×10 3

com truncamento

(0.236)10×103

com arredondamento

2. |x| ≤m

O n´umero n˜ao pode ser representado no sistema. Neste caso dizemos que ocorreu underflow. Ex: 0.517×10−8

(58)

Representa¸c˜ao em ponto flutuante

Seja um sistemaF(β, t, L, U)onde o menor e maior n´umero s˜ao denotados porm eM, respectivamente. Dado um n´umero realx, ent˜ao temos as seguintes situa¸c˜oes:

1. m≤ |x| ≤M

O n´umero podeser representado no sistema. Exemplo: 235.89 = 0.23589×103

. No sistema F(10,3,3,3)

temos

(0.235)10×10 3

com truncamento

(0.236)10×103

com arredondamento

2. |x| ≤m

O n´umero n˜ao pode ser representado no sistema. Neste caso dizemos que ocorreu underflow. Ex: 0.517×10−8

.

3. |x| ≥M

O n´umero n˜ao pode ser representado no sistema. Neste caso dizemos que ocorreu overflow. Ex: 0.725×109

(59)

Representa¸c˜ao em ponto flutuante

Exemplo

(60)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,3,3). Para simplificar, considere uma palavra com 7 bits, onde temos 1 bit para o sinal do n´umero, 3 bits para o expoente (incluindo seu sinal) e 3 bits para a mantissa. Vamos representarxmin = (0.100)2×2−3.

sinal do n´umero 0

sinal do expoente 1

expoente (3)10= (11)2

mantissa (0.100)2

Sendo assim temos a seguinte representa¸c˜ao para(0.0625)10 neste sistema

(61)

Representa¸c˜ao em ponto flutuante

Exemplo

(62)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao do Exemplo

Neste sistema os n´umeros s˜ao da forma

(63)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao do Exemplo

Neste sistema os n´umeros s˜ao da forma

±0.d1d2d3×2e

temos

(64)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao do Exemplo

Neste sistema os n´umeros s˜ao da forma

±0.d1d2d3×2e

temos

◮ 2 possibilidades para o sinal

(65)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao do Exemplo

Neste sistema os n´umeros s˜ao da forma

±0.d1d2d3×2e

temos

◮ 2 possibilidades para o sinal

(66)

Representa¸c˜ao em ponto flutuante

Exemplo

Considere o sistemaF(2,3,1,2). Quantos e quais n´umeros podem ser representados neste sistema?

Solu¸c˜ao do Exemplo

Neste sistema os n´umeros s˜ao da forma

±0.d1d2d3×2e

temos

◮ 2 possibilidades para o sinal

◮ (1·2·2) = 4possibilidades para a mantissa ◮ 4 possibilidades para o expoente (−1,0,1,2)

(67)

Representa¸c˜ao em ponto flutuante

Solu¸c˜ao Exemplo

Para responder quais s˜ao os n´umeros, notemos que as poss´ıveis formas da mantissa s˜ao0.100,0.101,0.110e 0.111e as formas do expoente s˜ao2−1

,20

,21

e 22

(68)

Representa¸c˜ao em ponto flutuante

Solu¸c˜ao Exemplo

Para responder quais s˜ao os n´umeros, notemos que as poss´ıveis formas da mantissa s˜ao0.100,0.101,0.110e 0.111e as formas do expoente s˜ao2−1

,20

,21

e 22

. Assim obtemos:

(0.100)2×2−1 = (0.25)10 (0.101)2×2−1 = (0.3125)10 (0.100)2×20

= (0.5)10 (0.101)2×20

= (0.625)10 (0.100)2×21

= (1.0)10 (0.101)2×21

= (1.25)10 (0.100)2×22 = (2.0)10 (0.101)2×22 = (2.5)10 (0.110)2×2−1 = (0.375)10 (0.111)2×2−1 = (0.4375)10

(0.110)2×20

= (0.75)10 (0.111)2×20

= (0.875)10 (0.110)2×21

= (1.5)10 (0.111)2×21

= (1.75)10 (0.110)2×22 = (3.0)10 (0.111)2×22 = (3.5)10

O zero ´e representado de uma forma especial: todos os d´ıgitosdi

(69)

Representa¸c˜ao em ponto flutuante

Solu¸c˜ao Exemplo

´

(70)

Representa¸c˜ao em ponto flutuante

Exemplo

Considerando o mesmo sistema do exemplo anterior,

F(2,3,1,2), represente os n´umeros: x1 = 0.38,x2 = 5.3 e

(71)

Representa¸c˜ao em ponto flutuante

Exemplo

Considerando o mesmo sistema do exemplo anterior,

F(2,3,1,2), represente os n´umeros: x1 = 0.38,x2 = 5.3 e

x3 = 0.15dados na base 10. Solu¸c˜ao Exemplo 4

Convertendo os n´umeros para bin´ario temos

(0.38)10= (5.3)10=

(72)

Representa¸c˜ao em ponto flutuante

Exemplo

Considerando o mesmo sistema do exemplo anterior,

F(2,3,1,2), represente os n´umeros: x1 = 0.38,x2 = 5.3 e

x3 = 0.15dados na base 10. Solu¸c˜ao Exemplo 4

Convertendo os n´umeros para bin´ario temos

(73)

Representa¸c˜ao em ponto flutuante

Exemplo

Considerando o mesmo sistema do exemplo anterior,

F(2,3,1,2), represente os n´umeros: x1 = 0.38,x2 = 5.3 e

x3 = 0.15dados na base 10. Solu¸c˜ao Exemplo 4

Convertendo os n´umeros para bin´ario temos

(0.38)10= 0.110·2−1

⇒ OK

(5.3)10= 0.101·23

⇒ overflow

(0.15)10= 0.100·2−2

(74)

Formato ponto flutuante IEEE

1

754

Por volta dos anos 50 a computa¸c˜ao usando ponto flutuante estava em alta. Cada fabricante de computador desenvolvia o seu sistema de ponto flutuante, que acarretava muita inconsistˆencia quando programas eram executados em diferentes m´aquinas.

(75)

Formato ponto flutuante IEEE

1

754

Por volta dos anos 50 a computa¸c˜ao usando ponto flutuante estava em alta. Cada fabricante de computador desenvolvia o seu sistema de ponto flutuante, que acarretava muita inconsistˆencia quando programas eram executados em diferentes m´aquinas.

Apesar da maioria das m´aquinas usarem o sistema bin´ario, algumas, como as da s´erie IBM 360/370, usavam o sistema hexadecimal.

Em resumo, era muito dif´ıcil escrever um softwareport´avel que pudesse funcionar corretamente em todas as m´aquinas.

(76)

Formato ponto flutuante IEEE 754

O padr˜ao usa o sistema bin´ario e dois formatos para representa¸c˜ao de n´umeros podem ser adotados: precis˜ao simples e precis˜ao dupla.

Neste formato um n´umero ´e representado de formanormalizada

por

(77)

Formato ponto flutuante IEEE 754

O padr˜ao usa o sistema bin´ario e dois formatos para representa¸c˜ao de n´umeros podem ser adotados: precis˜ao simples e precis˜ao dupla.

Neste formato um n´umero ´e representado de formanormalizada

por

±1.d1d2. . . dn×2e

Em precis˜ao simples um n´umero real ´e representado por 32 bits, sendo que:

(78)

Formato ponto flutuante IEEE 754

O padr˜ao usa o sistema bin´ario e dois formatos para representa¸c˜ao de n´umeros podem ser adotados: precis˜ao simples e precis˜ao dupla.

Neste formato um n´umero ´e representado de formanormalizada

por

±1.d1d2. . . dn×2e

Em precis˜ao simples um n´umero real ´e representado por 32 bits, sendo que:

◮ 1 bit para o sinal ◮ 8 bits para o expoente ◮ 23 bits para a mantissa

ou seja, tem o seguinte formato bin´ario

(79)

Formato ponto flutuante IEEE 754

O padr˜ao usa o sistema bin´ario e dois formatos para representa¸c˜ao de n´umeros podem ser adotados: precis˜ao simples e precis˜ao dupla.

Neste formato um n´umero ´e representado de formanormalizada

por

±1.d1d2. . . dn×2e

Em precis˜ao simples um n´umero real ´e representado por 32 bits, sendo que:

◮ 1 bit para o sinal ◮ 8 bits para o expoente ◮ 23 bits para a mantissa

ou seja, tem o seguinte formato bin´ario

± e1e2. . . e8 d1d2. . . d23

O primeiro bit `a esquerda do ponto bin´ario, isto ´ed0= 1, ´e

(80)

Formato ponto flutuante IEEE 754

Expoente

(81)

Formato ponto flutuante IEEE 754

Expoente

Nesse formato, o expoente n˜ao ´e representado como um inteiro via complemento a dois. Os oito bits do expoente armazenam o n´umero s=e+ 127.

Exemplos:

e= 1 s= 1 + 127 = (128)10= (10000000)2

e=3 s=3 + 127 = (124)10= (01111100)2

(82)

Formato ponto flutuante IEEE 754

Expoente

Nesse formato, o expoente n˜ao ´e representado como um inteiro via complemento a dois. Os oito bits do expoente armazenam o n´umero s=e+ 127.

Exemplos:

e= 1 s= 1 + 127 = (128)10= (10000000)2

e=3 s=3 + 127 = (124)10= (01111100)2

e= 52 s= 52 + 127 = (179)10= (10110011)2

(83)

Formato ponto flutuante IEEE 754

Mantissa

Vamos considerar agora a representa¸c˜ao da mantissa. Como o sistema ´e normalizado temosd0 6= 0. Dado que a base ´e dois, a

´

(84)

Formato ponto flutuante IEEE 754

Mantissa

Vamos considerar agora a representa¸c˜ao da mantissa. Como o sistema ´e normalizado temosd0 6= 0. Dado que a base ´e dois, a

´

unica possibilidade para o primeiro d´ıgito ser´a sempre igual a 1, e portanto este bit n˜ao precisa ser armazenado, por isso ´e chamado debit escondido.

Com o uso desta normaliza¸c˜ao temos um ganho na precis˜ao, pois a mantissa passa a ser representada com 24 bits (23 + 1 bit

(85)

Formato ponto flutuante IEEE 754

Mantissa

Vamos considerar agora a representa¸c˜ao da mantissa. Como o sistema ´e normalizado temosd0 6= 0. Dado que a base ´e dois, a

´

unica possibilidade para o primeiro d´ıgito ser´a sempre igual a 1, e portanto este bit n˜ao precisa ser armazenado, por isso ´e chamado debit escondido.

Com o uso desta normaliza¸c˜ao temos um ganho na precis˜ao, pois a mantissa passa a ser representada com 24 bits (23 + 1 bit

escondido).

Exemplo: (0.125)10= (0.001)2= 1.0×2−3 ´e armazenado como:

0 01111100 0000000 00000000 00000000

(86)
(87)

Formato ponto flutuante IEEE 754

Omenor n´umero normalizado positivo represent´avel nesse padr˜ao ´e

0 00000001 0000000 00000000 00000000

nesse caso, comos= (00000001)2 = (1)10, o expoente ´e

s=e+ 127

1 =e+ 127 e=126

assim, o n´umero ´e

(1.0000000. . .)2×2− 126

= 2−126

(88)

Formato ponto flutuante IEEE 754

Omaiorn´umero normalizado positivo, ter´a como mantissa um n´umero com 24 bits iguais a 1 e como expoente(11111110)2, isto ´e

0 11111110 1111111 11111111 11111111

nesse caso, comos= (11111110)2 = (254)10, temos

s=e+ 127 254 =e+ 127 e= 127

e ainda

(1.1111. . .1)2 = 1 + 1

2 +. . .+ 1 223 =

223 + 222

+. . .+ 1 223

= P23

i=02i 223 =

224 −1 223 = 2−

1 223

assim

(1.111111. . .)2×2127

= (22−23

)×2127

(89)

Formato ponto flutuante IEEE 754

O zero ´e representado com zeros para expoente e mantissa

(90)

Formato ponto flutuante IEEE 754

O zero ´e representado com zeros para expoente e mantissa

0 00000000 0000000 00000000 00000000

Os valores+e −∞ s˜ao representados por

(91)

Formato ponto flutuante IEEE 754

O zero ´e representado com zeros para expoente e mantissa

0 00000000 0000000 00000000 00000000

Os valores+e −∞ s˜ao representados por

0 11111111 0000000 00000000 00000000 1 11111111 0000000 00000000 00000000

Se a sequˆencia de bits para o expoente for composta por todos d´ıgitos iguais a um e a da mantissa for n˜ao nula, isto ´e:

1 11111111 xxxxxxx xxxxxxxx xxxxxxxx

temos a ocorrˆencia deNaN: not a number, que representam express˜oes inv´alidas como:

(92)

Formato ponto flutuante IEEE 754

Por outro lado certas express˜oes que envolvam e zero possuem um resultado plaus´ıvel:

z0 = 0

z/0 = + sez >0

z/0 =−∞ sez <0

(93)

Formato ponto flutuante IEEE 754

#include <stdio.h> #include <math.h> int main() {

float x, y;

x = 23.0/0.0;

printf("x = %f\n", x);

y = sqrt(-5.0);

printf("y = %f\n", y);

printf("a = %f\n", x*0); printf("0/0 = %f\n", 0./0.); printf("inf/inf = %f\n", x/x); printf("inf-inf = %f\n", x-x); }

Sa´ıda

(94)

Formato ponto flutuante IEEE 754

± expoente mantissa valor

0 00000000 00000000000000000000000 0

1 00000000 00000000000000000000000 -0

0 11111111 00010000000000000000000 NaN

1 11111111 00010100100100100100000 NaN

0 11111111 00000000000000000000000 ∞

1 11111111 00000000000000000000000 −∞

0 10000001 10100000000000000000000 1.101·2129127

= 6.5

1 10000001 10100000000000000000000 −1.101·2129127

=−6.5

0 10000000 00000000000000000000000 1.0·2128127

= 2

0 10000010 10100000000000000000000 1.0·2130127

(95)

Formato ponto flutuante IEEE 754

A precis˜aopde um sistema de ponto flutuante ´e definida como o n´umero de bits da mantissa (incluindo bits escondidos). Sendo assim a precis˜ao simples do formato IEEE 754 ´ep= 24, o que corresponde aproximadamente a7 d´ıgitos decimais significantes, j´a que

2−24

(96)

Formato ponto flutuante IEEE 754

A precis˜aopde um sistema de ponto flutuante ´e definida como o n´umero de bits da mantissa (incluindo bits escondidos). Sendo assim a precis˜ao simples do formato IEEE 754 ´ep= 24, o que corresponde aproximadamente a7 d´ıgitos decimais significantes, j´a que

2−24

≈10−7

De forma an´aloga, na precis˜ao dupla comp= 53temos aproximadamente16 d´ıgitos significantes.

Por exemplo, a representa¸c˜ao em precis˜ao simples de

(97)

Formato ponto flutuante IEEE 754

A precis˜aopde um sistema de ponto flutuante ´e definida como o n´umero de bits da mantissa (incluindo bits escondidos). Sendo assim a precis˜ao simples do formato IEEE 754 ´ep= 24, o que corresponde aproximadamente a7 d´ıgitos decimais significantes, j´a que

2−24

≈10−7

De forma an´aloga, na precis˜ao dupla comp= 53temos aproximadamente16 d´ıgitos significantes.

Por exemplo, a representa¸c˜ao em precis˜ao simples de

π = 3.141592653. . .

´e

(98)

Formato ponto flutuante IEEE 754

Propriedade Simples Dupla Estendida

comprimento total 32 64 80

bits na mantissa 23 52 64

bits no expoente 8 11 15

base 2 2 2

expoente m´aximo 127 1023 16383

expoente m´ınimo -126 -1022 -16382

maior n´umero ≈3.4×1038

≈1.8×10308

≈1.2×104932

menor n´umero ≈1.2×10−38 ≈2.2×10−308 ≈3.4×10−4932

(99)

Formato ponto flutuante IEEE 754

Propriedade Simples Dupla Estendida

comprimento total 32 64 80

bits na mantissa 23 52 64

bits no expoente 8 11 15

base 2 2 2

expoente m´aximo 127 1023 16383

expoente m´ınimo -126 -1022 -16382

maior n´umero ≈3.4×1038

≈1.8×10308

≈1.2×104932

menor n´umero ≈1.2×10−38 ≈2.2×10−308 ≈3.4×10−4932

d´ıgitos decimais 7 16 19

Na linguagem C

◮ float: precis˜ao simples ◮ double: precis˜ao dupla

(100)

Formato ponto flutuante IEEE 754

Exerc´ıcios

Considere os seguintes n´umeros representados no sistema decimal:

a) 2

b) 30

c) 5.75

d) 0.1

Escreva a representa¸c˜ao de cada um dos n´umeros no formato de ponto flutuante IEEE 754 usando precis˜ao simples.

Gabarito

(101)

Opera¸c˜oes aritm´eticas em ponto flutuante

◮ Adi¸c˜ao/subtra¸c˜ao: quando dois n´umeros em ponto flutuante

s˜ao somados (ou subtra´ıdos), ´e preciso alinhar as casas decimais do n´umero de menor expoente para a direita at´e que os expoentes fiquem iguais.

◮ Multiplica¸c˜ao/divis˜ao: nessa opera¸c˜ao realizamos o produto

(ou divis˜ao) das mantissas e o expoente final da base ´e obtido, somando (subtraindo) os expoentes de cada parcela.

(102)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

(103)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Adicionar4.32 e0.064em uma m´aquina com mantissa t= 2 e base10.

Solu¸c˜ao do Exemplo

4.32 + 0.064 = 0.43×101+ 0.64×10−1

(104)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Adicionar4.32 e0.064em uma m´aquina com mantissa t= 2 e base10.

Solu¸c˜ao do Exemplo

4.32 + 0.064 = 0.43×101+ 0.64×10−1

= 0.4300×101 + 0.0064×101 = 0.4364×101

Truncamento 0.43×101

(105)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Subtrair371de372em uma m´aquina com mantissa t= 2 e base

(106)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Subtrair371de372em uma m´aquina com mantissa t= 2 e base

10.

Solu¸c˜ao do Exemplo

(107)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Subtrair371de372em uma m´aquina com mantissa t= 2 e base

10.

Solu¸c˜ao do Exemplo

372371 = 0.37×103+ 0.37×103= 0.37×103 −0.37×103 = 0.00×103

(108)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

(109)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Multiplicar1234por 0.016em uma m´aquina com mantissat= 2 e base10.

Solu¸c˜ao do Exemplo

12340.016 = 0.12×1040.16×10−1

(110)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Multiplicar1234por 0.016em uma m´aquina com mantissat= 2 e base10.

Solu¸c˜ao do Exemplo

12340.016 = 0.12×1040.16×10−1

= 0.12×104 ∗ 0.16×10−1 = 0.0192×103 = 0.19×102

Neste caso usando arredondamento ou truncamento, o resultado ´e

(111)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

(112)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Dividir0.00183por 492em uma m´aquina com mantissa t= 2 e base10.

Solu¸c˜ao do Exemplo

0.00183÷492 = 0.18×10−2

(113)

Opera¸c˜oes aritm´eticas em ponto flutuante

Exemplo

Dividir0.00183por 492em uma m´aquina com mantissa t= 2 e base10.

Solu¸c˜ao do Exemplo

0.00183÷492 = 0.18×10−2

÷0.49×103 = 0.18×10−2 ÷0.49×103 = 0.3673×10−5

Arredondamento0.37×10−5

(114)

Opera¸c˜oes aritm´eticas em ponto flutuante

´

E importante observar que algumas propriedades aritm´eticas como

associatividade: (a+b) +c=a+ (b+c)

distributividade: a(b+c) =ab+ac

n˜ao s˜ao v´alidas em sistemas de ponto flutuante.

Para os exemplos a seguir, considere um sistema com baseβ e trˆes d´ıgitos na mantissa, ou seja,F(10,3, L, U). Considere ainda que o sistema trabalha com arredondamento ap´os cada uma das

opera¸c˜oes efetuadas.

Exemplo

a)(11.4 + 3.18) + 5.05 e11.4 + (3.18 + 5.05)

(115)

Opera¸c˜oes aritm´eticas em ponto flutuante

Solu¸c˜ao do Exemplo

a) (11.4 + 3.18) + 5.05

0.1140×102 + 0.0318×102 = 0.1458×102 = 0.146×102

(arr.)

0.1460×102 + 0.0505×102 = 0.1965×102 =0.197×102

(arr.)

a) 11.4 + (3.18 + 5.05)

0.318×101 + 0.505×101 = 0.823×101

0.0823×102 + 0.1140×102 = 0.1963×102 =0.196×102

(116)

Opera¸c˜oes aritm´eticas em ponto flutuante

Solu¸c˜ao do Exemplo (cont.)

b) 5.55(4.454.35)

0.445×101 − 0.435×101 = 0.010×101

0.555×101 ∗ 0.100×100 = 0.055500×101 = 0.555

b) 5.554.455.554.35

0.555×101 ∗0.445×101 = 0.246975×102 = 0.247×102

0.555×101 ∗0.435×101 = 0.241425×102 = 0.241×102

(117)

No¸c˜oes b´asicas sobre erros

J´a vimos que introduzimos erros ao representar um n´umero no computador.

Como vamos representaraproximadamente um n´umero realx por sua vers˜ao ponto flutuante no computador, precisamos definir medidas apropriadas para calcular o erro cometido nessa aproxima¸c˜ao.

Vamos usar as seguintes medidas de erro:

(118)

No¸c˜oes b´asicas sobre erros

Erro absoluto

Sex˜ ´e uma aproxima¸c˜ao dex, o erro absoluto ´e definido por

(119)

No¸c˜oes b´asicas sobre erros

Erro absoluto

Sex˜ ´e uma aproxima¸c˜ao dex, o erro absoluto ´e definido por

EA(˜x) =x

Exemplo

Sejax= 1428.756. Em uma m´aquina com mantissat= 4, usando arredondamento e truncamento, respectivamente, temos

˜

xt= 0.1428×10

4

⇒ EA( ˜xt) = 0.756×10

0 ˜

xa= 0.1429×10

4

⇒ EA( ˜xa) = 0.244×10

(120)

No¸c˜oes b´asicas sobre erros

Erro relativo

O erro relativo ´e definido por

ER(˜x) = x−x˜ ˜

x =

EA(˜x) ˜

x

(121)

No¸c˜oes b´asicas sobre erros

Erro relativo

O erro relativo ´e definido por

ER(˜x) = x−x˜ ˜

x =

EA(˜x) ˜

x

dado quex˜6= 0.

Exemplo

x1 = 1000.5, x˜1 = 1000.6

(122)

No¸c˜oes b´asicas sobre erros

Erro relativo

O erro relativo ´e definido por

ER(˜x) = x−x˜ ˜

x =

EA(˜x) ˜

x

dado quex˜6= 0.

Exemplo

x1 = 1000.5, x˜1 = 1000.6

x2= 10.5, x˜2 = 10.6 ⇒ EA( ˜xi) = 0.1, i= 1,2

ER( ˜x1) = 0.1

1000.6 ≈0.00009994 = 0.9994×10− 4

(123)

No¸c˜oes b´asicas sobre erros

Apesar de termos definido erro absoluto e erro relativo para valores reaisx ex˜, a mesma defini¸c˜ao serve para vetores ou matrizes.

Nesse caso, se denotarmos a norma de um vetor por|| · ||, ent˜ao ter´ıamos:

◮ erro absoluto

||x||

◮ erro relativo

||x|| ||x˜||

(124)

No¸c˜oes b´asicas sobre erros

´

E claro que em geral n˜ao conhecemos o valor real que estamos interessados em aproximar, se soubessemos, n˜ao seria necess´ario se preocupar em aproxim´a-lo. O que se faz na pr´atica ´e usar uma medida de erro aproximado, dada por

ER= xnew−xold

xnew

(125)

Efeitos num´ericos

Al´em dos erros causados pela representa¸c˜ao no computador e pelas opera¸c˜oes aritm´eticas, existem certos efeitos num´ericos que

contribuem para aumentar os erros introduzidos.

(126)

Efeitos num´ericos

Somar ou subtrair um n´umero pequeno e um grande

Para exemplificar considere um sistemaF(10,4, L, U).

Exemplo

Somar0.1 e5000.

0.1 + 5000 = 0.1000×100

+ 0.5000×104 = 0.00001×104

+ 0.50000×104 = 0.50001×104

Usando arredondamento (ou truncamento), obtemos0.5×104

(127)

Efeitos num´ericos

Exemplo

Calcular

S = 5000 + 0.1 +. . .0.1

| {z }

10×

= 5000

S= 0.1 +. . .0.1

| {z }

10×

+ 5000 = 5001

Observe que embora analiticamente o resultado das somas seja o mesmo, quando usamos uma m´aquina de ponto flutuante

F(10,4, L, U), o resultado ´e diferente.

No primeiro caso, ao somar um n´umero grande 5000e um pequeno

(128)

Efeitos num´ericos

Cancelamento

Ocancelamento ocorre quando subtraimos dois n´umeros quase iguais, ou quando somamos n´umeros de sinais opostos mas de magnitudes semelhantes.

Como vimos, quando calculamos a diferen¸caxy, o resultado ter´a o mesmo expoentee. Para normalizar o resultado obtido, devemos mover os d´ıgitos para a esquerda de tal forma que o primeiro seja diferente de zero.

(129)

Efeitos num´ericos

Cancelamento

Exerc´ıcio 1

Calcular√37√36 em uma m´aquina F(10,4, L, U) com

arredondamento.

◮ Calcule o valor exato e compare o que acontece. ◮ Em seguida use x−y

x−√y para calcular o valor de

(130)

Efeitos num´ericos

Cancelamento

Solu¸c˜ao do Exerc´ıcio 1

Para efeitos de compara¸c˜ao, apresentamos a resposta exata aqui:

37√36 = 6.082762536 = 0.08276253 = 0.8277×10−1

Nessa m´aquina temos

37 = 6.08276253 0.6083×101 √

36 = 6.0 0.6000×101

Efetuando a subtra¸c˜ao tem-se

0.6083×101 − 0.6000×101

(131)

Efeitos num´ericos

Cancelamento

Solu¸c˜ao do Exerc´ıcio 1 - (cont.)

´

E poss´ıvel obter um resultado mais preciso? Sim, basta considerar que

x√y=√x√y(

x+√y) √

x+√y =

xy

x+√y

Portanto para

37√36

temos

xy

x+√y =

3736 √

37 +√36 =

1 0.6083×101

+ 0.6000×101

= 1

0.1208×102

(132)

Efeitos num´ericos

Propaga¸c˜ao do erro

Tamb´em ocorrem problemas quando uma soma parcial ´e muito grande se comparada com o resultado final.

Considere que:

s=

n

X

k=1

ak

seja a soma a ser computada e que osak podem ser positivos ou

negativos e de diferentes magnitudes.

O c´alculo pode ser feito da seguinte forma:

s1=ak, sk =sk1+ak, k= 2,3, . . . , n

(133)

Efeitos num´ericos

Propaga¸c˜ao do erro

Exemplo

Considere uma m´aquinaF(10,4, L, U) com truncamento. Vamos efetuar a seguinte opera¸c˜ao:

S = 4 X

i=1

(134)

Efeitos num´ericos

Propaga¸c˜ao do erro

Exemplo

Considere uma m´aquinaF(10,4, L, U) com truncamento. Vamos efetuar a seguinte opera¸c˜ao:

S = 4 X

i=1

(xi+yi) com xi= 0.46709, e yi = 3.5678

Parai= 1, temos

(x1+y1) = 0.4034×10 1

E o erro absoluto ´e

(135)

Efeitos num´ericos

Propaga¸c˜ao do erro

Exemplo (cont.)

Parai= 2, temos

(x1+y1) + (x2+y2) = 0.8068×10 1

EA( ¯S) =|8.071388.068|= 0.00338

Parai= 3, temos

(x1+y1) + (x2+y2) + (x3+y3) = 0.1210×10 2

EA( ¯S) =|12.1070712.10|= 0.00707

Parai= 4, temos

(x1+y1) + (x2+y2) + (x3+y3) + (x4+y4) = 0.1613×10 2

EA( ¯S) =|16.1426716.13|= 0.01276

(136)

Desastres

(137)

Patriot missile failure - Guerra do Golfo (1991)

◮ Uma bateria de m´ısseis

Patriot (”Phased Array TRacking Intercept Of Target”) americano, falhou ao rastrear e interceptar um m´ıssil Scud do Iraque.

◮ O m´ıssil Scud acertou o

acampamento americano, matou 28 soldados e feriu centenas.

◮ Relat´orio t´ecnico apontou uma

falha no software.

◮ Palavra do computador 24bits. ◮ Tempo era medido em d´ecimos

de segundo (1/10).

◮ O valor (1/10) ao ser

representado em bin´ario n˜ao termina.

◮ Ac´umulo do erro no software

(138)

Ariane 5

◮ Foguete da European Space

Agency explode 40s ap´os o lan¸camento.

◮ Milh˜oes de dolares foram investidos

no seu desenvolvimento e equipamento.

◮ Relat´orio acusou um erro do

software no sistema de referˆencia inercial.

◮ Problema: n´umero de64 bits de

(139)

Sleipnir offshore

◮ Plataforma de petr´oleo

Sleipnir A afunda.

◮ Ap´os o acidente a empresa

da plataforma, Statoil, uma empresa norueguesa solicita a empresa SINTEF um relat´orio t´ecnico.

◮ Falha em uma parede,

resultando em uma

Referências

Documentos relacionados

O objetivo deste trabalho foi avaliar o comportamento produtivo de genótipos de girassol no município de Colinas, MA, com vistas à produção de aquênios para extração de

iº — Designar para amar como Fisca] de Contrato, exacendo todas as atribuições ao mmo inerentes :: designadas em legislação pertinentes e nesta Pena:-ia, no âmbito da

 Na campanha de período seco, as variações na qualidade da água foram definidas pela presença de matéria orgânica no curso de água e pela poluição

Contribuiu para o aumento da publicação de material inédito, percebida desde 2007, o fato de o editor da revista, Afonso Maria Ligorio Soares, ter exercido mandato trienal

Quanto à avaliação bacteriológica dos filés de Salmão não foram encontrados Staphylococcus coagulase positiva e Salmonella spp., comprovando que os peixes dos

Cópia do prefácio da Harpa Cristã, edição de 1941, assinado pelo pastor Paulo Leivas Macalão Cópia da introdução da Harpa Cristã, edição de 1941, assinada pelo

Os estudos da “Hipóteses do custo da reprodução” na natureza (Cram et al. 2015) são escassos na atualidade e uma das razões é a dificuldade de trabalho com animais em campo e a

1. A trasladação é solicitada ao Presidente da Câmara Municipal, pelas pessoas com legitimidade para tal, nos termos do artigo 2.º deste Regulamento, através de requerimento,