Você está na página 1de 16

Capítulo 1 – Erros e representação numérica

Objetivos
Esperamos que ao final desta aula, você seja capaz de:

• Identificar as fases de modelagem e os possíveis erros nelas


cometidos;
• Compreender a representação binária e como valores decimais
são representados em um computador.

Pré-requisitos

Neste capítulo vamos estudar uma área relativamente nova quando


considerada toda a história da Matemática, mas não menos importante.
Importante conhecer sobre valor posicional de um algarismo no sistema de
numeração de base dez. Outro importante conceito é a notação científica, pois
este tipo de notação trabalhamos com o posicionamento da vírgula e a potência
de 10 muito útil em nosso curso de Cálculo Numérico.

Introdução
Neste capítulo vamos, recordar os conceitos estudados em Lógica
Matemática de álgebra booleana desenvolvidos por George Boole em meados
de 1857. Estes conceitos fazem o elo entre a matemática e os computadores
digitais.
Os computadores utilizam a lógica binária, presença e ausência de
energia, ou seja, verdadeiro e falso. Agora basta associar de maneira adequada
os operadores, conjunção, disjunção, negação e outros para termos todas as
operações matemáticas que um computador executa.
Nosso curso tem como foco conversão de binário-decimal, e como esta
acarreta erros nas operações realizadas por computadores.

1. Erros na fase de modelagem


Para melhor entender em quais momentos durante a resolução de um
problema podem ocorrer erros, vamos representá-lo através de um esquema,
conforme a figura a seguir.

PROBLEMA MODELAGEM MODELO RESOLUÇÃO


FÍSICO MATEMÁTICO SOLUÇÃO

O erro pode ocorrer na fase de modelagem, por exemplo, se o problema


exige que tenhamos uma precisão de várias casas decimais não conseguimos
medi-los de maneira precisa dependendo do modelo que se tenha.
Outro exemplo que podemos citar são modelos que matemáticos
estudados no Ensino Médio os quais desprezam atrito, resistência do ar, entre
outras variáveis que em problemas reais influenciam diretamente no resultado
final.
Exemplo
Considerando a equação F = m⋅a, sendo F a força medida em Newtons,
m a massa em quilograma e a representa a aceleração em metros por segundo
ao quadrado, se desejarmos medir a força de um objeto em queda livre,
sabemos que a aceleração é aproximadamente 9,8 m/s2 e sua massa igual a 5
Kg.
Facilmente respondemos que a sua força é F = 9,8 × 5 = 49 N.
Entretanto, existe variação na gravidade em função da altitude em relação ao
nível do mar, temos também que considerar a resistência do ar, entre outros
fatores, portanto embora os cálculos estejam corretos temos erros na
modelagem problema.
O que ocorreu no problema citado anteriormente acorre em qualquer área
do conhecimento.

2. Erros na fase de resolução


Os erros também podem ocorrer na fase de resolução através de alguma
aproximação realizada pelo computador devido a restrições de representação,
como, por exemplo, o número π, e, 2 e outros irracionais e alguns racionais.
Estes números não podem ser representados exatamente e o erro cometido
propaga nas operações aritméticas.
No computador ainda temos o problema da conversão em binário-
decimal, em que os números binários não representam todos na forma decimal.
Para melhor compreender essas situações vamos estudar como
transformar números da forma decimal-binária e vice-versa.

2.1 Conversão de bases


As máquinas digitais convertem todos os dados para binário (0 ou 1,
presença ou ausência de energia) realizam as operação, transformam em
decimal para que possamos compreender, todos os cálculos são realizado
utilizando a Álgebra Booleana.
Um número N qualquer pode ser descrito numa base β de acordo com a
seguinte expressão polinomial:
N = amβm + am −1βm−1 +... + a1β1 + ao + a−1β −1 + a−2β−2 + ... + a−nβ −n

Para compreender melhor primeiro vamos fazer um exemplo com a base


