Buscar

1 Nocoes basicas sobre Erros

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   1	
  
Desenvolvimento e Implementação e Programação Computacionais para 
resolução de Problemas por Métodos Numéricos 
 
1.1 Noções Básicas Sobre Erros 
 
A resolução de problemas envolve várias fases que podem ser estruturadas da seguinte 
forma: 
 
 
Pode acontecer que os resultados estejam distantes do que se esperaria, pois, mesmo que 
todas as fases estejam corretas, os resultados dependem: 
§ dos dados de entrada; 
§ da forma como os dados são representados no computador; 
§ das operações numéricas 
 
 
 
 
 
Representação de Números 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   2	
  
A representação de um número depende da base escolhida ou disponível na máquina em uso, 
ou seja, um número pode ser representado na base decimal ou binária. 
Veja alguns exemplos: 
 
1 - Calcular a área de uma circunferência de raio 100 metros. 
Resultados obtidos: 
 
(a) A = 31400m2 (b) A = 31416m2 (c) A = 31415,92654m2 
 
Como justificar as diferenças? 
 
2 - Efetue o somatório em uma calculadora e em um computador: 
𝑥!!""""!!! 
 
para: xi = 0,5; xi = 0,11 
 
Resultados obtidos: 
Para xi = 0,5 : 
Na calculadora: S = 15000 
No computador: S = 15000 
 
Para xi = 0,11 
Na calculadora S = 3300 
No computador S = 3299,99691 (Resultado do livro) 
No computador S = 3299,890000000628 (Resultado computador pessoal. Simulação Matlab) 
 
 
Como justificar a diferença entre os resultados obtidos para xi = 0,11? 
Os erros ocorridos nos dois problemas dependem da representação dos números na máquina 
utilizada. Para entender melhor a questão do erro, a próxima seção enfoca os processos de 
conversão de números do sistema binário para o decimal e vice-versa. 
 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   3	
  
Conversão de Números nos Sistemas Decimal e Binário 
 
Inicialmente veremos a conversão de números inteiros (sistema decimal) para o sistema 
binário e vice-versa, considere os números (347)10 e (10111)2, estes números podem ser 
representados da seguinte forma: 
 
(347)10 = 3 . 102 + 4 . 101 + 7 .100 
 
(10111)2 = 1 . 24 + 0 . 23 + 1 . 22 + 1 . 21 + 1 . 20 
 
De um modo geral, um número na base 𝛽, (𝑎!𝑎!!!…𝑎!)!, 0 ≤  𝑎! ≤ (𝛽 − 1), 𝑘 = 1,… , 𝑗, 
pode ser escrito na forma polinomial: 
 𝑎!𝛽! + 𝑎!!!𝛽!!! +⋯+ 𝑎!𝛽! 
 
Assim a representação do número (𝑎!𝑎!!!…𝑎!𝑎!𝑎!)! na base 10, denotada por 𝑏!, é obtida 
através do processo: 
 
 𝑏! = 𝑎! 𝑏!!! = 𝑎!!! + 2𝑏! 𝑏!!! = 𝑎!!! + 2𝑏!!! ⋮ 𝑏! = 𝑎! + 2𝑏! 𝑏! = 𝑎! + 2𝑏! 
 
Para (10111)2, a sequencia obtida será: 
 𝑏! = 𝑎! = 1 𝑏! = 𝑎! + 2𝑏! = 0+ 2.1 = 2 𝑏! = 𝑎! + 2𝑏! = 1+ 2.2 = 5 𝑏! = 𝑎! + 2𝑏! = 1+ 2.5 = 11 𝑏! = 𝑎! + 2𝑏! = 1+ 2.11 = 23 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   4	
  
Veremos agora um processo para converter um número inteiro representado no sistema 
decimal para o sistema binário. Considere o número 𝑁! = (347)!" e (𝑎!𝑎!!!…𝑎!)! a sua 
representação na base 2. 
 
Temos então: 
 347 = 2. 𝑎! . 2!!! + 𝑎!!!. 2!!! +⋯+ 𝑎!. 2! + 𝑎!. 2! + 𝑎! = 2  . 173+ 1 
e portanto, 𝑎! = 1, que representa o resto da divisão de 347 por 2. 
 
Repetindo o processo para 𝑁! = 173 
 173 = 𝑎! . 2!!! + 𝑎!!!. 2!!! +⋯+ 𝑎!. 2! + 𝑎! 
 
obteremos agora o dígito 𝑎!, que será o resto da divisão 𝑁! por 2. Seguindo este raciocínio 
obtemos a sequencia de números 𝑁! e 𝑎!. 
 𝑁!  =  347   =  2  . 173  +  1 ⇒  𝑎!  =  1  𝑁!  =  173   =  2  . 86  +  1 ⇒  𝑎!  =  1  𝑁!  =  86   =  2  . 43  +  0   ⇒  𝑎!  =  0  𝑁!  =  43   =  2  . 21  +  1   ⇒  𝑎!  =  1  𝑁!    =  21   =  2  . 10  +  1   ⇒  𝑎!  =  1  𝑁!  =  10   =  2  . 5  +  0   ⇒  𝑎!  =  0  𝑁!  =  5   =  2  . 2  +  1   ⇒  𝑎!  =  1  𝑁!  =  2   =  2  . 1  +  0   ⇒  𝑎!  =  0  𝑁!  =  1   =  2  . 0  +  1   ⇒  𝑎8   =  1 
 
Portanto o número (347)10 na base binária é: (101011011) 
 
No caso geral, considere um número inteiro N na base 10 e sua representação binária 
denotada por: (𝑎!𝑎!!!…𝑎!𝑎!𝑎!)!. O algoritmo a seguir obtém a cada k o dígito binário 𝑎!. 
 
 
Passo 0: 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   5	
  
  𝑘 = 0 𝑁! = 𝑁 
 
Passo 1: Obtenha 𝑞! e 𝑟! tais que: 
 𝑁! = 2. 𝑞! + 𝑟! 
faça 𝑎! = 𝑟! 
 
Passo 2: Se 𝑞! = 0, pare! 
Caso contrário, faça 𝑁!!! = 𝑞! 
Faça 𝑘 = 𝑘 + 1 e volte para o passo 1. 
 
Consideremos agora a conversão de um número fracionário da base 10 para a base 2. 
Sejam os exemplos: 𝑟 = 0,125, 𝑠 = 0,66666…, 𝑡 = 0,414213562…  
Dizemos que r tem representação finita e que s e t têm representação infinita. 
 
Dado um número entre 0 e 1 no sistema decimal, como obter sua representação binária? 
 
Considerando o número 𝑟 = 0,125 , existem dígitos binários: 𝑑!,𝑑!,… ,𝑑! tais que 0,𝑑!𝑑!…𝑑! ! será sua representação na base 2. 
 
Assim, 
 0,125 !" = 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!! 
 
Multiplicando cada termo da expressão acima por 2, temos: 
 2  . 0,125 = 0,250 = 0+ 0,25 = 𝑑! + 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! 
 
e portanto, 𝑑! representa a parte inteira de 2  . 0,125 que é igual a zero e 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! representa a parte fracionaria de 2  . 0,125 que é 0,250 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   6	
  
 
Aplicando agora o mesmo procedimento para 0,250, teremos: 
 0,250 =  𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! ⇒ 2  . 0,250 = 0,5 = = 𝑑! + 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! ⇒ 𝑑! = 0 
 
e repetindo o processo para 0,5: 
 0,5 = 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! ⇒ 2  . 0,5 = 1,0 = = 𝑑! + 𝑑!. 2!! + 𝑑!. 2!! +⋯+ 𝑑! . 2!!!! ⇒ 𝑑! = 1,0 
 
 
Como a parte fracionária de 2. 0,5  é zero, o processo de conversão termina, e teremos: 𝑑! = 0,𝑑! = 0  𝑒  𝑑! = 1 
portanto, o número 0,125 !" tem representação finita na base 2, 0,001 ! 
 
“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,𝑑!𝑑!…𝑑! … ! sua 
representação no sistema binário. 
Os dígitos binários 𝑑!𝑑!…𝑑! … são obtidos através do seguinte algoritmo: 
 
Passo 0: 𝑟! = 𝑟;        𝑘 = 1 
 
Passo 1: 
Calcule 2𝑟! 
Se 2𝑟! ≥ 1, faça: 𝑑! = 1 
Caso contrário faça: 𝑑! = 0 
 
Passo 2: 
 Faça 𝑟!!! = 2(𝑟! − 𝑑!) 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   7	
  
 Se 𝑟!!! = 0, pare. 
Caso contrário, continue. 
 
Passo 3: 
 𝑘 = 𝑘 + 1 
 Volte ao passo 1. 
 
Ex.: 𝑘 = 1                                     =  0,125 ⇒  2  . 0,125 =  0,25   <  1 ⇒  𝑑0  =  0  𝑘 = 2                                     =  0, 25−  0 ⇒  2  . 0,25   =  0,5   <  1 ⇒  𝑑1   =  0  𝑘 = 3                                 =  0,5− 0 ⇒  2  . 0,5   =  1   =  1 ⇒ 𝑑2   =  1  
 
 portanto, o número 0,125 !" tem representação finita binária igual a 0,001 ! 
 
 Agora	
  tome	
  o	
  número	
  𝑠   =  0,1.	
  𝑘!                                    =  0, 1                   ⇒    0,1  . 2     =  0, 2   <  1 ⇒  𝑑0   =  0  𝑘!                                    = 0, 2−  0 ⇒  0, 2  . 2   =  0,4   <  1 ⇒  𝑑1   =  0  𝑘!                                                    =  0,4−  0 ⇒  0,4  . 2   =  0,8   <  1 ⇒  𝑑2   =  0  𝑘!                                                    =  0,8−  0 ⇒  0,8  . 2   =  1, 6 ≥  1 ⇒  𝑑3   =  1  𝑘!                                                    =  1,6− 1   ⇒  0,6  . 2   =  1,2 ≥  1   ⇒  𝑑4   =  1  𝑘!                                                    =  1,2− 1   ⇒    0,2  . 2   =  0,4   <  1   ⇒    𝑑5   =  0  𝑘!
=  0,4− 0   ⇒    0,4  . 2   =  0,8   <  1   ⇒    𝑑6   =  0  𝑘!                                                    =  0,8− 0   ⇒    0,8  . 2   =  1,6  . 1   ⇒    𝑑7   =  1  𝑘!                                                    =  1,6− 1   ⇒    0,6  . 2   =  1,2  . 1   ⇒    𝑑8   =  1  𝑘!"                                              =  1,2− 1   ⇒    0,2	
  e	
  o	
  processo	
  se	
  repetirá	
  novamente	
  como	
  o	
  passo	
  𝑘! 	
  é	
  igual	
  ao	
  passo	
  𝑘!,	
  os	
  resultados	
  se	
  repetirão,	
  assim:	
  	
   0,1 !" = 0,000110011	
  	
  
Com isso pode-se entender melhor porque o resultado da operação 
 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   8	
  
𝑠 = 0,11!""""!!! 
 
