You are on page 1of 25

Tema 1. Representación de números en coma flotante.

Errores

• ¿Cómo se representa un número en el ordenador?->Números máquina o


números coma flotante.

• Sistema de representación de nos: base, capacidad, números máquina


mínimo/máximo, distancia entre nº máquina, errores , precisión.

• Representación científica o en coma flotante.


– Estandar IEEE 754: simple precisión
– Estandar IEEE 754 : sistema normalizado/denormalizado
– Estandar IEEE 754: doble precisión

• Aritmética coma flotante. Propagación de errores.

REFERENCIAS:
- D. Goldberg, What every computer scientist should know about floating point arithmetic. ACM Computing
Surveys, 23(1), 1991.
- J. A. Infante, J. M. Rey, Métodos numéricos. Teoría, problemas y prácticas con MATLAB, Ed. Pirámide
(1999). 1

1. Introducción. Representación de números en el


ordenador

0 1 ?
(Mundo del “continuo”)
(Mundo “discreto”)
Objetivos: - Representar números reales en el ordenador.
- Hacer operaciones aritméticas con el ordenador
Cuestiones previas:
• Los números reales son infinitos.
• Capacidad almacenamiento del ordenador es finita (capaz de manejar una cantidad
finita de números y realizar un número finito de operaciones).
Como consecuencia:
• No podemos representar todos los números reales: consideramos un conjunto finito
de números, los llamaremos números máquina. Representación de números
máquina.
• Con el resto de los números reales: los aproximamos por el número máquina mas
próximo -> errores de redondeo.
• Dado una cantidad finita de números (números máquina) tenemos:
– Número máquina menor/mayor, cantidad de números máquina, distancia entre
dos números máquina consecutivos,… 2
– Almacenamiento en la memoria del ordenador. Operaciones.

1
Apuntes descargados de wuolah.com
Representación de números reales -> números máquina
Representación de la recta real
x es un número real
x es un número máquina

-vmax 0 x 1 vmax

El tamaño de la representación (número de posiciones de memoria utilizada en la representación de


cada número máquina) determina la capacidad de representación (valor máximo/mínimo
representado, distancia entre dos números máquina, errores cometidos, etc.).

Ejercicio: Se consideran dos representaciones de números máquina: una es más grande (tiene mas
cantidad de números) y otra es menor (menos cantidad de números máquina).
¿Cuál de las dos representacíones ocupa mas espacio en memoria?
¿Con qué representación los errores son mas pequeños?
¿Qué preferimos: representaciones que ocupen mucha/poca memoria; representaciones con errores
grandes/pequeños? 3

Representación de números -> base

• base=10 -> Representación decimal:

12.345=1*10 1+2*10 0 +3*10 -1 + 4*10 -2 +5 *10 -3


= 1.2345*10 1

• base=2-> Representación binaria :

(10.110)2=1*2 1 +0*2 0 +1*2 -1 + 1*2 -2 +0*2 -3


=(1.0110)2 *2 1
(10.110)2=1*2 1 +0*2 0 +1*2 -1 + 1*2 -2 *2 -3=2+1/2+1/4=2.75

• Otra base b:
d1d0 .d 1d 2 d 3 d1 b1 d 0 b0 d 1b 1
d 2b 2
d 3b 3

d1d0 .d 1d 2 d 3 b

Observaciones:
Se almacenaría la información: d1 d0 . d 1 d 2 d 3 (para representar nº anterior).
0 di b son números enteros.
Múltiples representaciones del mismo número Representación normalizada.

2
BNext, tu cuenta sin banco.
Representación de números máquina: Capacidad, valores
máximos/mínimos, eps

• Rango de valores representables: valor del mayor /menor número


representable (positivo) vmax / vmax

• Rango de valores pequeños: valor del número positivo más pequeño: vmin
• Por construcción: los números máquinas no son equidistantes.
1. Cada representación tendrá una cierta cantidad de números máquina en el intervalo (0, 1).
2. Salto de números máquina: eps (spacing of floating point numbers): distancia entre dos
números máquina consecutivos. Ej.: eps(0), eps(1), eps(1e+10). ¿son iguales eps(0) y
eps(1)? ¿cual es el siguiente número al número 1?

