• Nenhum resultado encontrado

Sistema de N´ umeros Discreto no Computador

No documento Métodos livro calculo numerico (páginas 36-41)

Inicialmente, descreveremos como os n´umeros s˜ao representados num computador.

Representa¸c˜ao de um N´umero Inteiro

Em princ´ıpio, a representa¸c˜ao de um n´umero inteiro no computador n˜ao apresenta qualquer difi- culdade. Qualquer computador trabalha internamente com uma base fixa β, onde β ´e um inteiro ≥ 2; e ´

e escolhido como uma potˆencia de 2.

Assim dado um n´umero inteiro n 6= 0, ele possui uma ´unica representa¸c˜ao, n = ±(n−kn−k+1. . . n−1n0) = ±(n0β0+ n−1β1+ . . . n−kβk),

onde os ni, i = 0, −1, . . . , −k s˜ao inteiros satisfazendo 0 ≤ ni< β e n−k6= 0.

Por exemplo, na base β = 10, o n´umero 1997 ´e representado por: 1997 = 7 × 100+ 9 × 101+ 9 × 102+ 1 × 103 , e ´e armazenado como n−3n−2n−1n0.

Representa¸c˜ao de um n´umero real

A representa¸c˜ao de um n´umero real no computador pode ser feita de duas maneiras: a) Representa¸c˜ao em ponto fixo

Este foi o sistema usado, no passado, por muitos computadores. Assim, dado um n´umero real, x 6= 0, ele ser´a representado em ponto fixo por:

x = ±

n

X

i=k

xi β−i ,

onde k e n s˜ao inteiros satisfazendo k < n e usualmente k ≤ 0 e n > 0 e os xi s˜ao inteiros satisfazendo

0 ≤ xi< β.

Por exemplo, na base β = 10, o n´umero 1997.16 ´e representado por:

1997.16 = 2 X i=−3 xiβ−i = 1 × 103+ 9 × 102+ 9 × 101+ 7 × 100+ 1 × 10−1+ 6 × 10−2 = 1 × 1000 + 9 × 100 + 9 × 10 + 7 × 1 + 1 × 0.1 + 6 × 0.01 , e ´e armazenado como x−3x−2x−1x0.x1x2.

b) Representa¸c˜ao em Ponto Flutuante

Esta representa¸c˜ao, que ´e mais flex´ıvel que a representa¸c˜ao em ponto fixo, ´e universalmente utilizada nos dias atuais. Dado um n´umero real, x 6= 0, este ser´a representado em ponto flutuante por:

x = ± d × βe,

onde β ´e a base do sistema de numera¸c˜ao, d ´e a mantissa e e ´e o expoente. A mantissa ´e um n´umero em ponto fixo, isto ´e:

d =

n

X

i=k

di β−i,

onde, frequentemente, nos grandes computadores, k = 1, tal que se x 6= 0, ent˜ao d16= 0; 0 ≤ di< β, i =

1, 2, . . . t, com t a quantidade de d´ıgitos significativos ou precis˜ao do sistema , β−1≤ d < 1 e −m ≤ e ≤ M . Observa¸c˜oes:

a) d16= 0 caracteriza o sistema de n´umeros em ponto flutuante normalizado.

Exemplo 2.1 - Escrever os n´umeros:

x1= 0.35; x2= −5.172; x3= 0.0123; x4= 5391.3 e x5= 0.0003 ,

onde todos est˜ao na base β = 10, em ponto flutuante na forma normalizada. Solu¸c˜ao: Temos ent˜ao:

0.35 = (3 × 10−1+ 5 × 10−2) × 100= 0.35 × 100 , −5.172 = −(5 × 10−1+ 1 × 10−2+ 7 × 10−3+ 2 × 10−4) × 101 = −0.5712 × 101 , 0.0123 = (1 × 10−1+ 2 × 10−2+ 3 × 10−3) × 10−1 = 0.123 × 10−1 , 5391.3 = (5 × 10−1+ 3 × 10−2+ 9 × 10−3+ 1 × 10−4+ 3 × 10−5) × 104 = 0.53913 × 104 , 0.0003 = (3 × 10−1) × 10−3 = 0.3 × 10−3 .

