Buscar

erros e sistemas de ponto flutuante

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Curso de Ciências da Computação 
Disciplina: Cálculo Numérico Computacional 
Prof. Adson Gomes de Ataídes 
 
 
Modelagem matemática e métodos numéricos: erros e sistemas de ponto flutuante 
 
Introdução 
 
Neste capítulo, você vai aprender a identificar erros a partir de problemas físicos, além de saber 
especificar as principais formas de erros numéricos. Ao longo da história, os métodos numéricos para 
a resolução de problemas físicos de engenharia, seja na construção civil, de estradas ou até em 
estimativas populacionais, apresentam erros, pois a solução numérica desenvolvida não apresentava 
confiança nos resultados. Nesse sentido, a modelagem matemática representa o ponto de partida 
do cálculo numérico, que se desenvolveu com a análise numérica e a computação científica como 
campos de pesquisa emergentes, além da evolução da ciência da computação no século XX. 
 
Erros em problemas físicos 
 
No desenvolvimento da solução de um problema físico, os métodos numéricos utilizados na fase de 
modelagem matemática e/ou de resolução apresentam resultados não confiáveis. Na matemática 
apresentada no Ensino Médio, a modelagem matemática de problemas de cinemática, dinâmica e 
hidrostática, entre outros, é simplificada a equações polinomiais de 1º e 2º graus. Ilustremos essa 
situação a partir do cálculo da altura de um prédio por meio dos seguintes instrumentos: cronômetro 
graduado em segundos e minutos, esfera de metal e modelo matemático do movimento de um corpo 
sujeito a aceleração constante: 
 
onde: 
S = distância percorrida; 
so = distância inicial; 
vo = velocidade inicial; 
t = tempo percorrido; 
a = aceleração. 
 
No experimento de largar a esfera de metal do prédio, decorreram quatro segundos até a esfera 
tocar o solo. As condições do problema indicam que a velocidade inicial e a distância inicial são zero, 
e que a aceleração constante corresponde à gravidade com uma aproximação de 9,8 m/s2. 
Substituindo esses valores no modelo matemático, temos: 
 
 
 
O valor que representa a altura do prédio é preciso? De certa forma, não podemos confiar nesse 
resultado, pois não foram levadas em consideração no modelo matemático utilizado a resistência do 
ar, a velocidade do vento no momento de realização do experimento, a precisão do cronômetro e a 
unidade de aceleração da gravidade, que é definida como 9,80665 m/s2 (houve um arredondamento 
para 9,8). Avaliando a precisão do cronômetro para um tempo medido de 4,2 segundos, a altura seria 
86,436 m, ou seja, uma variação de aproximadamente 9,292% (86,432 m – 78,4 m = 8,032 m e 
8,032/86,436 ≅ 0,09292) na altura do prédio em apenas 0,2 segundos. A variação do tempo marcado 
é 4,761% (4,2 s – 4,0 s = 0,2 s e 0,2/4,2 ≅ 0,04761). 
 
De forma geral, na solução numérica de um problema físico em que não há possibilidade de 
representar finitamente os dígitos dos números, o resultado não será exato. Consequentemente, a 
quantidade de dígitos utilizados na solução numérica vai afetar diretamente na precisão do resultado 
a ser obtido. Outra situação de problema físico é o processo de interação entre o computador 
(máquina) e o ser humano (usuário da máquina). Na troca de informações, o usuário insere dados na 
base decimal e o computador funciona com dados na base 2 (sistema binário 0 e 1, com zero para 
ausência de impulso elétrico e com um para a presença de impulso elétrico); todas as operações de 
processamento são realizadas nesse sistema. Na saída das informações ocorre o procedimento 
inverso de conversão dos dados. Essa interação usuário-computador é a origem de erros que 
interferem no resultado de cálculos. Genericamente as fontes de erros se resumem a problemas na 
fase de modelagem matemática ou na resolução do problema físico (BARROSO et al., 1987). A Figura 
1 descreve os procedimentos de resolução de um problema físico. 
 
 
 
Convertendo números binários em decimais e vice-versa 
 