não é obtido exatamente num computador. Já vimos que 0,11 !" não tem representação 
finita no sistema binário. Supondo um computador que trabalhe com apenas 6 dígitos, o 
número 0,11 !" seria armazenado como 0,000111 !, e este número representa exatamente 0,109375 !", portanto uma aproximação. 
 
Conversão de número binários em números decimais 
 
Considere o número (10111)2, para converter esse número para a base 10 procede-se da 
seguinte forma: 
 10111 ! = 1  . 2! + 0  . 2! + 1  . 2! + 1  . 2! + 1  . 2! 
 
colocando 2 em evidencia: 
 10111 ! = 2  . 1  . 2! + 0  . 2! + 1  . 2! + 1  . 2! + 1 
 10111 ! = 2  . 2  . 1  . 2! + 0  . 2! + 1  . 2! + 1 + 1 
 ⋮ 10111 ! = 23 
 
 
Exercícios: 
1 - Passe os números para a representação binária: 
(a) 25 (b) 100 (c) 0,15 
 
Resposta: (a) (11001)2, (b) (1100100)2, (c) (0,0010011)2 
 
2 - Passe os números abaixo para representação decimal. 
(a) (10010)2 (b) (111010)2 (c) (10)2 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   9	
  
 
Resposta: (a) 18 (b) 52 (c) 2 
 
 
 