decimal a qual estamos mais acostumados.
Deste momento em diante neste curso todos os números serão
representados entre parênteses com um índice indicando em qual base está o
número para que não haja confusão. Por exemplo, (110)10, representa o número
cento e dez enquanto que (110)2, representa o número “um um dois” na base
binária.
Vamos representar o número (142,52)10, assim temos.
N = a2β2 + a1β1 + a−1β−1 + a −2β−2
(142,12 )10 = 1⋅ 102 + 4 ⋅ 102 + 2 ⋅ 100 + 5 ⋅ 10 −1 + 2 ⋅ 10−2
Podemos observar claramente o efeito da posição relativa, que neste
caso 1 tem peso 100, 4 tem peso 40 e 2 tem peso unitário e o mesmo para a
parte fracionária que tem 5 com peso 0.5 e 2 com pesso 0.02.
A base binária utiliza apenas dois símbolos para representar os números
o 0 e o 1. Vamos escrever o número (110)2 utilizando o polinômio que generaliza
a representação dos números. Neste caso temos β = 2.
N = a3β3 + a2β2 + a1β1
(110 )2 = 1⋅ 23 + 1⋅ 22 + 0 ⋅ 20
(110 )2 = (12 )10
Resolvendo a expressão anterior temos como resultado a representação
decimal do número binário (110)2.
Agora vamos estudar um método prático para realizar a conversão
binário-decimal e vice versa através de um exemplo.
Exemplo
Transforme em binário o número (26)10.
Solução
Para converter decimal em binário dividimos o número sucessivas vezes
por 2 enquanto for possível, e escrevemos o número binário tomando os restos
da divisão, da última para a primeira.

26 2
0 13 2
1 6 2
0 3 2
1 1 2
1 0

Assim o número (26)10 = (11010)2, para verificar basta utilizar o polinômio


para transformar novamente em decimal. Vamos verificar.
N = a 4β 4 + a3β3 + a2β2 + a1β1 + a0β0
(11010 )2 = 1⋅ 24 + 1⋅ 23 + 0 ⋅ 22 + 1⋅ 21 + 0 ⋅ 20
(11010 )2 = 1⋅ 16 + 1⋅ 8 + 0 ⋅ 4 + 1⋅ 2 + 0 ⋅ 1
(11010 )2 = 16 + 8 + 0 + 2 + 0
(11010 )2 = ( 26 )10
Podemos observar que para representar um número em binário
precisamos de mais posições que na forma decimal, de maneira geral quanto
menor a base mais posições são necessárias.
Agora vamos estudar o processo para transformar decimais fracionários,
considere o exemplo.
Exemplo
Transforme em decimal o número (0,625)10.
Solução
Para transformar decimal fracionário em binário, multiplicamos apenas
parte fracionária por 2 sucessivas vezes até a parte fracionária ser igual a zero
ou o número repetir uma sequência, a parte inteira sempre será 0 ou 1.
0,625 0,250 0,500
x 2 x 2 x 2
1,250 0 ,500 1,000
A parte inteira em destaque é o número na forma binária (0,101)2. Como
fizemos no exemplo anterior vamos verificar se a transformação está correta
voltando o número a forma decimal.
N = a −1β−1 + a−2β−2 + a−3β −3
(110 )2 = 1⋅ 2−1 + 0 ⋅ 2−2 + 1⋅ 2−3
1 1 1
(110 )2 = 1⋅ + 0 ⋅ + 1⋅
2 4 8
(110 )2 = 1⋅ 0,5 + 0 ⋅ 0,25 + 1⋅ 0,125
(110 )2 = (0,625)10
E como faríamos se tivéssemos um número com parte inteira e
fracionária, ou seja, misto na forma decimal para transformar em binário?
A resposta é simples basta aplicar os dois processos em separado.
Vamos fazer um exemplo.
Exemplo
Transforme o número (37,375)10 em binário.
Solução
Primeiro vamos transformar a parte inteira, ou seja, o 37.
37 2
1 18 2
0 9 2
1 4 2
0 2 2
0 1 2
1 0

