Matemática de Punto Flotante
-
Upload
itachi-stark-kamijou -
Category
Technology
-
view
68 -
download
1
Transcript of Matemática de Punto Flotante
![Page 1: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/1.jpg)
Matemática de Punto
Flotante
![Page 2: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/2.jpg)
Estándar IEEE 754
En 1985, el IEEE (Institute of Electrical and Electronics
Engineers) publicó la norma IEEE 754.
Una especificación relativa a la precisión y formato de los
números de "punto flotante". Incluye una lista de las
operaciones que pueden realizarse con dichos números.
La adopción de este estándar se debe a que el hardware que
los sustenta también lo sigue.
Ampliamente usado en las operaciones computacionales de
punto flotante, y es utilizada por muchas de las
implementaciones de CPU y FPUi
![Page 3: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/3.jpg)
Representación del punto flotante
El Estándar utiliza tres formatos: Precisión Simple, Doble, y Extendida
Cuádruple Precisión, no es contemplado en el estándar.
En todos los casos se utilizan tres campos para describir el número: El signo S, el exponente k
y la mantisa n, que se almacenan en ese orden en memoria (no en los registros del procesador)
Precisión Bytes Bits
Simple 4 32
Double 8 64
Extendida >=10 >=80
Cuádruple 16 128
![Page 4: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/4.jpg)
Representación del punto flotante
El signo S, se almacena como es usual en un bit (0 significa positivo, 1 negativo).
El exponente k se almacena en forma de un número binario con signo según una regla
que, como veremos a continuación, depende del rango y del formato.
La mantisa n se almacena en forma normalizada, salvo cuando se representan
mantisas especiales.
El esquema de la distribución utilizada para los de simple y doble precisión es el
indicado.
Simple precisión:
Doble precisión:
mm mmmmmmmmmmmmmmmmmmmEEEEEEEEs
mmmmmmmmmmmmmmmmmmmmmmm……..………mmmmmmmEEEEEEEEEEEs
![Page 5: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/5.jpg)
Operaciones con punto flotante y
Algoritmos de operaciones
Cuando sumamos o restamos dos números en coma flotante se deben comparar los
exponentes y hacerlos iguales, para lo cual hay que desplazar o alinear uno de ellos
respecto al otro.
Dados dos números en representación en coma flotante como:
![Page 6: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/6.jpg)
‣ Las operaciones de suma y resta se definen de la siguiente forma.
![Page 7: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/7.jpg)
‣ Y para realizar estas operaciones en representación en coma flotante deberíamos aplicar las fórmulas vistascon anterioridad
![Page 8: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/8.jpg)
La multiplicación y la división en punto flotante son más sencillas de realizar. Vemos la formula que nospermitirá realizar estas operaciones manualmente
X * Y (𝑚𝑥 * 𝑚𝑦 ) 2𝑥𝑒+𝑦𝑒
X ÷ Y (𝑚𝑥 * 𝑚𝑦 ) 2𝑥𝑒−𝑦𝑒
Operaciones con punto flotante y
Algoritmos de operaciones
![Page 9: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/9.jpg)
Verificaciones
Verificación Texto XD-Argumentos-Letanías Resultado
𝑁𝛼𝑁 Si alguno de los argumentos es NaN (Q o S) 𝑁𝛼𝑁
∅ ∅ Si ambos argumentos son ∅ 𝑄𝑁𝛼𝑁
∞ ∞ Si ambos argumentos son ∞ 𝑄𝑁𝛼𝑁
∞ 𝑥 Si el dividendo es ∞ ∞
𝑥 ∞ Si el divisor es ∞ ∅
𝑥 ∅ Si el divisor es ∅ ∞
∅ 𝑥 Si el dividendo es ∅ y el divisor cualquier número ∅
![Page 10: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/10.jpg)
Propagación del Error
Operaciones simples pueden incrementar el error del resultado
La multiplicación y la división son operaciones “seguras”
La suma y la resta presentan serios problemas
Los números más pequeños se pierden cuando se implican números demagnitudes abismales
Pérdida Inevitable: Benigna o Catastrófica
Iteraciones con problemas de pérdida
Un método de cálculo puede ser estable o inestable
0.0000000000000000000100034500021
0.00000000333000004500000000000004
0.00002234512124400333000004500000043254237553469900000487687698765
0.0000000000000000000000000000000000000000000000000000000000000000000000000000000005
![Page 11: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/11.jpg)
Errores
De redondeo
Desbordamiento y Subdesbordamiento
Cuando se representan cantidades fuera del rango permisible,Desbordamiento: cantidades muy grandes;Subdesbordamiento: cantidades muy pequeñas
De Cuantificación
Errores ocasionados por la aproximación
Corte y Redondeo
![Page 12: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/12.jpg)
Tipos de Punto Flotante
Decimal de Precisión Limitada
‣ Lo mismo que IEEE 754
‣ El exponente se interpreta enbase 10
‣ No hay errores de redondeoinesperados
‣ Compacto y rápido
‣ Más lento que los formatosbinarios
Decimal de Precisión Arbitraria
‣ Bignum
‣ Incrementa la longitud de lamantisa y el exponente
‣ Costo en memoria y velocidad
Cálculo Simbólico
‣ Programa que conozca todas lasreglas matemáticas
‣ Representación de datos comosímbolos
‣ Complejos
‣ Lentos
‣ Conocimientos matemáticossignificativos
‣ Inapropiados para tareas diariasen programación
![Page 13: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/13.jpg)
Errores de Redondeo
Denominadores Grandes
‣ Cuanto mayor es el denominadorde una fracción, más dígitos senecesitan
Dígitos Periódicos
‣ Fracciones con denominadoresprimos que no estén en la base
Números Irracionales
‣ No se pueden representar comouna fracción regular
![Page 14: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/14.jpg)
Métodos de Redondeo
Redondeo hacia el cero
‣ Se omiten los dígitos sobrantes
‣ Método más sencillo
‣ Provoca más error del necesario
Redondeo al Alza
‣ Si la fracción truncada es ≥ que lamitad de la base se incrementa enuno
Redondeo mitad al par
‣ Si la fracción truncada es mayorque la mitad de la base seincrementa el último dígito
‣ Si es igual a la mitad de la base seincrementa sólo si el resultado espar
‣ Método por defecto de IEEE 754
![Page 15: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/15.jpg)
Comparación
La mayoría de los números punto flotante terminan siendo ligeramente imprecisos
Si la imprecisión es pequeña, puede ignorarse
Sin embargo, números que se esperan iguales pueden al final no serlo
float a = 0.15 + 0.15;
float b = 0.1 + 0.3;
if (a==b){
System.out.println(“A y B son iguales”); //Quiza sea falso
}
else
{
System.out.println(“A y B no son iguales”); //Probablemente sea correcto
}
![Page 16: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/16.jpg)
Solución para Comparación
Margen de Error
if (Math.abs(a-b)<0.00001){}
Forma negativa de hacerlo
Las diferencias pueden ser muy grandes paranúmeros muy pequeños o muy pequeñaspara números muy grandes
if (Math.abs((a-b)/b)<0.00001){}
Falla en:
Cuando tanto a como b son cero es NaN
Cuando sólo b es cero el cociente retorna ∞ oes mayor que épsilon
Devuelve falso cuando a y b son muypequeños (+ y -).
Resultado no conmutativo
𝜀 = 𝑏1−𝑡
![Page 17: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/17.jpg)
Solución para
Comparación public static boolean nearlyEqual(float a, float b, float
epsilon)
{
final float absA = Math.abs(a);
final float absB = Math.abs(b);
final float diff = Math.abs(a - b);
if (a == b) { // Atajo, maneja los infinitos
return true;
} else if (a * b == 0) { /* a o b o ambos son cero
El error relativo no es importante aquí*/
return diff < (epsilon * epsilon);
} else { // Usar el error relativo
return diff / (absA + absB) < epsilon;
}
}
‣ Crear Método
‣ Pasa las pruebas paramuchos casos especialesimportantes
‣ En algunas situacionespuede fallar
‣ Comportamientoinapropiado para algunasaplicaciones
![Page 18: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/18.jpg)
Bibliografía
‣ Métodos Numéricos para Ingenieros 5nta Edición
‣ http://support.microsoft.com/kb/78113/es
‣ http://support.microsoft.com/kb/42980/es
‣ http://protoncompiler.blogspot.mx/2010/09/matematica-de-punto-flotante.html
‣ http://www.infor.uva.es/~fernando/asignaturas/estruct/leccion7
‣ http://www.edudevices.com.ar/download/articulos/buceando/BC_MCU_42_ED.pdf
![Page 19: Matemática de Punto Flotante](https://reader034.fdocumento.com/reader034/viewer/2022052317/55ae49c61a28abf9178b46aa/html5/thumbnails/19.jpg)
¡Muchas Gracias
por su Atención!
CRÉDITOS:
RAMÍREZ GONZÁLEZ FERMÍN
RODRÍGUEZ CRUZ ROBERTO CARLOS
URIBE GAMIÑO AURA ELIZABETH