Representación de la recta real

0 1

vmax 0 vmin 1 1+eps(1) vmax

2. Error absoluto y error relativo

Representación de números máquina: Error, cota del error

x = número real
x x
x = número máquina aproxima a x

Error absoluto E x x

Objetivo: Obtener cota del error E Cota

Finalmente, en lugar de trabajar con el número real x (desconocido en general),


trabajamos con el número máquina x más próximo (conocido)
y con una cota del error (conocida)

3
BNext, tu cuenta sin banco.
Representación de números máquina: Error absoluto y error relativo

Sea x un número real, y sea x un número que aproxima a x.


Medimos el error entre x y x :
El error absoluto es: E _ abs x x
x x x x
El error relativo es: E _ rel (o bien E _ rel )
x x
Si x número máquina mas próximo a x, se denominan error absoluto de redondeo y error relativo de redondeo.

Ejemplo 1: x=5922753.273, x 5922753.371


1
E _ abs x x 0.098 10 -> El error está en el primer decimal, aprox. 1 decimal correcto
x x 0.098 8
E _ rel 10 -> Aprox. 8 cifras significativas
x 5922753.273

Ejemplo 2: x=0.273, x 0.371


1
E _ abs x x 0.098 10
x x 0.098 1
E _ rel 0.35 10
x 0.273
7

Representación números máquina: Número de cifras significativas de precisión

Sea x un número real, y sea x el número máquina más próximo a x.


Medimos el número de cifras significativas de precisión (número de cifras coincidentes
empezando por la izquierda, a partir del primer dígito distinto de cero).

Ej 1: x=342732890032.134, x 342732809000.000
x y x coinciden en 7 cifras decimales significativas, e.e., x tiene una precisión de 7 cifras dec. 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 decimal significativa, e.e., x tiene una precisión de 1 cifra dec. significativa.
1
E _ rel 1.22 10 , log10 E _ rel log10 1.22 1log10 10, 1 log10 E _ rel

Se verifica la relación:

(número cifras dec significativas)


E _ rel 10 Número cifras decimales significativas log10 E _ rel

4
3. Representación científica o en coma flotante
Los números máquina x vienen dados por la siguiente expresión
x= mbe
donde:
utilizamos un bit para el signo:
m es la mantisa,
b es la base (2 en un sistema binario, 10 en un sistema decimal),
e es el exponente,
tanto m como e se representan en base b.
La representación anterior se puede escribir como
p
s s
x 1 (d0 .d1d 2 d3 ....d p )b be 1 ( d j b j )be
j 0

se almacena:
... ...
signo mantisa exponente

Signo: s=0 signo +, s=1 signo -


Mantisa m=d 0 .d1d 2 d3 ....d p p (p+1): dígitos precisión 9
0 di b son números enteros

Representación científica o coma flotante

Parámetros de una representación en coma flotante:


Base b (2 en un sistema binario, 10 en un sistema decimal).
Número de dígitos de la mantisa p.
Número de dígitos del exponente e.

En una representación en coma flotante:


1. El número de dígitos de la mantisa determina la precisión del sistema de representación,
e.e., el número de cifras significativas de precisión.
2. El número de dígitos del exponente determina el rango de valores de los números
representados.
3. Los números en coma flotante no son equidistantes.

10

5
BNext, tu cuenta sin banco.
Representación normalizada:
Múltiples formas de representación del mismo nº:
Ejemplo: b=10, p=6
0.10000 10 0 = 1.10000 10 1 = 0.00010 103 =... Representación no única
Ejemplo: b=2, p=4
1 2 3
(0.001) 2 (0.010) 2 x 2 (0.100) 2 x 2 (1.000) 2 x 2

Buscando una representación única Criterio de normalización: d 0 0 m [1, b)