Assim, na parte inteira temos (100101)2, mas ainda falta a parte


fracionária. Tomando apenas esta faremos como no exemplo anterior.
0,375 0,750 0,500
x 2 x 2 x 2
0 ,750 1,500 1,000
Então a representação binária do número (37,375)10 é (100101,011)2.

2.2 Erros de arredondamento


Durante o processo de conversão binário decimal, podem ocorrer alguns
erros, pois na forma binária não é possível representar todos os números da reta
real. Também existem casos em que um número exato na forma decimal não
possui tal representação na forma binária.
Por exemplo o número (0,1)10, em binário é uma dízima periódica, ou
seja, não pode ser representada exatamente com uma quantidade finita de
símbolos.
Existem também os números em decimal que não possuem
representação binária, então fazemos uma aproximação.
Exemplo
Vamos representar o número (0,1)10 na forma binária.
0,1 0,2 0,4 0,8 0,6 0,2 0,4 0,8 0,6
x2 x2 x2 x2 x2 x2 x2 x2 x2
0,2 0,4 0,8 1,6 1,2 0,4 0,8 1,6 1,2

Observe que neste ponto o (0,4)10 começa a repetir formando assim uma
dízima periódica em binário. Neste caso existe a necessidade de arredondar ou
truncar, pois temos uma quantidade finita de posições para representar o
número.
A representação binária que obtivemos para (0,1)10 é (0,000110011...)2,
fazendo a transformação inversa do último número considerando apenas as
nove primeiras casas chegamos ao decimal (,09960937500)10 o qual possui um
erro de (0,000390625)2 que dependendo da aplicação pode ser um problema.
Vimos como os números são representados em máquinas digitais agora
vamos compreender como são armazenados e como podemos operá-los.

2.3 Representação em ponto flutuante


Todo dia utilizamos calculadoras e nem imaginamos que elas podem
cometer erros e muito menos nos preocupamos como suas operações são
realizadas, nelas são utilizadas representação em aritmética de ponto flutuante.
A seguir temos um exemplo.
Exemplo
O número 15.200.000.000 na calculadora é representado por 1,52 x 1010.
Observe que a vírgula que separa a parte fracionária no número
15.200.000.000 está a direita do último zero. Para facilitar a escrita e diminuir o
espaço necessário para a representação deslocamos a vírgula dez casas para a
esquerda e multiplicamos por uma potência de dez para não alterar o valor do
número, neste caso, 1010.
Conhecendo a base em que se está representando o número, os valores
dos números significativos (no exemplo anterior temos três algarismos
significativos: 152) e o expoente da base podemos representar os números de
forma otimizada, quando a quantidade de símbolos a ser armazenado é limitada.
A seguir temos a definição do sistema de ponto flutuante para qualquer base de
numeração.
Definição
Um sistema de ponto flutuante F ⊂ ℝ é um subconjunto dos números
reais cujos elementos tem a forma:
F = ± (, d 1 d 2 d 3 . . .d t ) β e

sendo 0 ≤ di < β, i = 1,...,t

A aritmética de ponto flutuante F é caracterizada por quatro números inteiros:


• base β (binária, decimal, hexadecimal e etc..);
• precisão t (número de algarismos da mantissa);
• limites do expoente e ( emin ≤ e ≤ emax );
Assim F é definido por F ( β,t,emin ,emax ) . A mantissa está sempre entre -1 e

1.
Para garantir a representação única para cada y ∈ F , faz-se uma
normalização no sistema de forma que d1 ≠ 0 para y ≠ 0 .

No exemplo a seguir veremos como representar um número no sistema


de ponto flutuante.

Exemplo
Considere o número (0,00021456)10, vamos representá-lo em uma
máquina com as seguintes características β = 10, t = 4 e −9 ≤ e ≤ 9
Solução
Para representar nesta máquina o número vamos utilizar a equação
F = ± (, d 1 d 2 d 3 . . .d t ) β e

