Você está na página 1de 6

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP

2. Representao Numrica
2.1 Introduo
A fim se realizarmos de maneira prtica qualquer operao com nmeros, ns precisamos representa-los em uma determinada base numrica. O que isso significa? Vamos tomar como exemplo o nmero exemplo, o valor de

2 . A fim de calcularmos, por

2 - 1, ns precisamos escrever o nmero

2 de alguma outra forma, caso contrrio no possvel

realizar essa operao. Podemos escreve-lo na base decimal, por exemplo, que a base mais usada na histria da humanidade (graas a nossa anatomia). O valor de

2 na base decimal pode ser escrito como 1,41 ou 1,4142 ou ainda 1,41421356237. Qual 2 ? A diferena a quantidade de algarismos significativos usados em 2 -1=0.41 ou 0.4142 ou ainda 0.41421356237, conforme o

a diferena entre essas vrias formas de representar

cada representao. Agora podemos realizar a operao proposta:

nmero de algarismos significativos adotados na nossa representao. Em uma mquina digital, como uma calculadora ou um computador, os nmeros no so representados na base decimal. Eles so representados na base binria, ou seja, usam o nmero 2 como base ao invs do nmero 10. Como na base decimal existem 10 algarismos diferentes (0, 1, 2 ,3, 4, 5, 6, 7, 8, 9), na base binria existem somente 2 nmeros: 0 e 1. Portanto, a base binria usada porque essas mquinas utilizam-se de sinais eltricos, sendo o 0 correspondente a ausncia de sinal e o nmero 1 a presena do sinal eltrico.

2.2 Ponto fixo e Ponto Flutuante


A princpio, toda vez que escrevemos um nmero, deveramos mencionar a base numrica a qual estamos nos referindo. Obviamente, isso no se faz necessrio na prtica, pois estamos sempre representando os nmeros na base decimal, portanto sabemos exatamente o seu significado. Por exemplo, quando escrevemos o nmero 1532, o que realmente queremos dizer? Estamos dizendo que esse nmero representa uma quantidade equivalente a 11000 + 5100 + 310 + 2, ou, escrevendo a base de outra forma, 1103 + 5102 + 3101 + 2100. Essa a chamada representao posicional de nmeros. Na base binria, o mecanismo o mesmo, porm, ao invs de potncias de 10, utilizamos potncias de 2. Portanto, um nmero binrio como 1011 (lembre-se que na base binria s existem os algarismos 0 e 1) significa 123 + 022 + 121 + 120 que na base 10 seria 8+2+1=11. Essa idia que est por trs da representao dos nmeros em bases numricas utilizada para representar nmeros no computador. A fim de tornar a manipulao de nmeros mais eficiente, os computadores fazem a distino entre nmeros inteiros e nmeros reais. Um nmero inteiro apresenta a chamada representao de ponto fixo, onde a posio do ponto decimal est fixa e todos os dgitos so usados para representar o nmero em si, com exceo do primeiro dgito usado para representar o sinal desse nmero. A figura 2.1 ilustra essa representao. Sinal Dgitos Figura 2.1 - Representao de nmeros inteiros. Antonio Cesar Germano Martins 1

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP

Para um nmero real qualquer (inteiro ou no inteiro) utilizada a representao de ponto flutuante, que dada pela expresso: (0.d1d2d3...dt) be onde: 0.d1d2d3...dt uma frao na base b, tambm chamada de mantissa, com 0 di b-1, para todo i = 1,2,3,...,t, sendo t o nmero mximo de dgitos da mantissa que determinado pelo comprimento de palavra do computador; e um expoente que varia em um intervalo dado pelos limites da mquina utilizada. Esse tipo de representao chamada de ponto flutuante pois o ponto da frao flutua conforme o nmero a ser representado e sua posio expressa pelo expoente e. A figura 2.1 ilustra essa representao. Sinal posio do ponto = expoente e dgitos = mantissa