Inicialmente vamos adotar a seguinte notação para indicar a base numérica em que o número está 
representado: (n)B, onde n indica o número representado, e B, a base à qual esse número pertence. 
Podemos representar o número 286 na base dez como (286)10 e o número 11010 na base dois como 
(11010)2. Esses números ainda podem ser representados como 
 
(286)10 = 2 x 102 + 8 x 101 + 6 x 100 
 
(11010)2 = 1 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 0 x 20 
 
Aprendemos como representar os números na base dez e na base binária, mas como podemos 
converter números decimais em binários e vice-versa? 
 
De forma geral, um número na base B, (nini-1 ... n2n1n0)B, com n ≤ nj ≤ (B – 1) e j = 1, 2, ..., i, 
pode ser escrito na forma: niBi + ni-1Bi-1 + ... +n2B2 + n1B1 + n0B0. 
 
O procedimento de conversão de um número binário para um número decimal consiste em 
multiplicar o digito binário por uma potência de 2 apropriada. Vejamos alguns exemplos de 
conversão de números na base 2 para a base 10. 
 
Exemplo 1 
 
a) (1001)2 = 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20 = 9 = (9)10 
 
b) (11,1)2 = 1 × 21 + 1 × 20 + 1 × 2-1 = 2 + 1 + 0,5 = 3,5 = (3,5)10 
 
c) (10,01)2 = 1 × 21 + 0 × 20 + 0 × 2-1 + 1 × 2-2 = 2 + 0 + 0 + 0,25 = 2,25 = (2,25)10 
 
O procedimento de conversão de um número decimal para um número binário pode ser realizado 
pelo método das divisões sucessivas. O número decimal a ser convertido é dividido por 2 até o último 
quociente das divisões ser 0 na representação do algoritmo da divisão com o resto 1. A formação do 
número binário é composta pelo inverso dos restos encontrados das divisões. Vejamos alguns 
exemplos de conversão de números na base 10 para a base 2. 
 
Exemplo 2 
 
Como podemos chegar a essa conclusão: (43)10 = (101011)2? 
 
Considerando o número (43)10, ou seja, o número 43 na base 10. Vamos representá-lo pelo algoritmo 
da divisão (D = d ∙ q + r) com D = 43, d = 2, obtemos: 43 = 2 ∙ 21 + 1. O resto dessa divisão representa 
o último dígito do número binário que desejamos encontrar; vamos repetir esse procedimento até o 
quociente das divisões por 2 ser 0. 
 
Para D = 43, temos r = 1, uma vez que 43 = 2.21 + 1 
Para D = 21, temos r = 1, uma vez que 21 = 2.10 + 1 
Para D = 10, temos r = 0, uma vez que 10 = 2.5 + 0 
Para D = 5, temos r = 1, uma vez que 5 = 2.2 + 1 
Para D = 2, temos r = 0, uma vez que 2 = 2.1 + 0 
Para D = 1, temos r = 1, uma vez que 1 = 2.0 + 1 
 
Dessa forma, (43)10 = (101011)2 
 
Exemplo 3 
 
Como representar um número fracionário da base 10, por exemplo, (0,375)10, em sua forma binária? 
 
Consideramos o método de multiplicações sucessivas por 2. Realizando a multiplicação do número 
fracionário por 2, do resultado desse produto consideramos a parte inteira como o primeiro dígito 
do número binário e a parte fracionária é multiplicada por 2 até que o resultado dessa multiplicação 
seja igual a zero. 
 
Para f1 = 0,375, temos p1 = 0,750, uma vez que 0,375 ∙ 2 = 0,750. Consideremos 0 no dígito do número 
binário a ser representado. 
 
Para p1 = f2 = 0,750, temos p2 = 1,50, uma vez que 0,750 ∙ 2 = 1,50. Consideremos 1 no dígito do 
número binário a ser representado. 
 
Para p2 = f3 = 0,50, temos p3 = 1,00, uma vez que 0,50 ∙ 2 = 1,00. Consideremos 1 no dígito do número 
binário a ser representado. 
 
Dessa forma, (0,375)10 = (0,011)2 
 
Representação de um número real em aritmética de ponto flutuante 
 
