Baixe o app para aproveitar ainda mais
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.
Compartilhar