Figura 2.2 - Representao de nmeros reais. Alguns exemplos da representao de ponto flutuante pode ser visto na tabela a seguir: Nmero na base decimal 1532 15.32 0.00255 10 10 Representao em ponto flutuante 0.1532104 0.1532102 0.25510-2 0.10102 0.101024 mantissa 0.1532 0.1532 0.255 0.10 0.1010 base 10 10 10 10 2 Expoente 4 2 -2 1 4

2.3 Aplicao Linguagem de Programao C


Na linguagem C possvel especificar a representao que deve ser usada para os nmeros a serem armazenados em uma dada varivel. Para nmeros inteiros (representao de ponto fixo) existem duas palavras chaves para declarar uma varivel: int e long. A diferena entre essas duas representaes o nmero de dgitos a ser usado. No caso do int, utiliza-se 15 dgitos binrios e mais um dgito para o sinal, ou seja, 16 bits que igual a 2 bytes. Portanto, uma varivel declarada com int pode armazenar nmeros de 32768 (=-215) a +32767 (=2 15-1). J a palavra chave long corresponde a representao de ponto fixo com 32 bits (31 dgitos binrios para o nmero mais um dgito para o sinal), ou seja, 4 bytes. Neste caso, uma varivel declarada como long pode armazenar nmeros de 2.147.483.648 (= -231) a 2.147.483.647 (=231-1). No caso da representao de ponto flutuante, tambm existem duas palavras: float e double. A palavra float corresponde a representao com base binria (b=2), nmero mximo de dgitos igual a 24 (t=24) e expoente entre 126 e 127. Portanto, uma varivel declarada como float pode armazenar nmeros reais entre ~10-38 e ~1038. J a palavra chave double apresenta um nmero mximo de dgitos igual a 53 (t=53) e expoente entre 1022 e 1023, ou seja, varveis declaradas como double podem armazenar nmeros entre ~10-307 a ~10307.

Antonio Cesar Germano Martins

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP

3. Erros Numricos
3.1 Introduo
Vamos supor o seguinte problema: como calcular o valor de

2 ? Provavelmente, a primeira resposta que vem a mente

de qualquer pessoa que nasceu no sculo XX ser: utilizando uma calculadora ou um computador. Indiscutivelmente, essa a resposta mais sensata e prtica. Porm, um profissional que utilizar o resultado fornecido pela calculadora para projetar, construir ou manter pontes, edifcios, mquinas, sistemas, dispositivos eletrnicos, etc., no pode aceitar o valor obtido antes de fazer alguns questionamentos (pelo menos uma vez na sua vida profissional). Quando calculamos, por exemplo, o valor de

2 em uma calculadora ou em um computador, o que realmente estamos

fazendo? Em outras palavras, o que a calculadora fez para obter o resultado? Para um engenheiro, ainda mais importante a pergunta: qual a confiabilidade do resultado que obtemos? Essa pergunta faz sentido pois

2 um nmero irracional, isto , no existe uma forma de representa-lo com um 2 , j que

nmero finito de algarismos. Portanto, o nmero apresentado pela calculadora uma aproximao do valor real de ela no pode mostrar infinitos algarismos. E quo prximo do valor real est o resultado mostrado?

Podemos criar algumas definies a fim de facilitar as discusses e trocas de informao sobre esse problema. Vamos definir a diferena entre o valor real da grandeza que queremos calcular e o valor aproximado que efetivamente calculamos como sendo o erro, ou seja: Erro = valor real valor aproximado (3.1)