Em um computador ou máquina, a representação de um número real é dada pela expressão 
n = ± (0, d1, d2, ..., dq – 1, dq) × Bp, denominada representação em ponto flutuante normalizada, 
com: 
 
 n = representação de um número real em computador; 
 d1, d2, ..., dq – 1, dq = mantissa ou total dígitos na parte do sistema de vírgula flutuante; 
 q = indica o número de dígitos; 
 B = base numérica; 
 p = expoente da base. 
 
Apresentando as seguintes condições: 
 
d1≠ 0 
p ∈ [li, ls] ou li ≤ p ≤ ls 
onde li corresponde a limite inferior, e ls, limite inferiordo intervalo do expoente da base. 
 
De outro modo, a representação de um número real x em uma máquina F também pode ser dada 
pela expressão: 
 
𝐹(𝐵, 𝑞, 𝑙𝑖, 𝑙𝑠) 
onde: 
 
𝐵 = 𝑏𝑎𝑠𝑒 
𝑞 = 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑑í𝑔𝑖𝑡𝑜𝑠 𝑛𝑎 𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎 
𝑙𝑖 = 𝑣𝑎𝑙𝑜𝑟 𝑚í𝑛𝑖𝑚𝑜 𝑑𝑜 𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒 
𝑙𝑠 = 𝑣𝑎𝑙𝑜𝑟 𝑚á𝑥𝑖𝑚𝑜 𝑑𝑜 𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒 
 
Vejamos um exemplo de representação de números nas bases 2 e 10 por meio de aritmética de ponto 
flutuante. 
 
Exemplo 4 
 
Dados os números (789,63478)10 e (1000)2, como esses números são representados em um 
computador? 
 
(789,63478)10 = 0,78963478 ∙ 103 
 
(1000)2 = 0,1000 ∙ 24 = 0,1000 ∙ 2100, pois (4)10 = (100)2 
 
Uma situação comum em máquinas ou computadores é a precisão de máquina. Como ilustração 
dessa situação, observemos a máquina RS-43, que opera com os seguintes padrões de sistema 
(Quadro 1). 
 
 
 
Podemos determinar o maior e o menor número, em valor absoluto, da máquina RS-43 a partir dos 
dados apresentados: 
 
 Menor número = (nmín) = 0,1000 × 10–4 = 10–5. Dessa forma, o menor número absoluto é 
0,00001. 
 Maior número = (nmáx) = 0,9999 × 104 = 9999. Dessa forma, o maior número absoluto é 
9999. 
 
Considerando o conjunto: F = {n ∈ R | nmín ≤ |n| ≤ nmáx }, onde: 
 
nmáx = maior valor absoluto apresentado pela máquina RS-43; 
nmín = menor valor absoluto apresentado pela máquina RS-43; 
n ∈ R = número pertencente ao conjunto dos números reais. 
 
A partir desse argumento matemático surgem três situações, descritas a seguir. 
 
Situação 1: |n| > nmáx 
Nesta situação, o expoente p é maior que 4; portanto, a calculadora apresenta overflow, ou seja, 
|n| > 9999. 
 
Situação 2: |n| < nmín 
Nesta situação, o expoente p é menor que – 4; portanto, a calculadora apresenta underflow, ou seja, 
|n| < 0,0001. 
 
Situação 3: n ∈ F 
O número pode ser representado nessa calculadora sem nenhum tipo de problema, pois está dentro 
do intervalo do sistema de números representados no limite inferior e superior do expoente 
– 4 ≤ p ≤ 4. 
 
Exemplo 5 
 
A máquina TKS - 123 opera com os seguintes padrões de sistema (Quadro 2). 
 
 
 
a) Quais são maior e o menor número, em valor absoluto, da máquina TKS – 123 a partir dos dados 
apresentados? 
Menor número = (nmín) = 0,10000 × 10–3 = 10–4. Dessa forma, o menor número absoluto é 0,0001. 
Maior número = (nmáx) = 0,99999 × 103 = 999,99. Dessa forma, o maior número absoluto é 999,99. 
 
b) Quais seriam as condições de underflow e overflow da máquina TKS – 123? 
 
|n| > 999,99 condição de overflow 
 
|n| < 0,0001 condição de underflow 
 
Exemplo 6 
 
a) Escrever o número (-3,625)10 no sistema F (10,5,-3,3) 
 