p
Números coma flotante normalizados en base b (-1) s d j b j be , d 0 0
i 0

Representación binaria normalizada


Números coma flotante normalizados en base 2: d 0 =1

(1, d1.....d p ) 2 2ed 1 20 d1 2 1


... d p 2 p)
2ed 0 /1 d1.... d p e
((ed )10 ( e) 2 )

11

Números no máquina:
Mantisa con más de p dígitos "Redondeo". Varias estrategias

e emin , emax fijo Desbordamiento (underflow/overflow)

Distancia entre número 1 y siguiente nº máquina=eps(1):


1 (1. 0 0 .. 0)b b0
(1. 0 0 .. 1)b b0 p
0 1 2 p
eps(1)= (1.0...01)b (1.0...00)b b
(b b b b )

Observación:
- eps(1) es el menor x tal que 1+x 1
- epsilon de máquina eps=eps(1)

Distancia entre números máquina consecutivos :


xi (1. d1 d2 .. d p )b be
xd (1. d1 d2 .. dp 1)b be
0 1 2 p
xi xd b p b e = eps(1)b e (salto en mantisa x b e )
(b b b b )

eps (n º máquina ) distancia entre nº máquina y el siguiente 12

6
BNext, tu cuenta sin banco.
Errores redondeo: Supongamos el número real x se aproxima por el nº máquina más próximo x
1 1 1 p e
E _ abs x x x x eps (1)b e b b
2 i d 2 2
x x E _ abs b pbe 1 p
E _ rel b
x x 2be 2

donde xi y xd son los nº máquina más próximos a x por la izquierda y por la derecha respect.
(x mb e b e , por ser m 1)

Observación:
1. Si la técnica de aproximación es por truncamiento:
E _ abs x x xi xd eps (1)b e b pbe
x x E _ abs E _ abs p
E _ rel b
x x be
2. La cota del error relativo sólo depende del nº bits de la mantisa.

13

Ejemplo de un sistema de representación en coma flotante:


Se considera la siguiente representación en coma flotante en base 2 de números positivos
con dos bits para la mantisa y 2 bits para el exponente.

NÚMEROS MÁQUINA representados de la forma: x (1.b1b2 ) 2 2e 1

Se ALMACENAN EN MEMORIA los siguientes 4 bits: b1 b2 e1 e2


2 bits b1 , b2 para la mantisa m 1.b1b2 2

2 bits para e e1 , e2 e e1e2 2

· Calcular todos los números máquina de esta representación.


· Calcular vmax y vmin los valores del mayor y menor número máquina, respectivamente.
· Calcular eps 1 , eps 3 y eps 6 .
· Sea x=5.6, calcular su número máquina y los 4 bits a almacenar en memoria.

Observación: Exponente de nº en esta representación=e-1


14

7
BNext, tu cuenta sin banco.
4. Representación en coma flotante. Estándar IEEE 754

Estándar de aritmética en coma flotante IEEE 754:


- Mas extendido en cálculos científicos y tecnológicos. Lo utiliza Matlab.
- Define los formatos de representación de números en coma flotante
(incluyendo 0, números denormalizados, infinito, NaN) con un conjunto
de operaciones en coma flotante. Especifica modos de redondeo y
excepciones.
Formatos:
Simple Precisión (32 bits / 4 bytes palabra)
Doble Precisión (64 bits / 8 bytes palabra)

Un estandar de representación en coma flotante especifica:


Formato de almacenamiento en memoria de números,
Comportamiento obligado de determinadas operaciones,
Resultados no numéricos:
Inf : Infinitos ( )
NaN : Campo no numérico (Not-a-number).
Representación de las operaciones sin solución matemática 0/0, - , etc. 15
Manejo de excepciones

4.1. Estándar IEEE 754 simple precisión


Sistema binario (b=2). Palabras de 32 bits (4 bytes): 8 bits exponente + 24 bits mantisa
mantisa con signo exponente con signo
24 bits 8 bits

Exponente. Rango de valores representables:


