Cálculo numérico e modelagem matemática

Cálculo numérico e modelagem matemática

(Parte 1 de 4)

CAPÍTULO 1 • CÁLCULO NUMÉRICO

UNITINS • MATEMÁTICA • 7º PERÍODO 9

Introdução

Neste capítulo vamos, recordar os conceitos estudados em Lógica Matemática de álgebra booleana desenvolvidos por George Boole em meados de 1857. Estes conceitos fazem o elo entre a matemática e os computadores digitais.

Os computadores utilizam a lógica binária, presença e ausência de energia, ou seja, verdadeiro e falso. Agora basta associar de maneira adequada os operadores, conjunção, disjunção, negação e outros para termos todas as operações matemáticas que um computador executa.

Nosso curso tem como foco conversão de binário-decimal, e como ela acarreta erros nas operações realizadas por computadores. Ao fi nal deste capítulo, você será capaz de identifi car as fases de modelagem e os possíveis erros nelas cometidos e compreender a representação binária e como ocorre a representação dos valores decimais em um computador.

Neste capítulo, estudaremos uma área relativamente nova em relação a toda a história da Matemática, mas não menos importante, para isso é importante conhecer sobre valor posicional de um algarismo no sistema de numeração de base dez. Outro importante conceito é a notação científi ca, pois com esse tipo de notação trabalhamos com o posicionamento da vírgula e a potência de 10, muito útil em nosso curso de Cálculo Numérico.

1.1 Erros na fase de modelagem

Para melhor compreender em quais momentos, durante a resolução de um problema, podem ocorrer erros, vamos representá-los por meio de um esquema, conforme a fi gura a seguir.

Problema físicoModelo matemático

Modelagem Resolução Solução

O erro pode ocorrer na fase de modelagem, por exemplo, se o problema exige que tenhamos uma precisão de várias casas decimais não conseguimos medi-los de maneira precisa dependendo do modelo que se tenha.

Erros e representação numérica 1

CAPÍTULO 1 • CÁLCULO NUMÉRICO

10 7º PERÍODO • MATEMÁTICA • UNITINS

Outro exemplo que podemos citar são os modelos que matemáticos estudados no Ensino Médio desprezam, como o atrito, a resistência do ar, entre outras variáveis que em problemas reais influenciam diretamente no resultado final.

Exemplo

Considerando a equação F = m ⋅ a, sendo F a força medida em Newtons, m a massa em quilograma e a a aceleração em metros por segundo, se desejarmos medir a forma de um objeto em queda livre, sabemos que a aceleração é aproximadamente 9,8 m/s e sua massa igual a 5 Kg.

Facilmente respondemos que a sua força é F = 9,8 × 5 = 49 N. Entretanto, existe variação na gravidade em função da altitude em relação ao nível do mar, temos também que considerar a resistência do ar, entre outros fatores, portanto embora os cálculos estejam corretos temos erros na modelagem problema.

O que ocorreu no problema citado acorre em qualquer área do conhecimento.

1.2 Erros na fase de resolução

Os erros também podem ocorrer na fase de resolução devido a alguma aproximação realizada pelo computador devido às restrições de representação, como, por exemplo, o número pi, e, 2 e outros irracionais e alguns racionais. Estes números não podem ser representados exatamente e o erro cometido propaga nas operações aritméticas.

No computador ainda temos o problema da conversão em binário-decimal, em que os números binários não representam todos na forma decimal.

Para melhor compreender essas situações vamos estudar como transformar números da forma decimal-binária e vice-versa.

1.2.1 Conversão de bases

As máquinas digitais convertem todos os dados para binário (0 ou 1, presença ou ausência de energia) realizam as operação, transformam em decimal para que possamos compreender, todos os cálculos são realizados utilizando a Álgebra Booleana.

Um número N qualquer pode ser descrito numa base β de acordo com a seguinte expressão polinomial:

m m 1 1 o 1 2 n nN a aa a a a ... a− − −

Para compreender melhor, primeiro veremos um exemplo com a base decimal com a qual estamos mais acostumados.

