Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2
Tema 1: Representacin en coma flotante
Que es una representacin de nmeros?
Para resolver los problemas en ciencias, ingenieras, necesitamos
calcular la solucin numrica
Cuestiones previas:
Los nmeros reales son infinitos.
El ordenador es finito, capaz de manejar una cantidad finita de nmeros y realizar
un nmero finito de operaciones.
Como consecuencia:
No podemos representar todos los nmeros reales: consideramos un grupo de
nmeros, y los llamamos nmeros mquina. Representacin de nmeros.
Con el resto de los nmeros reales, los aproximamos por el nmero mquina mas
prximo. Permitimos/manejamos/medimos errores de redondeo.
Dado un cantidad finita de nmeros (nmeros mquina) tenemos:
Valor mnimo/mximo, cantidad de nmeros, dado un nmero existe el
siguiente, distancia entre dos nmeros consecutivos,
Los almacenamos en la memoria del ordenador. Podemos operar con ellos.
3
Ejercicio:
Sean dos representaciones de nmeros mquina. RNM1 es la ms grande
(tiene mas cantidad de nmeros) y RNM2 es la ms pequea.
Cual de las dos representacones ocupa mas espacio en memoria?
Con que representacin obtendremos errores mas pequeos?
Que preferimos: representaciones que ocupen mucha/poca memoria?,
representaciones con errores muy grandes/pequeos?,
4
Tema 1: Representacin en coma flotante
- 0 1
-vmax 0 1 vmax
x
5
- 0 1
x-x 8.10 10
4
-7
E _ rel = 2.36 10
3.42 10
11
x
Ejemplo 2:
x=0.0000013405, x = 0.0000015040
-7
E _ abs = x - x 1.63 10
-7
x-x 1.6310 -1
E _ rel = -6
1.22 10 8
x 1.34 10
Tema 1: Representacin en coma flotante
Representacin nmeros mquina: Nmero de cifras significativas de precisin
Sea x un nmero real, y sea x el nmero mquina ms prximo a x.
Medimos el nmero de cifras significativas de precisin (nmero de cifras
coincidentes empezando por la izquierda, a partir del primer dgito distinto de cero).
Ej 1: x=342732890032.134, x = 342732809000.000
x y x coinciden en 7 cifras significtivas, e.e., x tiene una precisin de 7 cifras significativas.
x-x -7
E _ rel = 2.36 10 , log10 E _ rel log10 2.36 - 7 log10 10 0.37 - 7, 7 - log10 E _ rel
x
Ej 2: x=0.0000013405, x = 0.0000015040
x y x coinciden en 1 cifra significtiva, e.e., x tiene una precisin de 1 cifra significativa.
-1
E _ rel 1.22 10 , log10 E _ rel log10 1.22 - 1log10 10, 1 - log10 E _ rel
Se verifica la relacin:
E _ rel 10-(nmero cifras significativas) Nmero cifras significativas = - log10 E _ rel
9
Ejercicio computacional:
Sean x los 7 nmeros reales de la tabla y
x sus nmeros mquina.
Calcular el error absoluto el error relativo y el nmero de cifras
significativas de precisin, de los elementos de la tabla.
Completar la tabla.
N real N mquina E _ abs E _ rel Si x x indicar el n cifras significativas
10-10 0.00000000010000000000
-20
10 0.00000000000000000001
-330
10 0.00000000000000000000
-10
1 + 10 1.00000000010000000000
-20
1 + 10 1.00000000000000000000
-10
(1 + 10 ) -1 0.00000000010000000827
(1 + 10-20 ) -1 0.00000000000000000000
10
Tema 1: Representacin en coma flotante
11
12
Tema 1: Representacin en coma flotante
Ejemplo numrico 1: Grfica de sinh(x)
13
14
Tema 1: Representacin en coma flotante
Ejemplo numrico 1:
Grfica del error relativo de sinh(x) y su cota , respecto de x
15
f ( x + h) - f ( x )
La definicin de derivada de una funcin f '( x) = lim .
h 0 h
f ( x + h) - f ( x )
Podemos f '( x ) para h muy pequeos (h 0)
h
Aplicada a la funcin f ( x) = sen( x) en el punto x = 1, obtenemos
sin(1 + h) - sin(1)
cos(1) (2)
h
Objetivo:
sin(1 + h) - sin(1)
Calcular cos(1), , el error relativo y una cota de la frmula (2),
h
para h muy pequeos (h 0).
Cuantas cifras de precisin se obtienen para cada h?
Como de buena/precisa es la representacin de nmeros de Matlab?
17
18
Tema 1: Representacin en coma flotante
Ejemplo 2: Grafica del error relativo y nmero de cifras significativas
E _ rel 10-(nmero cifras significativas) Nmero de cifras significativas = - log10 E _ rel
1. Es adecuada la cota
obtenida del error relativo?
2. Para h =10-3 cuantas
cifras significativas tenemos?
Y para h =10-14?
3. Para que h se obtiene el
mayor n cifras significativas?
cuantas son?
4. Que sucede para
h 10-16?
19
j =1
donde:
con s=0 el signo +, con s=1 el signo -
el significando (mantisa) m=d1.d 2 d3 d 4 ....d p tiene una precisin de p dgitos,
0 di < b son nmeros enteros 20
Tema 1: Representacin en coma flotante
Representacin cientfica o coma flotante
21
22
Tema 1: Representacin en coma flotante
Representacin coma flotante: Ejemplo
24
Tema 1: Representacin en coma flotante
Estndar IEEE 754 simple precisin: rango de valores
Sistema binario (b=2). Palabras de 32 bits (4 bytes): 8 bits exponente + 24 bits mantisa
25
Sistema binario (b=2). Palabras de 32 bits (4 bytes): 8 bits exponente + 24 bits mantisa
- 0 1
26
Tema 1: Representacin en coma flotante
Estndar IEEE 754 simple precisin: representacin Normalizada
Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa
Sistema binario.
Palabras de 32 bits: 8 bits exponente + 24 bits mantisa normalizada m = (1.d1d 2 .....d 23 )2
28
Tema 1: Representacin en coma flotante
Estndar IEEE 754 simple precisin: eps(1)
29
Rango de valores [vmin , vmax ] = 10-38 ,1038 . Y sus opuestos -1038 , -10-38
Tamao del salto eps (1) = 2-23
- 0 1
30
Tema 1: Representacin en coma flotante
Estndar IEEE 754 simple precisin: Cota error relativo
Sea el nmero real x que est entre dos nmeros mquina consecutivos, x [ x ', x ''], donde:
x ' = m2e = (1.d1d 2 .....d 23 )2 2e
x '' = ((1.d1d 2 .....d 23 )2 + (0.00.....1)2 ) 2e = x '+ 2-23 2e
Luego,
1
E_abs= x '- x x '- x '' = 2e-24 es un valor variable (depende de e)
2
x '- x 2e-24 2-24
E_rel= e
= 2-24 @ 5.9610-8 10-7 es un valor constante
x' m2 m
con m [1, 2).
Luego, en simple precisin tenemos
El error relativo es constante y acotado por E_rel 2-24 10-7
eps (1)
obteniendo una precisin de 7 cifras significativas, y E _ rel =
2 31
Resumen:
Error relativo constante acotado por E _ rel 2-24 @ 10-7
obteniendo una precisin de 7 cifras significativas
eps(1) = 2-23
eps (1)
E _ rel =
2
E _ rel 2-( n bits mantisa , incluyendo signo )
32
Tema 1: Representacin en coma flotante
Estndar IEEE 754 simple precisin: Nmeros normalizados/denormalizados
33
(11111110)2 -127
Nmero normalizado mas grande: xmax = (1.1.....1)2 2 = (2 - 2-23 ) 2127
(00000001)2 -127
Nmero normalizado mas pequeo: xmin = (1.0.....0)2 2 = 2-126
d
Nmero denormalizado mas grande: xmax = (0.11....1)2 2-126 = (1- 2-23 ) 2-126
Nmero denormalizado mas pequeo: x0d = (0.0....00)2 2-126 = 0
d
el siguiente: xmin = (0.0....01)2 2-126 = 2-23 2-126 = 2 -149
Rango de valores: vmin
d d
, vmax -45 -38 -38 38
= 10 ,10 , [vmin , vmax ] = 10 ,10 34
Tema 1: Representacin en coma flotante
35
- 0 1
36
Tema 1: Representacin en coma flotante
Estndar IEEE 754 doble precisin
37
Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo
(e e .....e ) -1023
Nmeros normalizados: x = (1. f1 f 2 ..... f 52 )2 2 1 2 11 2
Nmeros denormalizados: x d = (0. f1 f 2 ..... f 52 )2 2-1022 si e = (00000000000)2
No numricos: , NaN si e = (11111111111)2
38
Tema 1: Representacin en coma flotante
Estndar IEEE 754 doble precisin
Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo
(e e .....e ) -1023
Nmeros normalizados: x = (1. f1 f 2 ..... f52 )2 2 1 2 11 2
Nmeros denormalizados: x d = (0. f1 f 2 ..... f52 )2 2-1022 si e = (00000000000)2
No numricos: , NaN si e = (11111111111)2
(11111111110)2 -1023
Nmero normalizado mas grande: xmax = (1.1.....1)2 2 = (2 - 2-52 ) 21023
(00000000001)2 -1023
Nmero normalizado mas pequeo: xmin = (1.0.....0)2 2 = 2-1022
d
Nmero denormalizado mas grande: xmax = (0.11....1)2 2-1022 = (1- 2-52 ) 2-1022
Nmero denormalizado mas pequeo: x0d = (0.0....00)2 2-1022 = 0
el siguiente: xmd in = (0.0....01)2 2-1022 = 2-52 2-1022 = 2 -1074
Rango de valores: vmin
d d
, vmax -323 -307 -307 308
= 10 ,10 , [vmin , vmax ] = 10 ,10
39
Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo
40
Tema 1: Representacin en coma flotante
41
- 0 1
eps (1) = 2-(n bits mantisa ) (valor del bit menos representativo)
eps (1)
Un error relativo constante acotado por E_rel= = 2-(n bits mantisa + bit signo)
2
E_rel @ 10-(n cifras significativas precisin) N cifras significativas precisin= [-Log10 E_rel]
43
44