Buscar

Capitulo 2 - Computacao Numerica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação Numérica Computação NuméricaCapítulo 2. Computação NuméricaNeste capítulo serão considerados alguns aspetos básicos relativos ao cálculo numérico, como asrepresentações de números inteiros e reais em código binário, e análise e representação dos errosque podem ocorrer em consequência do uso das referidas representações de números.1. Cálculo numéricoO Cálculo Numérico é uma metodologia para resolver problemas matemáticos através docomputador, muito utilizada por engenheiros e cientistas. Uma solução obtida via Cálculo Numéricoé sempre numérica, enquanto que os métodos exatos fornecem normalmente o resultado emtermos de funções matemáticas. Muito embora uma solução numérica seja uma aproximação doresultado exato, ela pode ser obtida com um elevado grau de exatidão. Uma solução numérica écalculada para problemas que não possuem solução exata (comum nas equações diferenciais),embora os métodos analíticos forneçam, na maioria os casos, a resposta em termos de funçõesmatemáticas. Mas, mesmo nestes casos, e quando o seu cálculo é muito caro, em termoscomputacionais (tempo e recursos), pode-se obter uma solução numérica para o problema.Para computar (calcular por meio de um computador) uma solução numérica, são necessáriasoperaçõ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 queos computadores são capazes de realizar, então os computadores e o Cálculo Numérico formam umacombinação perfeita. Refira-se que o primeiro computador de grande porte totalmente eletrónico,o ENIAC (Electronic Numerical Integrator And Calculator), foi projetado para realizar cálculosbalísticos, e os maiores supercomputadores atuais estão dedicados a realizar cálculos numéricos.2. Representação e conversão de números2.1. Representação de números em diferentes basesNesta secção serão discutidos alguns métodos para a mudança de base na representação denúmeros inteiros e reais. É comum, para grande parte dos computadores atuais utilizados naimplementação computacional, o uso de uma base numérica distinta da base decimal. Em geral, osComputação Científica 21
Representação e conversão de números Computação Numéricanúmeros são armazenados na base 2 (binária), existindo ainda plataformas que os armazenam nabase 8 (octal) ou na base 16 (hexadecimal). A representação de números inteiros é ligeiramentedistinta da representação de números reais.2.1.1. Representação de números inteirosDe uma forma geral, um número inteiro N é representado, na base b, por um conjunto de dígitosai, em que ai = 0,1,…, b-1 e i assume um intervalo de valores que depende da base em uso.A tabela seguinte indica estes valores para as bases mais utilizadas (onde se inclui a base decimal).b ai2 0,18 0, 1, 2, 3, 4, 5, 6, 710 0, 1, 2, 3, 4, 5, 6, 7, 8, 916 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, FHá pelo menos duas maneiras de se representar um número inteiro: no sistema posicional e naforma polinomial.No sistema posicional os dígitos são agrupados na forma de uma sequência, na qual a magnitudeda contribuição de cada dígito no número depende da posição relativa que ocupa no número. Nestesistema, um número N é escrito com o seguinte formato:N = (an an-1 ... a1 a0)b Na forma polinomial fica claramente explicitada a contribuição de cada dígito para o valor deum número. Nesta forma, um número N é escrito com o seguinte formato:N = an bn + an-1 bn-1 + ... + a1 b + a0 Até aqui, N tem sido tratado de uma forma abstrata. No entanto, por uma questão evolutiva, Ntende a ser visto como um número na base 10 (decimal),N = (an an-1 ... a1 a0)  an an-1 ... a1 a0 Caso se passe a representar N sempre na base decimal, então deve-se abordar as outrasrepresentações do ponto de vista de conversões "de" ou "para" a base 10.2.1.2. Representação de números reaisÉ importante conhecer como os números reais podem ser armazenados num computador. Umnúmero real pode ser representado usando dois formatos:
➔ com ponto fixo (por exemplo, 12.34);
➔ com ponto flutuante ou vírgula flutuante (por exemplo, 0.1234x102).2.1.2.1. No formato com ponto fixoNa representação de um número real X no formato com ponto fixo, X é composto por uma parteinteira Xi e uma fracionaria Xf, tal que Xf = X – Xi. Por exemplo: para X = 12.34, Xi = 12 e Xf = 0.34.22 Computação Científica
Computação Numérica Representação e conversão de números2.1.2.2. No formato com ponto flutuanteA forma geral de representação de um número real no formato com ponto flutuante, que ésemelhante à notação científica, é a seguinte: .d1d2d3...dp × be,em quedk (k = 1, 2, ..., p) são os dígitos da parte fracionária, com dk  { 0, ..., b-1 } e d1 ≠ 0 (notaçãonormalizada), b é o valor da base (geralmente 2, 8, 10 ou 16), p é o número de dígitos da partefracionária e e é um expoente inteiro. Deste modo, um número no formato com ponto flutuante é composto por três partes: o sinal, aparte fracionária (denominada também de significando ou mantissa) e o expoente. Estas trêspartes têm um comprimento total fixo que depende do computador e do tipo de número: precisãosimples, dupla ou estendida.Note-se que, como a forma de representação de um número em formato com ponto flutuantepode ser diferente entre os fabricantes de computadores, um mesmo programa implementado emcomputadores que utilizam formatos diferentes pode fornecer resultados diferentes. O formatoutilizado pela maioria dos computadores é o proposto pelo Institute of Electrical and ElectronicsEngineers (IEEE), com o padrão IEEE 754 (tabela que se segue, para a base binária).Propriedade PrecisãoSimples Dupla EstendidaComprimento total 32 64 80bits na mantissa 23 52 64bits no expoente 8 11 15sinal 1 1 1expoente máximo 127 1023 16383expoente mínimo -126 -1022 -16382maior número (valorabsoluto)  3.40 x 1038  1.80 x 10308  1.19 x 104932menor número (valorabsoluto)  1.18 x 10-38  2.123 x 10-308  3.36 x 10-4932dígitos decimais (precisão) 7 16 192.2. Conversão de números da base decimal para uma qualquer base b2.2.1. Conversão de números inteirosConsidere-se a conversão de um inteiro da base decimal (b = 10) para a base binária (b = 2), umavez que esta será a representação mais provável num computador. Para se realizar esta conversãoComputação Científica 23
Representação e conversão de números Computação Numéricade uma maneira prática, pode-se usar o método das divisões sucessivas, no qual N (na basedecimal) e os sucessivos quocientes qi são divididos por 2 (base binária), sendo guardados os restosri  { 0, 1 } até que o último quociente seja qn = 1: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)O mesmo método pode também ser utilizado para converter um número inteiro em decimal Npara qualquer base b; divide-se N e os sucessivos quocientes qi por b, guardando-se os restosri  { 0, ..., b-1 } até que o último quociente seja um inteiro qn  { 1, ..., b-1 }: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 (forma polinomial)2.2.2. Conversão de números reais no formato com ponto fixoPara o estudo desta caso, considere-se a conversão de um real da base decimal para a basebinária, sendo depois facilmente extensível para uma qualquer base. Dado um número real X, estepossui uma parte inteira Xi e uma parte fracionaria Xf. Para se converter este número X na basebinária utiliza-se o método das divisões sucessivas, para converter Xi (ver secção 2.2.1), enquantoque para converter Xf usa-se o método das multiplicações sucessivas.O método das multiplicaçõessucessivas consiste em multiplicar-se Xf por 2, extraindo-se a parteinteira do resultado (que pode ser 0); o restante é novamente multiplicado por 2, repetindo-se oprocesso até que o resto fracionário seja 0 ou que se obtenha um padrão repetitivo, em cujo caso onúmero fracionário será periódico. Este método será ilustrado com dois exemplos.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.0000Ou seja,0.8125 = (0.1101)2 .Exemplo 2: Seja Xf = 0.1; então0.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; ...24 Computação Científica
Computação Numérica Representação e conversão de númerose o processo de multiplicações sucessivas repete a sequência infinita de dígitos 0011. Portanto,0.1 = (0.0001100110011...)2.Este caso mostra a dificuldade em se obter a representação de um número fracionário noutra base.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 porX = an 2n + an-1 2n-1 + an-2 2n-2 + ... + a1 21 + a0 20 + 1 2-1 + 2 2-2 + 3 2-3 + ... X = (an an-1 ... a1 a0 . 1 2 3 ...)2.2.2.3. Conversão de números reais no formato com ponto flutuanteConsidere-se um hipotético computador com dois dígitos da parte fracionária (p = 2), base b = 2e expoente e  { -1, 0, 1, 2 }. Como os números reais são normalizados, isto é, d1 ≠ 0, todos elessão representados por: .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,então, 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 = 3O zero é representado de uma forma especial: todos os dígitos dk da mantissa e do expoente sãonulos (.002 x 20). O mais importante a reter relativamente aos números em formato com pontoflutuante é que eles são discretos e não contínuos (como um número real definido na Matemática).O conceito de existir sempre um número real entre dois números reais quaisquer não é válidopara os números em formato com ponto flutuante. As consequências da falha deste conceito podem ser desastrosas, como se poderá verificar noexemplo que se segue. Considere-se as seguintes representações em binário:0.610 = 0.100110011001...2 eComputação Científica 25
Representação e conversão de números Computação Numérica0.710 = 0.1011001100110...2 .Se estes dois números forem armazenados naquele hipotético computador (com dois dígitos para amantissa), 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 é umadas grandes causas da ocorrência de erros de arredondamento nos processos numéricos.2.3. Conversão de números de uma qualquer base b para a base decimal2.3.1. Conversão de números inteirosPara introduzir a conversão para a base decimal, será usada novamente a base binária comoprimeiro exemplo. 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 pela soma do polinómioN = am 2m + am-1 2m-1 + ... + a1 2 + a0 A operacionalização desta soma pode ser obtida pelo Algoritmo de Horner e pela Divisão de Ruffini.2.3.1.1. Algoritmo de HornerO número N pode ser obtido na base decimal através do cálculo da sequência:bm = am bm-1 = am-1 + 2 x bm bm-2 = am-2 + 2 x bm-1 ... ...b1 = a1 + 2 x b2 b0 = a0 + 2 x b1 e então,N = b0 Exemplo: seja o número (11101)2.Aplicando o algoritmo de Horner:b4 = a4 = 1b3 = a3 + 2 x b4 = 1 + 2 x 1 = 3b2 = a2 + 2 x b3 = 1 + 2 x 3 = 7b1 = a1 + 2 x b2 = 0 + 2 x 7 = 14b0 = a0 + 2 x b1 = 1 + 2 x 14 = 2926 Computação Científica
Computação Numérica Representação e conversão de númerose então,(11101)2 = 2910 Esta metodologia pode ser generalizada para converter qualquer número inteiro na base b para abase decimal. Considere o númeroN = (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 e então, N = c0 2.3.1.2. Divisão de RuffiniÉ equivalente ao método anterior, diferindo apenas na disposição dos coeficientes ai e bi:am am-1 ... a2 a1 a02 2 x bm ... 2 x b3 2 x b2 2 x b1bm bm-1 ... b2 b1 b0e então, N = b0 Exemplo: seja o número (11101)2.Aplicando a Divisão de Ruffini:a4 a3 a2 a1 a01 1 1 0 12 2 x b4 2 x b3 2 x b2 2 x b12 x 1 2 x 3 2 x 7 2 x 14b4 b3 b2 b1 b01 1 + 2 1 + 6 0 + 14 1 + 28e então,(11101)2 = 2910 Esta metodologia pode ser generalizada para converter qualquer número inteiro na base b para abase decimal. Considere o númeroComputação Científica 27
Representação e conversão de números Computação NuméricaN = (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 c0e então,N = c0 2.3.2. Conversão de números reais fracionáriosConsidere um número fracionário com representação finita na base binária:Xf = (0.a1a2…an)2 .O seu valor na base decimal será dado porXf = 1 2-1 + 2 2-2 + … + n 2-n Esta soma pode ser calculada diretamente ou utilizando qualquer um dos dois métodos enunciadosna secção anterior (Algoritmo de Horner e Divisão de Ruffini) com algumas modificações.2.3.2.1. Algoritmo de HornerNo caso de um número fracionário na base 2, o algoritmo ficabn = an bn-1 = an-1 + (1/2) x bn ... ...b1 = a1 + (1/2) x b2 b0 = (1/2) x b1 e então,N = b0 Exemplo: converter o número (0.10111)2.b5 = a5 = 1b4 = a4 + (1/2) x b5 = 1 + (1/2) x 1 = 3/2b3 = a3 + (1/2) x b4 = 1 + (1/2) x (3/2) = 7/4b2 = a2 + (1/2) x b3 = 0 + (1/2) x (7/4) = 7/8b1 = a1 + (1/2) x b2 = 1 + (1/2) x (7/8) = 23/16b0 = (1/2) x b1 = (1/2) x (23/16) = 23/32e então, (0.10111)2 = 23/32 = 0.7187528 Computação Científica
Computação Numérica Representação e conversão de números2.3.2.2. Divisão de RuffiniNo caso de um número fracionário na base 2, o algoritmo ficaan an-1 ... a2 a11/2 (1/2) x bm ... (1/2) x b3 (1/2) x b2 (1/2) x b1bn bn-1 ... b2 b1 b0E então,N = b0 Exemplo: Converter o número (0.10111)2.Aplicando o algoritmo, fica:a5 a4 a3 a2 a11 1 1 0 11/2 (1/2) x b5 (1/2) x b4 (1/2) x b3 (1/2) x b2 (1/2) x b1(1/2) x 1 (1/2) x (3/2) (1/2) x (3/4) (1/2) x (7/8) (1/2) x (23/16)b5 b4 b3 b2 b1 b01 1 + 1/2 1 + 3/4 0 + 7/8 1 + 7/16 23/321 3/2 7/4 7/8 23/16 23/32E então,(0.10111)2 = 23/32 = 0.718752.3.3. Número binário infinitoUma outra situação que pode ocorrer é quando o número binário for infinito; por exemplo,através de uma sequência de dígitos periódicos: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. Na basedecimal, tal número é representado porXf = 1 2-1 + 2 2-2 + … + n 2-n + b1 2-n-1 + b2 2-n-2 + … + bm 2-n-m + + b1 2-n-m-1 + b2 2-n-m-2 + … + bm 2-n-2m + + b1 2-n-2m-1 + b2 2-n-2m-2 + … + bm 2-n-3m + + . . .Note-se que este número pode ser escrito comoXf = 1 2-1 + 2 2-2 + … + n 2-n + ( b1 2-1 + b2 2-2 + … + bm 2-m ) 2-n + + ( b1 2-1 + b2 2-2 + … + bm 2-m ) 2-n-m + + ( b1 2-1 + b2 2-2 + … + bm 2-m ) 2-n-2m + + . . .Computação Científica 29
Representação e conversão de números Computação NuméricaOu seja,Xf = 1 2-1 + 2 2-2 + … + n 2-n + ( b1 2-1 + b2 2-2 + … + bm 2-m ) 2-n ( 1 + 2-m + 2-2m + … )Usando agora a identidade,1 / (1−x ) = 1 + x + x2 + x3 + ... (para |x| < 1)tem-se1 + 2−m + 2−2m + 2−3m + ... = 1 /(1 −2−m) = 2m2m−1 (fazendo x = 2-m),obtendo-seXf = (α12−1 + α22−2 + ... + αn2−n) + (β12−1 + β22−2 + ... + βm2−m)2m−n2m−1 .As duas expressões entre parênteses têm a mesma forma e podem ser calculadas diretamente ouusando qualquer um dos métodos descritos anteriormente. Em geral, um número fracionário temrepresentaçã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 umdos métodos descritos anteriormente.2.4. Aritmética de ponto flutuanteSe uma operação aritmética resultar num número que seja maior, em valor absoluto, que omaior número representável, ocorrerá overflow. Se resultar num número que seja menor, em valorabsoluto, que o menor número representável diferente de zero, ocorrerá underflow. O modo detratar overflow e underflow dependerá do compilador utilizado para gerar o programa executável.Para analisar a precisão das operações aritméticas sobre números no formato com pontoflutuante, considere-se um hipotético computador com dois dígitos (p = 2), base b = 10 e expoentee  {-5, …, 5}:  .d1d2 x 10e. Quando dois números são somados ou subtraídos, os dígitos donúmero de menor expoente são deslocados de modo a alinhar as casas decimais. O resultado édepois normalizado (o expoente é ajustado para que d1 ≠ 0) e arredondado para dois dígitos (p = 2).Exemplo 1: 4.32 + 0.064Os números são armazenados no formato especificado, as casas decimais são alinhadas e aoperação de adição é efetuada; 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.30 Computação Científica
Computação Numérica Representação e conversão de númerosO resultado da adição é 4.4 em vez de 4.384.Exemplo 2: 372 - 371Os números são armazenados no formato especificado, as casas decimais são alinhadas e aoperaçã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.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.Exemplo 3: 691 + 2.71Os números são armazenados no formato especificado, as casas decimais são alinhadas e aoperação de adição é efetuada; o resultado é então normalizado e arredondado para dois dígitos:691 + 2.71 = .69 x 103 + .27 x 101 = .69 x 103 + .0027 x 103 = .6927 x 103  .69 x 103.O resultado da adição é 690 em vez de 693.71. O deslocamento das casas decimais de 2.71causou uma perda total dos seus dígitos durante a operação.Exemplo 4: 1234 x 0.016Os números são armazenados no formato especificado e a multiplicação é efetuada utilizando2p = 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.Exemplo 5: 875 x 3172Os números são armazenados no formato especificado e a multiplicação é efetuada utilizando2p = 4 dígitos na mantissa. O resultado é então normalizado e arredondado; e = 7 > 5  overflow:875 x 3172 = .88 x 103 x .32 x 104 = .88 x 103 x .32 x 104 = .2816 x 107  overflow (e  {-5, …, 5}).O resultado é superior ao maior número representável por este computador (e  {-5, …, 5}).Computação Científica 31
Representação e conversão de números Computação NuméricaExemplo 6: 0.00183  492Os números são armazenados no formato especificado e a divisão é efetuada utilizando 2p = 4dígitos na mantissa, o resultado é então normalizado e arredondado para dois dígitos:0.00183  492 = .18 x 10-2  .49 x 103 = .18 x 10-2  .49 x 103 = .3673 x 10-5  .37 x 10-5.Exemplo 7: 0.0064  7312Os números são armazenados no formato especificado e a divisão é efetuada utilizando 2p = 4dígitos na mantissa. O resultado é então normalizado e arredondado; e = -6 < -5  underflow:0.0064  7312 = .64 x 10-2  .73 x 104 = .64 x 10-2  .73 x 104 = .8767 x 10-6  underflow (e  {-5, …, 5}).O resultado obtido pela divisão é inferior ao menor número representável por este comutador(e  {-5, …, 5}), sem considerar o zero (que tem uma representação especial).Uma das causas de ocorrência de erros quando se usam computadores deve-se à conversão debase. Geralmente um número é fornecido ao computador na base 10, mas é armazenado na base 2.Para os números inteiros, a representação é exata, como por exemplo, 4410 = 1011002. Para umnúmero real com parte fracionária pode resultar num número binário com infinitos dígitos (0.410 =0.01100110...2) que tem de ser arredondado para ser armazenado em formato com ponto flutuante.2.5. Operações com números em binárioComo a maioria dos computadores usa a base b = 2, então estes executam operações aritméticascom números que estão na representação binária. Para executar estas operações, as tabelas deoperações que se seguem são automaticamente satisfeitas.2.5.1. Adição bináriaUma adição no sistema binário é realizada da mesma forma que a adição no sistema decimal,lembrando que, no sistema binário, há apenas 2 dígitos. Esta operação é realizada de acordo comas 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)32 Computação Científica
Computação Numérica Representação e conversão de númerosPara somar números com mais de 2 algarismos, utiliza-se o mesmo processo de transporte para acoluna posterior, usado na adição decimal. Ter, no entanto, atenção aos limites das palavras.Exemplo 1: 1012 + 0112 = 10002 (510 + 310 = 810)[1] [1] [1]1 0 1+ 0 1 11 0 0 0Exemplo 2: 012 + 112 = 1002 (110 + 310 = 410)[1] [1]0 1+ 1 11 0 0Exemplo 3: 10102 + 11112 = 110012 (1010 + 1510 = 2510)[1] [1] [1]1 0 1 0+ 1 1 1 11 1 0 0 1Quando 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 decada um deles e atribui-se o sinal de negativo;
➔ um deles é negativo: verifica-se qual dos dois números tem maior valor absoluto, subtraí-seo menor valor absoluto ao maior e, atribui-se o sinal do maior em valor absoluto.2.5.2. Subtração bináriaA 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 = 0Desta forma, 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 ominuendo e b é o subtraendo). Exemplo 1: 1012 - 0112 = 0102 (510 - 310 = 210)[1]1 0 1- 0 1 10 1 0Computação Científica 33
Representação e conversão de números Computação NuméricaExemplo 2: 1112 - 1002 = 0112 (710 - 410 = 310)1 1 1- 1 0 00 1 1Exemplo 3: 10102 - 10012 = 00102 (1010 - 910 = 110)[1]1 0 1 0- 1 0 0 10 0 0 12.5.3. Multiplicação bináriaProcede-se como numa multiplicação no sistema decimal, de acordo com as seguintes regras:0 x 0 = 00 x 1 = 01 x 0 = 01 x 1 = 1Utiliza-se o mesmo método que a multiplicação decimal: deslocamentos e adições. O númeromaior deve ser colocado por cima do menor.Exemplo 1: 1012 x 0112 = 0102 (510 x 310 = 1510)1 0 1x 0 1 11 0 11 0 1+ 0 0 00 1 1 1 1Exemplo 2: 110102 x 0102 = 1101002 (2610 x 210 = 5210)1 1 0 1 0x 0 1 00 0 0 0 01 1 0 1 0+ 0 0 0 0 00 1 1 0 1 0 034 Computação Científica
Computação Numérica Representação e conversão de númerosExemplo 3: 10102 x 10002 = 10102 (1010 x 810 = 8010)1 0 1 0x 1 0 0 00 0 0 00 0 0 00 0 0 0+ 1 0 1 01 0 1 0 0 0 02.5.4. Divisão bináriaA divisão binária usa o mesmo método que a divisão decimal: deslocamento e subtrações.Exemplo 1: 1010102  1102 = 1112 (4410  410 = 1110)[1] [1][1]1 0 1 0 1 0 1 1 0- 1 1 0 1 1 10 1 0 0 1- 1 1 00 0 1 1 0- 1 1 00 0 02.6. Representação de números em computadores digitaisNesta secção serãoapresentadas algumas das representações usadas para armazenar númerosinteiros e reais na memória de um computador. As representações de números inteiros e reaisapresentadas na secção anterior não são suficientes, pois é necessário distinguir-se, por exemplo, osinal do número. Como não existe a representação de um sinal '+' ou '-' na memória de umcomputador, o recurso utilizado é acrescentar um bit, para computadores binários, ao número pararepresentar o sinal; este bit é denominado bit de sinal.2.6.1. Representação de números inteirosPara representar um número inteiro num computador digital, existem várias formas, tais como arepresentação em Sinal-Módulo e em Complemento à base. A representação em complemento podeser de dois tipos: em complemento a (b-1) e em complemento a b (em que b é a base).2.6.1.1. Representação em Sinal-MóduloA representação mais direta de números inteiros é a denominada Sinal-Módulo (tambémdenominada por Sinal-Magnitude). Nesta representação, o valor absoluto do número inteiro éobtido diretamente a partir dos algoritmos discutidos na secção anterior, enquanto que o sinal érepresentado por um dígito adicional colocado à esquerda do número. Computação Científica 35
Representação e conversão de números Computação NuméricaQuando a representação é binária, o bit de sinal ocupa a posição do bit mais significativo.Supondo que a memória do computador dispõe de q dígitos para a representação, um númerointeiro na base b será representado no computador através da seguinte sequência de dígitos:aq-1 aq-2 ...a1 a0em que { a0, a1, …, aq-2 }  { 0, 1, …, b-2, b-1 } e aq-1  { 0, 1 } representa o sinal do número. Estasequência de dígitos é denominada palavra. Por exemplo, no sistema binário convenciona-se usaraq-1 = 0 para “+” e aq-1 = 1 para “-”.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 sinalOs valores em questão para as quantidades expressas na fórmula anterior dependem da arquiteturae do compilador utilizado. Por exemplo, um dado compilador possui 4 modelos de representação deinteiros 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 cadaespécie Nmaxp , (p = 1, 2, 4, 8) é, a partir da fórmula anterior,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)2.6.1.2. Representação em complemento a b-1A representação de números inteiros positivos em complemento a b-1 é idêntica àrepresentação em Sinal-Módulo.A representação dos números inteiros negativos é obtida efetuando-se: (b - 1) menos cadaalgarismo do número. Por exemplo, para calcular o complemento a b-1 do número -29710 (comob = 10, então o complemento a b-1 será complemento a 9); como 999 - 297 = 702, o complemento a9 do número -297 é 702. Para se obter o complemento a b–1 de um número binário, deve-se subtrair cada algarismo de 1(b - 1 = 1); no entanto, como se trata de números binários, para efetuar esta operação basta36 Computação Científica
Computação Numérica Representação e conversão de númerosinverter todos os bits. Por exemplo, o complemento a 1 (C1) do número 00112 (usando 4 dígitos) é11002, pois 11112 – 00112 = 11002.A quantidade de números inteiros diferentes que se podem representar usando n posições numsistema de base b é bn. Por exemplo, na base 2, podem-se representar os seguintes números: 21 = 2números com um dígito (0, 1), 22 = 4 números com dois dígitos (00, 01, 10, 11), 23 = 8 números comtrês dígitos (000, 001, 010, 011, 100, 101, 110, 111), …A tabela seguinte apresenta a representação em C1 dos números binários de 4 dígitos. Reparecomo o espaço de representação da base 2 com 4 dígitos está sendo usado na representação em C1(note que há 2 representações para o zero).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 1000A 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 (faixa negativa que está compreendida entre 500 e 998) ede +1 a +499 (faixa positiva que está compreendida entre 1 e 499). O zero tanto pode serrepresentado por 000 como por 999.A faixa de representação em C1 dos números binários com n dígitos é a seguinte:
➔ menor inteiro negativo: -(2n-1 – 1),
➔ maior inteiro positivo: 2n-1 – 1.Na aritmética em complemento a b-1, basta somar os números, sendo que um número negativoserá representado por seu complemento a b–1.Por exemplo, a soma decimal de 123 com -418 é: Sinal-Módulo-418 + 123 = -295Complemento 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).De notar que nesta representação, a subtração (ou soma de um número positivo com um númeronegativo) transforma-se numa soma em complemento; isto é, a soma dos complementos do númeroComputação Científica 37
Representação e conversão de números Computação Numéricapositivo com o número negativo. Portanto, uma subtração pode ser realizada simplesmente atravésda soma dos números “complementados”: manter o número se é positivo e complementar o númerose é negativo; depois, é só somar.Desta forma, pode-se constatar que o algoritmo da soma em complemento é muito mais simplesque o da soma em Sinal-Módulo, uma vez que não requer nenhum teste. No entanto, continua-secom duas representações para o zero.2.6.1.3. Representação em complemento a bA representação de números inteiros positivos em complemento a b é idêntica àsrepresentações em Complemento a b-1 e à em Sinal-Módulo.A representação dos números inteiros negativos em complemento a b é obtida subtraindo-se dabase b cada algarismo do número. Por exemplo, na base b = 10 com 3 dígitos: 1000 – x. Uma formaalternativa é subtrair cada algarismo de (b – 1), isto é, calcular o complemento a (b -1), e depoissomar 1 ao resultado. Ou seja, encontramos o complemento a (b - 1) do número (o que facilitamuito no caso dos números binários) e depois soma-se 1 ao resultado.Por exemplo, calcular o complemento a 10 (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.Desta forma, para representar um número binário negativo em complemento a 2 (C2) consisteem subtrair cada algarismo de 1 (C1) e depois somar 1 ao resultado.A tabela seguinte apresenta a representação em C2 dos números binários com 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 1000Comparando com a tabela anterior (para C1), nota-se que os números positivos têm a mesmarepresentação de C1 e que o zero passou a ter apenas uma representação, o que permitiurepresentar mais um número (neste caso, mais um negativo pode ser representado).38 Computação Científica
Computação Numérica Representação e conversão de númerosA 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.Na aritméticaem complemento a base, basta somar os números, sendo que um número negativoserá representado pelo complemento a base. Deve-se ter, no entanto, cuidado com a possibilidadede acontecer overflow. Em qualquer sistema em C2, existe sempre um limite para o tamanho dosnúmeros a serem representados. Por exemplo, quando se usam palavras de 4 bits (um para o sinal),o valor 9 não tem associado qualquer palavra; por isso não se consegue uma resposta certa para asoma de 5 com 4 (0101 + 0100 = 1001 que é -7). A adição de dois números no sistema derepresentação em C2 segue duas regras:1. Somar os dois números e observar se ocorre transbordo (vai 1) sobre o bit de sinal e se ocorreo transbordo após o bit de sinal.2. Se ocorrer um e somente um dos dois transbordos, então houve overflow; caso contrário oresultado da soma está dentro do campo de definição.As vantagens do uso do complemento de 2 é que existe apenas um zero e que as regras parasoma e subtração são as mesmas. A desvantagem é o fato de ser um código assimétrico: o númerode representações negativas é maior que o número de representações positivas. Por exemplo, com8 bits podem-se representar, em complemento de 2, os números decimais entre -128 e +127.A representação de um número inteiro num computador é exata. As operações aritméticas entrenúmeros inteiros também é exata, sob as seguintes condições:a) o resultado não pode estar fora do intervalo de números inteiros que se podem representar;b) a divisão somente pode ser realizada entre números exatamente divisíveis (isto é, a partefracionária deve ser nula).2.6.2. Representação de números reaisA representação de números reais em computadores denomina-se por representação de pontoflutuante normalizado, na qual um número é representado internamente através de uma notaçãocientífica: um bit de sinal s (interpretado como positivo ou negativo), um expoente inteiro exato ee uma mantissa inteira positiva M, sendo que apenas um número limitado de dígitos é permitidopara e e M. Tomando todas estas quantidades juntas, estas representam o númerox = s × (0.d1d2...dn) × beo qual está escrito numa forma legível para os seres humanos. Além das quantidades já definidas nafórmula anterior, os dígitos d1, d2, …, dn são limitados pela base b (0  di b-1, i = 1, …, n e d 1  0)e o expoente é limitado ao intervalo e  { emin, ..., emax }. Para além disso, n ≥ 1 é denominado denúmero de dígitos do sistema e define o tamanho da mantissa M = 0.d1d2...dn.Computação Científica 39
Representação e conversão de números Computação NuméricaO valor zero não pode ser normalizado e tem representação especial, com mantissa nula (todosdígitos iguais a zero) e expoente o menor possível (m–1). O conjunto formado pelo zero e por todosos números em notação de ponto flutuante é chamado Sistema de Ponto Flutuante na base b comn algarismos significativos, e denota-se por F(b, n, emin, emax).Contudo, um computador apenas pode representar os valores de e e M através de dígitos na baseb. Um computador digital (b = 2), por exemplo, dispõe sempre de um tamanho de palavra finito,isto é, o número total de bits que podem ser utilizados para representar o sinal s (1 bit), oexpoente e a mantissa é sempre fixo, para um dado tipo de números reais. Um número real deprecisão simples, por exemplo, é normalmente representado por uma palavra de 4 bytes (32 bits),sendo que 1 bit é utilizado para representar o sinal, 8 bits são utilizados para representar oexpoente e os restantes 23 bits para representar a mantissa. Desta forma, tal número serárepresentado na memória do computador comox = s e7e6 ... 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, -4, 5):
➔ 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-se que, no sistema de representação utilizado, n1 e n2 são dois números consecutivos, ouseja, não podemos representar nenhum outro número que tenha valor intermédio. Portanto, porexemplo, a quantidade 3.60000 não tem representação exata neste sistema, sendo representadapor n1 ou n2, o que gerará um erro, denominado Erro de Arredondamento. Assim, enquanto osnúmeros reais podem ser representados por uma reta contínua, em notação de ponto flutuanteapenas se podem representar pontos discretos da reta real.A tabela que se segue ilustra representações de ponto flutuante para alguns números numapalavra típica de 32 bits (4 bytes), em F(2, 23, -128, 127).número decimal(base 10) binário (base 2)s expoente de 8 bits Mantissa de 23 bits1/2 0 00000000 (0) 100000000000000000000001/4 0 11111111 (-1) 100000000000000000000001 0 00000001 (1) 100000000000000000000003 0 00000010 (2) 1100000000000000000000040 Computação Científica
Computação Numérica Representação e conversão de númerosA conversão de um número x representado na base b para a base decimal pode ser realizadapela seguinte fórmula polinomial:x = (−1)s × be × ∑k=1n (dk × b−k).No padrão IEEE 754, a sequência de 8 bits armazena o número E = e + 127. Desta forma, evita–seo teste sobre o valor do bit para saber se o número é positivo ou negativo e, para recuperar oexpoente, é realizada a operação e = E − 127. Para se obter a forma como o expoente seráarmazenado pode-se também trabalhar na base 10 e converter depois o resultado final. Porexemplo, se e = 5210 vai-se armazenar 12710 + 5210 = 17910 = 101100112.É importante destacar que as sequências de bits para o expoente "00000000" e "11111111" sãoreservadas para representar o zero e infinito (ou ocorrência de erro, NaN: not a number)respetivamente. O maior expoente é representado pela sequência 111111102 que, na base 10,representa o número (256 − 2)10 = 25410. Então o maior expoente é: 127 + e = 254 e = 254 − 127 =⇒127. O menor expoente é representado pela sequência 000000012 = 110. Daí que o menor expoenteé: 127 + e = 1 e = 1 − 127 = −126.⇒Considerando agora a representação da mantissa. Como no sistema normalizado d1 ≠ 0 e dadoque a base é 2, então primeiro dígito no sistema normalizado será sempre igual a 1 e por esta razãonão é armazenado (é o denominado bit escondido). Esta normalização permite um ganho naprecisão, pois pode-se considerar que a mantissa é armazenada em 24 bits.A tabela seguinte mostra os valores de n, emin, emax, Xmin, Xmax e Xeps para um dado computadorque 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-34Computação Científica 41
Representação e conversão de números Computação NuméricaPara uma base b qualquer, os números do sistema de ponto flutuante F = F(b, n, emin, emax)contêm as seguintes características:
➔ O menor número positivo que pode ser representado neste sistema éxmin = 0.1 × bemin.Valores para xmin válidos para o compilador são apresentados na tabela anterior. Isto significa que qualquer número x tal que
−xmin < x < xminnão poderá ser representado pelo computador. Esta ocorrência é denominada de underflow.Os compiladores podem ser instruídos para - terminar o processamento neste ponto, disparando uma mensagem de erro, ou - então seguir o processamento arredondando x = 0.
➔ 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=1n b−k) bemax = (b−1)(1 − b−n) bemaxIsto significa que qualquer número x tal que x < -xmax ou x > xmax não poderá ser representado pelo computador. Esta ocorrência é denominada overflow.Os compiladores tomam normalmente duas possíveis providências quando detetam overflow:- param o processamento do programa emitindo uma mensagem de erro, ou - continuam oprocessamento atribuindo a x o valor simbólico de -Infinito ou Infinito.
➔ O maior número que pode ser somado ou subtraído a 1.0, tal que o resultado permaneceinalterado (isto é, a diferença entre 1.0 e o número que lhe sucede em F), éxeps = 0.10 ...01n vezes × b1 − 0.1 0...0 0n vezes × b1 = b1−nem 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 que, como se pode ver, depende da base e doϵnúmero de algarismos da mantissa, é da maior importância na análise de erros dearredondamento, como se verá mais adiante.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ãoulp(x) é a distância entre x e o número que o antecede em F.42 Computação Científica
Computação Numérica Representação e conversão de númerosUma aproximação para o epsilon da máquina de um sistema de ponto flutuante de base bpode ser calculada com o seguinte algoritmo (assumindo que o arredondamento é para omais próximo):  1fazer   / b   1 +  enquanto ( ≠ 1)A interpretação é a seguinte: se x é uma potência negativa de b tal que x < ε então 1 + x = 1.O conhecimento de ε do sistema computacional ou máquina de calcular é fundamental. Defacto, se considerarmos, por exemplo, a equação 1 + x = 1, esta admite muitas soluções emaritmética de ponto flutuante e não apenas x = 0.
➔ Apenas um conjunto finito RF de números racionais podem ser representados na formaapresentada. Os números neste conjunto são denominados números de ponto flutuante.Para uma representação normalizada (d1 ≠ 0), este conjunto contém precisamente2(b−1) bn−1 (emax − emin + 1) + 1números racionais.Exemplo: Considere o sistema de representação numérica de ponto flutuante F(2, 4, -5, 6). Neste sistema,
➔ o menor número positivo possível é:xmin = (0.1000)2 × 2−5 = 2−5−1 = 164logo, 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;logo, 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 e que mantém o resultadoinalterado é:xeps = 21−4 = 2−3 = 18 .
➔ O número de elementos em RF é:2 × 1 × (6 + 5 + 1) × 24−1 + 1 = 193.Computação Científica 43
Análise e Representação de Erros Computação Numérica3. Análise e Representação de Erros3.1. Teorema do Valor MédioPara uma demonstração rigorosa da relação existente entre o crescimento ou decrescimento deuma função e o sinal da sua derivada, é necessário usar um resultado conhecido como Teorema doValor Médio. Este teorema é um dos resultados mais importantes do cálculo diferencial, sendousado, principalmente, na demonstração de outros teoremas.O Teorema do Valor Médio é a tradução matemática para factos que aparecem de forma vulgarem muitas situações da vida real. Por exemplo, se a média da velocidade numa viagem deautomóvel entre duas cidades é de 80 km/h, então em algum momento da viagem o velocímetro doautomóvel deve ter marcado 80 km.Vamos traduzir a afirmação anterior em termos matemáticos. Seja s(t) a posição do automóvelem cada instante de tempo t. Se a viagem começa em t = a (horas) e termina em t = b (horas), avelocidade média é dada porvm = s(b) − s(a)b − a .A afirmação de que, em algum momento da viagem, a velocidade instantânea deve ser igual àvelocidade média, significa que para algum instante de tempo c entre a e b tem-sevm = s(b) − s(a)b − a = v (c) = s '(c).O Teorema do Valor Médio estabelece as condições mínimas que uma função s deve satisfazerpara que a igualdade acima seja verdadeira.Antes de se enunciar o Teorema do Valor Médio, enuncie-se um dos seus casos particulares queficou conhecido como teorema de Rolle (Michel Rolle, 1652-1719), que o demonstrou em 1690.Teorema de RolleConsidere-se uma função f satisfazendo as seguintes condições:1) f é contínua no intervalo fechado [a, b]2) f é derivável no intervalo aberto (a, b)3) f(a) = f(b)Então, existe um valor c em (a, b) tal que, f'(c) = 0.O teorema de Rolle pode ser interpretado, geometricamente, da forma que a seguir se descreve.Seja f uma curva “suave” (contínua e derivável), não constante e que liga os pontos (a, f(a)) e(b, f(b)), tal que f(a) = f(b). Assim, se o gráfico de f sobe, então deverá descer, e vice-versa.Portanto, como a curva é “suave”, existe um ponto entre a e b onde o gráfico sofre uma inflexão(ponto de inflexão) e onde a reta tangente deve ser horizontal.44 Computação Científica
Computação Numérica Análise e Representação de ErrosTeorema do Valor MédioConsidere-se uma função f satisfazendo as condições:1) f é contínua no intervalo fechado [a, b]2) f e derivável no intervalo aberto (a, b)Então, existe um número c em (a, b), tal que f ' (x) = f (b) − f (a)b − aO Teorema do Valor Médio pode ser interpretado, em termosgeométricos, da forma que se segue. Seja f é uma função“suave” que liga os pontos A = (a, f(a)) e B = (b, f(b)). Então existe um ponto c, entre a e b, tal quea reta tangente ao gráfico de f em c é paralela à reta secante que passa por A e por B.A partir do Teorema do Valor Médio pode-se enunciar vários outros resultados (corolários). Paraos corolários que a seguir se enunciam, considere-se f e g contínuas no intervalo fechado [a, b] ederiváveis em (a, b).Corolário 1 (Funções com derivada zero)Se f'(x) = 0 em (a, b), então f é uma função constante em [a, b], isto é, existe um número real k,tal que, f(x) = k, qualquer que seja o ponto x de [a, b].Corolário 2 (Funções com derivadas iguais)Suponha que f'(x) = g'(x) para todo x no intervalo (a, b). Então, f e g diferem por uma constante,isto é, existe um número real k, tal que f(x) = g(x) + k, para todo x em [a, b].Corolário 3 (Funções crescentes e decrescentes)i) Se f'(x) > 0 para todo x em [a, b], então f é uma função crescente em [a, b].ii) Se f'(x) < 0 para todo x em [a, b], então f é uma função decrescente em [a, b].Corolário 4 (Teorema do valor médio generalizado)Sejam f e g contínuas em [a, b] e deriváveis em (a, b) e suponha, além disso, que g'(x) ≠ 0 paraa < x < b. Então, existe pelo menos um c em (a, b), tal quef ' (c )g ' (c) = f (b) − f (a)g(b) − g (a) .3.2. Fontes de erros e incertezasEmbora se procure sempre soluções “exatas” dos problemas reais, raramente este objetivo éatingido, devido há existência de erros e incertezas nos dados. Os erros e as incertezas nos dadospodem ser introduzidos em cada etapa da formulação e da resolução dos problemas. Aqui será abordada a natureza das incertezas que surgem quando se procura a solução de umproblema. Serão também examinados, com um certo grau de detalhe, os erros introduzidos pelacomputação numérica, destinada a determinar a solução de um problema.Computação Científica 45
Análise e Representação de Erros Computação NuméricaNeste documento, não serão considerados os erros triviais que podem ser evitados, tais comocopiar uma fórmula incorretamente ou efetuar um erro de sintaxe na programação, embora taiserros ocorram e perfaçam uma fração considerável do esforço e do tempo despendidos em todo oprocesso de resolução de um problema matemático.Desta forma, esta secção tratará apenas dos erros que resultam de forma inevitável, dada aprópria natureza da representação finita de números num computador e/ou da implementaçãonumérica de um determinado cálculo. As incertezas introduzidas contaminam a solução e é importante tentar-se balanceá-las. Se aincerteza no modelo matemático é pequena, então não faz sentido a implementação de um modelonumérico e de um método que atinja muitos dígitos de precisão, por exemplo. No decurso doprocesso de resolução de um problema, as incertezas ocorrem em todas as fases deste processo.3.3. IncertezaA tomada dedecisões num contexto de incerteza é certamente uma das situações maisfrequentes em problemas reais, nomeadamente no planeamento de atividades em diversos campos.A incerteza é uma característica intrínseca dos problemas reais surgindo de múltiplas origens epossuindo natureza distinta.A incerteza emerge da cada vez maior complexidade das interações no interior dos sistemassociais, económicos e técnicos, caracterizados por uma rápida evolução tecnológica, alterações nasestruturas de mercado e de novas relações sociais. Geralmente, é impraticável que os modelosmatemáticos possam capturar todos os fenómenos inter-relacionados relevantes presentes, chegaraté toda a informação necessária e também dar conta das alterações e/ou hesitações relacionadascom a expressão das preferências de quem decide.A incerteza pode ser proveniente de diversas fontes ou ser classificada em diferentes tipos, nãosendo, em geral, adequado representar probabilisticamente todas as formas de incerteza associadaa modelos matemáticos, nomeadamente se a informação disponível é para tal insuficiente. Ummodelo matemático associado a um sistema real pode incluir vários tipos de incerteza, a qual podeocorrer nos dados do modelo, na precisão do modelo usado para descrever o sistema, ou nasequência de possíveis acontecimentos que podem ocorrer num sistema de acontecimentosdiscretos. 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.Algumas razões da necessidade deste tipo de modelos são as seguintes:1) a natural incerteza das previsões relativas ao futuro;2) a impossibilidade de medir os conceitos do mundo real com a precisão exigida pelo modelomatemático;3) a impossibilidade de implementar uma solução com a precisão obtida através do modelomatemático;46 Computação Científica
Computação Numérica Análise e Representação de Erros4) a natural e constante alteração do mundo real onde a solução é implementada;5) o facto das expressões matemáticas associadas ao modelo serem apenas traduçõesaproximadas dos objetivos e das restrições do problema real.Apesar de na literatura existir diversas classificações para a incerteza, esta pode ser classificadaem dois tipos: aleatória e epistémica.A incerteza aleatória descreve a variação associada ao sistema real, ou ambiente emconsideração, em que esta variação é normalmente causada pela natureza aleatória dos dadosassociados ao problema, podendo ser representada matematicamente por uma distribuição deprobabilidade, desde que os dados experimentais disponíveis sejam suficientes. Este é o tipo deincerteza que tem sido alvo de mais estudos, sendo uma propriedade inerente à modelação desistemas (ou inserida no modelo para simular este comportamento) e que não pode ser reduzida. A incerteza epistémica está associada a um certo nível de ignorância, ou informaçãoincompleta, do sistema ou do ambiente que o rodeia. Este tipo de incerteza é usada para descreverqualquer falta de conhecimento ou informação numa qualquer fase ou atividade do processo demodelação do sistema. As causas da incerteza influenciam o tipo de informação associada ao modelo usado notratamento da incerteza para traduzir o sistema físico em análise. São várias e distintas as causasda incerteza: falta de informação, excesso de informação, provas em conflito, ambiguidade,medições e crença.A falta de informação é provavelmente a causa mais frequente da incerteza. Existem situaçõesem que um decisor não tem qualquer informação acerca de qual dos possíveis estados naturais iráocorrer. Noutras, o decisor conhece apenas as probabilidades de ocorrência dos vários estados. Umaoutra situação é aquela em que ninguém tem ou quer reunir informação suficiente para construiruma descrição exata do acontecimento, embora isto possa ser possível.O excesso de informação deve-se ao facto de ser limitada a capacidade do Ser Humano emperceber e processar, simultaneamente, grande quantidade de dados. Em muitas situações, sãodisponibilizados mais dados do que aqueles que podem ser processados; noutras, os fenómenos quesão transmitidos, definidos ou descritos com um grande número de características ou propriedades.Normalmente, estes dados são processados pelo analista que os transforma em dados percetíveis,ou que centra a sua atenção apenas nos aspetos que lhe parecem ser os mais importantes (quepodem não ser para o decisor) e negligenciando todos os outros dados ou informação.Podem existir várias classes de informação (importante) disponível sobre um mesmo sistema,mas em que cada uma delas aponta para diferentes comportamentos do sistema (provas emconflito). Este conflito pode acontecer devido ao facto de parte da informação disponível aoanalista estar errada (mas não identificável como tal por ele), das características da informaçãoserem irrelevantes para o sistema, do modelo que o analista tem do sistema ser incorreto, etc..Computação Científica 47
Análise e Representação de Erros Computação NuméricaSe numa situação certas informações (por exemplo, linguísticas) têm significados totalmentediferentes ou têm uma correspondência de um para vários (matematicamente falando), então diz-se que existe ambiguidade. Todas as linguagens contêm palavras que, por diversas razões, têmdiferentes significados em diferentes contextos.O termo medição é aqui usado no sentido de “medição em engenharia”, isto é, instrumentospara medição de aspetos físicos, tais como peso, temperatura, altura, etc.. No entanto, se umadada propriedade exata não puder ser medida com precisão, tem-se alguma incertezarelativamente à medição real, conhecendo-se apenas uma medida indicativa.Em todas as causas da incerteza já referidas, a informação disponível ao analista é objetiva. Noentanto, existem situações em que a informação disponível é subjetiva, as quais são classificadassegundo um tipo de crença numa certa circunstância. Estas situações são, talvez, as mais duvidosasde todas, pois também podiam ser classificadas como “falta de informação” no sentido objetivo.3.4. Precisão e exatidãoA precisão refere-se ao quão próximo um número representado pelo computador representa onúmero que ambiciona representar. A precisão de um número é caracterizada pelo número dedígitos usados na representação e na álgebra. Assim, a constante  será representada com maiorprecisão utilizando 8 bytes do que utilizando 4 bytes, para armazenar o número.A exatidão refere-se a quão próximo um número representado pelo computador (como resultadode uma série de operações, por exemplo) está do valor correto do número que ele almejarepresentar. A exatidão é caracterizada pelos erros (de truncatura e de arredondamento) nométodo numérico utilizado. Assim, se os números 1 = 3.1416304958 e 2 = 3.1415809485 almejamrepresentar o mesmo número  = 3.141592654…, o número 2 possui maior exatidão do que 1,embora ambos possuam a mesma precisão.Os conceitos de precisão e exatidão são muitas vezes confundidos entre si. É frequente, emlinguagem coloquial, referir-se à precisão quando na verdade o correto seria referir-se à exatidãode um resultado. Mais adiante, indica-se como se pode medir a exatidão de um número através docálculo dos erros absoluto e relativo do mesmo.3.5. Tipos de errosDurante as etapas de resolução de um problema, surgem erros de várias origens que podemalterar profundamente os resultados (soluções) obtidos. É de importância fundamental conhecer ascausas desses erros para minimizar as suas consequências. Em função da origem dos erros, pode-se considerar dois tipos: a) erros exteriores ao processo de cálculo, e b) erros que ocorrem durante o processo de cálculo.48 Computação Científica
Computação Numérica Análise e Representação de ErrosOs erros exteriores ao processo de cálculo podem ser - iniciais (associados aosdados e aos parâmetros do modelo), - de modelação (inerentes à construção dos modelos matemáticos), e - grosseiros (inerentes à elaboração e implementação dos algoritmos); Os erros que ocorrem durante o processo de cálculo podem ser - de arredondamento (inerentes à representação de entidades numéricas nas máquinas e àsoperações que um computador pode realizar), e - de truncatura (associados ao uso de métodos numéricos).Como consequência da ocorrência destes erros, as soluções numéricas obtidas são, em geral,soluções aproximadas. Definição do ProblemaModelo Matemático  Erros de Modelação Erros Iniciais  Dados e Parâmetrosdo Modelo Método Numérico  Erros de Truncatura Cálculo da Solução  Erros Grosseiros  Erros de ArredondamentoAnálise da SoluçãoErros nas diversas etapas do processo de resolução de um problema.3.5.1. Erros iniciais (nos dados do modelo)Num modelo matemático é muitas vezes necessário usar dados e parâmetros obtidos através demedidas experimentais, os quais são traduzidos com valores aproximados. As aproximações nosdados e parâmetros podem ter grande influência no resultado final.Pode ocorrer que os dados sejam obtidos com pouca exatidão, sendo necessária a realização detestes para verificar o quanto os resultados são sensíveis às alterações dos dados fornecidos (análisede sensibilidade). Grandes alterações nos resultados devido a pequenas variações nos dados sãosintomas de um mal condicionamento do modelo proposto, havendo então necessidade de umanova modelação do problema. Um modelo matemático cuja solução obtida (resultados) é muitosensível a pequenas variações nos dados e nos parâmetros do modelo diz-me mal condicionado; poroutro lado, diz-me bem condicionado se pequenas variações nos dados e parâmetros induzemsempre pequenas variações na solução.Computação Científica 49
Análise e Representação de Erros Computação Numérica3.5.2. Erros de modelação (ou de formulação)Um modelo matemático raramente oferece uma representação exata dos fenómenos reais. Destaforma, na maioria dos casos são apenas modelos idealizados, uma vez que estudar os fenómenos danatureza implica, geralmente, aceitar-se certas condições que simplificam o problema real para otornar resolúvel. Desta forma, pode ocorrer uma modelação incorreta, em que uma ou várias dasexpressões matemáticas associadas ao modelo não reflitam adequadamente o fenómeno real. Osmelhores modelos são os que incluem as características do problema real necessárias para reduziros erros a um nível aceitável.Os erros de modelação estão também relacionados com uma certa tendência de alguns analistasnão completarem, com algum rigor, o modelo matemático. Nesta situação, deve-se ter consciênciado facto de que se está a trabalhar com um modelo mal construído e não adequado ao problemareal. Desta forma, nenhum método numérico poderá originar resultados precisos.3.5.3. Erros grosseirosApesar da probabilidade de um computador cometer um erro ser muito baixa, podem sercometidos erros na elaboração do algoritmo, na sua implementação, na introdução dos dadosiniciais e/ou na definição dos parâmetros do modelo. Por outro lado, executar o programa com dados iniciais cujos resultados (solução) sãoconhecidos, 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.3.5.4. Erros de arredondamentoQualquer que seja o processo de obtenção dos cálculos, manual ou computacionalmente, há anecessidade de utilizar uma aritmética de precisão finita, ou seja, apenas se pode ter emconsideração um número finito de dígitos na parte decimal dos valores envolvidos. O erro devido adesprezar os outros dígitos e arredondar o número, é designado por erro de arredondamento. De facto, um qualquer número decimal, por exemplo 0.410 (base 10), não pode ser representadoexatamente num computador porque tem que ser convertido em binário (base 2) e armazenadonum número finito de bits. O erro causado por esta imperfeição na representação de um número éo erro de arredondamento.3.5.5. Erros de truncaturaMuitas equações têm solução que apenas podem ser construídas de forma a que um processoinfinito possa ser descrito como limite da solução do problema em análise. Por definição, umprocesso infinito não pode ser completado, pelo que tem de ser truncado após um determinadonúmero finito de operações. Esta substituição, de um processo infinito por um finito, resulta numerro de truncatura.50 Computação Científica
Computação Numérica Análise e Representação de ErrosO erro de truncatura é pois, devido à aproximação de um problema por outro, como, porexemplo, a substituição de um problema contínuo por um discreto. É sabido que, para avaliar umafunção matemática no computador, apenas podem ser requeridas as operações aritméticas elógicas, por serem as operações que ele é capaz de efetuar.Por exemplo, para avaliar f(x) = sen(x) esta tem que ser aproximada por uma série, tal comosen(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.A tabela que se segue mostra a diferença entre o valor obtida pela série de sen(x) e um valormais exato, para n até 2, 3 e 4. Quando n aumenta, o erro de truncatura diminui, ficando claro queestes erros são devidos às várias truncaturas da série (ver tabela que se segue).
∑n=0∞ (−1)n x2n+1(2n+1)! − sen(x )x t = 2 t = 3 t = 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-73.6. Valores aproximados e errosAo resolver um problema numérico no computador obtém-se, em geral, um valor aproximado dasolução exata do problema. Assim sendo, é importante poder avaliar-se a qualidade daaproximação, isto é, estimar ou limitar a discrepância entre a solução aproximada calculada e asolução exata. Esta qualidade pode ser medida através do cálculo dos erros absoluto e relativo.3.6.1. Erro absolutoSeja X o valor exato de um número e fl(X) o seu valor aproximado por uma representação deponto flutuante. O erro absoluto (EAX) é definido como o valor absoluto da diferença entre o valorexato e o valor aproximado:EAX = | X - fl(X) |.Ou seja, conhecendo-se fl(X) e EAX, pode-se afirmar queX = fl(X)  EAX.Como para a maior parte dos problemas X é desconhecido, não é possível calcular o erroabsoluto, sendo apenas possível estimar-se o seu valor. Computação Científica 51
Análise e Representação de Erros Computação NuméricaGeralmente 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 .Por exemplo, Arquimedes estimou o valor de  através da média do perímetro de polígonos queestavam contidos numa circunferência de raio unitário e de polígonos que continham acircunferência. Fazendo uso deste método, Arquimedes foi capaz de estimar
πmin = 3.1409... = 3 + 11378069 < π < πmax = 3 + 13359347 = 3.1428...Desta forma, Arquimedes obteve erros absolutos iguais a: EA = 6.830 x 10-4 para min, EA = 1.2339 x 10-4 para pmax e,EAp = 2.7546 x 10-4 para a média entre pmin e pmax . Portanto, Arquimedes poderia afirmar que
π = 12 (πmin + πmax) ± 12 (πmax − πmin) = 3.14187 ± 0.00096.3.6.2. Erro relativoSeja X o valor exato de um número e fl(X) o seu valor aproximado. O erro relativo (ERX) podeser 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 valoraproximado fl(X) no denominador da expressão para o erro relativo, como a seguinte: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 superiordo seu valor, X, oqual se define da seguinte forma (limite superior do erro relativo):ERX ≤ X .A quantidade 100 ERX, expressa em percentagem, denomina-se por percentagem do erro.Voltando ao exemplo anterior, os erros relativos das estimativas de Arquimedes foram: ERp = 2.1741 x 10-4 para pmin, ERp = 3.9262 × 10-4 para pmax e,ERp = 8.7674 x 10-5 para a média.52 Computação Científica
Computação Numérica Análise e Representação de ErrosEm 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.3.6.3. Fórmula fundamental dos errosConsidere-se um determinado problema de cálculo numérico, Y = f(X). Mesmo que seja possívelexecutar f de forma exata, qualquer perturbação no valor dos dados irá afetar os resultados; são oserros de propagação: fl(Y) = f(f(X)). Por outro lado, mesmo que os dados sejam exatos, o métodode cálculo pode ser aproximado; os resultados virão afetados de erros gerados: f(Y) = f (X). Namaioria das vezes, ocorrem sucessivas combinações destes dois tipos de erros: f (Y) = f (f (X)).A fórmula fundamental do cálculo dos erros serve para indicar como se propagam os erros aolongo do processo de cálculo numérico. Seja Y = f(X), onde f é uma função continuamentediferenciável em R. Admita-se que fl(Y) = f(fl(X)), isto é, fl(Y) é obtido usando aritmética exatacom dados ligeiramente perturbados (fl(X)). Então, usando o Teorema do Valor Médio (TVM), obtém-se os seguintes resultados:(a) EAfl (Y ) = ∣Y −fl(Y) ∣, por definição de erro absoluto = ∣f (X )−f (fl(X))∣, por hipótese = ∣f '()∣∣X −fl(X)∣,   (X, fl(X)) (pelo TVM) = ∣f '()∣ EAX, por definição de erro absoluto EAfl (Y ) = ∣f ' ()∣ EAX(b) ERfl (Y ) = EA fl(Y )∣Y∣ , por definição de erro relativo = ∣f ' ( )∣∣X −fl(X) ∣
∣Y ∣ , pela alínea anterior = ∣X ∣∣f '()∣
∣Y ∣ ∣X −fl(X) ∣∣X∣ = ∣X ∣∣f '()∣
∣Y ∣ ERX, por definição de erro relativo  ∣X ∣∣f ' (X)∣
∣f (X )∣ ERX, porque X ≈ fl(X) e   (X, fl(X)) ERfl (Y )  ∣X ∣∣f '(X)∣∣f (X )∣ ERXNormalmente ∣X f ' (X)∣
∣f (X) ∣ é designado por número de condição de f em X e denota-se porcond f(X). Este valor, cond f(x), é um indicador do efeito da propagação do erro relativo, novalor da função f no ponto X, e permite avaliar em que condições a função é bem ou malcondicionada.Computação Científica 53
Análise e Representação de Erros Computação NuméricaExemplos: Analisar os efeitos da propagação de erros nas funções xn e nx com n  N.(a) f(x) = xn, com n  N.cond f(x) = ∣x f ' (x )∣
∣f (x) ∣ = ∣x n xn−1 ∣∣xn∣ = nVerifica-se que a propagação do erro relativo depende apenas de n e não de x.(b) f(x) = nx, com n  N.cond f (x) = ∣x f ' (x )∣
∣f (x) ∣ = ∣x nx ln x ∣∣nx ∣ = ∣x ln x∣Neste caso, verifica-se que a propagação do erro relativo depende de x mais do que de n.3.6.4. Número de dígitos significativosNa contabilização do número de dígitos de um número, não se deve incluir os zeros no seuinício, uma vez que estes zeros apenas ajudam a localizar a posição ideal do ponto decimal. Caso sepretenda contabilizar o número de decimais, então os zeros mais à direita do ponto decimal devemser incluídos. Por exemplo, o número 0.00147 tem três dígitos significativos apesar de possuir cincodecimais. O número 12.34 tem quatro dígitos significativos, mas possui apenas dois decimais.Em matemática aplicada, os algarismos significativos são utilizados para monitorizar os erros aose representar números reais na base 10. Excetuando-se quando todos os números envolvidos sãointeiros (por exemplo o número de pessoas numa sala), é impossível determinar o valor exato dedeterminada quantidade. Assim sendo, é importante indicar a margem de erro numa mediçãoindicando os algarismos significativos, sendo estes os dígitos com significado numa quantidade oumedição. Utilizando algarismos significativos, o último dígito é sempre incerto. Desta forma, éimportante utilizá-los em trabalhos científicos.Diz-se que uma representação tem n algarismos significativos quando se admite um erro noalgarismo seguinte da representação. Por exemplo, 1/7 = 0.14 com dois algarismos significativos (jáque o erro está na terceira casa decimal: 1/7 = 0.1428571429). Analogamente, 1/30 = 0.0333 comtrês algarismos significativos (erro na quinta casa decimal).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). Dada uma representação decimal:1. O algarismo zero que correspondem às ordens maiores não são significativos. Exemplos: em001234.56 os dois primeiros zeros não são significativos, o número tem seis algarismossignificativos; em 0.000443 os quatro primeiros zeros não são significativos, o número temtrês algarismos significativos. 54 Computação Científica
Computação Numérica Análise e Representação de Erros2. O algarismo zero que corresponde às menores ordens, se elas são fracionárias, sãosignificativos. Exemplo: em 12.00 os dois últimos zeros são significativos, o número temquatro números significativos.3. Os algarismos de 1 a 9 são sempre significativos. Exemplos: em 641 o número tem trêsnúmeros significativos; em 38.984 o número tem cinco algarismos significativos.4. Zeros entre algarismos de 1 a 9 são significativos. Exemplo: em 1203.4 todos os cincoalgarismos são significativos.5. Os zeros que completam números múltiplos de potências de 10 são ambíguos: a notação nãopermite dizer se eles são ou não significativos. Exemplo: 800 pode ter um algarismosignificativo (8), dois algarismos significativos (80) ou três algarismos significativos (800). Estaambiguidade 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.00x102tem três algarismos significativos.6. As constantes têm um número arbitrariamente elevado de algarismos significativos;exemplos: o coeficiente 3 no cálculo do valor médio: (1.84 + 1.72 + 1.66) / 3; 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. Quando se trabalha com uma representação de um número obtida por meio de um processo dearredondamento, uma forma alternativa para se estimar a qualidade da aproximação (ou a exatidãodo número), consiste em calcular o número de dígitos significativos corretos da representação.Se fl(X) é uma aproximação de X então diz-se que fl(X) aproxima X com k dígitos significativos seEAX = ∣X − fl(X)∣ ≤ 12 bs+1−k,em que s é tal que bs  |X|  bs+1 .O dígito significativo do valor aproximado que se encontra mais à esquerda é chamado de digitomais significativo e o mais à direita de digito menos significativo. O número de dígitos significativosde um valor aproximado dá boa informação sobre a qualidade dessa aproximação. Existe umarelação entre o número de dígitos significativos de um valor aproximado de um número e o errorelativo desse valor. Com efeito, se fl(X) é uma aproximação para X com k dígitos significativoscorretos numa representação de base b, então ERX = ∣X − fl(X )X ∣ ≤ 12 b−k+1onde k é o maior número inteiro positivo para o qual a desigualdade acima é verificada.Computação Científica 55
Análise e Representação de Erros Computação NuméricaExemplo: sejam b = 10, X = 1/6 e fl(X) = 0.16667; entãoERX = ∣1/6 − 0.166671 /6 ∣ = 2 × 10−5 ≤ 12 × 10−5+1.Ou seja, o número de dígitos significativos em fl(X) é k = 5.3.7. Erros de arredondamentoO tamanho finito da palavra utilizada num computador digital para a representação de númerosde ponto flutuante provoca o aparecimento de diversos tipos de erros. Uma estratégia para reduzirestes erros, usada na maioria doscomputadores, consiste em utilizar números de ponto flutuantenormalizados, 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ãonulos utilizados para representar um dado número. No entanto, mesmo num sistema comrepresentação normalizada, nem todos os números reais podem ser representados. Utilizando oexemplo do sistema F(2, 4, -5, 6), o número racionaly = 0.12345999...não pode ser exatamente representado. A forma de y na base 2 é:y = 0.12345999... = (0.000111111001101...)2.Para escrever y de acordo com o sistema F(2, 4, -5, 6), deve-se primeiro normalizar de acordo comas operações: y = 2−4 + 2−5 + 2−6 + 2−7 + 2−8 + 2−9 + 2−12 + 2−13 + 2−15 + ...= 2−3 × (2−1 + 2−2 + 2−3 + 2−4 + 2−5 + 2−6 + 2−9 + 2−10 + 2−12 + ...)= (0.111111001101...) × 2−3,o qual está agora na forma normalizada. De acordo com a expressão apresentada na secção 2.6.2(pág. 39), então podemos identificar M = 0.111111001101... ; e = -3.Contudo, para o sistema F(2, 4, -5, 6), pode-se usar apenas 4 dígitos na mantissa. Desta forma, umapossível aproximação para y é:fl(y) = (0.1111) x 2-3,o qual corresponde ao seguinte número na base 10: fl(y) = 0.1171875… , resultando nos seguintes erros absoluto e relativo:EAy = 6.27249 x 10-3 ERy = 5.08058 x 10-2 56 Computação Científica
Computação Numérica Análise e Representação de ErrosConsidere-se um número X na forma normalizada que não possua representação exata no sistemaF(b, n, emin, emax). Sejam X o menor número representável no sistema menor que X e X o maiornúmero representável no sistema maior que X. Então,X  X  X Pode-se escrever X comoX = 0.d1d2...dndn+1... be = (0.d1d2 ...dn) be + (0.0 ...0dn+1...) be =
= (0.d1d2 ...dn) be + (0.dn+1...) be−n.Ou seja,X = (0.d1d2 ...dn) be + gX be−ncom gX = (0.dn+1...) e ∣gX∣ < 1em que gX be-n é a parcela de X que não é incluída na sua representação. Existem duas formas de serealizar a aproximação: arredondamento por defeito (ou corte do número) e simétrico.3.7.1. Arredondamento 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. Neste caso, 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−npois (0.d1d2...dn) ≥ b−1 e ∣ gX ∣< 1, obtendo-se, desta forma, um limite superior para o errorelativo, ao qual também se dá o nome de unidade de erro de corte.Desta forma, podem ser enunciados os resultados que se seguem, relacionando o número dedígitos significativos de um valor aproximado de um número com o seu erro relativo.Teorema: Se o dígito mais significativo do valor aproximado de um número é d1 ≠ 0 e se esse valor tem kdígitos significativos, então o seu erro relativo não excede b1-k.Computação Científica 57
Análise e Representação de Erros Computação NuméricaCorolário: Se o erro relativo do valor aproximado de um número não excede (1/2) b-k, então esse valor temk dígitos significativos.Para o exemplo anterior, no sistema de representação F(2, 4, -5, 6), pode-se escrever:y = (0.1111) 2−3 + gy 2−3−4, sendo gy = (0.11001101...)Então, efetuando o arredondamento por defeito obtém-se fl(y).3.7.2. Arredondamento simétricoNo 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 ∣≥ 12Neste 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.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 deunidade de erro de arredondamento. No exemplo acima, como gy > 1⁄2, deve-se somar 1 ao dígito d4 resultando,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,que possui um erro relativo de ERY = ∣0.12345999 – 0.125 ∣∣0.12345999 ∣ = 1.232×10−2; ou seja, 1.23% de y, o que é bem menor que o obtido com o arredondamento por defeito, que foi de 5.08%.58 Computação Científica
Computação Numérica Análise e Representação de ErrosOs computadores mais recentes modificam ligeiramente o arredondamento em relação à fórmulaapresentada antes. Nesta, o último dígito significativo (dn) não será alterado se |gX| < 1⁄2 e seráalterado se |gX| ≥ 1⁄2. Há, portanto, uma ligeira preferência para a alteração de dn no processo dearredondamento, o que insere um erro sistemático no processo. Atualmente, se |gX| = 1⁄2, o valorde dn será alterado somente em metade das situações, segundo algum critério. Este critério podeser, por exemplo, a paridade de dn. Assim, para b = 10, o número 12.5 seria arredondado para 12,enquanto que 13.5 seria arredondado para 14 (critério denominado por arredondamento par).3.7.3. Erros de arredondamento na álgebra de ponto flutuanteA fórmula fundamental do cálculo dos erros pode ser usado para calcular os limites superioresdos erros absoluto e relativo das operações fundamentais.Para além dos erros resultantes da representação no computador de números no formato componto flutuante, também as operações algébricas, que necessariamente são realizadas pelocomputador, introduzem erros no resultado destas operações, e que tendem a acumular-se àmedida que o número de operações de ponto flutuante são realizadas no computador.O exemplo seguinte ilustra o aparecimento deste tipo de erros. Suponha-se que se está a usarum sistema numérico de base 10 com 5 dígitos na mantissa. Pretende-se calcular o valor da funçãof (x) = 1 − cos(x )sen(x ) = sen(x )1 + cos(x ), para x = 0.007. Existem funções intrínsecas do compilador que calculam o valor das funções trigonométricasdentro da precisão disponível, através de um processo de arredondamento. Assim,sen(0.007) = 0.69999 × 10−2 e cos (0.007) = 0.99998A primeira expressão para f(x) fornece:f (x) = 1 − cos(x )sen(x ) = 1−0.999980.69999 × 10−2 = 0.2 × 10−40.69999 × 10−2 = 0.28572 × 10−2enquanto que a segunda expressão fornecef (x) = sen(x )1 + cos(x ) = 0.69999 × 10−21 + 0.99998 = 0.35000 × 10−2sendo que este último resultado é o correto, dentro da precisão de 5 dígitos disponível. O errorelativo entre o primeiro valor (errado) e o segundo (correto) é de 22.5%. Na primeira expressão,devido à escolha feita na precisão, restou somente um dígito relevante no numerador após asubtração. Isto levou a uma perda de precisão e a um resultado erróneo devido ao cancelamento dedois números muito próximos entre si. Este problema seria evitado caso o sistema de representaçãodispusesse de, pelo menos, mais um dígito significativo na mantissa; porém, o que importa frisaraqui é que muito facilmente este tipo de erro de arredondamento ocorre, devido ao tamanho finitoComputação Científica 59
Análise e Representação de Erros Computação Numéricada palavra no computador. Por outro lado, caso fosse solicitado o valor de f(x) para x ≈ , seria asegunda expressão que forneceria um valor incorreto e a primeira a fornecer um valor correto.Este exemplo demonstra a perda de precisão numérica devida a erros de arredondamento, ondeo número de dígitos significativos é reduzido na subtração de dois números próximos entre si (esteefeito designa-se por cancelamento subtrativo). Isto mostra que não é possível confiar cegamenteno cálculo realizado, devendo-se sempre analisar cuidadosamente o algoritmo usado na procura depossíveis fontes de erros.Desta forma, é importante conhecer-se como se propagam os erros nas operações aritméticas:adição,

Outros materiais