Agora, para representarmos um sistema de n´umeros em ponto flutuante normalizado, na base β, com t d´ıgitos significativos e com limites do expoente m e M , usaremos a nota¸c˜ao: F(β, t, m, M).

Assim um n´umero em F (β, t, m, M ) ser´a representado por: ± 0.d1d2. . . dt× βe,

onde d16= 0 e −m ≤ e ≤ M .

Exemplo 2.2 - Considere o sistema F (10, 3, 2, 2). Represente nesse sistema os n´umeros do exemplo anterior.

Solu¸c˜ao: Temos ent˜ao que nesse sistema um n´umero ser´a representado por ± 0.d1d2d3× 10e, onde

−2 ≤ e ≤ 2. Assim:

0.35 = 0.350 × 100, −5.172 = −0.517 × 101 ,

0.0123 = 0.123 × 10−1 ,

Observe que os n´umeros 5391.3 e 0.0003 n˜ao podem ser representados no sistema. De fato, o n´umero 5391.3 = 0.539 × 104 e portanto o expoente ´e maior que 2, causando overflow, por outro lado

0.0003 = 0.300 × 10−3 e assim o expoente ´e menor que -2 causando underflow. Podemos ent˜ao definir formalmente d´ıgitos significativos de um n´umero.

Defini¸c˜ao 2.1 - Seja β a base do sistema de n´umeros em ponto flutuante. D´ıgitos significativos de um n´umero x, s˜ao todos os algarismos de 0 a β − 1, desde que x esteja representado na forma normalizada.

Para exemplificar as limita¸c˜oes da m´aquina, consideremos agora o seguinte exemplo. Exemplo 2.3 - Seja f (x) uma fun¸c˜ao cont´ınua real definida no intervalo [a, b],

a < b e sejam f (a) < 0 e f (b) > 0. Ent˜ao de acordo com o teorema do valor intermedi´ario, existe x, a < x < b tal que f (x) = 0. Seja f (x) = x3− 3. Determinar x tal que f (x) = 0.

Solu¸c˜ao: Para a fun¸c˜ao dada , consideremos t = 10 e β = 10. Obtemos ent˜ao: f (0.1442249570 × 101) = −0.2 × 10−8 ;

f (0.1442249571 × 101) = 0.4 × 10−8 .

Observe que entre 0.1442249570 × 101 e 0.1442249571 × 101 ao existe nenhum n´umero que possa

ser representado no sistema dado e que a fun¸c˜ao f muda de sinal nos extremos desse intervalo. Assim, esta m´aquina n˜ao cont´em o n´umero x tal que f (x) = 0 e portanto a equa¸c˜ao dada n˜ao possui solu¸c˜ao.

Exerc´ıcios

2.1 - Considere o sistema F (10, 4, 4, 4). Represente neste sistema os n´umeros: x1 = 4321.24, x2 =

−0.0013523, x3= 125.64, x4= 57481.23 e x5= 0.00034.

2.2 - Represente no sistema F (10, 3, 1, 3) os n´umeros do exerc´ıcio 2.1.

Mudan¸ca de Base

Como j´a dissemos anteriormente a maioria dos computadores trabalham na base β onde β ´e um inteiro ≥ 2; e ´e normalmente escolhido como uma potˆencia de 2. Assim um mesmo n´umero pode ser representado em mais do que uma base. Al´em disso sabemos que, atrav´es de uma mudan¸ca de base, ´

e sempre poss´ıvel determinar a representa¸c˜ao em uma nova base. Veremos ent˜ao, atrav´es de exemplos, como se faz mudan¸ca de base.

Exemplo 2.4 - Mudar a representa¸c˜ao dos n´umeros: i) 1101 da base 2, para a base 10,

ii) 0.110 da base 2, para a base 10, iii) 13 da base 10, para a base 2, iv) 0.75 da base 10, para a base 2, v) 3.8 da base 10, para a base 2.

Solu¸c˜ao: Para cada n´umero daremos qual o procedimento a ser seguido. Assim: i) 1101 que est´a na base 2, para a base 10.