1º passo: colocar o número na forma normalizada, observando que ele já se encontra na base do 
sistema em questão. 
(-3,625)10 = -0,3625 x 101 
 
2º passo: verificar se o número de dígitos na mantissa é menor, igual ou maior do que a precisão do 
sistema de ponto flutuante. Se for menor acrescentamos zeros, se for for igual já estará ok, e se for 
maior haverá um truncamento ou arredondamento da mantissa. Nesse caso, o número de dígitos da 
mantissa (4) é menor do que a precisão (5) do sistema, então teremos de acrescentar um zero à 
direita. 
 
(-3,625)10 = -0,3625 x 101 = -0,36250 x 101 
 
b) Escrever o número (-3,625)10 no sistema F (2,5,-3,3). 
 
1º passo: devemos transformar o número da sua base 10 para a base 2, que é a base de numeração 
do sistema. 
 
(-3,625)10 = (-11,101)2 
 
2º passo: colocar o número na forma normalizada. 
 
(-11,101)2 = -0,11101 x 102 
 
3º passo: verificar se o número de dígitos na mantissa é menor, igual ou maior do que a precisão do 
sistema de ponto flutuante. Neste exemplo, o número de dígitos da mantissa (5) é exatamente igual 
à precisão (5) do sistema, então o número já está perfeitamente representado neste sistema de 
ponto flutuante. 
 
-0,11101 x 102 
 
Observação: O número de casas decimais exatas da mantissa é um padrão utilizado para determinar 
a precisão de uma máquina (RUGGIERO; LOPES, 1996). 
 
Tipificação dos erros 
 
O cálculo do volume de um cilindro é dado pelo produto de sua altura pela área de sua base. A área 
da base é uma circunferência de raio r. A solução desse problema físico por métodos numéricos não 
possui resultados confiáveis, ou seja, erros. Quais seriam os erros absoluto e relativo no cálculo da 
área de uma circunferência de raio 25 cm? O problema inicial está na constante , apresentada no 
modelo matemático da área da circunferência: A = π ∙r2 
 
O erro absoluto de um número é dado pela expressão: EA = |nv – na|, onde: 
EA = erro absoluto; 
nv = valor considerado verdadeiro; 
na = valor considerado como aproximado. 
 
Já o erro relativo (ER) é calculado pela expressão ER = EA / nv. Se adotarmos πa = 3,14 como o valor 
do número aproximado e πv = 3,141592 como valor do número π verdadeiro, podemos calcular a 
área das circunferências com o valor aproximado e o valor verdadeiro da constante. 
 
Aa = πa ∙ r2 = 3,14 ∙ (25)2 = 3,14 ∙ 625 = 1962,5 cm2 
 
Av = πv ∙ r2 = 3,141592 ∙ (25)2 = 3,141592 ∙ 625 = 1963,495 cm2 
 
Com isso, podemos calcular o erro absoluto entre as áreas das circunferências. 
 
EA = |nv– na| = |Av – Aa| = |1963,495 – 1962,5| = 0,995 
 
Agora, podemos calcular o erro relativo do problema físico apresentado. 
 
ER = EA/Av = 0,995/1963,495 ≈ 5,067 × 10-4, adotando uma aproximação por truncamento com três 
algarismos significativos. 
 
Em uma máquina ou computador, a precisão influencia na leitura e representação dos números de 
acordo com a quantidade de dígitos significativos, a base numérica utilizada e os limites inferior e 
superior do intervalo do expoente. A aritmética do ponto flutuante apresenta os métodos numéricos 
de arredondamento e truncamento para tentar resolver o problema dos números que não são 
representados na mantissa, já que cada máquina apresenta uma quantidade de números 
significativos que pode ser computada. 
 
Para o truncamento, a parcela que não pertencente à representação de dígitos significativos é 
descartada. Já no arredondamento, avalia-se se a parcela é maior que 5 ou menor que 5. Para o 
primeiro caso, é adicionada uma unidade ao último dígito significativo; no segundo caso é mantida a 
configuração até o dígito do número significativo. 
 
Exemplo 7 
 