Quanto menor for esse erro, mais preciso ser o resultado da operao. Essa definio corresponde ao erro absoluto de um clculo. Porm, se estivermos trabalhando com nmeros muito grandes, o erro pode ser grande em termos absolutos, mas o resultado ainda ser preciso. E o caso inverso tambm pode ocorrer: um erro absoluto pequeno, mas um resultado impreciso. Por exemplo, digamos que o resultado de uma operao nos fornea o valor 2.123.542,7 enquanto o valor real que deveramos obter 2.123.544,5. O erro absoluto neste caso 1,8. Comparada com o valor real, essa diferena (o erro) bem pequena, portanto, podemos considerar o resultado preciso. Em um outro caso, digamos que o resultado da operao seja 0,234 e o resultado esperado era 0,128. Desta vez o erro ser igual a 0,106 , porm o resultado bastante impreciso. A fim de evitar esse tipo de ambigidade, podemos criar uma nova definio. Podemos definir o erro relativo, que corresponde ao quociente entre o erro absoluto e o valor real da grandeza a ser calculada, ou seja:
valor _ real valor _ aproximado valor _ real

erro relativo

(3.2)

O erro relativo uma forma mais interessante de se avaliar a preciso de um clculo efetuado. No exemplo acima, teremos um erro relativo de 0,0000008 ou 0,00008% no primeiro caso e um erro relativo igual a 0,83 ou 83% no segundo caso.

Antonio Cesar Germano Martins

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP

3.2 Tipos de Erros


O erro cometido ao se calcular o valor de

2 , por exemplo, apenas um tipo de erro que pode surgir ao se resolver um

problema real. Outros tipos de erros tambm podem aparecer devido a outros tipos de problemas ou limitaes. A soluo matemtica de um determinado problema envolve diversas etapas, como discutido na introduo desta apostila. A soluo do problema se inicia com a criao de um modelo matemtico do sistema em questo. Esse modelo sempre apresentar aproximaes e limitaes. Alm disso, na grande maioria das vezes, dados experimentais sero utilizados para se obter a soluo. Como toda medida experimental apresenta uma incerteza, a soluo do problema ser influenciada pelas mesmas. Portanto, logo de incio, existem diversos fatores que introduzem incertezas na soluo numrica do problema. Esse tipo de erro chamado de erro inicial. O problema discutido na introduo deste captulo para o clculo de

2 , que se refere a inevitvel limitao na

representao de nmeros irracionais (por exemplo), introduz erros no resultado. Esse tipo de erro chamado de erro de arredondamento. Vamos considerar um outro tipo de problema prtico que pode surgir ao realizarmos determinadas operaes. Digamos que precisamos calcular o valor de ex. Mais uma vez, iremos utilizar uma mquina digital (calculadora ou computador). Como esse equipamento ir realizar essa operao? Sabemos que a exponencial uma funo que pode ser representada por uma srie infinita dada por:

ex 1 x

x 2 x3 xn 2! 3! n!

(3.3)

e na prtica impossvel calcular seu valor exato. Portanto, mais uma vez, teremos que fazer uma aproximao, que levar a um erro no resultado final de ex. Neste caso, faremos um truncamento dessa srie, e o erro gerado no valor de ex chamado de erro de truncamento.

3.3 Propagao e Condicionamento de Erros Numricos


Vamos supor que queremos calcular o valor de

2 - e3. Como vimos anteriormente, ao calcularmos o valor de

2,

teremos que realizar um arredondamento, que leva ao um resultado aproximado de

2 , ou seja, existe um erro de


3 2 e e apresentar um erro que 3 2 e e se

arredondamento associado ao resultado. Para calcularmos o valor de e3 teremos que fazer um truncamento, que tambm ir gerar um erro no resultado obtido. Portanto, o resultado da operao de subtrao entre proveniente dos erros nos valores de propagam para o resultado de

3 2 e e separadamente. Em outras palavras, os erros nos valores de

2 - e3. Podemos concluir ento que, ao se resolver um problema numericamente, a cada etapa e