Exponente e (en base 2) con 8 bits.
¿Cuántas posiciones podemos representar? 28 256 posiciones:

e 00000000 2
0, ....., e 11111111 2 28 1 255 e 0, 255

Desplazamos el rango de valores del exponente: 127


Rango de valores del exponente: 0, 255 127 127,128
emin , emax 127,127 , el valor 128 está reservado para .
Rango de valores max/min representables: si m 1
vmin , vmax = mb emin , mb emax = 1 2 127
,1 2127 10 38
,1038
38
Luego vmin , vmax 10 ,1038 . Y sus opuestos: 1038 , 10 38
16

8
Estándar IEEE 754 simple precisión: rango de valores

Sistema binario (b=2). Palabras de 32 bits (4 bytes): 8 bits exponente + 24 bits mantisa

Rango de valores del exponente: emin , emax 127,127


Rango de valores máximos/mínimos representables:
38
vmin , vmax 10 ,1038 . Y sus opuestos: 1038 , 10 38

0 1

1038 10 38
0 10 38
1038

17

Representación de la mantisa m (en base 2) con 24 bits.


3
Múltiples formas de representar el mismo valor: 0.001 2 1.000 2 2
Elegimos una representación única: Representación Normalizada
El dígito antes de la coma es siempre '1': 1.d1....
No lo almacenamos en memoria, disponemos de 24 bits: 1.d1....d 23
Rango valores mantisa m 1.0000....0 2 ,..., 1.111....1 2 1, 2

Por tanto, la mantisa m de 24 bits:


1 bit para el signo (+/-)
23 bits para m : m= 1.d1d 2 .....d 23 2
1, 2 , di 0,1 .

Rango de valores de la mantisa


23
m= 1.0.....0 2
1 1, 2 ; m= 1.1.....1 2
10.0.....0 2
0.0.....1 2
2 2
Luego, m 1, 2
18

9
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Error relativo. Precisión. Eps

Con el valor del bit menos representativo de la mantisa obtenemos la precisión.


El bit menos significativo de la mantisa es (el último bit, en la posición 23):
23 7
0.00.....1 2 2 1.19 10

x xˆ xˆ1 xˆ2 m1 2e m2 2e m1 m2 2e 1 1
E _ rel 0.00.....1 2 eps (1)
x 2 xˆ 2 m1 2 e
2m1 2e 2 2
si estrategia redondeo al nº máquina más próximo
1 7 7
E _ rel 1.19 10 10
2
Luego:
nº cifras decimales significativas log10 E _ rel 7 7 cifras decimales significativas
de precisión

19

Estándar IEEE 754 simple precisión: eps(1)

Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa normalizada.

Calculamos eps(1) (distancia entre el número 1 y el siguiente número máquina)


Representación del número 1: 1 1.00.....0 2 20
. Número máquina siguiente mayor que 1: x 1.00.....1 2 20 1 2 23

23 23 7
Restando: eps(1) x 1 1 2 1 2 1.19 10

23
eps(1) 2

Ejercicio:
1. Calcular el eps(2) y el eps(4).
2. ¿Cuántos números máquina hay entre 20 , 21 ? ¿a qué distancia están los números máquina
en el intervalo 20 , 21 ?. Idem para el intervalo 21 , 22 .

20

10
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Cota error relativo
Sea x número real que está entre dos números máquina consecutivos, x x ', x '' , con:
e e
x' m2 1.d1d 2 .....d 23 2
2
x '' 1.d1d 2 .....d 23 2
0.00.....1 2 2e x ' 2 232e
y llamamos x nº máquina más próximo a x.

Luego,
1 1 23 e
E_abs= x x x ' x '' 2 2 depende de e
2 2
1 23 e 1 23
x x 2 2 2
2 2 1 23 1 8 7
E_rel= e
2 eps (1) 5.96 10 10 (si redondeo nº máquina mas próximo)
x m2 m 2 2
valor constante con m 1, 2

Por tanto, en simple precisión:


eps (1) 24 ( n º bits mantisa , incluyendo signo ) 7
E_rel 2 2 10
2