Como d1 ≠ 0, β = 10, como a mantissa deve estar entre -1 e 1 devemos deslocar


a vírgula três casas para a direita.
0,21456 × 10-3
Mas nossa máquina representa apenas 4 dígitos na mantissa então truncamos o
último ficando com o número
0,2145 × 10-3
Utilizamos o mesmo processo para representar números inteiros, como
no exemplo a seguir.
Exemplo
Considere o número (21,004567)10, vamos representá-lo em uma
máquina com as seguintes características β = 10, t = 4 e −9 ≤ e ≤ 9
Solução
Novamente devido as restrições da mantissa vamos reposicionar a
vírgula de modo que d1 ≠ 0 a mantissa esteja entre -1 e 1.
0,21004567 × 102. A nossa máquina representa apenas 4 dígitos na mantissa
temos.
0,2100 × 102
Observe que neste último exemplo alguns algarismos foram ignorados,
acarretando um erro, assim a quantidade de símbolos na mantissa determina a
capacidade de armazenamento de um número em uma máquina digital.
Para valores binários funciona da mesma maneira e assim como na
representação decimal também ocorrem erros.
Em uma máquina digital em seu projeto é implícito a base do sistema de
numeração e por isso não há necessidade de armazená-la.
Par representar em uma máquina digital devemos reservar um espaço
também para o sinal, onde se convenciona que 0 (zero) indica positivo e 1(um)
indica o sinal negativo. Observe o esquema a seguir.

Sinal da Mantissa Sinal do Expoente


mantissa expoente

Observe o exemplo a seguir.


Exemplo
Represente o número (-26,575)10 em uma máquina digital com as
seguintes características β = 2, t = 4 e -8 < e < 8.
Solução
Inicialmente devemos converter o número para binário assim temos.
(26,575)10 = (11010,11)2
Vamos deslocar a vírgula 5 casas para a esquerda para satisfazer as
condições da mantissa, ou seja, d1 ≠ 0 e a mantissa entre -1 e 1. Assim
0,1101011 × 25,
Entretanto nossa máquina armazena apenas os símbolos 0 e 1 portanto,
devemos transformar o expoente em binário também (5)10 = (101)2. Utilizando o
esquema temos.

S
mantissa se Exp
M
0 1 1 0 1 0 1 0 1

Nesta máquina devemos abandonar alguns dígitos, pois a máquina


possui apenas 4 posições para a mantissa causando um erro em sua
representação devido a limitações da máquina. Na máquina está representado.
0,1101 × 25 = (11010,00)2
Voltando o número representado na máquina a forma decimal temos.
(11010,00)2 = (26)10
A parte fracionária foi perdida, e ocasiona um erro de (0,575)10.
Saiba mais...
Durante a Guerra do Golfo em 1991, um míssil Patriot falhou devido
a um erro na representação do tempo utilizado para calcular a sua
trajetória, este erro impossibilitou o míssil Patriot de interceptar o míssil
Scud que matou 28 soldados e deixou em torno de 100 feridos.
O erro no sistema ocorreu devido a um truncamento na conversão
de décimos de segundos em segundos utilizando uma memória de 24 bits
na sua representação, o agravante do erro foi ocasionado devido a alta
velocidade do míssil Scud, 1,676 m/s, que por um pequeno lapso no
cálculo do tempo o tirou da faixa de atuação do Patriot.
http://www.ima.umn.edu/~arnold/disasters/patriot.html
Como vimos, as máquinas digitais possuem limitações e por isso é
importante estudá-las para compreender o que podemos fazer e como corrigir,
um outro erro comum cometido por máquinas digitais é o overflow e o underflow
erros relacionados ao projeto e a limitação de memória na representação de
números muito grandes ou muito pequenos em módulo.
2.4 Overflow e Underflow
O conjunto de números dos números reais é infinito, entretanto, sendo o
sistema de ponto flutuante limitado, pois é um sistema finito, fica claro que não é
possível representar todos os números.
Dois fatores causam esta limitação:
• o intervalo dos expoentes ( e min ≤ e ≤ e max );
• a quantidade de elementos na mantissa ( β −1 ≤ m ≤ 1 − β − t )
A primeira limitação causa os fenômenos denominados de “overflow”
e “underflow”. A Segunda ocasiona erros de arredondamento ou trucamento.
Ocorre um overflow quando se tenta armazenar um número real que
tenha expoente maior que o determinado pelo intervalo pré-definido por ele.
O underflow ocorre quando se deseja representar um número diferente de
zero, mas que seja menor que o menor representável pela máquina, neste caso
extrapolando o expoente pelo limite inferior.