Aritmética de ponto flutuante 
 
 Um computador ou calculadora representa um número real no sistema denominado 
aritmética de ponto flutuante. Neste sistema, o número r será representado na forma: 
 ±   .𝑑!𝑑!…𝑑! .𝛽! 
 
onde: 𝛽 é a base em que a máquina opera; 
t é o número de dígitos na mantissa: 0 ≤ 𝑑! ≤ 𝛽 − 1 , 𝑗 = 1,… , 𝑡  𝑑! ≠ 0; 𝑒 é o expoente no intervalo [1,u]. 
 
Em qualquer máquina, apenas um subconjunto dos números reais é representado 
exatamente, e, portanto, a representação de um número real será realizada através de 
truncamento ou de arredondamento. 
 
Considere, por exemplo, uma máquina que opera no sistema: 
 𝛽 = 10; 𝑡 = 3, 𝑒 ∈ −5,5 
 
o menor número, em valor absoluto, representado nesta máquina é: 
 𝑚 = 0,100×10!! = 10!! 
 
e o maior número, em valor absoluto, é: 
 𝑀 = 0,999×10! = 99900 
 
Cálculo	
  Numérico	
  –	
  Unitoledo	
   	
   	
   10	
  
Considere o conjunto dos números reais ℝ e o seguinte conjunto: 
 𝐺 = {𝑥 ∈ ℝ|𝑚 ≤ 𝑥 ≤ 𝑀} 
 