Error relativo es constante, 7 cifras significativas de precisión 21

Estándar IEEE 754 simple precisión. Resumen números normalizados

Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa normalizada.

38
Rango de valores vmin , vmax 10 ,1038 . Y sus opuestos 1038 , 10 38

23
Tamaño del salto en 1: eps (1) 2
eps (1) 2 ( n º bits mantisa )
Precisión: E_rel 2 24 10 7

2 2
(Error relativo es constante, 7 cifras significativas de precisión)

0 1

1038 10 38
0 10 38
1 1+2 23
1038

22

11
BNext, tu cuenta sin banco.
Estándar IEEE 754 simple precisión: Números normalizados/denormalizados
Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa

¿0 es número máquina?
Objetivo de los números denormalizados: Obtener más números muy pequeños

Convenio: Significado específico de algunos exponentes:

Información del Exponente Mantisa Números máquina Denominación


e 00000000 2 m 0.d1d 2 .....d 23 2
xd 0.d1d 2 .....d 23 2 2 126 Nº denormalizados
e e1e2e3 ....e8 2 m 1.d1d 2 .....d 23 2
x 1.d1d 2 .....d 23 2 2e 127 Nº normalizados
e 11111111 2 , NaN No numéricos

Nota: La parte entera de la mantisa ('0' si es denormalizado o '1' si es normalizado)


no se almacena en memoria Se 'deduce' por la información almacenada del exponente
(0 para denormalizado o 0 para normalizado).

23

Estándar IEEE 754 simple precisión: Números normalizados/denormalizados


Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa

Números normalizados y denormalizados: rango de valores

Información del Exponente Mantisa Números máquina Denominación


d 126
e 00000000 2 m 0.d1d 2 .....d 23 2
x 0.d1d 2 .....d 23 2 2 Nº denormalizados
e e1e2e3 ....e8 2 m 1.d1d 2 .....d 23 2
x 1.d1d 2 .....d 23 2 2e 127 Nº normalizados
e 11111111 2 m 0, m 0 , NaN No numéricos

11111110 127 23
Número normalizado mas grande: xmax 1.1.....1 2 2 2
(2 2 ) 2127
00000001 2 127 126
Número normalizado mas pequeño: xmin 1.0.....0 2 2 2
d 126 23 126
Número denormalizado mas grande: xmax 0.11....1 2 2 (1 2 ) 2
Número denormalizado mas pequeño: x0d 0.0....00 2
2 126
0
d 126 23 126 149
el siguiente: x min 0.0....01 2 2 2 2 2
Rango de valores: vmd in , vmax
d
10 45
,10 38
, vmin , vmax 10 38
,1038 24

12
25

Estándar IEEE 754 simple precisión: Resumen

Sistema binario. Palabras de 32 bits: 8 bits exponente + 24 bits mantisa

eps (1) 2 23.


eps (1)
Un error relativo constante acotado por E_rel 10 7 ,
2
una precisión de 7 cifras significativas.

d d 45 38 38
Rango de valores representados: vmin , vmax 10 ,10 , vmin , vmax 10 ,1038

0 1

45 38 23
Inf 0 10 10 1 1+2 1038 Inf

26

13
BNext, tu cuenta sin banco.
4.2. Estándar IEEE 754 doble precisión
Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo

e1e2 .....e11 1023


Números normalizados: x 1. f1 f 2 ..... f52 2
2 2

Números denormalizados: x d 0. f1 f 2 ..... f52 2


2 1022
si e 00000000000 2

No numéricos: , NaN si e 11111111111 2

Exponente binario de 11 bits (211 2048 posiciones 0, 2047 ).


Rango de valores del exponente emin , emax 1024,1024

Nota: El estandar doble precisión es análogo al estandar simple precisión:


1. El sistema binario (el mismo).
2. Tamaño de las palabras: 8 bytes (doble que en simple precisión).
64 32
3. Obtener muchos mas números máquina (2 números en lugar de 2 ).
53 24
4. Obtener mucha más precisión: cota error mucho menor (2 en lugar de 2 ).
5. Obtener muchas más cifras significativas de precisión (15 cifras en lugar de 7). 27