Exemplo
Considere uma máquina em que t = 4, β = 2 e -2 ≤ exp ≤ 2, represente os
seguintes valores (0,00001)2 e (10000)2 nesta máquina.
Solução
Colocando (0,00001)2 na representação de ponto flutuante temos:
0,1 x 2-4. Como a nossa máquina tem trabalha no sistema binário devemos
representar também os expoentes na forma binária. Levando em consideração
as especificações desta máquina fazemos o seguinte esquema.
sm mantissa se exp
0 1 0 0 0 1 ? ?

O expoente tem representação (100)2, mas dispomos apenas duas casas


para a representação neste caso houve um underflow.
Fazendo mesmo processo para (10000)2, temos:
0,1 x 25 e (5)10 = (101)2.
sm mantissa se exp
0 1 0 0 0 0 ? ?

Como o expoente extrapolou a capacidade da máquina de representação


para mais dizemos que ocorreu um overflow.
2.5 Erros
Como vimos anteriormente em cálculos computacionais, os valores em
geral são aproximados, assim, é importante saber o quanto uma medida está
próxima de um valor “exato”. Assim utilizamos o erro para medir a diferença
entre o valor exata e o aproximado.
Seja: x é aproximação para x .
O erro absoluto de x é dado por:
eA = x − x

O erro absoluto nem sempre é eficiente. Considere o seguinte caso:


Na construção de uma casa o mestre-de-obras mede o ângulo formado
entre a parede e o solo e obtêm 89° graus, sendo o ideal 90°, entretanto esse
erro é insignificante tendo em vista a altura da parede uma casa, que em média
tem seis metros de altura. Considerando o mesmo erro em um observatório no
ajuste do ângulo do telescópio pode significar milhares ou até milhões de
quilômetros entre dois astros.
Neste caso o erro absoluto de 1° tem significado muito diferente
dependendo da situação. Assim o erro relativo é definido conforme a expressão:
x−x
eR =
x

O erro relativo é útil quando x é uma boa medida do tamanho da quantidade.

Exemplo
Seja o valor π = 3,141592 considerado como “valor exato”. Vamos
calcular o erro cometido no cálculo do comprimento de circunferências em dois
casos:
a) π = 3,14, raio = 4 m
b) π = 3,141, raio = 1000 m
Solução
Nos dois casos vamos calcular o erro absoluto e relativo, sabendo que o
comprimento da circunferência é dado por: C = 2πr .
Calculando o valor exato.
Ce = 2 × 3,141592 × 4
Ce = 25.132736m
a)
C1 = 2 × 3,14 × 4
C1 = 25.12m

eA1 = x − x
eA1 = 25,132736 − 25,12
eA1 = 0,012736
Calculando o erro relativo
25,132736 − 25,12
eR1 =
25,132736
eR1 = 0,000506
Fazendo o mesmo para letra b temos
Ce = 2 × 3,141592 × 1000
Ce = 628,3184m

eA 2 = x − x
eA 2 = 6283,1840 − 6282,000
eA 2 = 1,184
Calculando o erro relativo
x−x
eR2 =
x
6283,1840 − 6282,000
eR2 =
6283,1840
eR2 = 0,0001884
Comparando o erro absoluto da letra a e b observamos que o erro é
maior na letra b. Enquanto que o erro relativo da letra b é menor que o erro
relativo em a. O que isto significa?
Significa que eA 2 = 1,184 é menos significativo quanto comparado com a