a cada operao realizada, devem surgir diferentes tipos de erros gerados das mais variadas maneiras, e estes erros se propagam e determinam o erro no resultado final obtido. A propagao de erros muito importante pois, alm de determinar o erro final de uma operao numrica, ela tambm determina a sensibilidade de um determinado problema ou mtodo numrico. Se uma pequena variao nos dados de entrada de um problema levar a uma grande diferena no resultado final, considera-se que essa operao mal-condicionada, ou seja, Antonio Cesar Germano Martins 4

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP existe uma grande propagao de erros nessa operao. Por outro lado, se uma pequena variao nos dados de entrada leva a apenas uma pequena diferena no resultado final, ento essa operao bem-condicionada.

3.4 Erros na Aritmtica de Ponto Flutuante


Ns vimos nas sees anteriores que ao manipularmos os nmeros de maneira prtica, estaremos sempre trabalhando com erros, devido a diversos fatores. Vamos agora examinar os erros mais comuns que aparecem quando um computador manipula os nmeros. O primeiro tipo de erro que est presente na forma como computadores trabalham com nmeros corresponde aos erros de arredondamento e truncamento. Como citado anteriormente, esses erros esto presentes pois os computadores precisam representar os nmeros com uma quantidade finita de algarismos. Vamos supor, para simplificao, um computador com uma representao de ponto flutuante na base decimal (b=10) e uma mantissa de 4 algarismos (t=4). A fim de representarmos em ponto flutuante nesse computador, por exemplo, o nmero 734,68, teramos que trunca-lo para 0,7346103 ou arredonda-lo para 0,7347103. Portanto, no truncamento, estaramos cometendo um erro de 0,810-1 e no arredondamento, um erro de 0,210-1. Podemos generalizar esse exemplo e dizer que, em uma representao de ponto flutuante na base b e mantissa de t algarismos, os erros de truncamento sero dados por:

erro b e t
onde o nmero em questo foi representado na forma x=fx be. E os erros de arredondamento sero dados por:

(3.4)

erro

1 e t b 2

(3.5)

Portanto, para uma representao numrica com t=24 ou t=53 (como no caso da maioria dos computadores) esse erro muito pequeno. Apesar de pequeno, importante lembrar que ele se propagar nas operaes aritmticas realizadas pelo computador. Vamos tomar como exemplo a soma dos nmeros 6563 (= 0,6563104) e 3,375 (= 0,3375101) no nosso computador fictcio de mantissa com 4 algarismos. A soma desses dois nmeros corresponde a 6566,375. Como nosso computador pode representar com apenas 4 algarismos, o resultado dessa operao ser 0,6566104 = 6566. Ou seja, apesar de partirmos de dois nmeros exatos, o resultado da soma no ser exata. Mais uma vez, para um computador real, esse erro ser pequeno, porm, se um nmero muito grande de operaes for realizado e se existir a necessidade de se obter um resultado bastante preciso, ser necessrio se levar em considerao esse tipo de erro para avaliar o resultado obtido. Existe mais um tipo de erro que aparece quando computadores manipulam nmeros. Esse erro se refere converso de nmeros de uma base para a outra. O tipo de converso mais comum da base decimal (usada por humanos) para a base binria (usada por computadores) e vice-versa. Um exemplo bastante peculiar o nmero 0,1. Ao convertermos esse nmero da base decimal para a base binria (existem diversos algoritmos para se realizar essa converso, mas no vamos entrar nesse detalhe aqui), obtemos como resposta: (0,1)10 = (0,0001100110011...) 2 (3.6)

Antonio Cesar Germano Martins

Curso de CNC 1 Semestre de 2005 Engenharia de Controle e Automao UD Sorocaba - UNESP onde representamos com um subscrito a base em que esse nmero est escrito. Portanto, notamos que, ao se converter o nmero 0,1 da base decimal para a base binria, obtemos um nmero com infinitos algarismos! Como esse nmero no pode ser representado pelo computador, ele ser truncado, introduzindo um erro na sua representao. Uma forma interessante de constatar esse problema escrevendo um pequeno programa que calcule o valor de
1000 i 1

0,1 . Voc ver que esse nmero no igual a 100!

Antonio Cesar Germano Martins

Você também pode gostar