a) Dados os números 12,659 (considerado como número verdadeiro) e 12,6 (considerado como 
número aproximado) como percentuais de correção de juros em uma aplicação financeira dada pela 
expressão: C = t ∙ (i + 1) para o tempo de capitalização de 6 meses, qual o erro relativo no valor da 
monetização desse investimento? 
 
Primeiro calculamos as aplicações financeiras para os valores aproximado e relativo do percentual 
de correção de juros: 
Ca = t ∙ (ia + 1) = 6 ∙ (12,6 + 1) = 6 ∙ (13,6) = 81,6 unidades monetárias 
 
Cv = t ∙ (iv + 1) = 6 ∙ (12,659 + 1) = 6 ∙ (12,659) = 81,954 unidades monetárias 
 
Agora, podemos calcular o erro absoluto entre os valores das capitalizações: 
 
EA = |nv– na| = |Cv – Ca| = |81,954 – 81,6| = 0,354 
 
Com isso, o erro relativo é dado por: ER = EA/Cv = 0,354/81,954 ≈ 4,32 × 10-3. 
 
b) Considerando uma máquina de três dígitos significativos (q = 3), como ficaria representado o 
número (429,857)10 por arredondamento e truncamento, respectivamente? 
 
Primeiro representamos o número (423,857)10 em aritmética de ponto flutuante: 0,423857 ∙ 103. 
Como a máquina considera apenas três dígitos significativos, avaliamos o primeiro número depois do 
dígito significativo, que é 8; então, como 8 > 5, adicionamos 1 ao número 3. Por arredondamento, 
temos: 0,424 ∙ 103. Por truncamento, consideramos apenas os dígitos significativos da máquina e 
descartamos a parcela não considerada. Então, temos: 0,423 ∙ 103. 
 
Observação: Quando se utiliza o arredondamento os erros cometidos sãomenores que no 
truncamento, no entanto o arredondamento requer um maior tempo de execução e por esta razão 
o truncamento é mais utilizado. 
 
Exercícios 
 
1- Considere o sistema F(10,4,-4,4). Represente neste sistema os números abaixo e se necessário 
use truncamento: 
 
a) 432124 
b) -0,0013523 
c) 125,64 
d) 0,00034 
 
2- Mudar a representação dos números: 
 
a) (1101)2 para (n)10 
b) (0,110)2 para (n)10 
c) (13)10 para (n)2 
d) (0,75)10 para (n)2 
 
3- Considere o sistema F(3,2,-1,2). Responda: 
 
a) Qual o menor número representável nessa máquina? 
b) Qual o maior número representável nessa máquina? 
c) Quantos números reais positivos podemos representar nesse sistema? 
 
4- Considere o valor exato 𝑥 = 3247,512 e o valor aproximado 𝑥 ̅ = 3247,000. Determine para essa 
aproximação o erro absoluto e o erro relativo. 
 
 
5- Considere agora o valor exato 𝑥 = 1,512 e o valor aproximado �̅� = 1,000. Determine para essa 
aproximação o erro absoluto e relativo. 
 
 
6- Os erros absolutos e relativos serão usados como critério de parada em diversas sequências 
numéricas de soluções aproximadas em procedimentos numéricos. Use cálculos efetuados nos 
itens anteriores para justificar porque o erro relativo será preferível na maioria desses critérios 
 
 
7- Considere o somatório 𝑠 = ∑ 𝑥𝑖
3000
𝑖=1 
 
Ao efetuar a soma para 𝑋𝑖 = 0,11 em um computador operando no sistema binário foi obtido 
𝑠 = 3299,99691 e em uma calculadora que opera na base 10 foi obtido 𝑠 = 3300. 
 
a) ao converter (0,11)10 para base 2 essa representação será finita ou infinita? Justifique sua resposta 
com cálculo até a nona casa decimal (9 dígitos na mantissa). 
 
b) Utilize a resposta do item (a) para justificar a diferença dos valores obtidos para 𝑠𝑖 em um sistema 
que opera na base 2 e outro que opera na base 10. 
 
c) Considerando que a calculadora forneceu o valor correto para S1, determine o erro relativo para 
o valor fornecido pelo computador. 
 
 
Referências 
 
Freitas, Raphael de, O. et al. Cálculo numérico. Disponível em: Minha Biblioteca, Grupo A, 2019.

Outros materiais