Estándar IEEE 754 doble precisión


e1e2 .....e11 1023
Números normalizados: x 1. f1 f 2 ..... f52 2
2 2

Números denormalizados: x d 0. f1 f 2 ..... f52 2


2 1022
si e 00000000000 2

No numéricos: , NaN si e 11111111111 2

Rango valores representados:


11111111110 1023 52
Número normalizado mas grande: xmax 1.1.....1 2 2 2
(2 2 ) 21023
00000000001 2 1023 1022
Número normalizado mas pequeño: xmin 1.0.....0 2
2 2
d 1022 52 1022
Número denormalizado mas grande: xmax 0.11....1 2 2 (1 2 ) 2
Número denormalizado mas pequeño: x0d 0.0....00 2
2 1022
0
d 1022 52 1022 1074
el siguiente: xmin 0.0....01 2 2 2 2 2
d d 323 307 307
Rango de valores: vmin , vmax 10 ,10 , vmin , vmax 10 ,10308

Precisión:
52 16 15
eps(1)= 0.00.....01 2 2 2 10 10
eps (1) 53 15
La cota del error relativo es: E_rel 2 10 15 cifras significativas precisión
2 28

14
BNext, tu cuenta sin banco.
29

Estándar IEEE 754 doble precisión: Resumen


Sistema binario. Palabras 8 bytes (64 bits): 11 bits exponente + 52 bits mantisa + 1 signo

52
eps(1) 2
eps(1) 15
Un error relativo constante acotado por E_rel= 10 ,
2
una precisión de 15 cifras significativas.

d d 323 307 307


Rango de valores vmin , vmax 10 ,10 , vmin , vmax 10 ,10308

0 1

323 307 52
Inf 0 10 10 1 1+2 10308 Inf

30

15
BNext, tu cuenta sin banco.
Resumen. Relaciones representación de números en
coma flotante

Suponemos un sistema de representación binario de números con


palabras con n bits exponente + m bits mantisa + 1 bit signo

(nº bits mantisa )


eps(1) 2 (valor del bit menos representativo)

eps(1) (nº bits mantisa + bit signo)


Error relativo "constante" acotado por E_rel 2
2
(si redondeo al número máquina más próximo)

(nº cifras significativas precisión)


E_rel 10 Nº cifras significativas precisión= log10 E_rel

31

32

16
5. Operaciones aritméticas con números en coma
flotante. Propagación de errores

Objetivo: Medir la propagación de los errores al operar ( , -, . , /)


Sean los números reales x, y. Queremos calcular x+y, x.y.
Pasos:
Calculamos: x, y.
Calculamos: x+y, x.y
¿Cuánto difieren x+y x+y, x.y x.y?
Calcular las cotas del error relativo x+y x+y, x.y x.y
Finalmente, obtenemos los valores x+y , x.y y las dos cotas.

33

Operaciones aritméticas con números en coma flotante.


Propagación de errores

OBJETIVO: Analizar efecto de los errores redondeo en las operaciones aritméticas

DATOS IN OPERACIÓN DATOS OUT


x, y x y

+, -, *, /

x=x(1+ x ), y=y(1+ y ) x y=x y(1+ x y )


números máquina mas próximos a x e y
x x y y x y-x y
Errores relativos IN: x
y y
Error relativo OUT: x y
x y x y

34

17
BNext, tu cuenta sin banco.
OBJETIVO: Analizar efecto de los errores redondeo en las operaciones aritméticas

IN :
Sean x=x(1+ x ), e y=y(1+ y ) los dos números máquina mas próximos a x e y,
x x y y
donde x
y son los errores relativos correspondientes
x y
y
x x
Número máquina x x, se puede escribir como x=x(1+ x ), con : x
x
x x eps (1) 7 16

x
=E_rel Cota= 10 (simple presición) 10 (doble precisión)
x 2