Neste caso o procedimento ´e multiplicar cada algarismo do n´umero na base 2 por potˆencias crescente de 2, da direita para a esquerda e somar todas as parcelas. Assim:

1101 = 1 × 20+ 0 × 21+ 1 × 22+ 1 × 23= 1 + 0 + 4 + 8 = 13 . Logo, (1101)2 = (13)10.

ii) 0.110 que est´a na base 2, para a base 10.

Neste caso o procedimento ´e multiplicar cada algarismo do n´umero na base 2, ap´os o ponto, por potˆencias decrescente de 2, da esquerda para a direita e somar todas as parcelas. Assim:

0.110 = 1 × 2−1+ 1 × 2−2+ 0 × 2−3=1 2 +

1

4+ 0 = 0.75 . Logo, (0.110)2 = (0.75)10.

Neste caso o procedimento ´e dividir o n´umero por 2. A seguir continuar dividindo o quociente por 2 at´e que o ´ultimo quociente seja igual a 1. O n´umero na base 2 ser´a ent˜ao obtido tomando-se o ´ultimo quociente e todos os restos das divis˜oes anteriores. Assim:

13 | 2

1 6 | 2

0 3 | 2

1 1

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

iv) 0.75 que est´a na base 10, para a base 2.

Neste caso o procedimento ´e multiplicar a parte decimal por 2. A seguir continuar multiplicando a parte decimal do resultado obtido, por 2. O n´umero na base 2 ser´a ent˜ao obtido tomando-se a parte inteira do resultado de cada multiplica¸c˜ao. Assim:

0.75 × 2 = 1.50 0.50 × 2 = 1.00 0.00 × 2 = 0.00 Logo, (0.75)10= (0.110)2.

v) 3.8 que est´a na base 10, para a base 2.

O procedimento neste caso ´e transformar a parte inteira seguindo o item iii) o que nos fornece (3)10= (11)2e a parte decimal seguindo o item iv). 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 n˜ao tem representa¸c˜ao exata na base

2. Esse exemplo ilustra tamb´em o caso de erro de arredondamento nos dados.

No exemplo 2.4, mudamos a representa¸c˜ao de n´umeros na base 10 para a base 2 e vice-versa. O mesmo procedimento pode ser utilizado para mudar da base 10 para uma outra base qualquer e vice- versa. A pergunta que surge naturalmente ´e: qual o procedimento para representar um n´umero que est´a numa dada base β1 em uma outra base β2, onde β1 6= β2 6= 10? Nesse caso devemos seguir o seguinte

procedimento: inicialmente representamos o n´umero que est´a na base β1 na base 10 e a seguir o n´umero

obtido na base 10, na base β2.

Exemplo 2.5 - Dado o n´umero 12.20 que est´a na base 4, represent´a-lo na base 3. Solu¸c˜ao: Assim, usando os procedimentos dados no exemplo 2.4, obtemos:

12 = 2 × 40+ 1 × 41= 6. 0.20 = 2 × 4−1+ 0 × 4−2 = 2

Portanto: (12.20)4= (6.5)10. Agora: 6 | 3 0 2 0.5 × 3 = 1.5 0.5 × 3 = 1.5 .. .

Portanto: (6.5)10 = (20.11 . . .)3. Logo (12.20)4= (20.111 . . .)3. Observe que o n´umero dado na base

4, tem representa¸c˜ao exata na base 10, mas n˜ao na base 3.

Exerc´ıcios

2.3 - Considere os seguintes n´umeros: x1 = 34, x2 = 0.125 e x3 = 33.023 que est˜ao na base 10.

Escreva-os na base 2.

2.4 - Considere os seguintes n´umeros: x1= 110111, x2= 0.01011 e x3= 11.0101 que est˜ao na base

2. Escreva-os na base 10.

2.5 - Considere os seguintes n´umeros: x1 = 33, x2 = 0.132 e x3 = 32.013 que est˜ao na base 4.

Escreva-os na base 5.

No documento Métodos livro calculo numerico (páginas 36-41)

Documentos relacionados