Tópicos Computação Científica
Tópicos
- Cálculo numérico
- Representação e conversão de números
- Representação de números em diferentes bases
- Conversão de números da base decimal para uma qualquer base b
- Conversão de números de uma qualquer base b para a base decimal
- Aritmética de ponto flutuante
- Operações com números em binário
- Representação de números em computadores digitais
- Análise e representação de erros
- Fontes de erros e incertezas
- Tipos de erros
- Precisão e exatidão
- Valores aproximados e erros
- Erros de arredondamento
- Erros de truncatura
Capítulo 2. Computação Numérica - Cálculo Numérico 1/2
Cálculo numérico Computação Científica
Cálculo numérico
- Cálculo Numérico é uma metodologia para resolver problemas/modelos matemáticos com o computador.
- Uma solução obtida via Cálculo Numérico é sempre numérica (solução aproximada).
- Os métodos exatos (analíticos) fornecem normalmente o resultado em termos de funções matemáticas.
- Uma solução numérica
- é uma aproximação do resultado exato,
- pode ser obtida com um elevado grau de exatidão.
- Para computar (calcular por meio de um computador) uma solução numérica, são necessárias operações
- aritméticas (adição, subtração, multiplicação e divisão) e
- lógicas (comparação, conjunção, disjunção e negação).
- Considerando que estas são as únicas operações matemáticas que os computadores são capazes de
realizar, então os Computadores e o Cálculo Numérico formam uma combinação perfeita.
Capítulo 2. Computação Numérica - Cálculo Numérico 2/2
Representação de números em diferentes bases Computação Científica
Representação de números em diferentes bases
- É comum para a maioria dos computadores, o uso de uma base numérica distinta da base decimal.
- Em geral, os números são armazenados na
- base 2 (binária) – mais comum
- base 8 (octal) ou
- base 16 (hexadecimal).
- Representação de números
- sistema posicional
- forma polinomial
- A representação de números inteiros é ligeiramente distinta da representação de números reais.
- Representação de números inteiros
- formato de Sinal e Magnitude
- Representação de números reais
- formato de ponto fixo
- formato de ponto flutuante
Capítulo 2. Computação Numérica - Representação e conversão de números 1/60
Representação de números em diferentes bases – Números inteiros Computação Científica
Representação de números em diferentes bases –
Números inteiros
- Um número inteiro N é representado, na base b, por um conjunto de dígitos ai em que
- ai { 0,1,…, b-1 }
- i assume um intervalo de valores que depende da base em uso.
- As bases mais utilizadas:
b Nome ai
2 binária 0,1
8 octal 0, 1, 2, 3, 4, 5, 6, 7
10 decimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
16 hexadecimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Capítulo 2. Computação Numérica - Representação e conversão de números 2/60
Representação de números em diferentes bases – Números inteiros Computação Científica
- Representação de um número inteiro em formato de Sinal e Magnitude
- no sistema posicional
- na forma polinomial
- No sistema posicional
- os dígitos são agrupados numa sequência,
- a dimensão da contribuição de cada dígito no número depende da posição que ocupa;
- um número N (na base decimal) é escrito com o seguinte formato:
N10 = (an an-1 ... a1 a0)b
- Exemplo:
16310 (243)8
- Na forma polinomial
- fica claramente explicitada a contribuição de cada dígito para o valor de N;
- um número N (na base decimal) é escrito com o seguinte formato:
N10 = an bn + an-1 bn-1 + ... + a1 b + a0
- Exemplo:
16310 (2x82 + 4x81 + 3x80)8
Capítulo 2. Computação Numérica - Representação e conversão de números 3/60
Representação de números em diferentes bases – Números reais Computação Científica
Representação de números em diferentes bases –
Números reais
- Um número pode ser representado usando dois formatos:
- com ponto fixo (por exemplo, 12.34);
- com ponto flutuante ou vírgula flutuante (por exemplo, 0.4273x102).
Capítulo 2. Computação Numérica - Representação e conversão de números 4/60
Representação de números em diferentes bases – Números reais Computação Científica
- Representação de números reais em formato com ponto fixo
- Na representação de um número real X no formato com ponto fixo, este é composto por
- uma parte inteira Xi (número inteiro)
- uma parte fracionaria Xf (número real)
tal que
Xf = X – Xi.
- Por exemplo, para X = 12.34,
- Xi = 12
- Xf = 0.34 (= 12.34 - 12)
Capítulo 2. Computação Numérica - Representação e conversão de números 5/60
Representação de números em diferentes bases – Números reais Computação Científica
- Representação de um real em formato com ponto flutuante
- notação semelhante à notação científica:
.d1d2d3...dp × be,
em que
- dk (k = 1,2,...,p) são os dígitos da parte fracionária com dk { 0, ..., b-1 } e d1 ≠ 0 (se normalizado),
- b é o valor da base (geralmente 2, 8, 10 ou 16),
- p é o número de dígitos da parte fracionária, e
- e é um expoente inteiro.
- Um número real em formato com ponto flutuante é composto por três partes:
- o sinal,
- a parte fracionária (significando ou mantissa) e
- o expoente.
- Estas três partes tem um comprimento total fixo que depende
- do computador e
- do tipo de número (precisão simples, dupla ou estendida).
Capítulo 2. Computação Numérica - Representação e conversão de números 6/60
Representação de números em diferentes bases – Números reais Computação Científica
- Por exemplo, o número 0.4273x102
- representado por
- d1 = 4; d2 = 2; d3 = 7; d4 = 3
- b = 10
- p = 4
- e = 2
- composto por
- sinal: + (omitido)
- mantissa: 4273
- expoente: 2
Capítulo 2. Computação Numérica - Representação e conversão de números 7/60
Representação de números em diferentes bases – Números reais Computação Científica
- A representação de um número pode ser diferente entre os fabricantes do computadores; logo
- um mesmo programa implementado em computadores que utilizam formatos diferentes
pode fornecer resultados diferentes.
- O formato utilizado pela maioria dos computadores é padrão IEEE 754 (para binários):
PropriedadePrecisão
Simples Dupla Estendida
Comprimento total 32 64 80
bits na mantissa 23 52 64
bits no expoente 8 11 15
bits no sinal 1 1 1
expoente máximo 127 1023 16383
expoente mínimo -126 -1022 -16382
maior número (valor absoluto) 3.40 x 1038 1.80 x 10308 1.19 x 104932
menor número (valor absoluto) 1.18 x 10-38 2.123 x 10-308 3.36 x 10-4932
dígitos decimais (precisão) 7 16 19
Capítulo 2. Computação Numérica - Representação e conversão de números 8/60
Conversão de números da base decimal para uma base b Computação Científica
Conversão de números da base decimal para uma base b
- Conversão de números inteiros
- Conversão de números reais
- formato de ponto fixo
- formato de ponto flutuante
Capítulo 2. Computação Numérica - Representação e conversão de números 9/60
Conversão de números da base decimal para uma base b - Números inteiros Computação Científica
Conversão de números da base decimal para uma base b -
Números inteiros
- Considere-se a conversão de um inteiro da base decimal para a base binária
- Um dos métodos é o das divisões sucessivas que consiste no seguinte (para um número N):
- N (base decimal) e os sucessivos quocientes qi são divididos por 2 (base binária),
- são guardados os restos ri { 0, 1 } até que o último quociente seja qn = 1;
- ou seja,
N = 2 q1 + r0; q1 = 2 q2 + r1; q2 = 2 q3 + r2; ... ; qn-1 = 2 qn + rn-1
- o último quociente somente será 0 se N = 0 (qn = 0 N = 0);
- então,
N = (qn rn-1 ... r1 r0)2 (sistema posicional)
N = qn 2n + rn-1 2n-1 + rn-2 2n-2 + ... + r1 21 + r0 (forma polinomial)
Capítulo 2. Computação Numérica - Representação e conversão de números 10/60
Conversão de números da base decimal para uma base b - Números inteiros Computação Científica
- Método das divisões sucessivas para converter um inteiro N (decimal) para uma qualquer base b:
- divide-se N e os sucessivos quocientes qi por b
- guarda-se os restos ri {0, ..., b-1} até que o último quociente seja qn {1, ..., b-1};
- ou seja,
N = b q1 + r0; q1 = b q2 + r1; q2 = b q3 + r2; ... ; qn-1 = b qn + rn-1
- o último quociente somente será 0 se N = 0 (qn = 0 N = 0);
- então,
N = (qn rn-1 ... r1 r0)b (sistema posicional)
N = qn bn + rn-1 bn-1 + rn-2 bn-2 + ... + r1 b1 + r0 b0 (forma polinomial)
Capítulo 2. Computação Numérica - Representação e conversão de números 11/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto fixo Computação Científica
Conversão de números da base decimal para uma base b -
Reais em formato com ponto fixo
- Considere-se a conversão de um real da base decimal para a base binária
- Dado um número real X, este é composto por
- uma parte inteira Xi (número inteiro) e
- uma parte fracionaria Xf
- Para se converter este número X na base binária utiliza-se
- o método das divisões sucessivas para converter Xi e
- o método das multiplicações sucessivas para converter Xf
- O método das multiplicações sucessivas consiste em
- multiplicar-se Xf por 2, extraindo-se a parte inteira do resultado (que pode ser 0),
- a parte fracionária é também multiplicada por 2;
- o processo repete-se até que
- a parte fracionária seja 0, ou
- se obtenha um padrão repetitivo (o número fracionário é periódico).
Capítulo 2. Computação Numérica - Representação e conversão de números 12/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto fixo Computação Científica
- Exemplo 1:
- Seja Xf = 0.8125, então
0.8125 x 2 = 1.6250;
0.6250 x 2 = 1.2500;
0.2500 x 2 = 0.5000;
0.5000 x 2 = 1.0000
- Ou seja,
0.8125 = (0.1101)2
Capítulo 2. Computação Numérica - Representação e conversão de números 13/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto fixo Computação Científica
- Exemplo 2:
- Considere o número Xf = 0.1
0.1 x 2 = 0.2;
0.2 x 2 = 0.4;
0.4 x 2 = 0.8;
0.8 x 2 = 1.6;
0.6 x 2 = 1.2;
0.2 x 2 = 0.4;
...
o processo de multiplicações sucessivas repete a sequencia de dígitos 0011 infinitamente.
- Portanto,
0.1 = (0.0001100110011...)2
Capítulo 2. Computação Numérica - Representação e conversão de números 14/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto fixo Computação Científica
- Estes exemplos mostram que num computador, onde o espaço para representação de um número é
finito, estes números terão que ser arredondados.
- A forma polinomial de um número fracionário na base 2 é dada por:
Xf = 1 2-1 + 2 2-2 + 3 2-3 + ...
- Portanto, um número real X = Xi + Xf pode ser representado na base 2 por
- Forma polinomial:
X = an 2n + an-1 2n-1 + an-2 2n-2 + ... + a1 21 + a0 20 + 1 2-1 + 2 2-2 + 3 2-3 + …
- Sistema posicional:
X = (an an-1 ... a1 a0 . 1 2 3 ...)2
Capítulo 2. Computação Numérica - Representação e conversão de números 15/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto flutuante Computação Científica
Conversão de números da base decimal para uma base b -
Reais em formato com ponto flutuante
- Seja um computador com
- dois dígitos (p = 2),
- base b = 2,
- expoente e { -1, 0, 1, 2 }.
- Como os números reais são normalizados (d1 ≠ 0) todos eles serão da forma:
.102 × 2e ou .112 × 2e , e ∈ {−1, 0,1,2}.
- Considerando a conversão de binário para decimal de um número positivo menor do que 1:
.102 = 1 × 2−1 + 0 × 2−2 = 1/2 + 0 = 1/2, e
.112 = 1 × 2−1 + 1 × 2−2 = 1/2 + 1 /4 = 3/4,
Capítulo 2. Computação Numérica - Representação e conversão de números 16/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto flutuante Computação Científica
- Os únicos números positivos representáveis neste computador são:
.102 × 2−1 = 1/2 × 1/2 = 1/4 .112 × 2−1 = 3/4 × 1/2 = 3/8
.102 × 20 = 1/2 × 1 = 1/2 .112 × 20 = 3/4 × 1 = 3/4
.102 × 21 = 1/2 × 2 = 1 .112 × 21 = 3/4 × 2 = 3/2
.102 × 22 = 1/2 × 4 = 2 .112 × 22 = 3/4 × 4 = 3
- O zero é representado de uma forma especial:
- todos os dígitos dk da mantissa são nulos,
- o expoente é nulo;
- ou seja,
.002 x 20
- O mais importante a reter sobre os números em formato com ponto flutuante é que
- são discretos e
- não contínuos como na Matemática.
Capítulo 2. Computação Numérica - Representação e conversão de números 17/60
Conversão de números da base decimal para uma base b - Reais em formato com ponto flutuante Computação Científica
- O conceito de existir sempre um número real entre dois números reais quaisquer não é válido.
- As consequências da falha deste conceito podem ser desastrosas (verificar com o exemplo):
- considere-se as seguintes representações em binário:
0.610 = 0.1001100110011...2 e
0.710 = 0.1011001100110...2
- se estes dois números forem armazenados naquele hipotético computador (dois dígitos para a mantissa),
eles serão igualmente representados por:
.102 x 20
- isto significa que tanto 0.610 como 0.710 são vistos como 0.510 por aquele computador.
- Esta é uma das grandes causas da ocorrência de erros de arredondamento nos processos numéricos.
Capítulo 2. Computação Numérica - Representação e conversão de números 18/60
Conversão de números de uma base b para a base decimal Computação Científica
Conversão de números de uma base b para a base decimal
- Conversão de números inteiros
- Conversão de números reais fracionários
- Número binário infinito
Capítulo 2. Computação Numérica - Representação e conversão de números 19/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Conversão de números de uma base b para a base decimal -
Números inteiros
- Considere-se a conversão da base binária para a decimal.
- Seja o número N representado na base binária por
N = (am am-1 ... a1 a0)2
- A sua representação na base decimal pode ser obtida simplesmente pelo polinómio
N = am 2m + am-1 2m-1 + ... + a1 2 + a0
- A operacionalização deste polinómio pode ser obtida
- pelo Algoritmo de Horner e
- pela Divisão de Ruffini.
Capítulo 2. Computação Numérica - Representação e conversão de números 20/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Algoritmo de Horner
- Seja
N = (am am-1 ... a1 a0)2
- O número N pode ser obtido na base decimal através do cálculo da sequência:
cm = am
cm-1 = am-1 + 2 x cm
cm-2 = am-2 + 2 x cm-1
... ...
c1 = a1 + 2 x c2
c0 = a0 + 2 x c1
e então,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 21/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Algoritmo de Horner
- Exemplo:
Seja o número N = (11101)2 = (a4 a3 a2 a1 a0)2
c4 = a4 = 1
c3 = a3 + 2 x c4 = 1 + 2 x 1 = 3
c2 = a2 + 2 x c3 = 1 + 2 x 3 = 7
c1 = a1 + 2 x c2 = 0 + 2 x 7 = 14
c0 = a0 + 2 x c1 = 1 + 2 x 14 = 29
portanto,
(11101)2 = 2910
Capítulo 2. Computação Numérica - Representação e conversão de números 22/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Algoritmo de Horner
- Generalizando esta metodologia para converter um inteiro na base b para decimal:
- Seja
N = (am am-1 ... a1 a0)b
- A sua representação na base decimal pode ser obtida da seguinte forma:
cm = am
cm-1 = am-1 + b x cm
cm-2 = am-2 + b x cm-1
... ...
c1 = a1 + b x c2
c0 = a0 + b x c1
então,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 23/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Divisão de Ruffini
- Equivalente ao algoritmo de Horner,
- Difere apenas na disposição dos coeficientes ai e ci
- Seja
N = (am am-1 ... a1 a0)2
- A sua representação na base decimal pode ser obtida da seguinte forma:
am am-1 ... a2 a1 a0
2 2 x cm ... 2 x c3 2 x c2 2 x c1
cm cm-1 ... c2 c1 c0
am am-1 + 2 x cm a2 + 2 x c3 a1 + 2 x c2 a0 + 2 x c1
Então,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 24/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Divisão de Ruffini
- Exemplo:
Seja o número N = (11101)2 = (a4 a3 a2 a1 a0)2
a4 a3 a2 a1 a0
1 1 1 0 1
22 x c4 2 x c3 2 x c2 2 x c1
1 2 x 1 2 x 3 2 x 7 2 x 14
c4 c3 c2 c1 c0
1 1 + 2 1 + 6 0 + 14 1 + 28
1 3 7 14 29
Portanto,
(11101)2 = 2910
Capítulo 2. Computação Numérica - Representação e conversão de números 25/60
Conversão de números de uma base b para a base decimal - Números inteiros Computação Científica
Divisão de Ruffini
- Generalizando esta metodologia para converter um inteiro na base b para decimal.
- Seja
N = (am am-1 ... a1 a0)b
- A sua representação na base decimal pode ser obtida da seguinte forma:
am am-1 ... a2 a1 a0
b b x cm ... b x c3 b x c2 b x c1
cm cm-1 ... c2 c1 c0
am am-1 + b x cm a2 + b x c3 a1 + b x c2 a0 + b x c1
Portanto,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 26/60
Conversão de números de uma base b para a base decimal - Números reais Computação Científica
Conversão de números de uma base b para a base decimal -
Números reais
- Considere-se um número fracionário com representação finita na base binária:
Xf = (0.a1a2…an)2
- O valor de Xf na base decimal será dado por
Xf = 1 2-1 + 2 2-2 + … + n 2-n
- Esta soma pode ser calculada
- diretamente, ou
- utilizando Algoritmo de Horner e a Divisão de Ruffini com algumas modificações.
Capítulo 2. Computação Numérica - Representação e conversão de números 27/60
Conversão de números de uma base b para a base decimal - Números reais Computação Científica
- Algoritmo de Horner (caso de um número fracionário na base 2):
Seja N = (0.a1a2…an)2
cn = an
cn-1 = an-1 + (1/2) x cn
cn-2 = an-2 + (1/2) x cn-1
... ...
c2 = a2 + (1/2) x c3
c1 = a1 + (1/2) x c2
c0 = (1/2) x c1
Então,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 28/60
Conversão de números de uma base b para a base decimal - Números reais Computação Científica
- Exemplo (algoritmo de Horner):
Converter o número N = (0.10111)2 = (0.a1 a2 a3 a4 a5)2
c5 = a5 = 1
c4 = a4 + (1/2) x c5 = 1 + (1/2) x 1 = 3/2
c3 = a3 + (1/2) x c4 = 1 + (1/2) x (3/2) = 7/4
c2 = a2 + (1/2) x c3 = 0 + (1/2) x (7/4) = 7/8
c1 = a1 + (1/2) x c2 = 1 + (1/2) x (7/8) = 23/16
c0 = (1/2) x c1 = (1/2) x (23/16) = 23/32
Então,
(0.10111)2 = 23/32 = 0.71875
Capítulo 2. Computação Numérica - Representação e conversão de números 29/60
Conversão de números de uma base b para a base decimal - Números reais Computação Científica
- Divisão de Ruffini (caso de um número fracionário na base 2)
Seja N = (0.a1a2…an)2
an an-1 ... a2 a1
1/2 (1/2) x cm ... (1/2) x c3 (1/2) x c2 (1/2) x c1
cn cn-1 ... c2 c1 c0
an an-1 + 1/2 x cm a2 + 1/2 x c3 a1 + 1/2 x c2 1/2 x c1
Então,
N = c0
Capítulo 2. Computação Numérica - Representação e conversão de números 30/60
Conversão de números de uma base b para a base decimal - Números reais Computação Científica
- Exemplo:
Converter o número N = (0.10111)2 = (0.a1 a2 a3 a4 a5)2
a5 a4 a3 a2 a1
1 1 1 0 1
1/2(1/2) x c5 (1/2) x c4 (1/2) x c3 (1/2) x c2 (1/2) x c1
1 (1/2) x 1 (1/2) x (3/2) (1/2) x (7/4) (1/2) x (7/8) (1/2) x (23/16)
c5 c4 c3 c2 c1 c0
1 1 + 1/2 1 + 3/4 0 + 7/8 1 + 7/16 23/32
1 3/2 7/4 7/8 23/16 23/32
Então,
(0.10111)2 = 23/32 = 0.71875
Capítulo 2. Computação Numérica - Representação e conversão de números 31/60
Conversão de números de uma base b para a base decimal - Número binário infinito Computação Científica
Conversão de números de uma base b para a base decimal -
Número binário infinito
- Uma outra situação que pode ocorrer é quando o número binário for infinito:
Xf=(0.α1α2...αn β1β2...βm)2em que
β1β2...βm indica que a sequência de dígitos β1β2...βm se repete infinitamente.
- Em geral, um número fracionário tem representação infinita periódica na base b da seguinte forma:
Xf = (α1b−1 + α2b−2 + ... + αnb−n) + (β1b−1 + β2b−2 + ... + βmb−m) bm−n
bm−1
onde as expressões entre parênteses podem ser calculadas
- diretamente ou
- utilizando qualquer um dos métodos descritos anteriormente.
Capítulo 2. Computação Numérica - Representação e conversão de números 32/60
Aritmética de ponto flutuante Computação Científica
Aritmética de ponto flutuante
- OVERFLOW: ocorre quando uma operação aritmética resultar num número que seja maior, em valor
absoluto, que o maior número representável.
- UNDERFLOW: ocorre quando uma operação aritmética resultar num número que seja menor, em valor
absoluto, que o menor número representável diferente de zero.
- Seja um hipotético computador com
- dois dígitos da mantissa (p = 2),
- base b = 10,
- expoente e {-5, …, 5};
.d1d2 x 10e
- Quando dois números são somados ou subtraídos, o processo é o seguinte:
- os dígitos do número de menor expoente são deslocados para alinhar as casas decimais;
- o resultado é então normalizado (o expoente é ajustado de forma a normalizar a mantissa, d1 ≠ 0);
- por fim, o resultado é arredondado para dois dígitos para caber na mantissa (p = 2).
Capítulo 2. Computação Numérica - Representação e conversão de números 33/60
Aritmética de ponto flutuante Computação Científica
- Exemplo 1: 4.32 + 0.064
- os números são armazenados no formato especificado,
- as casas decimais são alinhadas,
- a operação de adição é efetuada;
- por fim, o resultado é então normalizado e arredondado para dois dígitos:
4.32 + 0.064 = .43 x 101 + .64 x 10-1 = .43 x 101
+ .0064 x 101
= .4364 x 101
.44 x 101
O resultado da adição é 4.4 em vez de 4.384.
Capítulo 2. Computação Numérica - Representação e conversão de números 34/60
Aritmética de ponto flutuante Computação Científica
- Exemplo 2: 372.0 – 371.0
- os números são armazenados no formato especificado,
- as casas decimais são alinhadas e
- a operação de adição é efetuada;
- O resultado é então normalizado e arredondado para dois dígitos:
372.0 – 371.0 = .37 x 103 - .37 x 103 = .37 x 103
- .37 x 103
= .00 x 103
.00 x 100
O resultado da subtração é 0.0 em vez de 1.0
Capítulo 2. Computação Numérica - Representação e conversão de números 35/60
Aritmética de ponto flutuante Computação Científica
- Exemplo 3: 1234.0 x 0.016
- os números são armazenados no formato especificado,
- a multiplicação é efetuada utilizando 2p = 4 dígitos na mantissa;
- o resultado é então normalizado e arredondado para dois dígitos:
1234.0 x 0.016 = .12 x 104 x .16 x 10-1 = .12 x 104
x .16 x 10-1
= .0192 x 103
.19 x 102
O resultado da multiplicação é 19.0 em vez de 19.744.
Capítulo 2. Computação Numérica - Representação e conversão de números 36/60
Aritmética de ponto flutuante Computação Científica
- A perda de precisão quando dois números aproximadamente iguais são subtraídos é das maiores
fontes de erro nas operações de ponto flutuante.
- Uma das causas de se cometer erros quando se usa um computador deve-se à conversão de base:
- um número é fornecido ao computador na base 10 e
- armazenado na base 2.
- Enquanto que
- para um número inteiro, a representação é exata; por exemplo, 4410 = 1011002.
- para um número real com parte fracionária, a representação
- pode ter que ser arredondado para ser armazenado em formato com ponto flutuante.
Capítulo 2. Computação Numérica - Representação e conversão de números 37/60
Operações com números em binário - Adição binária Computação Científica
Operações com números em binário -
Adição binária
- Uma adição no sistema binário é realizada da mesma forma que a adição no sistema decimal.
- A adição é realizada de acordo com as seguintes regras (considerando os dois operandos positivos):
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 (e “vai 1” para o dígito de ordem superior)
1 + 1 + 1 = 1 (e “vai 1” para o dígito de ordem superior)
- Para somar números com mais de 2 algarismos,
- utiliza-se o mesmo processo de transporte para a coluna posterior, usado na adição decimal.
Exemplo: 1012 + 0112 = 10002 (510 + 310 = 810)
[1] [1] [1]
1 0 1
+ 0 1 1
1 0 0 0
Capítulo 2. Computação Numérica - Representação e conversão de números 38/60
Operações com números em binário - Adição binária Computação Científica
- Quando um dos operandos são números binários negativos, o processo a aplicar é o seguinte:
- dois operandos negativos:
- adicionam-se os dois números considerando o valor absoluto de cada um deles e
- atribui-se o sinal de negativo;
- um deles é negativo:
- verifica-se qual dos dois números tem maior valor absoluto,
- subtraí-se o menor valor absoluto ao maior e,
- atribui-se o sinal do maior em valor absoluto.
Capítulo 2. Computação Numérica - Representação e conversão de números 39/60
Operações com números em binário - Subtração binária Computação Científica
Operações com números em binário -
Subtração binária
- A subtração é análoga à adição, sendo realizada de acordo com as seguintes regras:
0 - 0 = 0
0 - 1 = 1 (e “pede emprestado 1” para o dígito de ordem superior)
1 - 0 = 1
1 - 1 = 0
- A operação 0 - 1 resulta em 1, mas com o transporte de 1 para a coluna à esquerda, que deve ser
- acumulado ao subtraendo e, por consequência,
- subtraído do minuendo
(em a-b, a o minuendo e b é o subtraendo).
Exemplo 1: 1012 - 0112 = 0102 (510 - 310 = 210)
[1]
1 0 1
- 0 1 1
0 1 0
Capítulo 2. Computação Numérica - Representação e conversão de números 40/60
Representação de números em computadores digitais Computação Científica
Representação de números em computadores digitais
- As representações de números inteiros e reais apresentadas na secção anterior não são suficientes,
pois é necessário distinguir-se, por exemplo, o sinal do número.
- Como não existe a representação do sinal + ou - na memória de um computador, o recurso utilizado é
acrescentar um bit ao número para representar o sinal; este bit é denominado de bit de sinal.
- Representação de inteiros pode ser:
- em Sinal-Módulo e
- em Complemento à base (a b e a b-1)
- Representação de números reais pode ser:
- em ponto flutuante normalizado
Capítulo 2. Computação Numérica - Representação e conversão de números 41/60
Representação de números em computadores digitais - Números inteiros (em Sinal-Módulo) Computação Científica
Representação de números em computadores digitais -
Números inteiros (em Sinal-Módulo)
- A representação mais direta de inteiros é a de Sinal-Módulo (ou Sinal-Magnitude), onde
- o valor absoluto do número inteiro é obtido diretamente a partir dos algoritmos discutidos antes, e
- o sinal é representado por um dígito adicional colocado à esquerda do número.
- Na representação binária, o bit de sinal ocupa a posição do bit mais significativo.
- Supondo que o computador dispõe de q dígitos para a representação, um inteiro na base b será
representado no computador através da seguinte sequência de dígitos (denominada palavra):
aq-1 aq-2 ...a1 a0
em que
{ a0, a1, …, aq-2 } { 0, 1, …, b-1 } e
aq-1 { 0, 1 } representa o sinal do número.
- Por exemplo, no sistema binário convenciona-se usar
- aq-1 = 0 para “+” e
- aq-1 = 1 para “-”.
Capítulo 2. Computação Numérica - Representação e conversão de números 42/60
Representação de números em computadores digitais - Números inteiros (em Sinal-Módulo) Computação Científica
- A conversão do número internamente representado por aq-1 aq-2 ...a1 a0 para o sistema decimal é
realizado através de uma fórmula semelhante à forma polinomial:
N = (−1)a
q−1 × ∑k=0
q−2
(ak× bk),
em que,
N o número inteiro na base decimal
q-2 é o índice do dígito mais à esquerda que representa o valor absoluto de N
b a base, às vezes denominada de radix (um inteiro maior que 1)
ak um dígito válido na representação (ak { 0, ..., b-1 }), k = 0, 1, …, q-2
aq-1 { 0, 1 } e representa o bit de sinal
- Os valores para as quantidades expressas dependem da arquitetura e do compilador utilizado.
Capítulo 2. Computação Numérica - Representação e conversão de números 43/60
Representação de números em computadores digitais - Números inteiros (em Sinal-Módulo) Computação Científica
- Por exemplo, um dado compilador possui 4 modelos de representação de inteiros com 1, 2, 4 e 8 bytes,
também denominados de espécies.
- Sendo para todos os casos b = 2, o valor absoluto do maior número inteiro que pode ser representado
internamente para cada espécie Nmaxp , (p = 1, 2, 4, 8) é o seguinte:
Nmaxp = ∑
k=0
8p−2
2k = 20 + 21 + 22 + ... + 28p−2 = 28p−1 − 1 = {127 (p=1)32767 (p=2)2147483647 (p=4)9223372036854775807 (p=8)
Capítulo 2. Computação Numérica - Representação e conversão de números 44/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b-1) Computação Científica
Representação de números em computadores digitais -
Números inteiros (em Complemento a b-1)
- A representação de números inteiros positivos em Complemento a b-1 é idêntica à em Sinal-Módulo.
- A representação dos números negativos é obtida efetuando-se:
(b - 1) menos cada algarismo do número.
- Por exemplo, calcular o complemento a b–1 do número -29710
- b = 10, logo complemento a b-1 será complemento a 9;
- como 999 – 297 = 702, o complemento a 9 do número -297 é 702.
Capítulo 2. Computação Numérica - Representação e conversão de números 45/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b-1) Computação Científica
- Para se obter o complemento a b–1 de um número binário,
- deve-se subtrair cada algarismo de 1 (b - 1 = 1);
- como se trata de binários, basta inverter todos os bits.
- Por exemplo,
- o complemento a 1 (C1) do número 00112 (usando 4 dígitos) é 11002 : 11112 – 00112 = 11002
- Quantidade de números inteiros diferentes que se podem representar com n posições num sistema de
base b:
- total: bn
- Por exemplo, na base 2, podem-se representar os seguintes números:
- 21 = 2 números com um dígito (0, 1),
- 22 = 4 números com dois dígitos (00, 01, 10, 11),
- 23 = 8 números com três dígitos (000, 001, 010, 011, 100, 101, 110, 111),
- . . .
Capítulo 2. Computação Numérica - Representação e conversão de números 46/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b-1) Computação Científica
- A tabela seguinte apresenta a representação em C1 dos números binários de 4 dígitos:
Decimal
(positivo)
Binário em C1
(igual a sinal-módulo)
Decimal
(negativo)Binário em C1
0 0000 0 1111
1 0001 -1 1110
2 0010 -2 1101
3 0011 -3 1100
4 0100 -4 1011
5 0101 -5 1010
6 0110 -6 1001
7 0111 -7 1000
- Note-se que há 2 representações para o zero.
Capítulo 2. Computação Numérica - Representação e conversão de números 47/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b-1) Computação Científica
- A representação na base b = 10 com 3 dígitos varia de 000 a 999 (103 = 1000 representações),
- representando os números de -499 a -1 com 500 a 998;
- representando os números de +1 a +499 com 1 a 499;
- representando o zero (0) com 000 ou 999.
- Faixa de representação em C1 dos números binários com n dígitos:
- menor inteiro negativo: -(2n-1 – 1)
- maior inteiro positivo: 2n-1 – 1
Capítulo 2. Computação Numérica - Representação e conversão de números 48/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b-1) Computação Científica
- Na aritmética em complemento a b-1,
- basta somar os números,
- sendo que um número negativo será representado por seu complemento a b–1.
- Por exemplo, a soma decimal de 123 com -418 é:
- Sinal-Módulo
-418 + 123 = -295
- Complemento a 9 (b - 1)
-418 é representado por 999 - 418 = 581
581 + 123 = 704
999 - 704 = 295, em que 704 é o C9 de -295 (704 está na faixa negativa).
Capítulo 2. Computação Numérica - Representação e conversão de números 49/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b) Computação Científica
Representação de números em computadores digitais -
Números inteiros (em Complemento a b)
- A representação dos números negativos em complemento a b é obtida
- subtraindo-se da base b cada algarismo do número.
- Por exemplo, na base b = 10 com 3 dígitos: 1000 – x.
- Uma forma alternativa é
- subtrair cada algarismo de (b – 1), isto é, calcular o complemento a b-1, e depois
- somar 1 ao resultado.
- Por exemplo, calcular o complemento a b (base = 10) do número 29710 com 3 dígitos:
- usando C10: 1000 – 297 = 703;
- representar o número em C9 e somar 1 ao resultado: 999 – 297 = 702 702 + 1 = 703
- Por exemplo, calcular o complemento a 2 (base = 2) do número 00112 com 4 dígitos:
- usando C2: 10000 – 0011 = 1101;
- representar o número em C1 e somar 1: 1111 – 0011 = 1100 1100 + 0001 = 1101.
Capítulo 2. Computação Numérica - Representação e conversão de números 50/60
Representação de números em computadores digitais - Números inteiros (em Complemento a b) Computação Científica
- Tabela com a representação em C2 dos números binários de 4 dígitos:
Decimal
(positivo)
Binário em C2
(igual a sinal-módulo)
Decimal
(negativo)Binário em C2
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000
- Comparando com a tabela anterior (para C1),
- os números positivos têm a mesma representação de C1 e
- o zero passou a ter apenas uma representação,
- o que permitiu representar mais um número (neste caso, mais um negativo, o -8).
- A faixa de representação em C2 dos números binários com n dígitos é a seguinte:
menor inteiro negativo: - 2n-1,
maior inteiro positivo: 2n-1 – 1.
Capítulo 2. Computação Numérica - Representação e conversão de números 51/60
Representação de números em computadores digitais - Números reais Computação Científica
Representação de números em computadores digitais -
Números reais
- Representação de números reais em computadores denomina-se por
- representação de ponto flutuante normalizado.
- Nesta representação um número é representado internamente através de uma notação científica:
- um bit de sinal s (interpretado como positivo ou negativo),
- um expoente inteiro exato e
- uma mantissa inteira positiva M,
sendo que apenas um número limitado de dígitos é permitido para e e M.
Capítulo 2. Computação Numérica - Representação e conversão de números 52/60
Representação de números em computadores digitais - Números reais Computação Científica
- Tomando todas estas quantidades juntas, estas representam o número
x = s × (0.d1d2...dn)× be
em que,
- s é o sinal do número,
- os dígitos d1, d2, …, dn
- formam a mantissa M = 0.d1d2...dn e
- são limitados pela base b (0 di b-1, i = 1, …, n e d 1 0),
- o expoente e é limitado ao intervalo e { emin, ..., emax },
- n ≥ 1
- denomina-se de número de dígitos do sistema e
- define o tamanho da mantissa M
- O valor zero não pode ser normalizado e tem representação especial:
- com mantissa nula (todos dígitos iguais a zero) e
- expoente o menor possível.
Capítulo 2. Computação Numérica - Representação e conversão de números 53/60
Representação de números em computadores digitais - Números reais Computação Científica
- O conjunto formado pelo zero e por todos os números em notação de ponto flutuante
- é chamado de Sistema de Ponto Flutuante na base b com n algarismos significativos, e
- denota-se por F(b, n, emin, emax).
- Um computador apenas pode representar os valores de e e M com os dígitos na base b.
- Um computador digital (b = 2) dispõe sempre de um tamanho de palavra finito:
- o número total de bits que podem ser utilizados para representar s (1 bit),
- o expoente e
- a mantissa,
é sempre fixo, para um dado tipo de números reais.
- Por exemplo, um número real de precisão simples é normalmente representado por 4 bytes (32 bits):
- 1 bit é utilizado para representar o sinal,
- 8 bits são utilizados para representar o expoente e
- os restantes 23 bits para representar a mantissa.
Capítulo 2. Computação Numérica - Representação e conversão de números 54/60
Representação de números em computadores digitais - Números reais Computação Científica
- Um número real será representado na memória do computador como
x = s e7 e6 ... e1e0 d1d2...d22d23,
em que
s ,e0 ,... ,e7,d1, ... ,d23 ∈ { 0, 1 }.
- Exemplo:
- Considere-se dois números binários com 8 algarismos significativos em F(2, 8, -3, 4):
- n1 = 0 010 111001102 => (-1)0 x 22 x (0.11100110) = 3.5937510
- n2 = 0 010 111001112 => (-1)0 x 22 x (0.11100111) = 3.60937510 .
- Observe que, no sistema de representação utilizado,
- n1 e n2 são dois números consecutivos, ou seja
- não se pode representar nenhum outro número que tenha valor intermédio.
- Portanto, por exemplo, a quantidade 3.60000
- não tem representação exata neste sistema, sendo representada por n1 ou n2,
- o que gerará um erro, denominado Erro de Arredondamento.
Capítulo 2. Computação Numérica - Representação e conversão de números 55/60
Representação de números em computadores digitais - Números reais Computação Científica
- Assim,
- os números reais podem ser representados por uma reta contínua,
- em notação de ponto flutuante apenas se podem representar pontos discretos da reta real.
- Conversão de um número x representado na base b para a base decimal:
x = (−1)s × be × ∑k=1
n
(dk × b−k).
- A tabela mostra alguns valores para um dado computador que usa o padrão IEEE 754.
Espécie REAL (4) REAL (8) REAL (10)
n
emin
emax
Xmin
Xmax
Xeps
23
-126
127
1.1754944 x 10-38
3.4028235 x 1038
1.1920929 x 10-7
52
-1022
1023
2.225073858507201 x 10-308
1.797693134862316 x 10308
2.220446049250313 x 10-16
64
-16382
16383
3.362103143112093506... x 10-4932
1.189731495357231765... x 104932
1.925929944387235853... x 10-34
Capítulo 2. Computação Numérica - Representação e conversão de números 56/60
Representação de números em computadores digitais - Números reais Computação Científica
- Como no sistema normalizado d1 ≠ 0 e dado que a base é 2,
- então primeiro dígito da mantissa no sistema normalizado será sempre igual a 1 e
- por esta razão não é armazenado (é o denominado bit escondido).
- Esta normalização permite um ganho na precisão, pois pode-se considerar que a mantissa é armazenada
em 24 bits.
- Os números do sistema F = F ( b, n, emin, emax ) contêm as características:
- O menor número positivo que pode ser representado neste sistema é
xmin = 0.1 × bemin
Isto significa que qualquer número x tal que
−xmin < x < xmin
não poderá ser representado pelo computador - ocorre underflow.
Os compiladores podem ser instruídos para
- terminar o processamento neste ponto, disparando uma mensagem de erro, ou
- seguir o processamento arredondando x = 0
Capítulo 2. Computação Numérica - Representação e conversão de números 57/60
Representação de números em computadores digitais - Números reais Computação Científica
- O maior número positivo que pode ser representado neste sistema é
xmax = 0.(b−1)(b−1)...(b−1)n vezes
× bemax = (b−1) × (∑k=1
n
b−k)× bemax = (1 −b−n) b
emax
Isto significa que qualquer número x tal que
x < −xmax ou x > xmax não poderá ser representado pelo computador – ocorre overflow.
Os compiladores normalmente tomam duas possíveis providências quando detetam um overflow:
- param o processamento do programa emitindo uma mensagem de erro, ou
- continuam o processamento atribuindo a x o valor simbólico -Infinito ou Infinito.
- O maior número que pode ser somado ou subtraído a 1.0, em que o resultado permanece inalterado (i.é, a
diferença entre 1.0 e o número que lhe sucede em F), é
xeps = 0.10... 01n vezes
× b1 − 0.10...0 0n vezes
× b1 = b1−n
em que xeps é denominada de epsilon da máquina, , ou de ϵ precisão da máquina.
O epsilon da máquina, , também pode ser definido como o menor número de ponto flutuante, tal que: ϵ
1 + > 1. ϵ
Esta quantidade é da maior importância na análise de erros de arredondamento.
Capítulo 2. Computação Numérica - Representação e conversão de números 58/60
Representação de números em computadores digitais - Números reais Computação Científica
- De uma forma mais geral, para um número em ponto flutuante x F define-se∈
ulp(x) = (0.00...01)b x be = b-n x be = x be
em que ulp é a abreviatura para unit in the last place.
Se x > 0, então ulp(x) é a distância entre x e o número que lhe sucede em F;
Se x < 0, então ulp(x) é a distância entre x e o número que o antecede em F.
- Apenas um conjunto finito RF de números racionais podem ser representados na forma apresentada:
- estes números denominam-se de números de ponto flutuante.
- Para uma representação normalizada (d1 ≠ 0), este conjunto contém precisamente
2 (b−1) bn−1 (emax − emin + 1)+ 1 números racionais.
Capítulo 2. Computação Numérica - Representação e conversão de números 59/60
Representação de números em computadores digitais - Números reais Computação Científica
- Exemplo: considere o sistema de representação numérica F(2, 4, -5, 6).
Para este sistema:
- O menor número positivo possível é:
xmin = (0.1000)2 × 2−5 = 2−5−1 =164
;
ou seja, a região de underflow consiste no intervalo
−164
< x <164
- O maior número positivo possível é:
xmax = (0.1111)2 × 26 = (1 − 2−4) × 26 = 60;
ou seja, as regiões de overflow consistem nos intervalos
x < −60 e x > 60.
- O maior número que pode ser somado ou subtraído de 1.0 tal que mantém o resultado inalterado é:
xeps = 21−4 = 2−3 = 18
.
- O número de elementos em RF é:
2 × 1 × (6 + 5 + 1)× 24−1 + 1 = 193.
Capítulo 2. Computação Numérica - Representação e conversão de números 60/60
Tópicos Computação Científica
Tópicos
- Fontes de erros e incertezas
- Incerteza
- Precisão e exatidão
- Tipos de erros
- Valores aproximados e erros
- Erros de arredondamento
- Erros de truncatura
- Condicionamento e estabilidade
- Análise de erros
Capítulo 2. Computação Numérica - Análise e representação de erros 1/38
Fontes de erros e incertezas Computação Científica
Fontes de erros e incertezas
- Embora se procure soluções “exatas” dos problemas reais, raramente este objetivo é atingido.
- Erros e incertezas podem ser introduzidos em qualquer etapa da resolução dos problemas.
- Esta secção aborda
- a natureza das incertezas que surgem quando se procura a solução de um problema;
- os erros introduzidos pela computação numérica para determinar a solução desejada.
- Não serão considerados erros triviais que podem ser evitados, tais como
- copiar uma fórmula erroneamente, ou
- efetuar um erro de sintaxe na programação.
- Serão abordados os erros que resultam de forma inevitável, dada a própria natureza da
- representação de números num computador, e/ou
- implementação numérica de um determinado cálculo.
Capítulo 2. Computação Numérica - Análise e representação de erros 2/38
Incerteza Computação Científica
Incerteza
- A incerteza é uma característica intrínseca dos problemas reais
- surgem de múltiplas origens, e
- possuem natureza distinta.
- A incerteza emerge da cada vez maior complexidade dos sistemas reais
- As incertezas introduzidas
- contaminam a solução e é importante tentar-se balancear as incertezas,
- ocorrem em todas as etapas do processo de resolução de um problema.
- Geralmente, é impraticável que os modelos matemáticos possam
- capturar todos os fenómenos inter-relacionados relevantes presentes,
- chegar até toda a informação necessária,
- dar conta das alterações e/ou hesitações relacionadas com a expressão das preferências de quem decide.
- Um modelo matemático pode incluir vários tipos de incerteza, a qual pode ocorrer
- nos dados do modelo,
- na precisão do modelo usado para descrever o sistema, ou
- na sequência de acontecimentos que podem ocorrer num sistema.
Capítulo 2. Computação Numérica - Análise e representação de erros 3/38
Incerteza Computação Científica
- A incerteza pode ser incluída no modelo de duas forma:
- no fim do processo (pós-otimização),
- incorporada explicitamente no modelo (é intrínseca ao modelo).
A importância da construção de modelos que incorporem explicitamente a incerteza está no facto de a
maioria dos problemas reais não poderem ser modelados deterministicamente (de forma exata).
- Algumas razões da necessidade deste tipo de modelos são as seguintes:
- a natural incerteza das previsões relativas ao futuro;
- a impossibilidade de medir os conceitos do mundo real com a precisão exigida pelo modelo matemático;
- a impossibilidade de implementar uma solução com a precisão obtida através do modelo matemático;
- a natural e constante alteração do mundo real onde a solução é implementada;
- o facto das expressões matemáticas associadas ao modelo serem apenas traduções aproximadas
- dos objetivos e
- das restrições do problema real.
Capítulo 2. Computação Numérica - Análise e representação de erros 4/38
Incerteza Computação Científica
- São várias e distintas as causas da incerteza:
- falta de informação
- não tem qualquer informação sobre os dados,
- tem apenas as probabilidades de ocorrência dos dados.
- excesso de informação, os dados são processados pelo analista que
- os transforma em dados percetíveis,
- centra a sua atenção nos aspetos que lhe parecem ser os mais importantes (diferentes do AD).
- provas em conflito, perante a mesma situação há diferentes interpretações, devido
- a parte da informação disponível ao analista estar errada (mas não identificável como tal),
- às características da informação serem irrelevantes para o sistema,
- ao modelo que o analista tem do sistema ser incorreto.
Capítulo 2. Computação Numérica - Análise e representação de erros 5/38
Incerteza Computação Científica
- São várias e distintas as causas da incerteza (cont):
- ambiguidade, situações em que certas informações têm
- significados totalmente diferentes (em termos linguísticos),
- uma correspondência de um para vários (matematicamente falando).
- medições, se uma dada propriedade exata não puder ser medida com precisão,
- tem-se alguma incerteza relativamente à medição real,
- conhece-se apenas uma medida indicativa.
- crença
- situações em que a informação disponível ao analista é subjetiva (crença numa certa circunstância).
Capítulo 2. Computação Numérica - Análise e representação de erros 6/38
Precisão e exatidão Computação Científica
Precisão e exatidão
- Precisão:
- refere-se ao quão próximo um número representado pelo computador representa o número que
ambiciona representar;
- é caracterizada pelo número de dígitos usados na representação e nas operações algébricas;
- por exemplo, será representada com maior precisão utilizando 8 bytes do que com 4 bytes.
- Exatidão:
- refere-se a quão próximo um número representado pelo computador está do valor correto do número
que ele almeja representar;
- é caracterizada pelos erros (de truncatura e arredondamento) no método numérico.
Capítulo 2. Computação Numérica - Análise e representação de erros 7/38
Precisão e exatidão Computação Científica
- Exemplo:
Os números
1 = 3.141630496
2 = 3.141580949
almejam representar
= 3.141592654…
1 e 2 possuam a mesma precisão:
10 dígitos significativos
o número 2 possui maior exatidão do que 1 :
| - 1| = 0.000037842
| - 2| = 0.000011705
- Os conceitos de precisão e exatidão são muitas vezes confundidos entre si.
- É frequente referir-se à precisão quando o correto seria referir-se à exatidão de um resultado.
Capítulo 2. Computação Numérica - Análise e representação de erros 8/38
Tipos de erros Computação Científica
Tipos de erros
- Durante as etapas de resolução de um problema, surgem erros de várias origens que podem alterar
profundamente os resultados (soluções) obtidos.
- Em função das suas origens, pode-se considerar dois tipos de erros:
- erro exterior ao processo de cálculo, e
- erro que ocorre durante o processo de cálculo.
- O erro exterior ao processo de cálculo podem ser
- inicial (associado aos dados e aos parâmetros do modelo),
- de modelação (inerente à construção dos modelos matemáticos), e
- grosseiro (inerente à elaboração e implementação dos algoritmos);
- Os erros que ocorrem durante o processo de cálculo podem ser
- de arredondamento, que é inerente
- à representação de entidades numéricas nas máquinas e
- às operações que um computador pode realizar,
- de truncatura (associado ao uso de métodos numéricos).
- Como consequência destes erros, as soluções numéricas obtidas são, em geral, aproximadas.
Capítulo 2. Computação Numérica - Análise e representação de erros 9/38
Tipos de erros Computação Científica
- Erros nas diversas etapas do processo de resolução de problemas:
Capítulo 2. Computação Numérica - Análise e representação de erros 10/38
Tipos de erros - erro inicial (nos dados do modelo) Computação Científica
Tipos de erros - erro inicial (nos dados do modelo)
- Na modelação matemática, muitas vezes é necessário usar dados obtidos experimentalmente.
- Nesta fase, pode ocorrer
- uma modelação incorreta (a expressão matemática não reflete adequadamente o fenómeno físico), ou
- os dados terem sido obtidos com pouca exatidão.
- Nestes casos, é necessária a realização de testes para verificar o quanto os resultados são sensíveis às
alterações dos dados fornecidos (análise de sensibilidade).
- Grandes alterações nos resultados devido a pequenas variações nos dados
- são sintomas de um mal condicionamento do modelo proposto,
- havendo então necessidade de uma nova modelação do problema.
- Um problema matemático diz-se
- mal condicionado:
- se a solução obtida é muito sensível a pequenas variações nos dados e nos parâmetros do problema;
- bem condicionado:
- se pequenas variações nos dados e nos parâmetros induzem sempre pequenas variações na solução.
Capítulo 2. Computação Numérica - Análise e representação de erros 11/38
Tipos de erros - erro de modelação (ou de formulação) Computação Científica
Tipos de erros - erro de modelação (ou de formulação)
- Está relacionado com o facto de não estar completo, com rigor, o modelo matemático.
- Nesta situação, deve-se ter consciência que se está a trabalhar com um modelo
- mal construído e
- não adequado à realidade física.
- Desta forma, nenhum método numérico poderá originar resultados precisos.
Capítulo 2. Computação Numérica - Análise e representação de erros 12/38
Tipos de erros - erro grosseiro Computação Científica
Tipos de erros - erro grosseiro
- A possibilidade de um computador cometer um erro é muito baixa.
- No entanto, podem ser cometidos erros na elaboração do algoritmo
- na sua implementação, e
- na introdução dos dados iniciais.
- Executar o programa com dados iniciais cujos resultados (solução) são conhecidos,
- ajuda a detetar erros e a removê-los, mas
- demonstra, apenas, que o programa está correto para aquele conjunto de dados (por isso, é que estes
dados devem ser específicos);
- o ideal seria elaborar uma prova de correção de programa, o que não é uma tarefa trivial.
Capítulo 2. Computação Numérica - Análise e representação de erros 13/38
Tipos de erros - erro de arredondamento Computação Científica
Tipos de erros - erro de arredondamento
- Um qualquer número decimal pode não ser representado exatamente num computador porque tem
que ser
- convertido em binário (base 2), e
- armazenado num número finito de bits.
- O erro causado pela imperfeição na representação de um número chama-se erro de arredondamento
Capítulo 2. Computação Numérica - Análise e representação de erros 14/38
Tipos de erros - erro de truncatura Computação Científica
Tipos de erros - erro de truncatura
- O erro de truncatura é devido à aproximação de um problema por outro.
- Por exemplo, a substituição de um problema contínuo por um discreto.
- Para avaliar uma função matemática no computador,
- apenas podem ser requeridas as operações aritméticas e lógicas (as operações que é capaz de efetuar).
- Por exemplo, para avaliar f(x) = sen(x) esta tem que ser aproximada por uma série (de Taylor),
sen(x) = ∑n=0
∞(−1)n
x2n+1
(2n+1)!= x −
x3
6+
x5
120−
x7
5040+ ... , 0 ≤ x ≤ π
4
(à medida que n aumenta, mais o valor da série se aproxima do valor real)
Capítulo 2. Computação Numérica - Análise e representação de erros 15/38
Tipos de erros - erro de truncatura Computação Científica
- A tabela que se segue
- mostra a diferença (para n de 0 até 2, 3 e 4) entre
- o valor obtida pela série de sen(x) e
- um valor mais exato.
- Verifica-se que quando n aumenta, o erro de truncatura diminui, ficando claro que estes erros são
devidos às várias truncaturas da série.
∑n=0
∞(−1)n
x2n+1
(2n+1)!−sen(x )
x n = 0, ..., 2 n = 0, …, 3 n = 0, …, 4
0 0 0 0
/16 2.4 x 10-6 2.2 x 10-9 1.2 x 10-12
/8 7.8 x 10-5 2.9 x 10-7 6.1 x 10-10
/6 3.3 x 10-4 2.1 x 10-6 8.1 x 10-9
/4 2.5 x 10-3 3.6 x 10-5 3.1 x 10-7
Capítulo 2. Computação Numérica - Análise e representação de erros 16/38
Valores aproximados e erros Computação Científica
Valores aproximados e erros
- Ao resolver um problema numérico no computador
- obtém-se, em geral, um valor aproximado da solução exata do problema.
- Assim sendo, é importante poder avaliar-se a qualidade da aproximação.
- Isto é, estimar ou limitar a discrepância entre
- a solução aproximada calculada e
- a solução exata.
- Esta qualidade pode ser medida através do cálculo dos erros
- absoluto e
- relativo
Capítulo 2. Computação Numérica - Análise e representação de erros 17/38
Valores aproximados e erros - Erro absoluto Computação Científica
Valores aproximados e erros - Erro absoluto
- Seja,
- X o valor exato de um número e
- fl(X) o seu valor aproximado por uma representação de ponto flutuante.
- O erro absoluto (EAX) é definido como
- o valor absoluto da diferença entre o valor exato e o valor aproximado:
EAX = | X - fl(X) |
- Ou seja, conhecendo-se fl(X) e EAX, pode-se afirmar que
X = fl(X) EAX
Capítulo 2. Computação Numérica - Análise e representação de erros 18/38
Valores aproximados e erros - Erro absoluto Computação Científica
- Como para a maior parte dos problemas X é desconhecido,
- não é possível calcular o erro absoluto,
- sendo apenas possível estimar-se o seu valor.
- Geralmente conhece-se a quantidade não negativa dX, tal que
EAX = | X - fl(X) | ≤ dX
que se denomina por um limite superior do erro absoluto.
- Desta relação pode-se concluir que o valor exato pertence ao intervalo
fl(X) - dX ≤ X ≤ fl(X) + dX
Capítulo 2. Computação Numérica - Análise e representação de erros 19/38
Valores aproximados e erros - Erro relativo Computação Científica
Valores aproximados e erros - Erro relativo
- Seja,
- X o valor exato de um número e
- fl(X) o seu valor aproximado,
- O erro relativo (ERX) pode ser definido como o erro absoluto dividido por X:
ERX =EAX
∣X ∣= ∣X − fl(X)
X ∣ ≤δX
∣X ∣.
- Como para a maior parte dos problemas X é desconhecido, é usual substituí-lo pelo valor aproximado
fl(X) no denominador da expressão para o erro relativo:
ERX =EAX
∣ fl(X)∣= ∣X − fl(X)
fl(X) ∣ ≤δX
∣ fl(X)∣.
- O erro relativo
- não tem dimensão e, em geral
- só é conhecido o limite superior do seu valor, X, que se define como ERX ≤ X
- Em geral, a melhor medida para se estimar a precisão de uma aproximação é o erro relativo, pois
este indica diretamente o número de dígitos significativos corretos na aproximação.
Capítulo 2. Computação Numérica - Análise e representação de erros 20/38
Valores aproximados e erros - Número de dígitos significativos Computação Científica
Valores aproximados e erros - Número de dígitos significativos
- Quando se contabiliza o número de dígitos de um valor numérico,
- não se deve incluir os zeros no início do número,
- uma vez que estes zeros apenas ajudam a localizar a posição ideal do ponto decimal.
- Caso se pretenda contabilizar o número de decimais,
- então os zeros à direita do ponto decimal devem ser incluídos.
- Exemplos:
- o número 0.00147 é dado com três dígitos significativos mas possui cinco decimais.
- o número 12.34 é dado com quatro dígitos significativos, mas possui apenas dois decimais.
Capítulo 2. Computação Numérica - Análise e representação de erros 21/38
Valores aproximados e erros - Número de dígitos significativos Computação Científica
- Uma maneira alternativa de
se estimar a qualidade da aproximação, ou seja, a exatidão do número,
consiste em calcular o número de dígitos significativos corretos da representação.
- Os algarismos significativos
- são o conjunto de algarismos corretos de uma medida
- mais um último algarismo, que é o duvidoso (zeros à direita são algarismos significativos e zeros à esquerda
não são).
- O dígito significativo do valor aproximado que se encontra
- mais à esquerda é chamado de digito mais significativo e o
- mais à direita digito menos significativo.
- O número de dígitos significativos de um valor aproximado dá boa informação sobre a qualidade dessa
aproximação (exatidão do número).
Capítulo 2. Computação Numérica - Análise e representação de erros 22/38
Valores aproximados e erros - Número de dígitos significativos Computação Científica
- Dada uma representação decimal:
1.O algarismo zero que correspondem às ordens maiores não são significativos.
Exemplos:
001234.56 os 2 primeiros zeros não são significativos, o número tem 6 algarismos significativos; →
0.000443 os 4 primeiros zeros não são significativos, o número tem 3 algarismos significativos. →
2.O algarismo zero que corresponde às menores ordens, se elas são fracionárias, são significativos.
Exemplo:
12.00 os 2 últimos zeros são significativos, o número tem 4 números significativos.→
3.Os algarismos de 1 a 9 são sempre significativos.
Exemplos:
641 o número tem 3 números significativos; →
38.984 o número tem 5 algarismos significativos.→
4.Zeros entre algarismos de 1 a 9 são significativos.
Exemplo:
1203.4 todos os 5 algarismos são significativos.→
Capítulo 2. Computação Numérica - Análise e representação de erros 23/38
Valores aproximados e erros - Número de dígitos significativos Computação Científica
5.Os zeros que completam números múltiplos de potências de 10 são ambíguos: a notação não permite dizer
se eles são ou não significativos.
Exemplo:
800 pode ter um algarismo significativo (8), dois algarismos significativos (80) ou três algarismos→
significativos (800).
Esta ambiguidade deve ser corrigida usando-se notação científica para representar estes números,
- 8x102 tem um algarismo significativo,
- 8.0x102 tem dois algarismos significativos, e
- 8.00x102 tem três algarismos significativos.
6.As constantes têm um número arbitrariamente elevado de algarismos significativos;
Exemplo:
o número π.
- Exemplos:
- 0.00023 tem dois algarismos significativos, que são → 23;
- 052.6 tem 3 algarismos significativos; →
- 0.000200 tem três algarismos significativos, já que tem zeros à direita; →
- 755555.66 tem 8 algarismos significativos. →
Capítulo 2. Computação Numérica - Análise e representação de erros 24/38
Erro de arredondamento Computação Científica
Erro de arredondamento
- O tamanho finito da palavra utilizada num computador digital para a representação de números de
ponto flutuante provoca o aparecimento de diversos tipos de erros.
- Uma estratégia para reduzir estes erros, usada na maioria dos computadores,
- consiste em utilizar números de ponto flutuante normalizados,
- isto é, números cuja mantissa M está sempre dentro do intervalo
b−1 =1b
≤ M < 1 = b0,
ou seja, 0.5 M 1 para computadores de base b = 2.
- Esta estratégia,
- diminui o número de zeros à direita do ponto e
- maximiza o número de dígitos não nulos utilizados para representar um número.
- No entanto, mesmo num sistema com representação normalizada, nem todos os números reais podem
ser representados.
Capítulo 2. Computação Numérica - Análise e representação de erros 25/38
Erro de arredondamento Computação Científica
- Exemplo:
- considere-se no sistema F(2, 4, -5, 6) o número racional
y = 0.12345999...
- A forma de representar y na base 2 é:
y = 0.12345999... = (0.000111111001101...)2.
- Para escrever y de acordo com aquele sistema, deve-se primeiro normalizar segundo as operações:
Y = 2−4 + 2−5 + 2−6 + 2−7 + 2−8 + 2−9 + 2−12 + 2−13 + 2−15 + ... = (0.111111001101... ) × 2−3,
- Pode-se então identificar
M = 0.111111001101... ; e = -3.
- Como para o sistema F(2, 4, -5, 6) a mantissa tem apenas 4 dígitos, uma possível aproximação para y é:
fl(y) = (0.1111) x 2-3,
que corresponde ao seguinte número na base 10:
fl(y) = 0.1171875… ,
resultando nos seguintes erros absoluto e relativo:
EAy = 6.272 x 10-3
ERy = 5.3525 x 10-2 = 5.35%.
Capítulo 2. Computação Numérica - Análise e representação de erros 26/38
Erro de arredondamento Computação Científica
- Considere-se X na forma normalizada e sem representação exata no sistema F(b, n, emin, emax)
- Pode-se escrever X como
X = 0.d1 d2 ...dndn+1... be = (0.d1 d2...dn) be + (0.0...0dn+1...) be =
= (0.d1d2...dn) be + (0.dn+1 ...) be−n
- Ou seja,
X = (0.d1 d2 ...dn) be + gX be−n
com
gX = (0.dn+1...) e ∣gX ∣< 1
em que
gX be-n é a parcela de X que não é incluída na sua representação.
- Existem duas formas de se realizar a aproximação:
- arredondamento por defeito (ou corte do número) e
- arredondamento simétrico.
Capítulo 2. Computação Numérica - Análise e representação de erros 27/38
Arredondamento por defeito (ou corte do número) Computação Científica
Arredondamento por defeito (ou corte do número)
- O arredondamento por defeito consiste simplesmente em ignorar gX.
- Assim,
fl(X) = (0.d1d2...dn) be
o qual é representável no sistema.
- O erro absoluto cometido por corte é
EAX = ∣X − fl(X)∣ = ∣gX ∣be−n < be−n
pois |gX| < 1, obtendo-se, desta forma, um limite superior para o erro absoluto.
- O erro relativo cometido por corte é
ERX =EAX
∣fl(X)∣=
gX be−n
(0.d1d2 ...dn) be=
gX be−n b−e
(0.d1d2 ...dn)<
b−n
b−1= b1−n
- pois (0.d1 d2...dn) ≥b−1 e ∣ gX ∣< 1 (d1 ≠ 0),
- obtendo-se, desta forma, um limite superior para o erro relativo ou unidade de erro de corte.
Capítulo 2. Computação Numérica - Análise e representação de erros 28/38
Arredondamento simétrico Computação Científica
Arredondamento simétrico
- No arredondamento simétrico, executa-se a seguinte operação:
fl(X) = {(0.d1d2...dn) be , se ∣gX ∣<12
(0.d1d2...(dn+1)) be , se ∣gX ∣≥ 12
- Neste caso, o erro absoluto cometido por arredondamento simétrico é
EAX = {∣gX ∣be−n, se ∣gX ∣<12
∣gX − 1∣be−n, se ∣gX ∣≥12
(<12
be−n),
de onde se obtém uma estimativa superior para o erro absoluto.
Capítulo 2. Computação Numérica - Análise e representação de erros 29/38
Arredondamento simétrico Computação Científica
- O erro relativo cometido por arredondamento simétrico é
ERX = {12
be−n
(0.d1d2... dn) be, se ∣gX ∣< 1
2
12
be−n
(0.d1d2...(dn+1)) be, se ∣gX ∣≥ 1
2
(<
12
be−n
(0.1)b be=
12
b1−n)- o qual fornece uma estimativa superior para o erro relativo,
- ao qual também se dá o nome de unidade de erro de arredondamento.
- No exemplo acima, como gy > 1⁄2,
- deve-se somar 1 ao dígito d4 resultando, com o auxílio da tabela de adição de binários,
fl(y) = (0.1111) 2−3 + (0.0001) 2−3 = (1.0000) 2−3 = (0.1000) 2−2,
- Neste caso, obtém-se
fl(y) = 0.125,
o qual possui um erro relativo de 1,2% de y, bem menor que o erro obtido com o arredondamento por
defeito, que foi de 5,35%.
Capítulo 2. Computação Numérica - Análise e representação de erros 30/38
Erro de truncatura Computação Científica
Erro de truncatura
- O erro de truncatura, surge com a utilização de certos métodos numéricos para a resolução do
problema matemático.
- Assim, originam estes erros deste tipo
- a substituição de um problema contínuo por um problema discreto ou
- de um processo de cálculo infinito por um finito, de modo que o método de resolução envolva apenas uma
sequência finita de operações aritméticas.
Capítulo 2. Computação Numérica - Análise e representação de erros 31/38
Cálculo de valores de funções transcendentes Computação Científica
Cálculo de valores de funções transcendentes
- As funções transcendentes
- devem ser aproximadas por funções racionais
- para que aproximações para os seus valores possam ser calculados no computador.
Capítulo 2. Computação Numérica - Análise e representação de erros 32/38
Discretização Computação Científica
Discretização
- Ao usar-se o teorema do valor médio para aproximar o integral de f(x) tem-se
∫a
b
f (x) dx = h ∑i=0
n−1
f (xi)+ R, com
x0 ,x1,..., xn ∈ [a,b] , x0 = a, xi = a + i h (i=1,2,...,n) e h=(b−a)/n,
onde, pelos teoremas do valor médio para integrais e do valor médio para a soma se tem
R = (h/2) (b – a) f'(), [a, b].
- Se R for suficientemente pequeno, então
∫a
b
f (x) dx h ∑i=0
n−1
f (xi).
- Ao usar-se
- a expressão da direita para calcular um valor aproximado para a expressão da esquerda
- está-se a substituir o problema contínuo do cálculo do integral pelo problema discreto do cálculo da soma
- O erro que se originou, R, é o erro de truncatura.
Capítulo 2. Computação Numérica - Análise e representação de erros 33/38
Condicionamento e estabilidade Computação Científica
Condicionamento e estabilidade
- Devido à existência dos chamados erros iniciais,
- os dados e parâmetros do problema matemático que se resolve (modelo matemático) não coincidem, em
geral, com os dados e parâmetros do problema real.
- Assim,
- se a solução exata do problema real for muito diferente da solução exata do problema matemático,
seja qual for o método usado para o resolver,
- então os resultados obtidos não terão interesse.
- Um modelo matemático cuja solução é muito sensível a variações nos seus dados e parâmetros diz-se
mal condicionado (ou matematicamente instável).
- Um problema diz-se bem condicionado (ou matematicamente estável) se pequenas variações nos dados
e parâmetros induzem sempre pequenas variações na solução.
Capítulo 2. Computação Numérica - Análise e representação de erros 34/38
Condicionamento e estabilidade Computação Científica
- A resolução de um problema numérico requer, em geral,
- a execução de um grande número de operações aritméticas e,
- originando cada uma delas um erro de arredondamento,
- a acumulação destes erros pode afetar significativamente o resultado obtido.
- Um método numérico diz-se instável, ou que apresenta instabilidade induzida,
- se a acumulação dos erros durante o cálculo pode ter grande influência no resultado final.
- Um método estável produz sempre bons resultados (com problemas bem condicionados).
Capítulo 2. Computação Numérica - Análise e representação de erros 35/38
Análise de erros Computação Científica
Análise de erros
- Na resolução numérica de um problema matemático num computador ocorrem erros.
- Para estimar ou limitar o efeito da acumulação desses erros nos resultados obtidos deve ser feito a
análise de erros.
- Existem algumas técnicas de análise de erros, tais como a direta e a inversa.
- Análise de erros direta
- Um algoritmo numérico define uma sequência finita de operações aritméticas.
- É assim possível, teoricamente, usando limites para os erros,
- limitar ou estimar a cada passo o erro do resultado intermédio e
- consequentemente o erro do resultado final.
- Na análise de erros inversa
- o resultado calculado de um problema numérico é interpretado como o resultado exato do problema que
resulta de uma alteração nos dados e parâmetros do problema real.
Capítulo 2. Computação Numérica - Análise e representação de erros 36/38
Conclusão Computação Científica
Conclusão
- A figura ilustra a ocorrência de erros no processo de resolução de um problema matemático
- Os erros de modelação (iniciais) são inerentes ao problema,
- Os erros de truncatura são inerentes ao método,
- Os erros de arredondamento ocorrem no processo de cálculo de uma solução numérica no computador.
Capítulo 2. Computação Numérica - Análise e representação de erros 37/38
Conclusão Computação Científica
- Em geral, a magnitude destes erros quando se originam é pequena.
- A maneira como se acumulam e se propagam pode afetar significativamente o resultado final.
- Assim,
- a formulação matemática do problema e
- a escolha do método numérico
são aspetos muito importantes a considerar.
- O primeiro porque
- se um problema é mal condicionado é muito sensível a variações nos seus dados e parâmetros.
- Neste caso, os erros de modelação (iniciais) propagar-se-ão, a solução do problema matemático pode ser
diferente da solução do problema real.
- A escolha de um método estável é fundamental
- para que se possa garantir a precisão dos resultados calculados.
Capítulo 2. Computação Numérica - Análise e representação de erros 38/38