OUT : Queremos conocer los errores relativos de los resultados de efectuar las operaciones:
¿x+y x+y ? x+y = (x+y)(1+ x y ), e.e., calcular x y en función de: x , y , x, y
¿x-y x-y ? x-y = (x-y)(1+ x y )
¿xy xy ? xy = (xy)(1+ xy )
x x
¿x/y x/y ? = (1+ x/ y )
y y
Operación Operación Error 35
relativo
nºs máquina nºs reales

x x y y
1. Suma: x+y=(x+y)(1+ x y ) x(1+ x ) y (1+ y )=x+y+(x+y) x y x y
x y
x x y y x y Cota
Cota error relativo: x y
x y x y

x x y y
Resta: x-y=(x-y)(1+ x y ) x(1+ x ) y (1+ y )=x-y+(x-y) x y x y
x y

x x y y x y Cota
Cota error relativo: x y si 0 x, y ( x
, x
Cota)
x y x y
Obeservación:
i) Si x y, x y 0
ii) x y si x y. Cancelación dígitos significativos al calcular diferencia de números similares.

2. Producto: xy = x y x y

x y
3. Cociente: x/ y
1 y

36

18
BNext, tu cuenta sin banco.
Ejemplos

Operación suma NO ASOCIATIVA


24 24 24 24 24
(1 2 ) 2 fl ( fl (1 2 ) 2 ) fl (1 2 ) 1
24 24 24 24 23
1 (2 2 ) fl (1 fl (2 2 )) fl (1 2 ) 1.00...01

x ( y) x ¿ y 0?
x=1.d1....d 23 2ex 1.d1....d 23 2 ex
e
y=1.d1....d 23 2 y , e y ex 24 1.0....00..1d1..d 23 2ex

CANCELACIÓN
((1.00....0) 2 20 ) ((1.11....1) 2 2 1 ) fl (((1.00....0) 2 20 ) ((0.11....1) 2 20 ))
0
(0.00....0) 2 2

37

Ejemplos

x
1. log x log y con x y log x log y log log1 0.
y
2. Reemplazar x 2 y 2 por x y x y .

1 x2 1 1 x2 1 x2
3. 1 x2 1 con x 0 1 x2 1
1 x2 1 1 x2 1 1 x2 1
expresión sin dificultad numérica.
4. x2 y 2 con x, y muy grandes. Si x 0 x2 0 problema overflow.
2
x2 y2 x
Suponemos 0 x y x2 y2 y y 1
y2 y

38

19
BNext, tu cuenta sin banco.
Ejemplo numérico con Matlab (1)
La función seno hiperbólico (igualdad matemática):
ex e x
sinh( x) (1)
2

Objetivo:
ex e x
- Calcular sinh( x) (comando Matlab) y , para valores de x muy pequeños (x 0).
2
- Estimar el error relativo y una cota de la fórmula (1).
- Calcular el número de cifras de precisión para cada x.

¿Cual de las dos expresiones es mas precisa?.


¿Cuántas cifras de precisión se obtienen para cada x?.
¿Cómo de buena/precisa es la representación de números de Matlab?

39

Ejemplo numérico 1: Gráfica de sinh(x)


Valores exactos y aproximados:
x 10. ^ ( [0 :10])
>> V_exacto=sinh(x);V_aprox=(exp(x)-exp(-x))/2;
Errores relativos:
>> Erel=abs(V_exacto-V_aprox)./abs(V_exacto);
>> Cota=eps(1)./sinh(x);
Visualizar resultados y errores:
>> loglog(x,V_exacto,'b.',x,V_aprox,'r.'),
>> title('Gráfica de sinh(x): V-exacto (azul), V-aprox (rojo), respecto de x')
>> loglog(x,Erel,'bo',x,Cota,'ro'),
>> title('Gráfica del error relativo del sinh(x)(azul) y su cota (rojo), respecto de x')

Gráfica del seno hiperbólico y


su aproximación, respecto de
la variable x

40

