Baixe o app para aproveitar ainda mais
Prévia do material em texto
Mtodos Numricos para Engenheiros com Scilab Srgio Galdino 2 de Setembro de 2013 Capítulo 1 Erros em computaes numricas 1.1 Glamour da computao A opinio geral que computadores so capazes de fazer operaes aritmticas ra- pidamente e com grande exatido. Em parte correta quando comparada ao clculo manual. Por exemplo, taxas tpicas para multiplicao manual de nmeros so 0.05s−1 ( so 20s para efetuar uma multiplicao) enquanto num computa- dor so tipicamente maiores que 106s−1 chegando facilmente a 1012s−1 em supercomputadores. Os clculos computacionais superam em vrias ordens de magnitude os clculos manuais, permitindo, assim, enfrentar verdadeiros desa�os computacionais. S para produzir o efeito psicodlico pode ser dito que em 1 segundo um computador de 106/s pode fazer mais clculos (e sem cometer erros grosseiros) que uma pessoa ir fazer manualmente em sua vida inteira. Desviando-se do glamour da computao, este captulo dar bases pra mostrar que resultados de computaes numricas devem ser vistas com cautela. 1.2 Anlise numrica versus anlise matemtica A anlise matemtica (no cotidiano) e anlise numrica diferem muito quando so utilizadas. A anlise matemtica normalmente assume uma representao in�nita para nmeros e processos, enquanto computaes numricas so realizadas em maquinas �nitas em tempo �nito. A representao �nita dos nmeros em uma mquina produz erros de arredondamento, enquanto a representao �nita de um processo produz erro de truncamento: Exemplos: Nmeros: pi = 3.1415926535 . . . (1.1) 1 3 = 0.33333 . . . (1.2) 3 4 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS Processos:∫ b a f(x)dx = lim ∆xi→0 n∑ i=1 f(xi)∆xi, ∆xi = (xi+1 − xi) (1.3) df(x) dx = lim ∆x→0 ( f(x+∆x)− f(x) ∆x ) (1.4) Grande parte da matemtica sensvel aos efeitos produzidos pelo arredon- damento numrico; esta vulnerabilidade que os estatsticos chamam de "no robusto". Esta diferena fundamental, pois somente partes da matemtica resistente aos erros de arredondamentos so teis em matemtica aplicada ao mundo real. Signi�cados diferentes surgem para as mesmas palavras. A expresso zeros de um polinmio pode ter vrios signi�cados em computao e um nico signi�- cado em matemtica (ver [4] sec 1.10). A matemtica lida preferencialmente com teoremas exatos e precisos; an- lise numrica usa muitos mtodos heursticos. A existncia de um teorema no su�ciente em clculos computacionais. Estas diferenas so muitas vezes srias e conduzem a grandes desentendimentos. 1.3 Dgitos signi�cativos, preciso, exatido e erros Quando se trata com valores numricos e clculos numricos, existem vrios conceitos que devem ser considerados: , 1. Dgitos signi�cativos 2. Preciso e exatido 3. Representao do nmero 4. Erros Os trs primeiros conceitos so discutidos brevemente nesta seo e os demais nas prximas. Dgitos signi�cativos Os algarismos signi�cativos, ou dgitos signi�cativos em um nmero, so os dgitos do nmero que se sabe serem corretos. Clculos de engenharia e cient�- cos geralmente comeam com um conjunto de dados com um nmero limitado 1.4. COMPUTAES NUMRICAS 5 de dgitos signi�cativos. Quando estes nmeros so processados atravs de um algoritmo numrico, importante estimar quantos dgitos signi�cativos esto presentes no resultado �nal computado. Preciso e Exatido Preciso refere-se a quo prximo um nmero representa o nmero que ele est representando. Exatido refere-se a quo prximo um nmero est do valor real do nmero que est representando quanti�cado pelo erro absoluto ou relativo. O termo preciso refere-se a exatido com as quias as operaes aritmticas so realizadas. A preciso governada pelo nmero de dgitos a ser utilizado nos clculos numricos. A exatido regida por erros na aproximao numrica. Preciso e exatido so quanti�cados pelos erros de clculos numricos. 1.4 Computaes Numricas A aritmtica das mquinas digitais (computadores, calculadoras, ...) no a mesma que usada em cursos de clculo ou lgebra. Assume-se como a�rmaes verdadeiras que 2 + 2 = 4, 22 = 4, e ( √ 2)2 = 2. Na aritmtica padro das mquinas digitais as duas primeiras so verdadeiras mas a terceira no. Para entender poque isto verdadeiro deve-se explorar o mundo da aritmtica de preciso �nita utilizada por mquinas digitais. 1.4.1 Representao O sistema de numerao decimal o mais usado pelo homem nos dias de hoje. O nmero 10 tem papel fundamental, chamado de base do sistema. Os smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, so usados para representar qualquer grandeza. O fato de o sistema decimal ser largamente utilizado tem evidentemente razes histricas, pois na realidade qualquer nmero inteiro maior que 1 poderia ter sido escolhido. De fato, no mundo dos computadores digitais o sistema binrio o utilizado. O nmero 2 a base do sistema e os smbolos 0 e 1 servem para representar uma grandeza qualquer. Ao lado do sistema binrio, os sistemas octal, hexadecimal, base 8 e 16 respectivamente, so tambm utilizados. Isto ocorre pelo fato de que cada smbolo octal e hexadecimal representa um equivalente a trs e quatro smbolos no sistema binrio e vice-versa. 1.4.2 Converso Dado um nmero x representado na base N, isto , na N-representao, e ns que- remos saber como representa-lo na base M, isso , na M-representao. Temos 6 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS ento a equao: x = amN m + · · ·+ a1N1 + a0N0 + a−1N−1 + · · ·+ a−nN−n = bjM j + · · ·+ b1M1 + b0M0 + b−1M−1 + · · ·+ b−kM−k (1.5) onde os coe�cientes am, am−1, · · · , a1, a0, a−1, · · · , an−1, a−n so conhe- cidos e os coe�cientes bj , bj−1, · · · , b1, b0, b−1, · · · , bk−1, b−k devem ser determinados. Observe que bj , bj−1, · · · , b1, b0, b−1, · · · , bk−1, b−k de- vem ser expressos com smbolos de dgitos da N-representao. Para realizar a converso dividiremos x em uma parte inteira i e uma parte fracionria f . Ns temos i = bjM j + · · · + b1M1 + b0M0, e dividindo i por M ns obtemos um quociente q1 e um resto r1 = b0. Continuando, dividiremos q1 por M , ns conseguiremos q2 e o resto r2 = b1, e, obviamente, b0, b1, b2, · · · so os restos consecutivos quando i dividido repetitivamente por M . De forma semelhante ns encontramos a parte fracionria como as partes inteiras con- secutivas quando f multiplicado repetitivamente por M e a parte inteira removida. Os clculos devem ser feitos na N-representao eM deve ser tambm dado nesta representao. Exemplo 1 Converso o nmero decimal 261, 359 para a representao binria. Converso: Decimal para binrio Inteiro: Diviso sucessiva do nmero decimal por 2 261 2 1 130 2 0 65 2 1 32 2 0 16 2 0 8 2 0 4 2 0 2 2 0 1 O nmero inteiro binrio obtido atravs dos restos das divises escritos na ordem inversa da sua obteno. Ento 26110 = 1.0000.01012. Frao: Multiplicao sucessiva da frao decimal por 2 1.4. COMPUTAES NUMRICAS 7 Multiplicao Sobra 0,359x2 = 0,718 0 0,718x2 = 1,436 1 0,436x2 = 0,872 0 0,872x2 = 1,774 1 0,774x2 = 1,488 1 0,488x2 = 0,976 0 0,976x2 = 1,952 1 0,952x2 = 1,904 1 0,904x2 = 1,808 1 . . . . . . . . . . . . A frao binria obtida atravs das sobras, parte inteira, das multiplicaes escri- tas na ordem direta de sus obteno. Ento 0, 35910 = 0, 0101.1011.1 · · ·2. Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se 261, 35910 = 1.0000.0101, 0101.1011.1 · · ·2 Exemplo 2 Converso o nmero decimal 261, 359 para a representao ternria. Converso: Decimal para ternrio Inteiro: Diviso sucessiva do nmero decimal por 3 261 3 0 87 3 0 29 3 2 9 3 0 3 3 0 1 O nmero inteiro ternrio obtido atravs dos restos das divises escritos na ordem inversa da sua obteno. Ento 26110 = 100.2003. Frao: Multiplicao sucessiva da frao decimal por 3 Multiplicao Sobra 0,359x3 = 1,077 1 0,077x3= 0,231 0 0,231x3 = 0,693 0 0,693x3 = 2,079 2 0,079x3 = 0,237 0 0,237x3 = 0,711 0 0,711x3 = 2,133 2 0,133x3 = 0,399 0 0,399x3 = 1,197 1 . . . . . . . . . . . . 8 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS A frao ternria obtida atravs das sobras, parte inteira, das multiplicaes escritas na ordem direta de sus obteno. Ento 0, 35910 = 0, 100.200.201 · · ·3. Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se 261, 35910 = 100.200, 100.200.201 · · ·3 Exemplo 3 Converso o nmero decimal 261, 359 para a representao hexa- decimal. Converso: Decimal para hexadecimal Inteira: Diviso sucessiva do nmero decimal por 16 261 16 5 16 16 0 1 O nmero inteiro hexadecimal obtido atravs dos restos das divises escritos na ordem inversa da sua obteno. Ento 26110 = 10516. Frao: Multiplicao sucessiva da frao decimal por 16 Multiplicao Sobra 0,359x16 = 5,744 5 0,744x16 = 11,904 11 0,904x16 = 14,464 14 0,464x16 = 7,424 7 0,424x16 = 6,784 6 0,784x16 = 12,544 12 0,544x16 = 8,704 8 0,704x16 = 11,264 11 0,264x16 = 4,224 4 . . . . . . . . . . . . A frao hexadecimal obtida atravs das sobras, parte inteira, das multipli- caes escritas na ordem direta de sus obteno. Ento 0, 35910 = 0, 5 11 14 7 6 12 8 11 4 · · ·16 ou utilizando-se os smbolos hexadecimais (Tabela 1.1) 0, 35910 = 0, 5BE.76C.8B4 · · ·16 Somando-se as partes inteiras e fracionrias dos binrios obtidos tm-se 261, 35910 = 105, 5BE.76C.8B4 · · ·16 1.4. COMPUTAES NUMRICAS 9 Tabela 1.1: Smbolos Hexadecimais. Grandeza Smbolo decimal hexadecimal 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 A 11 B 12 C 13 D 14 E 15 F Conv10.sce Este roteiro Scilab realiza a converso de inteiros na base 10 para base qualquer. 1. // Converso de inteiros da base 10 para uma base qualquer 2. function y=conv10(x,b) 3. y='' 4. while x > 0 5. cx=modulo(x,b) 6. x=int(x/b) 7. y=string(cx)+'.'+y 8. end 9. endfunction Ao executar o roteiro Conv10.sce pode-se realizar as converses. Aqui esto os resultados: -->conv10(261,2) ans = 1.0.0.0.0.0.1.0.1. --> -->conv10(261,3) ans = 10 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 1.0.0.2.0.0. --> -->conv10(261,16) ans = 1.0.5. --> ConvF10.sce Este roteiro Scilab realiza a converso de fracionrios na base 10 para base qualquer. 1. // Converso de fracionrios da base 10 para uma base qualquer 2. function y=convF10(x,b,n) 3. y='0,' 4. i=0 5. while i < n 6. p=x*b 7. cx=int(p) 8. y=y+string(cx)+'.' 9. x=p-cx 10. i=i+1 11. end 12. endfunction Ao executar o roteiro ConvF10.sce pode-se realizar as converses. Aqui esto os resultados: -->convF10(0.359,2,9) ans = 0,0.1.0.1.1.0.1.1.1. --> -->convF10(0.359,3,9) ans = 0,1.0.0.2.0.0.2.0.1. --> -->convF10(0.359,16,9) ans = 0,5.11.14.7.6.12.8.11.4. --> Conv10X.sce Este roteiro Scilab realiza a converso de um nmero na base 10 para base qualquer (combina Conv10.sce e ConvF10.sce ) . 1.4. COMPUTAES NUMRICAS 11 1. // Converso da base 10 para uma base qualquer: Inteiro + Frao 2. function y=conv10X(xx,b,n) 3. x=int(xx) 4. yi='' 5. while x > 0 6. cx=modulo(x,b) 7. x=int(x/b) 8. yi=string(cx)+'.'+yi 9. end 10. y=yi 11. x=xx-int(xx) 12. yf=',' 13. i=0 14. while i < n 15. p=x*b 16. cx=int(p) 17. yf=yf+string(cx)+'.' 18. x=p-cx 19. i=i+1 20. end 21. y=y+yf 22. endfunction Ao executar o roteiro Conv10X.sce pode-se realizar as converses. Aqui esto os resultados: -->conv10X(261,2,0) ans = 1.0.0.0.0.0.1.0.1., --> -->conv10X(0.359,2,9) ans = ,0.1.0.1.1.0.1.1.1. --> -->conv10X(261.359,2,9) ans = 1.0.0.0.0.0.1.0.1.,0.1.0.1.1.0.1.1.1. --> -->conv10X(261,16,0) ans = 1.0.5., --> -->conv10X(0.359,16,9) ans = ,5.11.14.7.6.12.8.11.4. --> 12 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS -->conv10X(261.359,16,9) ans = 1.0.5.,5.11.14.7.6.12.8.11.4. --> 1.4.3 Converso de uma base qualquer para base 10 Para obter-se o nmero decimal equivalente a um nmero escrito em qualquer base s multiplicar cada dgito por sua potncia: Exemplo 4 261, 35910 ∼= 1.0000.0101, 0101.1011.12 Parte inteira 1 · 28 + 0 · 27 + 0 · 26 + 0 · 25 + 0 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 0 · 20 = 261 Parte fracionria 0 · 2−1 + 1 · 2−2 + 0 · 2−3 + 1 · 2−4 + 1 · 2−5 + 0 · 2−6 + 1 · 2−7+ 1 · 2−8 + 1 · 2−9 ∼= 0, 3574 Erro |261, 359− 261, 3574| = 0, 0016 Exemplo 5 261, 35910 ∼= 100.200, 100.200.2013 Parte inteira 1 · 35 + 0 · 34 + 0 · 33 + 2 · 32 + 0 · 31 + 0 · 30 = 261 Parte fracionria 1 · 3−1 + 0 · 3−2 + 0 · 3−3 + 2 · 3−4 + 0 · 3−5 + 0 · 3−6 + 2 · 3−7+ 0 · 3−8 + 1 · 3−9 ∼= 0, 35899 Erro |261, 359− 261, 35899| = 0, 00001 1.4. COMPUTAES NUMRICAS 13 Exemplo 6 261, 35910 ∼= 105, 5 11 14 7 6 12 8 11 416 ou seja, 261, 35910 ∼= 105, 5BE.76C.8B416 Parte inteira 1 · 162 + 0 · 161 + 5 · 160 = 261 Parte fracionria 5 161 + 11 162 + 14 163 + 7 164 + 6 165 + 12 166 + 8 167 + 11 168 + 4 169 ∼= 0, 35899999999674 Erro |261, 359− 0, 35899999999674| ∼= 3, 24× 10−12 1.4.4 Representao de um nmero inteiro A representao de um nmero inteiro no computador qualquer trabalha in- ternamente com uma base �xa β ≥ 2 um nmero inteiro; sendo geralmente escolhido como uma potncia de 2. Dado um nmero inteiro n ≥ 0, ele possui uma nica representao, n = ±(nknk−1 · · ·n1n0) = ±(nkβk + nk−1βk−1 + · · ·+ n1β1 + n0β0), (1.6) onde os ni, i = 0, 1, · · · , k so inteiros satisfazendo 0 ≤ ni < β e nk 6= 0. Por exemplo, na base β = 10, o nmero 1957 representado por: 1957 = 1× 103 + 9× 102 + 5× 101 + 7× 100 e armazenado como n3n2n1n0. 1.4.5 Representao de um nmero real A representao de um nmero real no computador pode ser feita de duas ma- neiras: a) Representao do ponto �xo Este foi o sistema usado, no passado, por muitos computadores. Sendo ainda usado por ser simples em aplicaes de microprocessadores. Um nmero real, x 6= 0, ele ser representado em ponto �xo por: x = ± −l∑ i=k xiβ i (1.7) 14 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS onde k e l so o comprimento da parte inteira e fracionria do nmero x, res- pectivamente. Por exemplo, na base β = 10, o nmero 1957.325 representado por: 1957.325 = + −3∑ i=3 xiβ i = 1× 103 + 9× 102 + 5× 101 + 7× 100 + 3× 10−1 + 2× 10−2 + 5× 10−3 e armazenado como x3x2x1x0.x−1x−2x−3. b) Representao do ponto-�utuante Em geral, um nmero x na representao do ponto-�utuante tem a forma se- guinte: x = ±m · βk (1.8) onde m = mantissa, um nmero fracionrio em ponto �xo, isto , m = n∑ i=l m−iβ−i (onde l > 0, frequentemente l = 1, tal que se x 6= 0, ento m−1 6= 0; 0 ≤ m−i < β, i = 1, 2, · · · t, com t a quantidade de dgitos signi�cati- vos ou preciso do sistema , β−1 ≤ m < 1 e −m ≤ k ≤M) ; β = base, 2 se o sistemas de numerao for binrio, 10 se o sistema de numerao for decimal, etc.; k = expoente, um inteiro. Observao 1 m−1 6= 0 ou 1 β < m < 1 (signi�ca que devemos ter um digito no nulo aps a virgula) caracteriza o sistema de nmeros em ponto �utuante normalizado. Observao 2 o nmero zero pertence a qualquer sistema e representado com mantissa igual a zero e k = −m. Exemplo 7 Escrever o nmero N = −19.2 · 10−8 em ponto �utuante na forma normalizada. Reescrevendo o nmero para a forma N = −0.192 · 10−6 , o nmero �ca na representao do ponto-�utuante, o expoente igual a -6, a mantissa igual a -0.192 e a base 10. Escrevendo agora os nmeros: x1 = 0.53;x2 = −8.472;x3 = 0.0913;x4 = 35391.3 e x5 = 0.0004 , onde todos esto na base β = 10, em ponto �utuante 1.4.COMPUTAES NUMRICAS 15 na forma normalizada: x1 = 0.53 = 0.53× 100, x2 = −8.472 = −0.8472× 101, x3 = 0.0913 = 0.913× 10−1, x4 = 35391.3 = 0.353913× 105, x5 = 0.0004 = 0.4× 10−3. Para representarmos um sistema de nmeros em ponto �utuante norma- lizado, na base β, com t dgitos signi�cativos e com limites do expoente m e M , usa-se a notao: FN (β, t,m,M). Um nmero em FN (β, t,m,M) ser representado por: ±0.m−1m−2m−3 · · ·m−t × β−k (1.9) onde m−1 6= 0 e −m ≤ k ≤M . Exemplo 8 Considere o sistema FN (10, 3, 2, 2). Represente nesse sistema os nmeros do exemplo anterior. Soluo: Os nmero sero representado por ±0.m−1m−2m−3 · · ·m−t × β−k, onde −2 ≤ k ≤ 2. Ento: x1 = 0.53 = 0.53× 100, x2 = −8.472 = −0.8472× 101, x3 = 0.0913 = 0.913× 10−1, x4 = 35391.3 = 0.353913× 105, x5 = 0.0004 = 0.4× 10−3. Observe que os nmeros x4 = 35391.3 e x5 = 0.0004 no podem ser re- presentados no sistema. De fato, o nmero 35391.3 = 0.353913 × 105 tem o expoente maior que 2, causando over�ow, por outro lado 0.0004 = 0.4×10−3 e assim o expoente menor que −2 causando under�ow. Exemplo 9 Diferena entre dois nmeros na aritmtica em ponto �utuante normalizado. 0.27143247 · 107 −0.27072236 · 107 0.00071011 · 107 Vemos que a diferena entre estes dois nmeros ponto-�utuante normali- zados, resulta num nmero em ponto-�utuante no normalizado. Podemos, entretanto, normaliza-lo se deslocarmos o ponto trs lugares direita e somar -3 ao expoente, obtendo-se 0.71011000 · 104 normalizado. 16 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 1.4.6 Armazenamento na memria Para comear vamos representar o nmero 0.00053474839 num computador de- cimal. A notao ponto-�utuante normalizada deste nmero 0.53474839 ·10−3. Par evitar expoente negativo, ns adicionamos, arbitrariamente, 50 (desloca- mento) ao expoente e o nmero agora 0.53474839 ·1047. O expoente somado a uma constante arbitrria chamado de caracterstica. O nmero pode ser re- presentado, unicamente, atravs da normalizao da notao ponto-�utuante, na memria do computado utilizando o esquema de representao seguinte: + 5 3 4 7 4 8 3 9 4 7 ↘ ↘ sinal caracterstica = expoente + 50 Deve ser observado que a caracterstica coloca o expoente limitado a ex- presso seguinte: −50 ≤ k ≤ 49. O nmero tem o mximo de oito dgitos de preciso e a representao falha quando temos nmeros muito grande ou muito pe- queno. De modo anlogo, um nmero binrio na representao do ponto-�utuante tambm pode ser armazenado na memria de um computador digital. Uma palavra armazenada tendo um bit de "sinal"e 31 bits regulares pode repre- sentar um nmero binrio ponto-�utuante na forma seguinte: 0 1 8 9 31 sinal caracterstica mantissa normalizada onde sinal = sinal do nmero codi�cado, 0 se positivo e 1 se negativo; caracterstica = 128 + expoente (resultado escrito em binrio); mantissa = frao binria normalizada. Exemplo 10 Represente o nmero 12.625 numa palavra de 32 bits conforme esquema de representao acima. 12 2 0 6 2 0 3 2 1 1 Multiplicao Sobra 0.625x2 = 1.25 1 0.25 x2 = 0.50 0 0.5 x2 = 1.0 1 12.62510 = 1100.1012 = 0.1100101× 24 1.4. COMPUTAES NUMRICAS 17 Ajustando a caracterstica: 4 + 128 = 132 132 2 0 66 2 0 33 2 1 16 2 0 8 2 0 4 2 0 2 2 0 1 13210 = 100001002 0 1 8 9 31 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 . . . . . . 0 1.4.7 Aritmtica do ponto-�utuante Os princpios das operaes aritmticas bsicas de um computador sero discuti- dos agora. Para isto iremos considerar que estamos trabalhando num com- putador decimal com uma palavra de 10 dgitos de comprimento. Princpios semelhantes so utilizados em computadores binrios (digitais). Na adio ou subtrao de dois nmeros o computador examina a caracterstica ajustada dos dois nmeros. Os seguintes casos so possveis: 1- Caractersticas iguais: Adiciona-se as mantissas e mantm-se a carac- terstica. 32109876 54 +12340123 54 44449999 54 2- Quando existe estouro (over�ow) na adio das mantissas: O resultado ser ajustado. 51319212 55 +98756431 55 150075643 55 ↘ ↘ estouro caracterstica Resulta em: 18 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 15007564 56 ↘ caracterstica ajustada 3- Caractersticas distintas: Mantm-se a de maior mdulo e ajusta-se a de menor valor. 31411122 55 31411122 55 +12344321 53 −→ +00123443 55 31534565 55 4- Resultado com zero, ou zeros, esquerda: Normaliza-se o resultado. 34122222 73 −34000122 73 00122100 73 resulta em: 12210000 71 Na multiplicao e diviso as mantissas e caractersticas so tratadas separa- damente. 31313142 51 ×12315782 65 mantissa = 0.31313142× 0.12315782 = 0, 038564583 caracterstica = 51+65− 50 = 66, onde −50 o desconto para compensar o ajuste +50 em cada ajuste do expoente da representao. A produto : 31313142 51× 12315782 65 = 038564583 66 Com a normalizao obtm-se o resultado: 38564583 65 1.5 Anlise de erros Resultados exatos dos clculos so um supremo ideal em anlise numrica. Qua- tro tipos de erro afetam a exatido dos clculos [1]: erros de modelo, erros de dados, erros de algoritmos e erros de arredondamento. A maioria da litera- tura em lngua inglesa faz classi�cao diferente. Estes erros no so conseqncias de equvocos ou decises precipitadas. Diferente, por exemplo, de erros de programao, eles so inevitveis. Em muitos casos eles podem ser antecipados, e requerimentos de exatido podem ser impostos, i.e., eles podem ser contro- lados para permanecerem abaixo de certos limites de erros. Os limites de 1.5. ANLISE DE ERROS 19 erro so parte da especi�cao do problema numrico: |Erros do modelo + erros dos dados + erros de algoritmos + erro de arredondamento| ≤ tolerncia Todos os erros relevantes tm que ser identi�cados e seus efeitos nos re- sultados numricos devem ser avaliados. Nas sees seguintes os quatro tipos de erros so caracterizados. 1.5.1 Erros de modelo Em qualquer processo de modelagem, vrias grandezas so desprezadas. O modelo resultante uma abstrao da realidade e vrios modelos podem ser utilizados. O desvio inevitvel entre o modelo e o objeto modelado denotado por erro de modelagem. necessrio estimar a magnitude dos efeitos dos erros de modelagem para garantir os requisitos de tolerncia de erro. Normalmente tais estimativas no so obtidas pois os fatores envolvidos so desconhecidos e no quanti�cados. 1.5.2 Erro de dados Geralmente modelos no so para uma aplicao espec�ca, mas para uma classe de aplicaes similares. Uma instncia identi�cada por valores de parmetros do modelo. Por exemplo, o comprimento l, o deslocamento angular inicial θ e a constante gravitacional g (que depende da localizao geogr�ca) so parmetros do modelo matemtico do pndulo simples. Devido a medies inexatas e outros fatores, os valores usados para parmetros do modelo diferem do verdadeiro valor (normalmente desconhecido); isto chamado de erro de dados. Os impactos dos erros de dados so objetos de anlise. 1.5.3 Erro de algoritmo Quando um problema matemtico no pode ser resolvido analiticamente usando manipulaes algbricas, ento pode ser tentada uma soluo por algoritmo num- rico. No desenvolvimento de algoritmos numricos so feitas simpli�caes antes que uma formulao �nita do problema possa ser obtida para que o esforo com- putacional requerido seja reduzido a um nvel razovel. O desvio resultante dos resultados obtidos pelo algoritmo dos da soluo do problema matemtico denotado por erro de algoritmo. Exemplo: A soluo do sistema de equaes Ax = b, A ∈ Rnxn, b, x ∈ Rn 20 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS requer um esforo computacional proporcional a n3. Se uma soluo aproximada x˜ satisfazendo ||Ax˜− b|| < � su�ciente, o custo computacional pode ser reduzido signi�cativamente. Se A no possui estrutura especial, ento somente k ≈ √κ2 ln(2/�) 2 , κ2 := ‖A‖2 ∥∥A−1∥∥2 multiplicaes matriz-vetor so necessrias para soluo iterativa [3]. O nmero κ2 o nmero condio euclidiano da matriz A (ver seo 13.8 [1]). 1.5.4 Erro de truncamento Algoritmos numricos implantados em um computador podem somente re- alizar uma seqncia �nita de operaes aritmticas (adio, subtrao, multiplicao, diviso e lgicas). Para calcular funes prede�nidas sin, exp, ln, . . . somente uma seqncia �nita de operaes aritmticas so executados pelo computador. O erro devido a troca de um processo in�nito por uma seqncia �nita de operaes aritmticas chamado de erro de truncamento. Exemplo 11 A troca da srie in�nita da exponencial: ex = ∞∑ k=0 xk k! com Pn(x) = n∑ k=0 xk k! produz um erro de truncamento etrunc(x) := Pn(x)− cos(x) que cresce com a distncia entre x e zero. 1.5.5 Erros de discretizao O erro resultante de uma troca de informao contnua por informao discreta, num processo de amostragem, referido como erro de discretizao. Muitos autores estendem o termo erro de truncamento para incluir o erro de discre- tizao. Exemplo 12 O clculo de uma integral de�nida I = ∫ b a f(x)dx so aproximados por somas �nitas envolvendo uma malha de pontos xi ∈ [a, b], i = 1, 2, · · ·n que pertencem ao conjunto de nmeros de pontos �utuan- tes e as correspondentes avaliaes aproximadas das funes {f(x1), · · · f(xn)}. 1.5. ANLISE DE ERROS 21 Os erros de arredondamento comprometem a exatido dos resultados quando tenta-se minimizar os erros de truncamento re�nando-se a malha de discre- tizao. 1.5.6 Erros de arredondamento Um computador fornece somente um conjunto �nito de nmeros: inteiros, e nmero de ponto-�utuante com mantissa de comprimento �xo. Desta forma as operaes feitas num programa de computador no so geralmente executa- das exatamente. Cada passo mapeia seu resultado em um dos nmeros de ponto-�utuante disponveis, normalmente o mias prximo. A diferena entre o resultado exato e o resultado arredondado de uma operao chamado de erro de arredondamento. O efeito dos erros de arredondamento acumulados sobre o resultado �nal do mtodo de aproximao chamado de efeito de erro de arredondamento. 1.5.7 Estudo de caso interessante ilustrar diferentes tipos de erro mais explicitamente [13]. Su- ponha que se quer computar f(x) para um dado x real. No clculo prtico x aproximado por x˜ pois o computador tem uma palavra �nita. A dife- rena entre x˜ − x o erro inicial, enquanto �1 = f(x˜) − f(x) o erro propa- gado correspondente. Normalmente f trocado por uma funo mais simples f1 (freqentemente uma expanso em srie de potncia truncada). A diferena �2 = f1(x˜)− f(x˜) o erro de truncamento. Os clculos so feitos por um com- putador, portanto no so operaes exatas. Na realidade calculamos f2(x˜) no lugar de f1(x˜), o qual um valor calculado errado de uma funo errada com argumento errado. A diferena �3 = f2(x˜)− f1(x˜) o erro de arredondamento propagado. O erro total � = f2(x˜)− f(x) = �1 + �2 + �3. Exemplo 13 Calcular e1/3 fazendo todos os clculos com 4 decimais. (Obs. Os clculos foram feitas com uma calculadora) �1 = e 0.3333 − e1/3 = −0.000465196 ex ≈ f1(x) = 1 + x 1! + x2 2! + x3 3! + x4 4! para x˜ = 0.3333 �2 = f1(x˜)− f(x˜) = − ( 0.33335 5! + 0.33336 6! + · · · ) = −0.0000362750 22 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS f2(x˜) = 1 + 0.3333 + 0.0555 + 0.0062 + 0.0005 = 1.3955 f1(x˜) = 1.3955296304 obtidos com 10 decimais �3 = −0.0000296304 � = 1.3955− e1/3 = �3 + �3 + �3 = −0.0001124250 1.6 Propagao de erros Os erros so de�nidos como absoluto e relativo. Se x o nmero exato e x˜ uma aproximao, ento temos: Erro absoluto : � = |x− x˜| (1.10) e Erro relativo : ∣∣∣ � x ∣∣∣ = ∣∣∣∣x− x˜x ∣∣∣∣ , (1.11) Um nmero decimal arredondado na posio n desprezando-se todos os dgi- tos direita desta posio. O dgito na posio n deixado inalterado ou acrescido de uma unidade se o dgito da posio n+ 1 um nmero menor que 5 ou maior que 5. Se o nmero na posio n+1 for igual a 5, o digito na posio n acrescido de uma unidade se ele for par e deixado inalterado se for impar ( a regra pode ser o contrrio: o digito na posio n acrescido de uma unidade se ele for impar e deixado inalterado se for par ) . Frequentemente feito o truncamento para n decimais onde todos os dgitos alm da posio n so simplesmente desprezados. Exemplo 14 3.1415926535 Arredondamento: 3.14 (2d) 3.141 (3d) 3.1416 (4d) 3.1415927 (7d) onde (nd) = nmero de casas decimais. 1.6. PROPAGAO DE ERROS 23 Pode-se dizer de forma simplria que dgitos signi�cativos so aqueles que tm informao sobre a dimenso do nmero sem contar com a parte exponencial. Naturalmente um dgito d localizado mais esquerda tem mais informao do que um mais direita. Quando um nmero escrito com somente seus dgitos signi�cativos estes formam uma cadeia de smbolos que comea com o primeiro dgito diferente de zero. Portanto se a parte fracionria termina com um ou vrios zeros, eles so signi�cativos por de�nio. Se o nmero inteiro e termina com zeros, somente com o conhecimento da situao que podemos decidir se eles so signi�cativos ou no. Por exemplo, 8630574 escrito com 4 dgitos sig- ni�cativos 8630000. Em muitos casos ns estimamos o erro de uma funo f(x1, x2, . . . , xn) com erros individuais nas variveis (x1, x2, ..., xn) conhecidos. Ns encontramos diretamente que ∆f = ∂f ∂x1 ∆x1 + ∂f ∂x2 ∆x2 + · · ·+ ∂f ∂xn ∆xn (1.12) onde os termos de ordem superior foram desprezados. O erro mximo dado por |∆f | = ∣∣∣∣ ∂f∂x1 ∣∣∣∣ |∆x1|+ ∣∣∣∣ ∂f∂x2 ∣∣∣∣ |∆x2|+ · · ·+ ∣∣∣∣ ∂f∂xn ∣∣∣∣ |∆xn| (1.13) O limite superior do erro geralmente bastante pessimista, em computaes prticas os erros tm uma tendncia a cancelar [13]. Por exemplo, se 20000 nmeros so arredondados com quatro casa decimais e adicionados, o erro mximo 1 2 × 10−4 × 20000 = 1 O experimento com simulao Monte Carlo abaixo demonstra que a previso acima pessimista para o cenrio examinado. Exemplo 15 Clculo de z = x y . Se x˜ = x+δ e y˜ = y+γ so duas aproximaes para os nmeros exatos x e y. Calcula-se z = ( x y ) arredondado = x˜ y˜ = x+ δ y + γ + � ento z˜ ∼= z + 1 y · δ − x y2 · γ + � 24 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS Caso A: x = 8 δ = 0.009 y = 5 δ = 0.04 x˜ = x+ δ y˜ = y + γ x y = 1.6 x˜ y˜ = 1.589 z + 1 y · δ − x y2 · γ + � = 1.589 Caso B: x = 8 δ = −0.07 y = 5 δ = 0.08 x˜ = x+ δ y˜ = y + γ x y = 1.6 x˜ y˜ = 1.561 z + 1 y · δ − x y2 · γ + � = 1.56 O erro em z˜ constitudo dos erros propagados de x e y acrescido de um novo erro de arredondamento. 1.6.1 Cancelamento numrico Devido ao comprimento limitado das palavras em computadores, e em con- seqncia do uso da aritmtica do ponto-�utuante com representao normalizada, as leis da aritmtica elementar no so satisfeitas. Os efeitos do uso da aritmtica do ponto-�utuante sero vistos em alguns exemplos que seguem. Os exemplos a seguir violam a lei associativa da adio: Exemplo 16 (usando-se uma mquina com quatro dgitos decimais na man- tissa da representao) x = 9.909 y = 1.000 z = −0.990 (x+ y) + z = 10.90 + (−0.990) = 9.910 x+ (y + z) = 9.909 + (0.010) = 9.919 1.6. PROPAGAO DE ERROS 25 Exemplo 17 (usando-se uma mquina com quatro dgitos decimais na man- tissa da representao) x = 4561 y = 0.3472 (y + x)− x = (−0.3472 + 4561)− 4561 = 4561− 4561 = 0.0000 y + (x− x) = 0.3472 + (4561− 4561) = 0.3472 + 0.0000 = 0.3472 Vejamos agora um exemplo (usando-se uma mquina com quatro dgitos decimais na mantissa da representao) que viola a lei distributiva. Exemplo 18 x = 9909 y = −1.000 z = 0.999 (x× y) + (x× z) = −9909 + 9899 = −10.00 x× (y + z) = 9909× (−0.0001) = −9, 909 Exemplo 19 A equao do segundo grau x2 − b· x+ � = 0 tem duas solues: x1 = b+ √ b2 − 4� 2 e x2 = b−√b2 − 4� 2 Se b < 0 e � << b , x2 expresso como a diferena de dois nmeros prati- camente iguais e poder perder muitos dgitos signi�cativos. Se x2 for reescrito como: x2 = � x1 = 2� b+ √ b2 − 4� a raiz aproximadamente � b sem perda de dgitos signi�cativos. Usando-se uma mquina com quatro dgitos decimais na mantissa da repre- sentao: b = 300.0 e � = 1.000√ 90000− 4.000 = 300.0 x1 = 600.0 2.000 = 300.0 x2 = 300.0− 300.0 2.000 = 0.0000 2.000 = 0.0000 usando a relao x2 = � x1 = 1.000 300.0 = 0.0033 um resultado mais preciso. 26 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS Exemplo 20 Sabe-se que para x grande senh(x) ∼= cosh(x) ∼= e x 2 . Se qui- sermos calcular e−x podemos dizer que e−x = cosh(x)− senh(x), o que con- duz a um cancelamento perigoso. Por outro lado e−x = 1 cosh(x) + senh(x) fornece resultados mais precisos. 1.6.2 Aritmtica intervalar O clculo de erro de arredondamento estimado por aproximao de primeira ordem, descrito no �nal da indroduo da seo 1.6 acima, so inviveis para serem utilizados em mtodos numricos tpicos onde o nmero de operaes aritmticas muito grande para permitir uma estimativa satisfatria do efeito total de to- dos os erros de arredondamentos. A aritmtica intervalar uma alternativa para determinar limites para o erro absoluto de um algoritmo, considerando todos erros de dados e arredon- damento. A aritmtica intervalar faz clculos sistemticos atravs de intervalos [x] = [x, x] limitados de nmeros de mquinas x, x ∈ F, em vez de nmeros reais simples x. As operaes aritmticas +, −, ×, ÷ so de�nidas atravs de intervalos. Algoritmos intervalares so implementados em computadores pro- duzindo resultados intervalares garantidos conterem a soluo desejada. A aritmtica intervalar deve ser usada com bastante senso crtico, caso contrrio os resultados con�veis de limites de erro sero, na maioria das vezes, muito pessimsticos. Exemplo 21 Calcule y = x3 − 3x2 + 3x para [x] = [0.9, 1.1] ? Pelo esquema de Horner y = ((x− 3)x+ 3)x [y] = [0.6209, 1.4191] (muito largo) usando y = 1 + (x− 3)3 [y] = [0.9989, 1.0011] (resultado o´timo) Para o sucesso da aplicao da aritmtica intervalar necessrio desenvolver novos algoritmos que produzam limites de erros aceitveis. Um tratamento mais profundo da aritmtica intervalar pode ser visto em Moore [5], Alefeld [6] e Kulish [7] (para incluso dos arredondamentos direcionados da aritmtica de ponto �utuante). 1.6.3 Estimativa estatstica de erros de arredondamento Para obteno de estimativas estatsticas de erros de arredondamento relativo (ver Rademacher [8]) que causado por uma operao elementar, seus resultados 1.6. PROPAGAO DE ERROS 27 so considerados uma varivel aleatria no intervalo [−eps, eps] onde |�| ≤ eps . Alem disso assume-se que os erros de arredondamento atribudos as operaes diferentes so variveis independentes. Por µ� e σ 2 � denota-se o valor esperado e varincia da distribuio do arredondamento. Eles satisfazem as seguintes relaes gerais σ2� = E(�− E(�))2 = E(�2)− ((E(�))2 = µ�2 − µ2� Assumindo uma distribuio uniforme no intervalo [−eps, /eps], obtm-se µ� := E(�) = 0, σ 2 � = E(� 2) = 1 2 eps ∫ eps −eps t2dt = 1 3 eps2 =: �−2 (1.14) Exames rigorosos mostram que a distribuio de arredondamento no muito uniforme (ver Sterbenz [9]). Deve-se ter em mente que o padro ideal do erro de arredondamento somente uma aproximao do padro observado em clculos computacionais, assim os as estimativas de µ� e σ 2 � devem ser determinadas empiricamente. Os resultados x dos algoritmos estando sujeitos a erros de arredondamento aleatrios tornam-se variareis aleatrias com valor esperado µx e varincia σ 2 x satisfazendo a mesma relao bsica σ2x = E(x− E(x))2 = E(x2)− ((E(x))2 = µx2 − µ2x Os efeitos da propagao de erros de arredondamento das operaes elementa- res so descritas pelas seguintes frmulas para variveis aleatrias independentes x, y e constantes α, β ∈ R: µαx±βy = E(αx± βy) = αE(x)± βE(y) = αµx ± βµy σ2αx±βy = E((αx± βy)2)− (E(αx± βy))2 = α2E(x− E(x))2 + β2E(y − E(y))2 = α2σ2x + β2σ2y (1.15) A primeira frmula acima resulta da linearidade do valor esperado. Ela valida para variveis aleatrias x, y. A segunda frmula segue da relao E(xy) = E(x) · E(y), que satisfeita se x e y so independentes. Assim µx×y = E(x× y) = E(x)E(y) = µxµy σ2x×y = E(x× y − E(x)E(y))2 = µx2µy2 − µ2xµ2y = σ2xσ 2 y + µ 2 xσ 2 y + µ 2 yσ 2 x (1.16) Alem disso os valores esperados µx so trocados por valores estimados x e varincias relativas �2x = σ 2 x/µ 2 x ≈ σ2x/x2 so considerados, ento de (1.15) e (1.16): z = x+ y ou z = x− y : �2z =˙ (xz )2�2x + (yz )2�2y + �¯2 z = x× y ou z = x÷ y : �2z =˙ �2x + �2y + �¯2 28 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS Os limites de erros para o resultado �nal r de uma computao numrica so obtidos da varincia relativa �2r , assumindo que o erro �nal tem distribuio normal. Esta suposio justi�cada uma vez as distribuies dos erros propagados tendem a ser normal se sujeitas as muitas operaes elementares. Supondo o resultado �nal ser normal, o erro relativo do resultado �nal r limitado com probabilidade 0.9 por 2�r 1.7 Padronizao do sistema de nmeros de ponto �u- tuante Padres internacionais so desenvolvidos pelo ISO (International Standardization Organization) com suas organizaes nacionais a�liadas de padronizao (ABNT - Associao Brasileira de Normas Tcnicas) . Um caso especial o campo da engenharia eltrica e eletrnica, na qual os padres so desenvolvidos pela IEC (International Electrotecnical Commission). Nos anos 70 tentou-se desenvolver padres para a aritmtica de ponto �utu- ante binria para microcomputadores. Um dos principais objetivos era tornar programas mias portveis para que tcnicas de programao particulares usadas para tratar erros de arredondamento excees (e.g. , over�ow de expoentes) fossem efetivas para arquiteturas de computadores diferentes. Aps lenta negociao, a sociedade americana de computadores IEEE (Ins- titute of Electrical and Eletronics Engineers) adota o padro IEE 754-1985, o padro para a aritmtica de ponto �utuante binria (abreviadamente IEEE- 754). Em 1984 o IEC decide considerar este padro nacional um padro in- ternacional , IEC 559:1989 da aritmtica de ponto �utuante para sistemas de microcomputadores. O padro relacionado IEEE 854-1987 generaliza 754 para cobrir tanto decimal como binrio. Padro IEEE 754 ponto �utuante a representao mais comum hoje em dia para os nmeros reais em computadores, incluindo PC com processador Intel, Macintoshes e a maioria das plataformas Unix. 1.7.1 O que so os nmeros em ponto �utuante? Existem vrias maneiras de representar nmeros reais em computadores. A re- presentao do ponto �xo coloca um ponto (potncia) em algum lugar no meio dos dgitos, e equivalente ao uso de nmeros inteiros que representam partes de unidades. Por exemplo, pode representar um centsimo (1/100) de uma unidade, com quatro dgitos decimais, pode-se representar 32.45 ou 00.03. Outra possibilidade usar racionais e representar cada nmero como a razo entre dois inteiros. 1.7. PADRONIZAODO SISTEMADE NMEROS DE PONTO FLUTUANTE29 A representao de ponto �utuante - a soluo mais usual - basicamente re- presenta reais em notao cient�ca. A notao cient�ca representa os nmeros como um nmero de base e um expoente. Por exemplo, 123.123 pode ser representado como 1.23123× 102. Em hexadecimal, o 123.FAC nmero pode ser representado como 1.23FAC× 162. A representao de ponto �utuante resolve alguns problemas de represen- tao. O Ponto �xo tem uma janela �xa de representao, o que limita de repre- sentar nmeros muito grandes ou muito pequenos. O ponto�xo propenso a uma perda de preciso quando dois grandes nmeros so divididos. A representao de ponto �utuante emprega uma �janela deslizante� de preciso adequada escala do nmero. Isso permite que ele represente nmeros de 0, 0000000000000001 e 1.000.000.000.000 com facilidade. 1.7.2 Esquema de armazenamento Os nmeros de ponto �utuante IEEE tem trs componentes bsicos: o sinal, o expoente e a mantissa. A mantissa composta por frao e um dgito lder implcito (explicado abaixo). A base do expoente (2) implcita e no precisa ser armazenado. A tabela a seguir mostra os esquemas de armazenamento de preciso sim- ples (32 bits) e preciso dupla (64 bits)s de ponto �utuante. O nmero de bits para cada campo so mostradas (intervalo dos bits esto entre colchetes): Preciso Sinal Expoente Frao Deslocamento Simples 1 [0] 8 [1-8] 23 [9-31] 127 Dupla 1 [0] 11 [1-11] 52 [12-63] 1023 Gra�camente: 0 1 8 9 31 sinal caracterstica mantissa e 0 1 11 12 63 sinal caracterstica mantissa 30 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS O bit de sinal O bit de sinal simples: 0 denota um nmero positivo; 1 denota um nmero negativo. Invertendo-se o valor deste bit inverte o sinal do nmero. O expoente O campo de expoente precisa representar expoentes positivos e negativos. Para fazer isso, um deslocamento adicionado ao verdadeiro expoente, a �m de se obter o expoente de armazenamento. Para IEEE de preciso simples, este valor de 127. Assim, um expoente zero signi�ca que 127 armazenado no campo de expoente. Um valor armazenado de 150 indica um expoente de (150-127), ou 23. Por razes apresentadas mais tarde,os expoentes de −127 (todos bits 0's) e 128 (todos bits 1's) so reservados para nmeros especiais. Para preciso dupla, o campo de expoente tem 11 bits e um deslocamento de 1023. A mantissa A mantissa, tambm conhecida como o signi�cando, representa os bits de pre- ciso do nmero. composto de um bit implcito e os bits da frao. Para saber o valor do bit lder implcito, considerar que qualquer nmero pode ser expresso em notao de ponto �utuante de muitas maneiras diferentes. Por exemplo, o nmero 4957 pode ser representado por qualquer uma dessas: 4957× 100 0.4957× 104 4.957× 103 0.004957× 106 Para maximizar a quantidade de nmeros representveis, os nmeros de ponto �utuante so normalmente armazenados na forma normalizada. Na forma normalizada 4957 representado como 4.957× 103. Uma otimizao pequena e agradvel est disponvel na base dois, j que a nica forma possvel do dgito zero 1. Pode-se supor apenas um dgito de 1, e no precisa-se represent-lo explicitamente. Como resultado, a mantissa tem efetivamente 24 bits de resoluo com frao de 23 bits. Ressumindo: 1. O bit de sinal 0 para positivo, 1 para o negativo. 2. A base do expoente dois. 1.7. PADRONIZAODO SISTEMADE NMEROS DE PONTO FLUTUANTE31 3. O campo de expoente contm 127 mais o verdadeiro expoente de preciso simples ou 1023 mais verdadeiro para o expoente de preciso dupla. 4. O primeiro bit da mantissa geralmente assumida como 1.f , onde f o campo frao de bits. Intervalo de nmeros de ponto �utuante O intervalo de nmeros positivos de ponto �utuante podem ser divididos em nmeros normalizados (que preserva toda a preciso da mantissa), e os nmeros desnormalizados (discutido mais tarde) que usam apenas uma poro de preciso da mantissa. • Nmeros positivos normalizados so de�nidos dentro da faixa de: 2(1−deslocamento) at (2− 2−precisa˜o)× 2deslocamento. • Nmeros negativos normalizados so de�nidos dentro da faixa de: −2(1−deslocamento) at −(2− 2−precisa˜o)× 2deslocamento. • Nmeros positivos normalizados superiores (2−2−precisa˜o)×2deslocamento e nmeros negativos normalizados inferiores−(2−2−precisa˜o)×2deslocamento so transbordados (over�ows). • Nmeros positivos normalizados menores que 2(1−deslocamento) e nmeros negativos normalizados maiores que −21−deslocamento so insu�- cientes (under�ows). Preciso Desnormalizados Normalizados Simples ±2−149 ≈ ±10−44.85 ate´ (1− 2−23)× 2126 ≈ 1037.93 ±2−126 ≈ ±10−37.93 ate´ (2− 2−23)× 2127 ≈ 1038.53 Dupla ±2−1074 ≈ ±10−323.31 ate´ (1− 2−52)× 21022 ≈ 10307.65 ±2−1022 ≈ ±10−307.65 ate´ (2− 2−52)× 21023 ≈ 10308.25 Dado que o sinal dos nmeros de ponto �utuante dado por um bit lder especial, o intervalo de nmeros negativos dado pela negao dos valores acima. H cinco diferentes intervalos numricos que a preciso simples de nmeros de ponto �utuante no so capazes de representar: • Nmeros negativos menores do que −(2− 2−23)× 2127. (over�ow nega- tivo) • Nmeros negativos maiores do que −2−149. (under�ow negativo) • Zero. 32 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS • Nmeros positivos menores do que 2−149. (under�ow positivo) • Nmeros positivos superiores (2− 2−23)× 2127. (over�ow positivo) Over�ow signi�ca que os valores so muito grande para a representao, e assim, da mesma forma que os inteiros podem transbordar. Under�ow um problema menos grave, porque ele apenas denota uma perda de preciso, que garantido ser muito prximo de zero. Segue uma tabela com o intervalo efetivo (excluindo valores in�nitos) de nmeros IEEE de ponto �utuante: Preciso Binrio Decimal Simples ±(2− 2−23)× 2127 ≈ ±1038.53 Dupla ±(2− 2−52)× 21023 ≈ ±10308.25 Observao 3 Note-se que os valores extremos ocorrem (independentemente do sinal), quando o expoente o valor mximo para os nmeros �nitos (2127 para preciso simples, 21023 para o dupla), e, a mantissa est completa de 1's (incluindo 1 bit da normalizao). 1.7.3 Valores Especiais IEEE reserva valores do campo expoente com todos 0's e 1's para representar todos os valores especiais no sistema de ponto �utuante. Zero Como mencionado acima, o zero no diretamente representvel no formato direto, devido suposio de um 1 esquerda (que seria preciso especi�car numa mantissa zero real para produzir o valor de zero). Zero um valor especial denotado com um campo de expoente zero e um campo de mantissa zero. Observe que −0 e 0 so valores distintos, embora ambos so comparados como iguais. Desnormalizados Se o expoente todo de 0's, mas a mantissa for diferente de zero (o que poderia ser interpretado como zero), ento o valor um nmero desnormalizado, que no tem um lder assumido 1 antes do ponto binrio. Portanto representa um nmero (−1)s × 0.m × 2−126, onde s o bit de sinal e m a mantissa. Para preciso dupla, desnormalizada nmeros so da forma (−1)s × 0.m × 2−1022. A partir disto se pode interpretar o zero como um tipo especial de nmero desnormalizado. 1.7. PADRONIZAODO SISTEMADE NMEROS DE PONTO FLUTUANTE33 In�nito Os valores (+)in�nito (+∞) e (-)in�nito (−∞), so indicados com um expo- ente de 1's e uma mantissa de 0's. O bit de sinal faz a distino entre in�nito positivo e in�nito negativo. Ser capaz de denotar o in�nito como um valor espec�co til porque permite as operaes para tratar de situaes de estouro (over�ow). As operaes com valores in�nitos so bem de�nidas no IEEE de ponto �utuante. No um nmero O valor NaN (Not a Number) usado para representar um valor que no repre- senta um nmero real. NaN so representados por um padro de bits com um expoente de 1's e uma mantissa diferente de zero. Existem duas categorias de NaN: QNaN (Quiet NaN) e SNaN (Sinalizao NaN). A QNaN um NaN com o conjunto mais signi�cativo de bits na mantissa. QNaN propaga livremente atravs da maioria das operaes aritmticas. Estes valores saltam de uma operao quando o resultado no de�nido matematica- mente. Um SNaN um NaN com o bit mais signi�cativo da mantissa limpa. Ela usada para sinalizar uma exceo quando utilizado em operaes. SNaN pode ser til para atribuir a variveis no inicializadas como armadilha de uso prematuro. Semanticamente, QNaN denotam operaes indeterminadas, enquanto SNaN denotam operaes invlidas. 1.7.4 Parmetrosde um sistema de nmero de ponto-�utuante A notao de um sistema de ponto �utuante F(β, t, m, M, dnorm) Quatro parmetros e um valor booleano: 1. Base: β ≥ 2 2. Preciso: t ≥ 2 3. menor expoente: m < 0 4. maior expoente: M > 0 5. indicador de normalizao: dnorm ∈ booleano 34 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS dnorm = true caso o sistema contenha nmeros denormalizados (sub-normal) = false para o sistema normalizado caracterizam cada sistema de nmeros IEEE/IEC A notao de um sistema de ponto �utuante F(β, t, m, M, dnorm) satis- faz as seguintes relaes F(b, p, emin, emax, true) = FN (b, p, emin, emax) ∪ FD(b, p, emin, emax) F(b, p, emin, emax, false) = FN (b, p, emin, emax). Exemplo 22 (Intel) De acordo com a norma IEC/IEEE os sistemas de nu- merao utilizados nos microprocessadores Intel so F(2, 24,−125, 128, true) e F(2, 53,−1021, 1024, true) para preciso simples e preciso dupla. Micropro- cessadores Intel tm preciso estendida F(2, 64,−16381, 16384, true). Exemplo 23 (IBM System/390) Fornece trs sistemas de numerao hexa- decimal F(16, 6,−64, 63, false) para short precision, F(16, 14,−64, 63, false) para long precision e F(16, 28,−64, 63, false) para extended precison. Exemplo 24 (Cray) Fornece dois sistemas de numerao F(2, 48,−16384 , 8191, false) e F(2, 96,−16384, 8191, false). Exemplo 25 (Calculadoras) Calculadoras cienti�cas so normalmente for- necidas com um nico sistema de numerao F(10, 10,−98, 100, false). Algu- mas trabalham com maior preciso interna enquanto exibem somente dez casas decimais. Exemplo 26 Sabemos que os nmeros reais podem ser representados por uma reta contnua. Entretanto, em ponto �utuante podemos representar apenas pontos discretos da reta real. Para ilustrar este fato consideremos o seguinte exemplo. Quantos e quais nmeros podem ser representados no sistema FN (2, 3, 1, 2)? Soluo: Temos que β = 2 ento os dgitos podem ser 0 ou 1; m = 1 e M = 2 ento −1 ≤ k ≤ 2 e t = 3. Ento os nmeros so da forma: ±0.m1m2m3 × βk. Tem-se duas possibilidades para o sinal, uma possibilidade para m1, duas para m2 , duas para m3 e quatro para as formas de β k . Fazendo o produto 2 · 1 · 2 · 2 · 4 obtm-se 32. Portanto neste sistema pode-se representar 33 1.7. PADRONIZAODO SISTEMADE NMEROS DE PONTO FLUTUANTE35 nmeros visto que o zero faz parte de qualquer sistema. Para responder quais so os nmeros lista-se as formas da mantissa: 0.100, 0.101, 0.110 e 0.111 e as formas de βk so: 2−1, 20, 21 e 22. Tem-se ento os seguintes nmeros: 0.100(2) × 2−1 20 21 22 = 0.25(10) 0.5(10) 1.0(10) 2.0(10) desde que 0.100(2) = 0.5(10); 0.101(2) × 2−1 20 21 22 = 0.3125(10) 0.625(10) 1.25(10) 2.5(10) desde que 0.101(2) = 0.625(10); 0.110(2) × 2−1 20 21 22 = 0.375(10) 0.75(10) 1.5(10) 3.0(10) desde que 0.110(2) = 0.75(10); 0.111(2) × 2−1 20 21 22 = 0.4375(10) 0.875(10) 1.75(10) 3.5(10) desde que 0.111(2) = 0.875(10); Exemplo 27 Considerando o mesmo sistema do exemplo 26, represente os nmeros: x1 = 0.48, x2 = 4.8 e x3 = 0.18 dados na base 10. Soluo: Fazendo os clculos obtemos que: 0.4810 = 0.111 × 2−1, 4.810 = 0.100× 23 e 0.1310 = 0.100× 2−2. Apenas o primeiro nmero pode ser repre- sentado no sistema, pois para o segundo teremos over�ow e para o terceiro under�ow. Observe que o nmero 0.4810 tem no sistema dado, a mesma representao que o nmero 0.4375(10). 36 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 1.8 Programas de preciso mltipla Em certas aplicaes o sistema de ponto �utuante fornecido pelo computador tem preciso ou intervalo insu�ciente. Se os clculos so feitos em preciso sim- ples, ento se usa preciso dupla para tentar remediar di�culdades e, se ainda assim, a preciso dupla insu�ciente, tenta-se a preciso estendida. Contudo esta estratgia prejudica a portabilidade dos programas, pois poucos sistemas de computadores fornecem mais que dois nveis de preciso. Alm disso, esta estratgia de uso limitado: existem raramente quatro nveis, ento o nvel de preciso pode no ser adaptado aos requisitos de uma aplicao particular. Uma soluo o uso de um software de preciso mltipla (Maple, Matlab, etc.) , que permite aumentar a preciso independente da arquitetura. Estes softwares permitem uma escolha �exvel da preciso e/ou intervalo necessrio dos nmeros de ponto �utuante. A desvantagem mais sria das im- plementaes de sistemas de numerao via software comparada a hardware o tempo de processamento (crescimento em tempo de execuo por um fator > 100 [10] 1.9 A in�uncia da aritmtica do ponto �utuante Os problemas com o uso da aritmtica de ponto �utuante so fartamente dis- cutido na literatura, o artigo [11] clssico. A seguir veremos alguns casos selecionados. Para resolver um sistema de equaes na linear, a funo f : Rn → Rn deve ser implementada na forma de um (sub)programa. Ento os zeros da implementao f˜ : Fn → Fn so determinados, em vez da funo matematicamente de�nida f . O termo zero perde seu signi�cado comum mesmo no caso de funes de uma varivel (n = 1) porque a equao f˜(x) = 0 com f˜ : F→ F pode ter vrias solues (zeros) ou nenhuma soluo na vizinhana de um zero isolado da funo original. Exemplo 28 (zeros no encontados[12], pag. 279) A funo f(x) = 3x2 + 1 pi4 ln(pi − x)2 + 1 (1.17) Tem duas razes no intervalo [3.14, 3.15]; �1 ∈ [3.14, pi] e �2 ∈ [pi, 3.15]. Estes zeros no podem ser determinados numericamente, desde que f(x) > 0 Para todo x ∈ F(2, 53,−1021, 1024, true) para a qual 1.17 pode se calculado. Os dois zeros de f , 1.9. A INFLUNCIA DA ARITMTICA DO PONTO FLUTUANTE 37 Figura 1.1: Planilha do software matemtico Mathcad usada para traar o gr- �co da funo f(x) = 3x2+ 1 pi4 ln(pi−x)2+1. A funo no tem zeros quando cal- culada numericamente com F(2, 53,−1021, 1024, true) (analiticamente tem dois) x∗1 ≈ pi − 10−647 e x∗2 ≈ pi + 10−647 esto localizados muito prximos de pi, e f(x) ≤ 0 valido somente no intervalo localizado entre dois nmeros de mquina. A implementao f˜ : F→ F no possui zeros (ver �gura 1.1). Exemplo 29 (grande nmero de zeros [12], pag. 279 ) O polinmio P7(x) = x 7 − 7x6 + 21x5 − 35x4 + 35x3 − 21x2 + 7x− 1 = = ((((((x− 7) + 21)x− 35)x+ 35)x− 21)x+ 7)x− 1 = (x− 1)7 tem somente um zero em x∗ = 1. A implementao de P˜7 : F → F usando o esquema de Horner tem milhares de zeros na vizinhana de x = 1 [cl- culo com F(2, 24,−125, 128, true), i.e., com uma aritmtica de preciso sim- ples IEC/IEEE]; para x > 1 existem milhares de pontos com valores P˜7 < 0, embora P˜7 > 0 nesta regio e, similarmente, para x < 1 existem milhares de pontos com valores P˜7 > 0, embora P˜7 < 0 nesta regio. A fenmeno do Caos surge do cancelamento dos dgitos mais signi�cativos (ver �gura 4.10 e 4.11 [1], pag 145). 38 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS Figura 1.2: Software matemtico Mathcad usado na soluo do sistema linear Exemplo 30 (soluo do sistema linear inspirado em [12], pag. 233) A = 8 3 0 7 8 3 7 8 3 . . . . . . 7 8 3 0 7 8 e b = 11 18 18 . . 18 15 A �gura 1.2 mostra uma planilha Mathcad para resoluo do sistema linear A · x = b. Embora o residual seja praticamente zero para todos as compo- nentes do vetor soluo, temos um resultado numericamente insatisfatrio: x = 1 1 1 · · 1 1 = soluo EXATA ! Obs. A funo verifylss doMatlab Intlab toolbox produziu os resultados de acordo. Exemplo 31 (avaliao de funo) 1.9. A INFLUNCIA DA ARITMTICA DO PONTO FLUTUANTE 39 Figura 1.3: Software matemtico Maple usado na avaliao da funo f(x, y) = 333.75 ∗ y6 + x2 ∗ (11 ∗ x2 ∗ y2 − y6 − 121 ∗ y4 − 2) + 5.5 ∗ y8 + x/(2 ∗ y) Abaixovamos avaliar a funo f(x, y) = 333.75 ∗ y6 + x2 ∗ (11 ∗ x2 ∗ y2 − y6− 121 ∗ y4− 2)+ 5.5 ∗ y8 + x/(2 ∗ y) usando o Maple com preciso variada. A �gura 1.3 mostra a planilha Maple onde s a partir de 37 dgitos que os resultados apresentados so numericamente vlidos. 40 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 1.10 Exerccios Propostos 1) Converta os seguintes nmeros decimais para sua forma binria: a) 35 b) 2345 c) 0.1218 d) 67.67 e) 95 f) 2500 g) 2000 h) 655 i) 722 j) 3.6× 1021 l) 231 m) 2.5× 10−18 2) Converta os nmeros binrios para suas formas octal, hexadecimal e de- cimal: a) 1011012 b) −1101010112 c) −0.11012 d) 0.1111111012 e) 0.00001012 f) 101012 g) −111010110112 h) −0.11000012 i) 0.1011001111012 j) 0.0011001012 3) Reescreva os nmeros seguintes na representao do ponto-�utuante nor- malizada: a) 27.534 b) −89.901 c) 18× 1021 d) 1.3756× 10−7 e) 11.01112 f) −111.01012 g) 0.001012 h) 1110101012 4) Seja o nmero seguinte em ponto-�utuante num computador de 32 bits: 0010.0101.0000.0001.0001.1001.1100.1110 Se o primeiro bit o sinal do nmero, os oito seguintes a caracterstica ob- tida com adio de 128 ao expoente do nmero ponto-�utuante, e os 23 restantes so a mantissa, responda s questes seguintes: a) O nmero est normalizado? Se no o normalize. b) Qual o sinal do nmero? c) O valor absoluto do nmero menor que 1? 5) Repita a questo 4 com o nmero: 1000.0000.0110.1101.1010.1101.1011.0110 6) Para a representao da questo 4, quais so aproximadamente o maior e o menor nmero, o menor nmero positivo e o prximo menor nmero positivo. 7) Represente os nmeros binrios da questo 2 na maquina binria que uti- liza o seguinte esquema de representao de ponto-�utuante: ↘ ↘ ↘ 1.10. EXERCCIOS PROPOSTOS 41 sinal mantissa caracterstica a) o bit de sinal codi�cado 0 se o nmero positivo e 1 se o nmero negativo. b) a caracterstica obtida com adio de 128 ao expoente do nmero ponto- �utuante. 8) Converter para base 10 os valores representados na mquina binria da questo 7) acima: a) 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 b) 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 9) Seja um sistema de aritmtica de ponto-�utuante na base decimal com quatro dgitos na mantissa e dois na caracterstica, 1 digito de sinal da man- tissa e 1 digito sinal da caracterstica. ↓ mantissa ↓ expoente sinal sinal da mantissa do expoente O sinal codi�cado (+) se o nmero positivo e (-) se o nmero negativo. Dados os nmeros: x = 0.77237 y = 0.2145× 10−3 z = 0.2585× 101 Efetue as seguintes operaes: a) x+ y + z b) x− y − z c) x/y d) (xy)/z e) x(y/z) 10) Use a aritmtica do ponto-�utuante, com a representao da questo 9 acima, para somar e subtrair os seguintes pares de nmeros: a) 5.414234 e 2.27531 b) 5.414234 e 22.7531 c) 54.67 e 0.328 d) 5.4× 10−8 e 3.14× 10−5 11) Use a aritmtica do ponto-�utuante, com a representao da questo 9 acima, para realizar as operaes aritmticas seguintes: a) 3.14× 7.47 b) 75.81× 8.15 c) 1.35÷ 28.5 d) 4000÷ 150 42 CAPÍTULO 1. ERROS EM COMPUTAES NUMRICAS 12) Calcular as cotas dos erros absolutos e relativos que se comete ao se tomar como valores de: a) 22/7 b) 333/116 c) 355/113 d) √ 3 + √ 2 13) Ao se calcular cos(x) ∼= 1− x 2 2! − x 4 4! − x 6 6! para x = 5/7, quais so os erros: inicial, de truncamento, de arredondamento e total cometidos quando se realiza os clculos arredondados em duas casas decimais. Bibliogra�a [1] C.W. Ueberhuber: Numerical Computation: Methods, software and analysis. Springer Berlin Heidelberg (1997) Vol. 1 474 pages [2] J. Stoer, R. Bulirsh: Introduction to Numerical analysis. 2nd ed. Springer-Verlag, Berlin Heidelberg New York Tokio (1993) [3] J.F. Traub, H. Wozniakowski: On the Optimal Solution of Large Linear Systems. J. Assoc. Comp. Mach. 31 (1984), pp. 545-559. [4] R.W. Hamming, E.A. Feigenbaum Introduction to applied numerical analysis. McGraw-Hill, Inc New York (1971) [5] R.E. Moore: Interval Analysis. Prentice Hall, Englewood Clifs, NJ, USA (1966) [6] G. Alefeld, J. Herzberger: Introduction to Interval Computations. Aca- demic Press, New (1966) [7] U.W. Kulish and W.L. Miranker: The Arithmetic of the Digital Com- puters: A New Approach. SIAM Review 28, 1 (1986) [8] Rademacher, H, A.: On the accumulation of errors in processes of inte- gration on higg-speed calculating machines. Procedings of a symposium on large-scale digital calculating machinary. Annals Comp. Labor. Ha- vard Univ. 16 (1948) pp 176-185 [9] Sterbenz, P.H.: Floating Point Computation. Prentice Hall, Englewood Clifs, NJ, USA (1974) [10] Bailey, D.H.: MPFUN - A portable High Performance Multiprecision Package. NASA Ames Tech. Report RUR-90-022, (1990) [11] Goldeberg, D: What Every Computer Scientist Should Know About Floating-Point Arithimethic. ACM Computing Surveys, 23 (1991) pp 5-48 [12] C.W. Ueberhuber: Numerical Computation: Methods, software and analysis. Springer Berlin Heidelberg (1997) Vol. 2 495 pages 43 44 BIBLIOGRAFIA [13] Frberg, C-E.: Introduction to numerical analysis. 2nd ed. Addison- Wesley Pub. Co. , Reading, Mass, , 1965 [14] Sli, E and Mayers, D. F.: An Introduction to Numerical Analysis. Cam- bridge University Press, 2003 [15] Conte, S.D. and Boor, C.: Elementary Numerical Analysis: An algo- rithmic approach. 3rd ed. McGraw-Hill Book Company, New York, 1980
Compartilhar