tópicos - departamento de informática - universidade da...

100
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

Upload: truongdieu

Post on 15-Dec-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Tópicos Computação CientíficaTó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 truncaturaCapítulo 2. Computação Numérica - Cálculo Numérico 1/2

Cálculo numérico Computação CientíficaCá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 derealizar, 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íficaRepresentaçã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 flutuanteCapí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íficaRepresentaçã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 ai2 binária 0,18 octal 0, 1, 2, 3, 4, 5, 6, 710 decimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 916 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íficaRepresentaçã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 queXf = 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):Propriedade PrecisãoSimples Dupla EstendidaComprimento total 32 64 80bits na mantissa 23 52 64bits no expoente 8 11 15bits no sinal 1 1 1expoente máximo 127 1023 16383expoente mínimo -126 -1022 -16382maior número (valor absoluto) 3.40 x 1038 1.80 x 10308 1.19 x 104932menor número (valor absoluto) 1.18 x 10-38 2.123 x 10-308 3.36 x 10-4932dí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íficaConversã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íficaConversã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íficaConversã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- o resto fracionário 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ão0.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.10.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íficaConversã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íficaConversã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íficaConversã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 porN = (am am-1 ... a1 a0)2 - A sua representação na base decimal pode ser obtida simplesmente pelo polinómioN = 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íficaAlgoritmo 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íficaAlgoritmo de Horner- Exemplo: Seja o número N = (11101)2 = (a4 a3 a2 a1 a0)2 c4 = a4 = 1c3 = a3 + 2 x c4 = 1 + 2 x 1 = 3c2 = a2 + 2 x c3 = 1 + 2 x 3 = 7c1 = a1 + 2 x c2 = 0 + 2 x 7 = 14c0 = a0 + 2 x c1 = 1 + 2 x 14 = 29portanto,(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íficaAlgoritmo de Horner- Generalizando esta metodologia para converter um inteiro na base b para decimal:- SejaN = (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íficaDivisão de Ruffini- Equivalente ao algoritmo de Horner, - Difere apenas na disposição dos coeficientes ai e ci - SejaN = (am am-1 ... a1 a0)2 - A sua representação na base decimal pode ser obtida da seguinte forma:am am-1 ... a2 a1 a02 2 x cm ... 2 x c3 2 x c2 2 x c1cm cm-1 ... c2 c1 c0am am-1 + 2 x cm a2 + 2 x c3 a1 + 2 x c2 a0 + 2 x c1Entã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íficaDivisão de Ruffini- Exemplo: Seja o número N = (11101)2 = (a4 a3 a2 a1 a0)2 a4 a3 a2 a1 a01 1 1 0 1

2 2 x c4 2 x c3 2 x c2 2 x c11 2 x 1 2 x 3 2 x 7 2 x 14c4 c3 c2 c1 c01 1 + 2 1 + 6 0 + 14 1 + 281 3 7 14 29Portanto,(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íficaDivisão de Ruffini- Generalizando esta metodologia para converter um inteiro na base b para decimal. - SejaN = (am am-1 ... a1 a0)b - A sua representação na base decimal pode ser obtida da seguinte forma:am am-1 ... a2 a1 a0b b x cm ... b x c3 b x c2 b x c1cm cm-1 ... c2 c1 c0am 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íficaConversã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 porXf = 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 = 1c4 = a4 + (1/2) x c5 = 1 + (1/2) x 1 = 3/2c3 = a3 + (1/2) x c4 = 1 + (1/2) x (3/2) = 7/4c2 = a2 + (1/2) x c3 = 0 + (1/2) x (7/4) = 7/8c1 = a1 + (1/2) x c2 = 1 + (1/2) x (7/8) = 23/16c0 = (1/2) x c1 = (1/2) x (23/16) = 23/32Entã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 a11/2 (1/2) x cm ... (1/2) x c3 (1/2) x c2 (1/2) x c1cn cn-1 ... c2 c1 c0an an-1 + 1/2 x cm a2 + 1/2 x c3 a1 + 1/2 x c2 1/2 x c1Entã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 a11 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 c11 (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 c01 1 + 1/2 1 + 3/4 0 + 7/8 1 + 7/16 23/321 3/2 7/4 7/8 23/16 23/32Entã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íficaConversã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−nbm−1onde 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íficaAritmética de ponto flutuante- OVERFLOW: ocorre quando uma operação aritmética resultar num número que seja maior, em valorabsoluto, que o maior número representável. - UNDERFLOW: ocorre quando uma operação aritmética resultar num número que seja menor, em valorabsoluto, 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 - 371- 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 - 371 = .37 x 103 - .37 x 103 = .37 x 103 - .37 x 103 = .00 x 103 .00 x 100.O resultado da subtração é 0 em vez de 1.

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 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 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 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 maioresfontes 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 - que tem 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íficaOperaçõ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 = 00 + 1 = 11 + 0 = 11 + 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 11 0 0 0Capí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íficaOperaçõ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 = 00 - 1 = 1 (e “pede emprestado 1” para o dígito de ordem superior)1 - 0 = 11 - 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 10 1 0Capí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íficaRepresentaçã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íficaRepresentaçã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 a0em 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)

aq−1 × ∑k=0q−2

(ak × bk),em que,N o número inteiro na base decimalq-2 é o índice do dígito mais à esquerda que representa o valor absoluto de Nb 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-2aq-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 representadointernamente para cada espécie Nmaxp , (p = 1, 2, 4, 8) é o seguinte:

Nmaxp = ∑k=08p−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íficaRepresentaçã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 debase 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 C10 0000 0 11111 0001 -1 11102 0010 -2 11013 0011 -3 11004 0100 -4 10115 0101 -5 10106 0110 -6 10017 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 = 581581 + 123 = 704999 - 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íficaRepresentaçã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 C20 0000 -1 11111 0001 -2 11102 0010 -3 11013 0011 -4 11004 0100 -5 10115 0101 -6 10106 0110 -7 10017 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íficaRepresentaçã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úmerox = 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 comox = s e7 e6 ... e1e0 d1d2...d22d23,em ques ,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)neminemaxXminXmaxXeps

23-1261271.1754944 x 10-383.4028235 x 10381.1920929 x 10-7

52-102210232.225073858507201 x 10-3081.797693134862316 x 103082.220446049250313 x 10-16

64-16382163833.362103143112093506... x 10-49321.189731495357231765... x 1049321.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 é armazenadaem 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 × beminIsto significa que qualquer número x tal que

−xmin < x < xminnã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 = 0Capí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) bemax 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.é, adiferenç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 beem 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 precisamente2 (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 intervalosx < −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íficaTó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íficaFontes 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íficaIncerteza- 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 amaioria 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íficaPrecisão e exatidão- Precisão:- refere-se ao quão próximo um número representado pelo computador representa o número queambiciona 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úmeroque 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.1416304962 = 3.141580949almejam representar = 3.141592654…

1 e 2 possuam a mesma precisão: 10 dígitos significativoso 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íficaTipos de erros- Durante as etapas de resolução de um problema, surgem erros de várias origens que podem alterarprofundamente 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íficaTipos 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 àsalteraçõ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íficaTipos 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íficaTipos 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 estesdados 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íficaTipos de erros - erro de arredondamento- Um qualquer número decimal pode não ser representado exatamente num computador porque temque 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íficaTipos 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 −x36 +

x5120 −x75040 + ... , 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ãodevidos à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, …, 40 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íficaValores 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íficaValores 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 queX = 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 intervalofl(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íficaValores 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 aproximadofl(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, poiseste 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íficaValores 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 à esquerdanã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 dessaaproximaçã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ífica5.Os zeros que completam números múltiplos de potências de 10 são ambíguos: a notação não permite dizerse 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íficaErro de arredondamento- O tamanho finito da palavra utilizada num computador digital para a representação de números deponto 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 podemser 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 racionaly = 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 comoX = 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 ∣< 1em quegX 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íficaArredondamento por defeito (ou corte do número)- O arredondamento por defeito consiste simplesmente em ignorar gX. - Assim,fl(X) = (0.d1d2...dn) beo qual é representável no sistema. - O erro absoluto cometido por corte éEAX = ∣X − fl(X)∣ = ∣gX ∣be−n < be−npois |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−nb−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íficaArredondamento 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 ∣< 1212 be−n(0.d1d2...(dn+1)) be , se ∣gX ∣≥ 12

(<

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-sefl(y) = 0.125, o qual possui um erro relativo de 1,2% de y, bem menor que o erro obtido com o arredondamento pordefeito, 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íficaErro de truncatura- O erro de truncatura, surge com a utilização de certos métodos numéricos para a resolução doproblema 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 umasequê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íficaCá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íficaDiscretização- Ao usar-se o teorema do valor médio para aproximar o integral de f(x) tem-se∫ab f (x) dx = h ∑i=0

n−1 f (xi)+ R, comx0 ,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 temR = (h/2) (b – a) f'(), [a, b].- Se R for suficientemente pequeno, então

∫ab 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íficaCondicionamento 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, emgeral, 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-semal condicionado (ou matematicamente instável). - Um problema diz-se bem condicionado (ou matematicamente estável) se pequenas variações nos dadose 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íficaAná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 aaná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 queresulta 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íficaConclusã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 serdiferente 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