Representação de números - Conversão de base b para base Números em base 0,,,, 8, 9,,,,, 9, 0,,, 99, 0,,, 47,, 999, 00, 0, dígitos que constituem a base Valor depende da posição dos dígitos centenas unidades dezenas Exemplo: 0 ( 4579) 4000 500 70 9 4 5 7 9 N = = + + + = + + + Exemplo: N ( ) = 684,75 = 6 + 8 + 4 + 7 + 5 0 Generalizando (...,...) N= d d d d d d n n 0 n = d + d +... + d + d + d + d +... n n 0 n 0 0 d 9= i
Representação de números - Conversão de base b para base Números em base b, por exemplo base (ou seja b=) 0,, dígitos da base Generalizando (...,...) N= d d d d d d n,,,, 0,,, 0,,,,,,,,, 00, 4 5 6 n 0 7 = d + d +... + d + d + + +... 0 = n n 0 n n 0 d d 8 9 d i Exemplo: N = ( 0 0, ) = + 0 + + 0 + + + 4 0 4 0 = 8 + 0 7 + 9 + 0 + + + 9 = 7,777...
Representação de números - Conversão de base para base b Números inteiros Exemplo: N d d d d 0 Dividindo 6 por 4 resulta, = ( ) 0 4 0 = 4 + 4 + 4 + 4 = 6 = (6) 0 d0 0 6 4 + 4 + 4 + 4 = 4 4 0 4 4 4 = + + + resto 4 = + resto=d 4 0 Ou seja, 6 4 o resto da divisão inteira de 6 por 4 é o dígito da posição d 0 do número 6 escrito em base 4
Representação de números - Conversão de base para base b Dividindo o resultado da anterior divisão (= ) por 4 resulta, d 0 4 + 4 + 4 = 4 4 0 = 4 + 4 + 7 resto 4 = 7 + resto=d 4 Ou seja, 4 7 o resto da divisão inteira de por 4 é o dígito da posição d do número 6 escrito em base 4 Ou seja, efectuando divisões sucessivas por 4, os restos das divisões vão ser os dígitos do número escrito em base 4 6 4 4 7 4 4 0 4 0 0 6 = ( 0... 0 ) = () 4 4
Representação de números - Conversão de base para base b Números fraccionários puros d Exemplo: x = (, ) d Multiplicando 0,475 por 4 resulta, 4 = 4 + 4 = 0,475 = (0,475) d d 0,475 4 = ( 4 + 4 ) 4 d = + 4 =,75 0,75 d Retirando a parte inteira ao resultado anterior e multiplicando novamente por 4 resulta, d d 0,75 4 = ( 4 ) 4 = Ou seja, efectuando multiplicações sucessivas por 4, as partes inteiras vão ser os dígitos do número escrito em base 4 0,475 x 4 =,75 0,75 x 4 = 0,475 = ( 0, ) = ( 0, ) 4 4
Exemplo: FP(,4,,A) e FP(,4,,T) Sistema de ponto flutuante FP( b, p, q,_) = FP(, 4,, _ ) base 4 dígitos na mantissa dígitos no expoente A=Arredondamento T=Truncatura x ± =± m b t x =± d d d d 4 dígitos (base ) ± ( ) (0, ) t t 0 4 dígitos (da base ) Formato normalizado com excepção da representação do número zero, d 0 pelo que 0,00 m 0,9999 0, m< b m<
Sistema de ponto flutuante Exemplo: Representar x = 805,74 em FP(,4,,T) e em FP(,4,,A) x = 805,74 = 0,80574 FP(,4,, T): fl( x) = x =+ (0,805) + 0 FP(,4,, A): fl( x) = x =+ (0,805) + 0 805,0 805, 805, 805, 805,5 805,5 805,74
Sistema de ponto flutuante Exemplo: Representar x = 805,74 em FP(,4,,T) e em FP(,4,,A) x = 805,74 = 0,80574 Erro absoluto: E = x x FP(,4,, T): fl( x) = x =+ (0,805) FP(,4,, A): fl( x) = x =+ (0,805) + 0 + 0 FP(,4,, T ): E = x x = 0,80574 0,805 = 0,000074 = 0,074 FP E x x (,4,, A ): = = 0,80574 = 6 = 0 0,805 0,0000 0, 6 x x E Erro relativo: e = = x x E 0, 074 FP(,4,, T): e = = = 9, x 805,74 E 0, 06 FP(,4,, A) : e= = =, x 805,74 5 5 x0 x0 9, %, %
Unidade de arredondamento, u Unidadedearredondamento,u majorante do erro relativo (possível de ser cometido) na representação dum número t t x x m b m b m m e = = = t x m b m x x m m max( m m) max ( e) = max = max < u x m min( m) Com truncatura, FP(b,p,q,T) min( m): (0,...0) b m< b m < min( m) = b max( m m ): m = (0,... 0 d...) ( p+ ) d ( p+ ) b p m = (0,... 0) b p m = (0,0... 0 ) < (0,0...0 ) = b m d... ( p+ ) d ( p+ ) b p p b p u max( m m ) b min( m) p = b p b u= u= b b p (0,... 0) b p (0,...0 ) b p Com truncatura, a unidade de arredondamento é a maior distância relativa entre dois números consecutivos (representados nesse sistema)
Unidade de arredondamento, u Unidadedearredondamento,u majorante do erro relativo (possível de ser cometido) na representação dum número t t x x m b m b m m e = = = t x m b m x x m m max( m m) max ( e) = max = max < u x m min( m) Com arredondamento, FP(b,p,q,A) a unidade de arredondamento é metade do valor da unidade de arredondamento com truncatura u = b p (0,... 0) b p u (0,...0 ) b p Com arredondamento, a unidade de arredondamento é metade da maior distância relativa entre dois números consecutivos (representados nesse sistema)
Norma IEEE754 formatos simples e duplo (base ) bits -> 8 Formato simples bits = 4 bytes S Expoente Mantissa bits -> 5 Formato duplo 64 bits = 8 bytes S Expoente Mantissa Número normalizado ou desnormalizado Número normalizado no caso do expoente não ser nem todo zeros nem todo uns Número desnormalizado Se o expoente for todo zeros representação do número zero ou representação de underflow Se o expoente for todo uns representação de overflow (infinito ou NaN)
Norma IEEE754 formato simples bits -> 8 Formato simples bits = 4 bytes S Expoente Mantissa Número normalizado x S = ( ) (, d d ) 4 bits e 7 Exemplo: Valor correspondente ao conjunto de bits (em formato simples IEEE754) 00 000 0 O número é normalizado (porque o expoente armazenado não é nem todo zeros nem todo uns ) s = e = = + + + = 6 4 (00) 89 m = = + + = 565 5 (,00...0), x S = ( ) (, d d ) 4 bits e 7 x = ( ),565 =,565 = 4,064... 89 7 8
Norma IEEE754 formato simples bits -> 8 Formato simples bits = 4 bytes S Expoente Mantissa Números desnormalizados (i) Expoente todo zeros representação do S x = ( ) ( 0, d d ) número zero ou de underflow gradual 4 bits Exemplo: Valor correspondente ao conjunto de bits (em formato simples IEEE754) a) 0 00000000 000 0 b) 00000000 00 000 6 Expoente todo zeros x S = ( ) ( 0, d d ) 4 bits 6 a) s = 0 m = = + = 5 ( 0,00...0) 0,565 x = ( ) 0,565 =,867... 0 6 9 b) s = m = ( 0,00...0) = 0 x = = 6 ( ) 0 0
Norma IEEE754 formato simples bits -> 8 Formato simples bits = 4 bytes S Expoente Mantissa Números desnormalizados (ii) Expoente todo uns representação de overflow Exemplo: Valor correspondente ao conjunto de bits (em formato simples IEEE754) a) 0 000 0 b) 00 000 Expoente todo uns representação de overflow a) m 0 NaN b) m = 0 ± Inf Como s=, o resultado é Inf
Norma IEEE754 formato simples bits -> 8 Formato simples bits = 4 bytes S Expoente Mantissa Formato normalizado S x= ( ) ( d, d d ) 0 4 bits e 7 Expoente: (0000000) e () e 54 6 e 7 7 Limite de overflow: (,) (,) ( ),4 54 7 = 7 = 7 8 8 Limite de underflow: (,0000) = (,0000) =, 7 6 6 8 Limite de underflow gradual: (0,000 ) = =,4 6 6 49 45 Unidade de arredondamento c/ truncatura: u= b = =, p 4 7 Unidade de arredondamento c/ arredondamento: u= b = = 0,6 p 4 7
Formato duplo Norma IEEE754 formato duplo bits -> 5 64 bits = 8 bytes S Expoente Mantissa Formato normalizado S x= ( ) ( d, d d ) 0 5 5 bits e Expoente: (0000000000) e () e 046 e Limite de overflow: (,) = ( ),8 + 5 + + 4 + 08 Limite de underflow: (,0000) = (,0000) =, 08 Limite de underflow gradual: (0,000 ) = = 4,9 5 5 74 4 Unidade de arredondamento c/ truncatura: u= b = =, p 5 5 6 Unidade de arredondamento c/ arredondamento: u= b = =, p 5 5 6
Operações elementares em ponto flutuante (FP) Passos a seguir: ) Decomposição dos operandos nas mantissas e expoentes ) No caso de soma e subtracção, alinhamento das mantissas ) Operações com mantissas e com expoentes 4) Normalização da mantissa 5) Arredondamento da mantissa Exemplos em FP(,4,,T) Exemplo ) y =,4 + 4, 0,4 + 0,4 0,4 + 0,004 0,77 fl( y) = y = 0,77
Operações elementares em ponto flutuante (FP) Passos a seguir: ) Decomposição dos operandos nas mantissas e expoentes ) No caso de soma e subtracção, alinhamento das mantissas ) Operações com mantissas e com expoentes 4) Normalização da mantissa 5) Arredondamento da mantissa Exemplos em FP(,4,,T) Exemplo ) y = 47,,8 0,47 0,8 0,47 0,008 0,457 fl( y) = y = 0,45 Nota: se não existirem dígitos de guarda 0,47 0,00 8 0,45 fl( y) = y = 0,45
Operações elementares em ponto flutuante (FP) Passos a seguir: ) Decomposição dos operandos nas mantissas e expoentes ) No caso de soma e subtracção, alinhamento das mantissas ) Operações com mantissas e com expoentes 4) Normalização da mantissa 5) Arredondamento da mantissa Exemplos em FP(,4,,T) 8,475 0,8475 0,8475 Exemplo ) y = = = 5,47845 54,7 0,547 0,547 fl( y) = y = 0,5478
Operações elementares em ponto flutuante (FP) Passos a seguir: ) Decomposição dos operandos nas mantissas e expoentes ) No caso de soma e subtracção, alinhamento das mantissas ) Operações com mantissas e com expoentes 4) Normalização da mantissa 5) Arredondamento da mantissa Notas: ) Existindo dígitos de guarda, a simulação duma operação elementar em FP corresponde a escrever o resultado obtido no formato em FP, arredondando o resultado para o número de dígitos existentes na mantissa. ) As operações com os expoentes são operações com números inteiros pelo que não introduzem aproximações (operações exactas). ) As operações em FP, em geral, não respeitam as propriedades comutativas, distributiva e associativa da aritmética exacta.
Erros nas operações elementares em ponto flutuante (FP) Nota: as operações com os expoentes são exactas, os erros provêm das operações com as mantissas fl( x) = x + E E fl( x) = x + x e = x ( + e) e= E = x e x Soma: y= x + x (x e x têm o mesmo sinal) [ ] y = fl( x+ x) = x ( + e) + x ( + e) ( + e) = x+ x+ ex+ ex+ e( x+ x) + ϑ y arredondamento do argumento E = y y= e x + e x + e ( x + x ) + ϑ arredondamento do resultado termos de ordem superior E e= e u+ ϑ y E u x + u x + u x+ x + ϑ( u ) E u x+ x + ϑ( u ) y
Erros nas operações elementares em ponto flutuante (FP) Nota: as operações com os expoentes são exactas, os erros provêm das operações com as mantissas fl( x) = x + E E fl( x) = x + x e = x ( + e) e= E = x e x Multiplicação: y= x x [ ] y = fl( x x) = x ( + e) x ( + e) ( + e) =... = x + + + + x exx exx exx ϑ y arredondamento do argumento E= y y= exx + exx + exx + ϑ arredondamento do resultado E u x x + ϑ y termos de ordem superior E e= e u+ ϑ y Analogamente se conclui para a divisão: e u+ ϑ
Erros nas operações elementares em ponto flutuante (FP) Subtracção: y= x x (x e x têm o mesmo sinal) [ ] y = fl( x x) = x ( + e) x ( + e) ( + e) = x ( + e + e + ϑ) x ( + e + e + ϑ) arredondamento do argumento arredondamento do resultado termos de ordem superior = x x+ ex ex+ e( x x) + ϑ y E = y y= e x e x + e ( x x ) + ϑ E e x + e x + e ( x x ) + ϑ ( ) E u x + u x + u x + x + ϑ( u ) E E + e= = e u x x y x x x x + ϑ ( ) E u x + x + ϑ( u ) Se x x for muito pequeno, o erro relativo pode ser muito grande -> cancelamento subtractivo erro absoluto pequeno (em relação à grandeza dos argumentos)
Erros nas operações elementares em ponto flutuante (FP) Exemplo de cancelamento subtractivo y =,46485,450 Valor exacto: y =,46485,450 = 0,047 Cálculo em FP(,4,,A): y =,46485,450 0,46 0,45 0,46 0,45 0,000 fl( y) = y = 0,000 Erro absoluto: E = y y = 0,047 0,000 = 0,047 0,0 E = 0,0047 y y E 0,0047 Erro relativo: e= = = e= 0, % 0 y y 0,047
Erros nas operações elementares em ponto flutuante (FP) Soma: y= x + x (x e x têm o mesmo sinal) e u + ϑ( u ) x + x Subtracção: y= x x e u + ϑ( u ) x x Multiplicação e divisão: y= x x, y= x / x e u + ϑ( u )
Processos que podem originar acumulação de erros n Somatório: y = x i (x i números positivos e negativos) i= Algoritmo: Inicialização: s 0 =0 para i= até n fazer s i =s i +x i fim do ciclo i y=s n No caso de os x i possuírem o mesmo sinal é possível estimar um majorante do erro relativo e ( n+ ) u+ϑ( u ) Notar que a ordem pelo qual o cálculo é efectuado não é indiferente Para minimizar o erro, a variável auxiliar s i pode ser declarada com precisão acrescida. Se não ocorrer cancelamento subtractivo, o erro raramente ultrapassa uma unidade de arredondamento (independentemente do valor de n)
Processos que podem originar acumulação de erros Produto interno (de vectores): s = x y = i n i= x y i Algoritmo: Inicialização: s 0 =0 para i= até n fazer s i =s i +x i. y i fim do ciclo i y=s n No caso dos termos (x i y i ) possuírem o mesmo sinal é possível encontrar um majorante do erro relativo e ( n+ ) u+ϑ( u ) Tal como no caso do somatório, para minimizar o erro, a variável auxiliar s i pode ser declarada com precisão acrescida
Número de condição Avaliar a propagação de erros: análise directa vs. análise indirecta Análise indirecta número de condição perturbação de x x fx ( ) x fx ( ) situação situação bem condicionada situação fx ( ) situação mal condicionada Dedução de número de condição fx ( ) fx ( ) fx ( ) fx ( ) f'( x) = lim f'( x) x x x x x x ( ) fx ( ) fx ( ) f'( x) x x fx ( ) fx ( ) x f'( x) x x fx ( ) fx ( ) x e f cond f ( x) e x
Número de condição Ou seja, e = cond f( x) e, cond f( x) f x x f'( x) fx ( ) cond f(x) representa o factor de ampliação entre o erro relativo do argumento x eoerrodo valor da função f(x) Se cond f(x) for grande, então uma perturbação no valor do argumento x é muito ampliada Se cond f(x) (valor pequeno) função é bem condicionada Se cond f(x) 6 (valor grande (?)) função é mal condicionada Nota : Se uma função for bem condicionada (num ponto), então deverá existir algoritmo que permita calcular (nesse ponto) o valor da função com precisão. Contudo, podem existir algoritmos que originem imprecisões no cálculo da função.
Número de condição Nota : cond f(x) é grande ou pequeno dependendo do nosso objectivo e da incerteza dos argumentos y y x x Considerar, por hipótese, cond fx ( ) = y x a) se os erros dos argumentos forem da ordem da representação dos números em computador (por exemplo em formato simples) y 7 4 = y y x x 7 u x erro inferior a 0,0% erro pequeno (?) (depende da aplicação) b) se os erros dos argumentos forem erros de leitura numa escala (temperatura, distância, velocidade, etc), por exemplo se os erros forem inferiores a 4 y 4 = y y erro inferior a % erro grande (?) (depende da aplicação)