Deste momento em diante, nesta disciplina todos os números serão representados entre parênteses com um índice indicando em qual base está o

CAPÍTULO 1 • CÁLCULO NUMÉRICO

UNITINS • MATEMÁTICA • 7º PERÍODO 1 número para que não haja confusão. Por exemplo, (110)10 que representa o número cento e dez, enquanto que (110)2, representa o número “um um zero” na base binária.

Vamos representar o número (142,52)10, assim temos:

Podemos observar claramente o efeito da posição relativa, que neste caso 1 tem peso 100, 4 tem peso 40 e 2 tem peso unitário e o mesmo para a parte fracionária que tem 5 com peso 0,5 e 2 com peso 0,02.

A base binária utiliza apenas dois símbolos para representar os números o

0 e o 1. Vamos escrever o número (110)2 utilizando o polinômio que generaliza a representação dos números. Neste caso temos β = 2.

Resolvendo a expressão anterior temos como resultado a representação

Agora vamos estudar um método prático para realizar a conversão bináriodecimal e vice versa através de um exemplo.

Exemplo

Transforme em binário o número (26)10. Solução

Para converter decimal em binário dividimos o número sucessivas vezes por 2 enquanto for possível, e escrevemos o número binário tomando os restos da divisão, da última para a primeira.

CAPÍTULO 1 • CÁLCULO NUMÉRICO

12 7º PERÍODO • MATEMÁTICA • UNITINS

Assim o número (26)10 = (11010)2

, para verificar basta utilizar o polinômio para transformar novamente em decimal. Vamos verificar:

Podemos observar que para representar um número em binário precisamos de mais posições que na forma decimal, de maneira geral quanto menor a base mais posições são necessárias. Agora, vamos estudar o processo para transformar decimais fracionários, considere o exemplo.

Exemplo

Solução

Para transformar decimal fracionário em binário, multiplicamos apenas parte fracionária por 2 sucessivas vezes até a parte fracionária ser igual a zero ou o número repetir uma sequência, a parte inteira sempre será 0 ou 1.

A parte inteira em destaque é o número na forma binária (0,101)2 . Como fizemos no exemplo anterior vamos verificar se a transformação está correta voltando o número para a forma decimal.

E como faríamos se tivéssemos um número com parte inteira e fracionária, ou seja, misto na forma decimal para transformar em binário?

A resposta é simples basta aplicar os dois processos em separado. Veja um exemplo:

CALCULO_NUMERICO.indd 121/4/a 13:13:03

CAPÍTULO 1 • CÁLCULO NUMÉRICO

UNITINS • MATEMÁTICA • 7º PERÍODO 13

Exemplo

Transforme o número (37,375)10 em binário. Solução

Primeiro vamos transformar a parte inteira, ou seja, o 37.

Assim, na parte inteira temos (100101)2, mas ainda falta a parte fracionária. Tomando apenas esta faremos como no exemplo anterior.

1.2.2 Erros de arredondamento

Durante o processo de conversão binário decimal, podem ocorrer alguns erros, pois na forma binária não é possível representar todos os números da reta real. Também existem casos em que um número exato na forma decimal não possui tal representação na forma binária.

Por exemplo, o número (0,1)10, em binário é uma dízima periódica, ou seja, não pode ser representada exatamente com uma quantidade fi nita de símbolos.

Existem também os números em decimal que não possuem representação binária, então fazemos uma aproximação.

Exemplo

Vamos representar o número (0,1)10 na forma binária.

CAPÍTULO 1 • CÁLCULO NUMÉRICO

14 7º PERÍODO • MATEMÁTICA • UNITINS

Observe que neste ponto o (0,4)10 começa a se repetir formando assim uma dízima periódica em binário. Neste caso, existe a necessidade de arredondar ou truncar, pois temos uma quantidade finita de posições para representar o número.

A representação binária que obtivemos para (0,1)10 é (0,0101...)2, fazendo a transformação inversa do último número considerando apenas as nove primeiras casas chegamos ao decimal (.09960937500)10, o qual possui um erro de (0.000390625)2 que dependendo da aplicação pode ser um problema.