dado um número real x, várias situações poderão ocorrer: 
 
Caso 1) 𝑥 ∈ 𝐺 
Por exemplo: 𝑥 = 235,89 = 0,23589×10! 
Observe que esse número tem 5 dígitos na mantissa. Estão representados exatamente 
nesta máquina os números: 0,235×10!(truncamento) e 0,236×10! (arredondamento). 
 
Caso 2) 𝑥 < 𝑚 
Por exemplo: 𝑥 = 0,345×10!! 
Este número não pode ser representado nesta máquina porque o expoente 𝑒 é menor 
que o limite inferior (-5). A máquina acusa underflow 
 
Caso 3) |𝑥| > 𝑀 
Por exemplo: 𝑥 = 0,875×10! 
Neste caso, o expoente 𝑒  é maior que o limite superior (5). A máquina acusa overflow. Exemplo:	
  Dar	
  a	
  representação	
  dos	
  números	
  a	
  seguir	
  num	
  sistema	
  de	
  aritmética	
  do	
  ponto	
  flutuante	
  de	
  três	
  dígitos	
  para	
  𝛽 =  10;	
  𝑚   = −  4	
  e	
  𝑀   =  4.	
  	
  
x Representação obtida por arredondamento 
Representação obtida por 
truncamento 
1,25 
10,053 
-238,15 
2,71828... 
0,000007 
718235,82 
0,125 . 10 
0,101 . 102 
-0,238 . 103 
0,272 . 10 
(expoente menor que -4) 
(expoente maior que 4) 
0,125 . 10 
0,100 . 102 
-0,238 . 103 
0,271 . 10 
-------- 
--------

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais