Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Aula01

Cálculo Numérico Aula 1: Computação numérica . Tipos de Erros. Aritmética de ponto flutuante Computação Numérica - O que é Cálculo Numérico? Cálculo numérico é uma metodologia para resolver problemas matemáticos utilizando o computador. São utilizadas apenas as operações que os computadores podem realizar, ou seja: - quatro operações básicas (adição, subtração multiplicação e divisão) - operações lógicas (comparação “=”, conjunção “e”, disjunção “ou” e negação “não”). Uma solução obtida por meio de um método numérico será sempre numérica enquanto que soluções analíticas podem ser dadas em termos de funções matemáticas - Para que serve? Serve para resolver problemas nos quais o cálculo de uma solução analítica seja muito complexo ou mesmo não exista. Exemplo: Não exite uma função cuja derivada seja É possível obter uma solução via cálculo numérico. Para isso, deve-se definir um intervalo [a b] e calcular uma aproximação da área sob a curva definida pela função. Dessa forma, teremos o valor aproximado para a integral no intervalo [a b]. Só será possível calcular este valor numericamente. Note que, o resultado será um valor numérico e não uma função. - Dado um problema prático qualquer como resolvê-lo utilizando as técnicas do cálculo numérico? Vamos dividir o processo de solução em três etpas: Etapa1: Definir o problema real a ser resolvido. Etapa2: Encontrar um modelo matemático para representar o problema real. Etapa3: Calcular uma solução numérica do problema originado da modelagem matemática. Esta etapa deve ser dividida em três partes: Determinar um método numérico de solução e construir um algoritmo (descrição de um conjunto de comandos que resulta em uma seqüência finita de acontecimentos) . Transcrever o algoritmo em um código (linguagem que possa ser interpretada pelo computador). Editar o código em um computador e executá-lo até que sejam eliminados os erros e possam ser obtidos os resultados. Na aula 6, resolveremos um problema real usando esta técnica. Durante as etapas de solução de um problema, podem surgir erros que alteram os resultados obtidos. Como resolver tal problema? Primeiramente é necessário conhecer os tipos de erros e desenvolver maneiras para minimizá-los. Erros Quando resolvemos problemas utilizando computação numérica os resultados obtidos são em geral aproximados. Assim, torna-se importante medir o quão próximo este resultado está do valor “exato”. Para quantificar essa aproximação é comum utilizar-se o erro. Erro absoluto : valor real – valor aproximado Erro relativo : (valor real –valor aproximado) / valor real. Erro percentual: 100*erro relativo Exemplo: valor exato=10000 valor aproximado=9999 Erro absoluto = 1 Erro relativo= 1/10000 = 0,0001 Erro percentual= 0,01% valor exato=10 valor aproximado=9 Erro absoluto = 1 Erro relativo= 1/10 = 0,1 Erro percentual= 10% O que podemos concluir? O erro absoluto não representa satisfatoriamente o erro cometido. Tipos de erros Erros inerentes- surgem de modelos matemáticos incorretos, medidas imprecisas. O usuário não tem condições de evitá-los. Erro de truncamento – são erros que surgem quando um processo matemático infinito é substituído por uma parte finita dele. Por exemplo, para calcular funções como sen(x) ou ex em um computador é necessário aproximá-las por uma série infinita e utilizar apenas um número finito de termos. série infinita Número finito de termos “n” A medida que n aumenta o erro de truncamento diminui. Erro de arredondamento- são erros cometidos pelos computadores ao realizarem operações aritméticas. Um número decimal qualquer não pode ser representado exatamente em um computador, pois ele deve ser convertido para binário (base 2) e armazenado em um número finito de bits. A seguir, vamos relembrar como são feitas as conversões entre as bases decimal e binária. Sistema de numeração No nosso cotidiano estamos acostumados a lidar com números na base 10, entretanto, em computação numérica esta base pode ser diferente de 10. É o caso de microcomputadores e estações de trabalho que utilizam a base 2, ou computadores de grande porte da linha IBM que utilizam a base 16. Assim, é importante conhecer a representação de números em bases diferentes da base decimal. A própria representação do número em uma determinada base pode ser já uma fonte de erros. Uma representação exata em uma base, não significa que tenha representação exata em uma outra base. Um número qualquer pode ser descrito numa base de acordo com a seguinte expressão polinomial: Parte Inteira Parte Fracionária Onde: Exemplos: Observe que os algarismos que representam o número na base são os coeficientes da expressão polinomial. É importante também observar que o deslocamento da vírgula no número é realizado pela multiplicação do número pela correspondente potência da base do número. Exemplos: Sistemas decimal e binário: O sistema decimal é baseado em dez dígitos diferentes, por isso é chamado de sistema de numeração decimal. Todos os números do sistema de numeração decimal são escritos usando-se uma combinação dos seguintes dez dígitos 0 1 2 3 4 5 6 7 8 9  Por exemplo, considere o número 4538  :   4 5 3 8 Multiplica por: 103 102 101 100 Somando tudo: 4 ×103 + 5 ×102 + 3×101 + 8×100 = 4538 Por analogia, se o sistema decimal é baseado em dez dígitos, então o sistema binário deve ser baseado em dois dígitos? Exatamente. Números no sistema binários são escritos usando-se apenas os dois seguintes dígitos: 0 e 1 Conversões: - Binário para decimal Exemplo: Converter 11001110 para decimal:   1 1 0 0 1 1 1 0 Multiplica por: 27 26 25 24 23 22 21 20 Somando: tudo: 1 × 27 + 1 × 26 +0 × 25 + 0 × 24 + 1 × 23 + 1 × 22+ 1 × 21 +1 × 20 = 206 Converter 0,111 para decimal:   1 1 1 Multiplica por: 2-1 2-2 2-3 Somando tudo: 1 ×2-1 + 1 ×2-2 + 1 ×2-3 =0,875 - Decimal para binário Exemplo: Converter 144 para binário: Divida 144 por 2. Pegue o quociente da divisão e novamente divida-o por 2. Continue o processo até que o quociente seja 1. O correspondente binário será formado pelo número 1 seguido dos restos da divisão escritos na ordem inversa.   144 72 36 18 9 4 2 Dividido por 2 Quociente 72 36 18 9 4 2 1 Resto: 0 0 0 0 1 0 0 Ordem inversa 0 0 1 0 0 0 0 Resulta em: 1 0 0 1 0 0 0 0 - Parte fracionária Multiplique sucessivamente a parte fracionária por 2 até que ela seja igual a zero. Se não for possível tornar a parte fracionária igual a zero é um indicativo que o número não possui representação exata. O número binário é representado pelas partes inteiras resultantes. Exemplo: Converter 0,875 para binário. Multiple por 2 Parte inteira 1 1 1 Resultado 0,111 Exemplo: Converter para a base 2. 0 0 0 1 1 0 0 1 1 0 0 1 1 Note que esse número não possui representação exata na base 2. Portanto, a operação seguinte não terá resultado exato na utilização de microcomputadores. Aritmética de ponto flutuante A representação de números reais mais utilizada em máquinas é a do ponto flutuante . Esse número tem três partes: o sinal, a parte fracionária (mantissa) e o expoente, ± .d1d2 d3... dp × Be , sendo di´s : dígitos da parte fracionária, d1 ≠ 0, 0 ≤ di ≤ B-1 β: base (em geral 2, 10 ou 16), t: no de dígitos, e: expoente inteiro. Exemplo: x=34,2; β=10; t=4 x=0,3420 × 102 x=0,1 ; β=2; t=9 x=0,110011001× 2-3 Uma aritmética de ponto flutuante é caracterizada por quatro números inteiros: F(). Pode-se observar que F é um subconjunto dos números reais, ou seja . Exemplo: Considere F(2,2,-1,2 ), com número normalizado, isto é, d1 ≠ 0. Os números serão: ± .10 × 2e ou ± .11 × 2e , sendo -1≤ e ≤ 2. Convertendo para decimal, temos: .10 = ½ e .11 = ¾ Com isso, os únicos números positivos representáveis nesse computador são: Mantissa Expoentes 1/2 × 2 e 3/4 × 2 e para e= -1, 0, 1 e 2 Ou seja, ¼, ½, 1, 2, 3/8, 3/4, 3/2 e 3, que podem ser representados na reta numerada: 0 1 2 3 O número total de elementos de uma aritmética de ponto flutuante é dado por: Para o exemplo anterior temos que o número de elementos é 17. (8 positivos, 8 negativos e o zero). O conjunto dos números de ponto flutuante é discreto, e não contínuo como os números reais. Não temos mais o conceito que entre dois números sempre existe um outro. Esse fato pode ter conseqüência desastrosa. Parâmetros de aritméticas de ponto flutuante utilizadas em alguns computadores digitais. Máquina e Aritmética Cray-1 Precisão Simples 2 48 -8192 8191 Cray-1 Precisão Dupla 2 96 -8192 8191 DEC VAX formato G Dupla 2 53 -1023 1023 DEC VAX formato D Dupla 2 56 -127 127 Calculadoras HP 28 e 48G 10 12 -499 499 IBM 3090 Precisão Simples 16 6 -64 63 IBM 3090 Precisão Dupla 16 14 -64 63 IBM 3090 Precisão Extendida 16 28 -64 63 IEEE Precisão Simples 2 24 -126 127 IEEE Precisão Dupla 2 53 -1022 1023 PDP 11 2 24 -128 127 Control Data 6600 2 48 -976 1070 IEEE- Precisão Simples Comprimento total 32 bits Mantissa 23 bits Expoente 8 bits Base 2 bits Maior expoente 127 Menor expoente -126 Maior número 3,4 x 1038 Menor número 1,18 x 10-38 Número de dígitos 7 O conjunto de números de números reais é infinito, entretanto, a sua representação em um sistema de ponto flutuante é limitada, pois é um sistema finito. Essa limitação tem duas origens: a faixa dos expoentes é limitada (); Sempre que uma operação aritmética produz um número com expoente superior ao expoente máximo, tem-se o fenômeno de “overflow”. De forma similar, operações que resultem em expoente inferior ao expoente mínimo tem-se o fenômeno de “underflow”. No caso do exemplo dado, pode-se observar qual as regiões que ocorrem o overflow e o underflow. Neste caso, considera-se a parte positiva e negativa da aritmética do exemplo. -3,0 - 0 3,0 Overflow Underflow Overflow Exemplos: Considere uma aritmética de ponto flutuante F(10,2,-5,5) -overflow: Sejam x =875 e y=3172 . Calcular x × y. Primeiro, deve-se arrendondar os números e armazenálos no formato indicado. A operação de multiplicação é efetuada usando 2t dígitos. x = 0.88x 10 3 e y =0 .32 x 104, x×y = 0.2816 x 10 7 Como o expoente é maior que 5, resulta em overflow -underflow: Sejam x =0,0064 e y=7312 Calcular x ÷ y. Primeiro, deve-se arrendondar os números e armazena-los no formato indicado. A operação de divisão é efetuada usando 2t dígitos. x = 0.64x 10 -2 e y = 0.73 x 104, x÷y = 0.8767 x 10 -6 O resultado dessa operação resultou em um valor menor que o computador pode armazenar, ou seja, resulta em underflow a mantissa pode representar um número finito de números () 1) Considere a representação binária de 0,6 e 0,7. 0,6=0,100110011001... 0,7=0,1011001100110... Se esses dois números forem representados na aritmética F(2,2,-1,2 ) eles serão representados igualmente por 0.10 × 20. Esse número equivale a 0,5 em decimal. Portanto, tanto o 0,6 quanto o 0,7 serão considerados 0,5. 2) Operações em F(10,2,-5,5). - Sejam x =4,32 e y=0,064 Calcular x + y. A adição aritmética de PF requer o alinhamento dos pontos decimais dos dois números. x = 0.43x 10 1 e y = 0.0064 x 101, x+y = 0.4364 x 10 1 Resultado com 2 dígitos : x+y = 0.44 x 10 1 - Sejam x =372 e y=371 Calcular x - y. x = 0.37x 10 3 e y = 0.37 x 103, x-y = 0.00 x 10 0 - Sejam x =691 e y=2,71 Calcular x + y. x = 0.69x 10 3 e y = 0.0027 x 103, x+y = 0.6927 x 10 3 Resultado com 2 dígitos : x+y = 0.69 x 10 1 Mesmo que as parcelas ou fatores de uma operação possam ser representados exatamente no sistema, não se pode esperar que o resultado armazenado seja exato. Exercício: Seja a=7,8953083 e b=7,8949992 Em uma calculadora comum faça: a2, b2, 2ab, 2 (ab), (a-b)2, a2 – 2ab + b2, a2 – 2(ab) + b2, a2 + b2 – 2(ab) O que você conclui disso? Referencias; F. F. Campos. Algoritmos Numéricos. LTC. 2001 Notas de Aula: Técnicas Computacionais em Sistemas de Energia Elétrica – EEL 6005. Disponível em: www.labspot.ufsc.br/~campagno/pos/ComputacaoCientifica_Cap1.doc J. D. Santos; Z. C. Silva. Métodos Numéricos. Editora Universitária-UFPE. 2006 a b Problema Real Modelo Matemático Solução Numérica