Vimos como os números são representados em máquinas digitais, agora, vamos compreender como são armazenados e como podemos operá-los.

1.3 Representação em ponto flutuante

Todo dia utilizamos calculadoras e nem imaginamos que elas podem cometer erros e muito menos nos preocupamos sobre como suas operações são realizadas. Nelas são utilizadas, por exemplo, a representação em aritmética de ponto flutuante. A seguir temos um exemplo.

Observe que a vírgula que separa a parte fracionária no número 15.200.0.0 está a direita do último zero. Para facilitar a escrita e diminuir o espaço necessário para a representação deslocamos a vírgula dez casas para a esquerda e multiplicamos por uma potência de dez para não alterarmos o valor do número, neste caso, 1010.

Conhecendo a base em que se está representando o número, os valores dos números significativos, no exemplo anterior, 152 e o expoente da base.

Essa forma de representar os números otimiza a forma de representar os números quando a quantidade de símbolos a ser armazenado é limitado. A seguir, temos a definição do sistema de ponto flutuante para qualquer base de numeração.

Definição

Um sistema de ponto flutuante F ⊂ IR é um subconjunto dos números reais cujos elementos tem a forma:

1 2 3 tF (.d d dd )= ± β

sendo i0 d , i 1,...,t≤ < β = A aritmética de ponto flutuante F é caracterizada por quatro números inteiros:

base t β (binária, decimal, hexadecimal e etc..); precisão t (número de algarismos da mantissa);t limites do expoente e (t minmaxeee≤≤).

CAPÍTULO 1 • CÁLCULO NUMÉRICO

UNITINS • MATEMÁTICA • 7º PERÍODO 15

Assim F é definido por F minmax(,t,e,e)β. A mantissa está sempre entre –1 e 1.

Para garantir a representação única para cada y ∈ F, faz-se uma norma- lização no sistema de forma que d1 ≠ 0 para y ≠ 0. No exemplo, a seguir, veremos como representar um número no sistema de ponto flutuante.

Exemplo

Considere o número (0,00021456)10, vamos representá-lo em uma máquina com as seguintes características β = 10, t = 4 e –9 ≤ e ≤ 9.

Solução

Para representar nesta máquina o número vamos utilizar a equação

1 2 3 tF (.d d dd )= ± β

Como d1 ≠ 0, β = 10, como a mantissa deve estar entre –1 e 1 devemos deslocar a vírgula três casas para a direita.

0,21456 × 10–3

Mas nossa máquina representa apenas 4 dígitos na mantissa então truncamos o último ficando com o número

0,2145 × 10–3

Utilizamos o mesmo processo para representar números inteiros, como no exemplo a seguir.

Exemplo

Considere o número (21,004567)10, vamos representá-lo em uma máquina com as seguintes características β = 10, t = 4 e –9 ≤ e ≤ 9.

Solução

Novamente devido às restrições da mantissa vamos reposicionar a vírgula

A nossa máquina representa apenas 4 dígitos na mantissa temos. 0,2100 × 102

Observe que neste último exemplo alguns algarismos foram ignorados, acarretando um erro, assim a quantidade de símbolos na mantissa determina a capacidade de armazenamento de um número em uma máquina digital.

Para valores binários funciona da mesma maneira e assim como na representação decimal também ocorrem erros. Em uma máquina digital, em seu projeto, está implícita a base do sistema de numeração e por isso não há necessidade de armazená-la. Para representar em uma máquina digital devemos reservar um

CAPÍTULO 1 • CÁLCULO NUMÉRICO

16 7º PERÍODO • MATEMÁTICA • UNITINS espaço também para o sinal, onde se convenciona que 0 (zero) indica positivo e 1(um) indica o sinal negativo. Observe o esquema a seguir.

Sinal da mantissa

MantissaSinal do expoente Expoente

Observe o exemplo a seguir. Exemplo

Represente o número (–26,575)10 em uma máquina digital com as seguintes características β = 2, t = 4 e –8 < e < 8.

