O Cálculo Numérico
Por: Salezio.Francisco • 10/4/2018 • 1.889 Palavras (8 Páginas) • 360 Visualizações
...
Colocando agora o número 2 em evidência teremos:
(lOlll^ = 2 x (1 + 2 x (1 + 2 x (0 + 2 x 1))) + 1 = (23)l0
Veremos agora um processo para converter um número inteiro representado no sistema decimal para o sistema binário. Considere o número N0 = (347)10 e (aja-j... aja0)2 a sua representação na base 2.
Temos então que:
347 = 2 x (a- x 2*_1 + x 2>-2 + ... + % x 2 + ax) + aQ = 2 x 173 + 1
E, portanto, o dígito ag = 1 representa o resto da divisão de 347 por 2. Repetindo agora este processo para o número N. = 173:
173 = a» x 2*"1 + x 2K2 + ... + aj x 2 +
Obteremos o dígito a., que será o resto da divisão de por 2. Seguindo este raciocínio obtemos a seqüência de números e a^.
Nj = 2 = 2x1 + 0 ^ = O Ns=l = 2x0+1 =>ag = l
Portanto, a representação de (347),0 na base 2 será 101011011.
No caso geral, considere um número inteiro N na base 10 e a sua representação binária denotada por: (aja* , ... a,a,a0)2. O algoritmo a seguir obtém a cada k o dígito binário ak.
Passo 0: k = 0 Nk = N
Passo 1: Obtenha qk e r. tais que:
Nk = 2 x qk + rk Faça ak = r.
Passo 2: Se qk = 0, pare.
Caso contrário, faça Nk + , = qk.
Faça k = k + 1 e volte para o passo 1.
Como a parte fracionária de 2 x 0.5 é zero, o processo de conversão termina, e teremos: d, = 0, d2 = 0 e d3 = 1 e, portanto, o número (0.125)j0 tem representação finita na base 2: (0.001 )2
Um número real entre 0 e 1 pode ter representação finita no sistema decimal, mas representação infinita no sistema binário.
No caso geral, seja r um número entre 0 e 1 no sistema decimal e (0. d1d2...dj...)2 sua representação no sistema binário.
Os dígitos binários dj, d2 dj,... são obtidos através do seguinte algoritmo:
Passo 0: rt = r; k = 1
Passo 1: Calcule 2rk.
Se 2rk ss i, faça: dk = 1, caso contrário, faça: dk = 0
Passo 2: Faça r + j = 2rk — dk.
Se rk + j = 0, pare.
Caso contrário:
Passo 3: k = k + 1.
Observar que o algoritmo pode ou não parar após um número finito de passos. Para r = (0.125)lo teremos r4 = 0. Já para r = (0.1)]0> teremos: rj =0.1
k = 1
2rx = 0.2
*1
=
0
r2
*
0.2
k«2
2r2 = 0.4
d2
=
0
r3
=
0.4
II
00
o
II
CO
kl
fM
d3
s
0
r4
=
0.8
tl
2r4 = 1.6
=>
d4
X
1
rs
s
0.6
k = 5
2r5= 1.2
d5
s
1
r6
=
0.2 = r.
Como r6 = r2, teremos que os resultados para k de 2 a 5 se repetirão e então: rio s|í*r2s 0.2 e assim indefinidamente.
O fato de um número nâo ter representação finita no sistema binário pode acarretar a ocorrência de erros aparentemente inexplicáveis em cálculos efetuados em sistemas computacionais binários.
Analisando o Exemplo 2 da Seção 1.2 e usando o processo de conversão descrito anteriormente, temos que o número (O.S)10 tem representação finita no sistema binário: (0.1)2; já o número (0.11)10 terá representação infinita:
(0.000111000010100011110101110ÕÒÔ1010Ô0111101...)2
Um computador que opera no sistema binário irá armazenar uma aproximação para (0.11)10, uma vez que possui uma quantidade fixa de posições para guardar os dígitos da manlissa de um número, e esta aproximação será usada para realizar os cálculos. Não se pode, portanto, esperar um resultado exato.
Considere agora um número entre 0 e 1 representado no sistema binário:
(r)2 = (0. d,d2...dr)2
Como obter sua representação no sistema decimal?
Um processo para conversão é equivalente ao que descrevemos anteriormente. Definindo rt = r, a cada iteração k, o processo de conversão multiplica o número rt por (10)10 = (1010)2
...