Use o botão abaixo para reportar erros ou dar sugestões.
Cálculo Numérico - Versão Scilab
Os computadores, em geral, usam a base binária para representar os números, onde as posições, chamadas de bits, assumem as condições “verdadeiro” ou “falso”, ou seja, ou , respectivamente. Os computadores representam os números com uma quantidade fixa de bits, o que se traduz em um conjunto finito de números representáveis. Os demais números são tomados por proximidade àqueles conhecidos, gerando erros de arredondamento. Por exemplo, em aritmética de computador, o número tem representação exata, logo , mas não tem representação finita, logo .
Veja isso no Scilab:
Tipicamente, um número inteiro é armazenado em um computador como uma sequência de dígitos binários de comprimento fixo denominado registro.
Um registro com bits da forma
representa o número .
Assim, é possível representar números inteiros entre e , sendo
| (2.44) |
O bit mais significativo (o primeiro à esquerda) representa o sinal: por convenção, significa positivo e significa negativo. Um registro com bits da forma
representa o número . Assim, é possível representar números inteiros entre e , com duas representações para o zero: e .
O bit mais significativo (o primeiro à esquerda) representa o coeficiente de . Um registro com bits da forma:
representa o número .
Exemplo 2.4.3. O registro com bits representa o número:
| (2.46) |
Agora, o registro representa:
| (2.47) |
Note que podemos obter a representação de invertendo os dígitos de em binário e somando .
O sistema de ponto fixo representa as partes inteira e fracionária do número com uma quantidade fixas de dígitos.
Exemplo 2.4.5. Em um computador de 32 bits que usa o sistema de ponto fixo, o registro
pode representar o número
| (2.49) |
e
| (2.50) |
| (2.51) |
e
| (2.52) |
| (2.53) |
Observe que dígitos são usados para representar a parte fracionária, são para representar a parte inteira e um dígito, o , está relacionado ao sinal do número.
O sistema de ponto flutuante não possui quantidade fixa de dígitos para as partes inteira e fracionária do número.
Podemos definir uma máquina em ponto flutuante de dois modos:
| (2.54) |
onde
Considere uma máquina com um registro de bits e base . Pelo padrão IEEE754, bit é usado para o sinal, bits para o expoente e bits são usados para o significando tal que
represente o número (o por definição)
| (2.55) |
onde a característica é representada por
| (2.56) |
e o significando por
| (2.57) |
Uma maneira de representar os expoentes inteiros é deslocar todos eles uma mesma quantidade. Desta forma permitimos a representação de números negativos e a ordem deles continua crescente. O expoente é representado por um inteiro sem sinal do qual é deslocado o BIAS.
Tendo dígitos para representar o expoente, geralmente o é predefinido de tal forma a dividir a tabela ao meio de tal forma que o expoente um seja representado pelo sequência .
Exemplo 2.4.7. Com bits, pelo padrão , temos que . Assim, . Como queremos que esta sequência represente o , definimos , pois
| (2.60) |
Com bits, temos e . E com bits, temos e .
Com temos
| (2.61) |
O maior expoente é dado por e o menor expoente é dado por .
O menor número representável positivo é dado pelo registro
| (2.62) |
quando , e , ou seja,
| (2.63) |
O maior número representável é dado por
| (2.64) |
quando , e , ou seja,
| (2.65) |
Observação 2.4.3. O menor número positivo, o maior número e o menor número subnormal representáveis no Scilab são:
Outras informações sobre a representação em ponto flutuante podem ser obtidas com help number_properties.
O zero é um caso especial representado pelo registro
| (2.66) |
Os expoentes reservados são usados para casos especiais:
Os números subnormais8 tem a forma
| (2.67) |
A precisão de uma máquina é o número de dígitos significativos usado para representar um número. Note que em binário e para outras bases.
O épsilon de máquina, , é definido de forma que seja o menor número representável maior que , isto é, é representável, mas não existem números representáveis em .
Observação 2.4.4. No Scilab, o épsilon de máquina é representado pela constante %eps. Observe os seguintes resultados:
Utilizando uma máquina em ponto flutuante, temos um número finito de números que podemos representar.
Um número muito pequeno geralmente é aproximado por zero (underflow) e um número muito grande (overflow) geralmente faz o cálculo parar. Além disso, os números não estão uniformemente espaçados no eixo real. Números pequenos estão bem próximos enquanto que números com expoentes grandes estão bem distantes.
Se tentarmos armazenar um número que não é representável, devemos utilizar o número mais próximo, gerando os erros de arredondamento.
Observação 2.4.5. O chamado modo de exceção de ponto flutuante é controlado pela função ieee. O padrão do Scilab é ieee(0). Estude os seguintes resultados das seguintes operações usando os diferentes modos de exceção:
E 2.4.1. Usando a representação complemento de dois de números inteiros com bits, escreva o número decimal que corresponde aos seguintes barramentos:
E 2.4.2. Usando a representação complemento de dois de números inteiros com bits, escreva o número decimal que corresponde aos seguintes barramentos:
E 2.4.3. Usando a representação de ponto flutuante com bits, escreva o número decimal que corresponde aos seguintes barramentos:
E 2.4.5. Considere a seguinte rotina escrita para ser usada no Scilab:
Explique se esta rotina finaliza em tempo finito, em caso afirmativo calcule a ordem de grandeza do tempo de execução supondo que cada passo do laço demore . Justifique sua reposta.
Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:36:32.