magnitude do comprimento.
Conclusão
Neste capítulo, conhecemos quais são as etapas da modelagem
matemática de um problema e onde os erros podem ocorrer.
Estudamos também como os números são representados na base binária
e como realizar a conversão binário-decimal tanto de números inteiros como de
fracionário, assim como os erros cometidos nesta conversão.
Além da conversão binário-decimal é importante saber como uma
máquina representa seus dados e suas limitações.
Agora que sabemos estes conceitos podemos analisar a relevância dos
resultados obtidos em uma máquina digital e como evitar erros maiores, assim
como contornar eventuais problemas durantes o processo.

Atividades
l2 3
1) Sabemos que a área do triângulo equilátero é dada por A te = , sendo l o
4
lado do triângulo e considerando 3 = 1,732050 um valor exato. Determine o
erro relativo cometido no cálculo a área do triângulo de lado 10 m considerando
2 casas decimais na raiz quadrada de 3.
a) Er = 0,0011
b) Er = 0,1100
c) Er = 0,0500
d) Er = 0,5000

2) Transforme em binário o número (107,9375)10.


a) (1101011,1111)2
b) (1110100,0011)2
c) (1110101,0011)2
d) (1110101,1011)2

3) Uma máquina utiliza aritmética de ponto flutuante e possui as seguintes


características t = 5, β = 2 e -7 ≤ exp ≤ 7. O maior e o menor número em módulo
diferente de zero representável nesta máquina são respectivamente.
a) (0,3906)10 e (12400)10
b) (0,003906)10 e (124)10
c) (0,0000001)10 e (10000000)10
d) (0,0001)10 e (10000)10

4) Maria Clara ficou encarregada da organização de um evento, para tanto


comprou uma calculadora para auxiliá-la. No início do trabalho havia 67 pessoas
para colocá-las em fila, logo em seguida chegaram mais 5, Maria Clara utilizou
sua calculadora nova para determinar de quantas maneiras diferentes era
possível organizar essas pessoas em fila, na primeira e na segunda situação.
Quais foram os resultados? Justifique sua reposta?

Comentário das atividades


Na atividade um, calculamos a área utilizando os dois valores fornecidos
de 3 o considerado exato e o aproximado para duas casas decimais, e em
seguida substituímos os valores em
x−x
eR2 =
x

Encontrando a letra a como alternativa correta.


Na atividade dois, como este binário tem parte inteira e parte fracionária
trabalhamos cada uma em separado. A parte inteira dividimos cento e sete por
dois sucessivas vezes, formando os binário a partir do resto da última divisão
para a primeira.
Na parte fracionária multiplicamos por 2 sucessivas vezes sempre
ignorando a parte inteira. O binário na parte fracionária é obtido a partir do inteiro
da primeira multiplicação para última. Realizando este processo chegamos ao
resultado (1101011,1111)2, ou seja, a letra a.
Na atividade três, neste exercício primeiro montamos um esboço de
como a máquina representa seus números. Para determinar o valor máximo
colocamos todos os valores da mantissa, do sinal do expoente e do expoente
igual a 1 e também no expoente, o sinal da mantissa não importa pois queremos
o módulo assim temos
sm Mantissa se exp
0 1 1 1 1 1 0 1 1 1

O número binário representado é (0,11111)2 x 27, fazendo os cálculos


para transformar em decimal temos (124)10.
Para o menor valor em módulo devemos tomar um cuidado pois o
primeiro valor na mantissa deve ser significativo ou seja diferente de zero,
observe o esquema a seguir.
sm Mantissa se exp
0 1 0 0 0 0 1 1 1 1
Transformando esse número para decimal temos (0,003906)10 e portanto
a alternativa correta é a letra b.
Na atividade quatro, devemos calcular 67! e 72! no entanto, na primeira
situação a calculadora realiza a operação, mas na segunda a calculadora não
consegue realizar o cálculo pois ocorre um overflow.

Você também pode gostar