20
Ejemplo numérico 1:
Gráfica del error relativo de sinh(x) y su cota , respecto de x

41

Ejemplo numérico 1: Gráfica error relativo de sinh(x) y su cota


(número cifras significativas)
E _ rel 10 Número de cifras significativas = log10 E _ rel

log10 E _ rel E _ rel


4
4 10
6
6 10
8
8 10
10
10 10
12
12 10
14
14 10
16
16 10
Nº cifras
1. ¿Es adecuada la cota obtenida del error relativo?
2. ¿Para x 10 3 cuantas cifras significativas tenemos? ¿Y para x 10 10 ?
3. ¿Cuando x 0 el número de cifras aumenta/disminuye? 42
¿Cuando x 0 la dificultad numérica en el calculo de sinh(x) aumenta/disminuye?

21
BNext, tu cuenta sin banco.
Ejemplo numérico con Matlab (2): Cálculo de la derivada mediante una
fórmula aproximada. Aplicación y Estudio del error

f (x h) f ( x)
Fórmula aproximada: f '( x) para h muy pequeños (h 0).
h
f (x h) f ( x)
Nota: Definición de derivada de una función f '( x ) lim .
h 0 h

Aplicar para calcular la derivada de f ( x) sen( x) en el punto x 1:


sin(1 h) sin(1)
cos(1) (2)
h

OBJETIVO:
cos(1) (vía función Matlab)
sin(1 h) sin(1)
- Calcular (Fórmula aproximada)
h

- Estimar error relativo y una cota de la fórmula (2), para valores de h muy pequeños (h 0).
¿Cuántas cifras de precisión se obtienen para cada h?
¿Cómo de buena/precisa es la representación de números de Matlab?
43
Visualizar el error

f (x h) f ( x)
FÓRMULA APROXIMADA: f '( x) (1)
h

Sean
der_f_exacto=f '( x)
der_f_exacto der_f_aprox
f (x h) f ( x) E _ rel
der_f_aprox= der_f_exacto
h

Fuentes de error:
- Error relativo de truncamiento, debido a fórmula aproximada (1)

h f ''( x)
E _ rel _ trunc , (h pequeño)
2 f '( x)
- Error relativo de redondeo:
eps (1) f ( x)
E _ rel _ redondeo (h pequeño)
h f '( x)

ERROR RELATIVO TOTAL: E _ rel _ total E _ rel _ trunc E _ rel _ redondeo

44

22
BNext, tu cuenta sin banco.
f (x h) f ( x)
f '( x) (1)
h
- Error relativo de truncamiento:
f (x h) f ( x) h h2
f '( x) f ''( x) f '''( x) ...
h 2 3! h f ''( x)
E _ rel _ trunc ,
f '( x) f '( x) 2 f '( x )
2
si h pequeño h h.
h2
Nota: Desarrollo de Taylor f ( x h) f ( x) hf '( x) f ''( x) ....
2!

_rel( x y ) eps (1)( x y )


- Error relativo de redondeo: x y
x y 2x y
eps (1) f ( x h) f ( x) eps (1)2 f ( x ) eps (1) f ( x)
E _ rel _ redondeo f '( x ) f ( x h) f ( x) ,
2 f (x h) f ( x) 2h f '( x) h f '( x)
ya que si h pequeño: hf '( x) f (x h) f ( x) y f ( x h) f ( x ).

Error relativo total: Si h pequeño tenemos la cota:


h f ''( x) eps (1) f ( x)
E _ rel _ total _ formula _(1) E _ rel _ trunc E _ rel _ redondeo
2 f '( x) h f '( x)

45

Ejemplo numérico 2: Grafica del error relativo (azul) y su cota (rojo)

46

23
BNext, tu cuenta sin banco.
Ejemplo 2: Grafica del error relativo y número de cifras significativas

(número cifras significativas)


E _ rel 10 Número 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 qué h se obtiene el
mayor nº cifras significativas?
¿cuantas son?
4. ¿Qué sucede para
h 10 16 ?

47

24

You might also like