Solução Inicialmente devemos converter o número para binário, assim temos:

(26,575)10 = (1010,1)2 Vamos deslocar a vírgula 5 casas para a esquerda para satisfazer as condições da mantissa, ou seja, d1 ≠ 0 e a mantissa entre –1 e 1. Assim, 0,1101011 × 25, entretanto nossa máquina armazena apenas os símbolos 0 e

1, portanto, devemos transformar o expoente em binário também (5)10 = (101)2. Utilizando o esquema, temos:

Nesta máquina devemos abandonar alguns dígitos, pois a máquina possui apenas 4 posições para a mantissa causando um erro em sua representação devido as limitações da máquina. Na máquina está representado:

0,1101 × 25 = (11010,0)2 Voltando o número representado na máquina a forma decimal, temos:

Saiba mais

Durante a Guerra do Golfo em 1991, um míssil Patriot falhou devido a um erro na representação do tempo utilizado para calcular a sua trajetória, este erro impossibilitou o míssil Patriot de interceptar o míssil Scud que matou 28 soldados e deixou em torno de 100 feridos.

O erro no sistema ocorreu devido a um truncamento na conversão de décimos de segundos em segundos utilizando uma memória de 24 bits na sua representação, o agravante do erro foi ocasionado devido a alta velocidade

CAPÍTULO 1 • CÁLCULO NUMÉRICO

UNITINS • MATEMÁTICA • 7º PERÍODO 17 do míssil Scud, 1.676 m/s, que por um pequeno lapso no cálculo do tempo o tirou da faixa de atuação do Patriot. Veja no sítio: <http://w.ima.umn. edu/~arnold/disasters/patriot.html>.

Como vimos, as máquinas digitais possuem limitações e por isso é importante estudá-las para compreendermos o que podemos fazer e como corrigir esses erros. Um outro erro comum, cometido por máquinas digitais, é o overflow e o underflow que são erros relacionados ao projeto e a limitação de memória na representação de números muito grandes ou muito pequenos em módulo.

1.4Overflow e Underflow

O conjunto de números reais é infinito, entretanto, sendo o sistema de ponto flutuante limitado, pois é um sistema finito, fica claro que não é possível representar todos os números.

Dois fatores causam essa limitação:

o intervalo dos expoentes (et min ≤ e ≤ emax); a quantidade de elementos na mantissa (t β–1 ≤ m ≤ 1 – β –t).

A primeira limitação causa os fenômenos denominados de “overflow” e “underflow”. A segunda ocasiona erros de arredondamento ou truncamento.

Ocorre um overflow quando tentamos armazenar um número real que tenha expoente maior que o determinado pelo intervalo pré-definido por ele.

O underflow ocorre quando desejamos representar um número diferente de zero, mas que seja menor que o menor representável possível pela máquina, neste caso extrapolando o expoente pelo limite inferior.

Exemplo

Considere uma máquina em que t = 4, β = 2 e –2 ≤ exp ≤ 2, represente os seguintes valores (0,00001)2 e (10000)2 nessa máquina. Solução

Colocando (0,00001)2 na representação de ponto flutuante, temos: 0,1 x 2-4.

Como a nossa máquina trabalha no sistema binário devemos representar também os expoentes na forma binária. Levando em consideração as especificações desta máquina, fazemos o seguinte esquema:

CAPÍTULO 1 • CÁLCULO NUMÉRICO

18 7º PERÍODO • MATEMÁTICA • UNITINS

O expoente tem representação (100)2, mas dispomos de apenas duas casas para a representação, nesse caso houve um underflow.

Fazendo o mesmo processo para (10000)2, temos:

0,1 x 25 e (5)10 = (101)2

Como o expoente extrapolou a capacidade da máquina de representação para mais, dizemos que ocorreu um overflow.

1.5 Erros

Como vimos anteriormente em cálculos computacionais, os valores em geral são aproximados, assim, é importante saber o quanto uma medida está próxima de um valor “exato”. Assim utilizamos o erro para medir a diferença entre o valor exato e o aproximado.

(Parte 1 de 4)

Comentários