Está en la página 1de 37

Tema 1: Cuestiones Básicas sobre Aritmética

Computacional

Vera Egorova

Departamento de Matemática Aplicada y C.C.


Despacho S4-16
E.T.S. Ingenieros Industriales y de Telecomunicación
vera.egorova@unican.es

Vera Egorova (UC) Aritmética Computacional 1 / 37


Contenido

1 Motivación

2 Representación de los números sobre el computador

3 Errores, condicionamiento y estabilidad numérica

Vera Egorova (UC) Aritmética Computacional 2 / 37


Motivación

Vera Egorova (UC) Aritmética Computacional 3 / 37


¿Qué es un Método Numérico?

Método Numérico
es un procedimiento mediante el cual se obtiene, casi siempre de
manera aproximada, la solución de ciertos problemas realizando
cálculos puramente aritméticos y lógicos.

Consiste de una lista finita de instrucciones precisas que especifican


una secuencia de operaciones algebraicas y lógicas (algoritmo), que
producen una aproximación de la solución del problema (solución
numérica).
La eficiencia en el cálculo depende:
de la facilidad de implementación del algoritmo
de las características especiales y limitaciones de los
instrumentos de cálculo

Vera Egorova (UC) Aritmética Computacional 4 / 37


Métodos numéricos en ingeniería

5 razones para estudiar:

Los métodos numéricos son herramientas


muy poderosas (manipular sistemas de
ecuaciones grandes, manejar no linealidades
y resolver geometrías complicadas).
Hay paquetes o programas "enlatados" que
contengan métodos numéricos.
Se puede diseñar sus propios programas
para resolver los problemas;
Los métodos numéricos son un medio para
reforzar su comprensión de las matemáticas;
Los métodos numéricos son un vehículo
eficiente para aprender programación, a
reconocer y controlar los errores de
aproximación que son inseparables de los
cálculos numéricos a gran escala.

Vera Egorova (UC) Aritmética Computacional 5 / 37


Representación de los números sobre el
computador

Vera Egorova (UC) Aritmética Computacional 6 / 37


Sistema binario

Sistema binario es un sistema de numeración en el que los números


se representan utilizando solamente dos cifras: cero y uno (0 y 1).

Para transformar un número del sistema decimal al sistema binario:

1 Se transforma la parte entera a binario.


2 Se sigue con la parte fraccionaria, multiplicando cada número por
2. Si el resultado obtenido es mayor o igual a 1 se anota como un
uno (1) binario. Si es menor que 1 se anota como un 0 binario.
3 Después de realizar cada multiplicación, se colocan los números
obtenidos en el orden de su obtención. Algunos números se
transforman en dígitos periódicos, por ejemplo: el 0.1.

Vera Egorova (UC) Aritmética Computacional 7 / 37


Ejercicio

Sea el número decimal 10.5708, pasarse a binario hasta 8 decimales.

1 La parte entera: 10 = (1010)2


2 La parte fraccionaria:
0.5708 × 2 = 1.1416 → 1
0.1416 × 2 = 0.2832 → 0
0.2832 × 2 = 0.5664 → 0
0.5664 × 2 = 1.1328 → 1
0.1328 × 2 = 0.2656 → 0
0.2656 × 2 = 0.5312 → 0
0.5312 × 2 = 1.0624 → 1
0.0624 × 2 = 0.1248 → 0
3 0.5708 = (0.10010010)2
4 10.5708 = (1010.10010010)2
Vera Egorova (UC) Aritmética Computacional 8 / 37
Tipos de números

Los cálculos de ordenador utilizan 2 tipos de números:


Integer (Números enteros) Representados por un número finito de digitos.
Hoy en día, los cálculos se hacen en aritmética binaria.
Con 64 bits se pueden representar 264 valores:
Sólo positivos (enteros sin signo): del 0 al 264 − 1
Positivos y negativos (enteros con signo): del −263 al 263 − 1
Números de punto flotante (Números reales)
Representados de la forma

(−1)s 0.a1 a2 a3 . . . × 10e

s – signo,
a1 6= 0, ai – "digitos", constituyen la parte fraccional o mantisa del número
e – exponente

Vera Egorova (UC) Aritmética Computacional 9 / 37


Aritmética de punto flotante

Forma de punto flotante normalizada:

(−1)s 0.a1 a2 a3 . . . × β e

Los "dígitos" ai respecto de la base β son enteros positivos tales que


1 ≤ a1 ≤ β − 1, 0 ≤ ai ≤ β − 1, i = 1, 2, . . .
Un sistema de números de punto flotante es discreto y finito. El número de elementos del
conjunto es
2(β − 1)β t−1 (U − L + 1),
donde t es numero de dígitos en mantisa (o precisión), L, U - números enteros (L < 0, U > 0)
que determinen el rango del exponente: L ≤ e ≤ U.
Debido a la normalización el cero no puede ser representado como un número de punto flotante.
Por otra parte,
xmin = β L+1 ≤ |x| ≤ xmax = β U (1 − β −t )

Vera Egorova (UC) Aritmética Computacional 10 / 37


Desbordmiento

En la recta de los números reales hay cinco regiones excluidas para


los números de punto flotante:
1 Los números negativos x < −xmax ⇒ desbordamiento
(overflow) negativo.
2 Los números negativos x > −xmin ⇒ desbordamiento a cero
(underflow) negativo.
3 El cero.
4 Los números positivos x < xmin ⇒ desbordamiento a cero
(underflow) positivo.
5 Los números positivos x > xmax ⇒ desbordamiento (overflow)
positivo.
Vera Egorova (UC) Aritmética Computacional 11 / 37
Aritmética de punto flotante. Base 2

En cálculo científico se utiliza el punto flotante, codificando por separado en signo s, el


exponente e de la potencia de 2 correspondiente y la mantisa m:

x = (−1)s × m × 2e , 1<m<2

1 Signo: 0 – número positivo, 1 – negativo


2 Exponente:
log2 |x| = e + log2 m
Puesto que 1 < m < 2, se tiene 0 < log2 m < 1
Entonces, e = blog2 |x|c, (parte entera)
Pongamos que se toman del total de ne bits en el número, para el exponente. Con esos
bits concretos, para considerar tanto exponentes negativos como positivos, al exponente e
se le suma 2ne −1 , de tal manera que el número eb , que se guarda como ne bits del
exponente (en representación binaria) es:

eb = e + 2ne −1 − 1.

3 Mantisa: m = 2−e |x|, Puesto que 1 < m < 2, se guarda en la representación binaria la
parte fraccionaria del m.

Vera Egorova (UC) Aritmética Computacional 12 / 37


Estándar IEEE754. Precisión simple

Ejercicio
Codificar el número π en formato real de precisión simple

1 Signo: 0 (π es positivo)
2 Exponente: e = blog2 |π|c = 1, eb = e + 2ne −1 − 1 = 1 + 27 − 1 = 128
eb = (128)10 = (10000000)2
3 Mantisa: m = 2−e π = 1 |.5707963
{z . .}.
guardamos
0.5707963 . . . = (0.10010010000111111011010)2
La representación de π en forma de real de punto flotante de precisión simple:
0 10000000 10010010000111111011010
Vera Egorova (UC) Aritmética Computacional 13 / 37
¿Qué son el menor y mayor número de punto flotante positivo representable en
precisión simple?

El número real de menor valor absoluto será:

xmin = 0 00000001 0···0

o lo que es lo mismo (eb = 1, e = 1 − 127):

xmin = 1 · 2−126 · 1 = 2−126 ≈ 10−38


El número con mayor valor absoluto será:

xmax = 0 11111110 1···1

o lo que es lo mismo (eb = 28 − 1, e = 28 − 1 − 127 = 128):

xmax = 1 · 2128 (1 − 2−24 ) ≈ 1038


Vera Egorova (UC) Aritmética Computacional 14 / 37
Estándar IEEE754

Precisión simple Precisión doble


Memoria 23 + 8+ 1 = 32 bits 52 + 11 + 1 = 64 bits
xmin 2−126 ≈ 10−38 2−1022 ≈ 10−308
xmax 2128 (1 − 2−24 ) ≈ 1038 21024 (1 − 2−53 ) ≈ 10308
Dígitos significativos 7 16

Vera Egorova (UC) Aritmética Computacional 15 / 37


Números especiales (IEEE754)

Números denormalizados proporcionan la garantía de la suma y


resta de números de punto flotante sin subdesbordamientos
Ceros
Infinitos: Cuando un cálculo produce un desbordamiento
(overflow)
NaN (Not A Number) - resultado de las operaciones
matemáticamente ilegales

Valor Exponente Mantisa


Normalizados L≤e≤U 6= 0
Denormalizados ceros (e = L − 1) 6= 0
±0 ceros (e = L − 1) 0
±∞ unos (e = U + 1) 0
NaN unos (e = U + 1) 6= 0

Vera Egorova (UC) Aritmética Computacional 16 / 37


Números especiales (IEEE754)

(±Infinity )+1 = ± Infinity


(± Infinity) · (± 1) = ∓ Infinity
(±Infinity )+(±Infinity ) = ±Infinity
(±Infinity )+(∓Infinity ) = NaN
1/(±0) = ±Infinity
1/(±Infinity ) = ±0
0/0 = NaN
(±Infinity )/(±Infinity ) = NaN
0·(±Infinity ) = NaN

Vera Egorova (UC) Aritmética Computacional 17 / 37


Precisión de la máquina

Cuando sumamos números en coma flotante, el resultado puede ser


exactamente igual a uno de los sumandos (siendo ambos no nulos):

1.000 × 100 + 1.000 × 10−4 = 1.000 + 0.0001 = 1.0001 ≈ 1.000 × 100

Al menor número en coma flotante que podemos sumar a 1 de


manera que obtengamos un valor mayor que 1 se llama epsilon de la
máquina εM = β 1−t .
El epsilon de la máquina determina la precisíon relativa de la
aritmética computacional. Si x e y son dos positivos en coma flotante
con x > y , su suma se puede escribir
 y
x +y =x 1+
x
y
Salvo que x ≥ εM , la suma x + y será x.

Vera Egorova (UC) Aritmética Computacional 18 / 37


Errores, condicionamiento y estabilidad numérica

Vera Egorova (UC) Aritmética Computacional 19 / 37


Errores absolutos y relativos

Valor verdadero = Valor aproximado + error

Error exacto en la aproximación: E = Ve − Vaprox


Error absoluto: ∆V = |Ve − Vaprox |
Error relativo: δV = |∆V|Ve |
|

El error relativo también se puede multiplicar por 100%.

Vera Egorova (UC) Aritmética Computacional 20 / 37


Ejercicio

¿Cuál estimación es más precisa?


9 √
= 0.818 o 18 = 4.24
11
1 Calculamos los valores con más cifras:
9 √
= 0.8181818 . . . , 18 = 4.2426 . . .
11
2 Errores absolutos:
9 √
∆1 = | − 0.818| ≤ 0.00019, ∆2 = | 18 − 4.24| ≤ 0.0027
11
3 Errores relativos:
0.00019 0.0027
δ1 = = 0.024%, δ2 = = 0.064%
0.818 4.24
9
11 = 0.818 es más precisa!
Vera Egorova (UC) Aritmética Computacional 21 / 37
Fuentes de errores

Errores iniciales son el resultado de medidas de precisión


limitada.
Errores del método numérico (errores de aproximación, errores
de truncamiento) que resultan al usar una aproximación en lugar
de un procedimiento matemático exacto.
Aproximaciones por la serie de Taylor
Errores de redondeo que se producen cuando se usan números
que tienen un límite de cifras significativas para representar
números exactos.

Representación de los números reales tales como π, e, 5, . . .
Representación de algunos números reales en sistema binario (por
ejemplo, 0.1)
Errores de propagación son debidos a la propagación de
errores previos en el algoritmo.

Vera Egorova (UC) Aritmética Computacional 22 / 37


Errores de redondeo

El Estándar IEEE754 enumera cuatro posibles alternativas para redondear el


resultado de una operación:
Redondeo al más próximo
Redondeo hacia 0 (truncamiento)
Redondeo hacia +∞
Redondeo hacia −∞
La política de redondeo implícitamente contemplada en el estándar es el redondeo al
más próximo. El error relativo máximo cometido al redondeo de un número es la
mitad del epsilon de la maquina:

Unidad de redondeo
u = εM /2

En el sistema IEEE-754:
Simple precisión: u = 2−24
Doble precisión: u = 2−53
Vera Egorova (UC) Aritmética Computacional 23 / 37
Tolerancia

Los signos de los errores pueden ser positivos o negativos. Cuando


se realizan cálculos, no importa mucho el signo del error, sino más
bien que su valor absoluto sea menor que una tolerancia prefijada εs .
Los cálculos se repiten hasta que

|∆x| < εs

Si se cumple la relación anterior, entonces se considera que el


resultado obtenido está dentro del nivel aceptable fijado previamente.

Es conveniente también relacionar los errores con el número de cifras


significativas en la aproximación. Si

εs × 100% = (0.5 × 102−n )%


se tendrá la seguridad que el resultado es correcto en al menos n
cifras significativas.
Vera Egorova (UC) Aritmética Computacional 24 / 37
No os fiáis del ordenador

1 Ejecutar sobre el ordenador: 0.3 − 0.2 − 0.1


2 Ejecutar sobre el ordenador:
1025 + 345 − 1025 + 54 + 1050 − 2 − 1050
3 Calcular e−30 utilizando el desarrollo en serie de la función
exponencial

x
X xk
e =
k!
k =0

Cualquier procedimiento numérico debe considerar el control de


errores para medir cómo afectan al resultado!

Vera Egorova (UC) Aritmética Computacional 25 / 37


Operaciones aritméticas

Cuando se suman dos números de punto flotante, el número de la


mantisa con el exponente menor se modifica de tal forma que los
exponentes sean los mismos.
0.1557 × 101 + 0.4381 × 10−1
Cálculos grandes: aunque el error de redondeo individual sea
pequeño, el efecto acumulativo durante el proceso de muchos
cálculos puede ser relevante.
Suma de un número grande y uno pequeño
Sumar la serie en orden ascendente.
Cancelación por resta: cuando se restan dos números de punto
flotante casi iguales
Se puede evitar empleando una transformación.
Evaluación de ex usando series infinitas
1
Presentar e−x = ex .

Vera Egorova (UC) Aritmética Computacional 26 / 37


Ecuación cuadrática
ax 2 + bx + c = 0

Raices: √
−b ± b2 − 4ac
x1,2 = (1)
2a
¿Qué

pasa si b2  ac?
b2 − 4ac ≈ |b|
Cancelación en una de las raices.
¿Cómo evitar la cancelación?
Multiplicar
√ numerador y denominador de la raíz "problemática" por
−b − b2 − 4ac:
2c
x1,2 = √ (2)
−b ∓ b2 − 4ac
Si b > 0, utilizar (2) para x1 y (1) – para x2
Si b < 0, utilizar (1) para x1 y (2) – para x2
Vera Egorova (UC) Aritmética Computacional 27 / 37
Análisis de la propagación del error

Denotaremos la versión punto flotante de la máquina de un número x


como fl(x). Este número puede ser escrito de la forma

fl(x) = x(1 + ),

donde ε es un número pequeño dependiente de x.


El error relativo del número de punto flotante:

|x − fl(x)| |x − (x + x)|
= = ||
|x| |x|

Vera Egorova (UC) Aritmética Computacional 28 / 37


Análisis de la propagación del error

Se tiene representaciones de punto flotante fl(x) y fl(y ) para los


números reales x e y . Y que los simbolos ⊕, , ⊗, representan
las operaciones de suma, resta, multiplicación y división de la
máquina, respectivamente:

x ⊕y = fl(fl(x) + fl(y ))
x y = fl(fl(x) − fl(y ))
x ⊗y = fl(fl(x) · fl(y ))
x y = fl(fl(x)/fl(y ))

Vera Egorova (UC) Aritmética Computacional 29 / 37


Error de la suma

Consideramos la suma:

x ⊕ y = fl(fl(x) + fl(y )

Según la definición de punto flotante tenemos:

x ⊕ y = (x(1 + x ) + y (1 + y ))(1 + x+y )


Elegimos  = max(|x |, |y |, |x+y |) < u:

x ⊕ y = (x + y )(1 + x+y )2 = (x + y )(1 + 2 + 2 )

Error relativo de la suma:

|(x + y ) − (x ⊕ y )| |x| + |y | |x| + |y | |x| + |y |


≤ (2 + 2 ) ' · 2 ≤ εM
|x + y | |x + y | |x + y | |x + y |
Vera Egorova (UC) Aritmética Computacional 30 / 37
Error de la suma

|(x + y ) − (x ⊕ y )| |x| + |y |
≤ · εM
|x + y | |x + y |
Error del producto

|xy − fl(fl(x) · fl(y ))|


≤ 3 + 32 + 3 ' 3 ≤ 2εM
|xy |

Error de la división
|x/y − fl(fl(x)/fl(y ))| 3 + 2
≤ ' 3 ≤ 2εM
|x/y | 1−

Error (absoluto) en una función

∆f (x̂) = |f (x) − f (x̂)| ∼


= |f 0 (x̂)|∆x̂

Vera Egorova (UC) Aritmética Computacional 31 / 37


Ejercicio

Dado un valor de x̂ = 2.5 con un error ∆x̂ = 0.01, estimar el error


resultante en la función f (x) = x 3 .

Valor verdadero:
f (2.5) = 15.625
∆f (x̂) = |f 0 (x̂)|∆x̂ = 3 · 2.52 · 0.01 = 0.1875
Ya que el valor verdadero se encuentra entre 15.4375 y 15.8125.
De hecho,
f (2.49) = 15.4382, f (2.51) = 15.8132

Vera Egorova (UC) Aritmética Computacional 32 / 37


Propagación de errores

Error absoluto:
∆(a ± b) = ∆a + ∆b
∆(a · b) = ab(δa + δb ) = b∆a + a∆b
∆ ba = ba (δa + δb )


∆(an ) = nan−1 ∆a
Error relativo:
aδa +bδb
δ(a ± b) = a±b
δ(a · b) = δa + δb
δ(an ) = nδa

Vera Egorova (UC) Aritmética Computacional 33 / 37


Ejercicio

Calcular el valor y los errores:

m2 n3
X = √ ,
k
m = 28.3(±0.02), n = 7.45(±0.01), k = 0.678(±0.003)
2 3
X = √ ·7.45 = 4.02
28.3
· 105
0.678
δm = 0.02
28.3 = 0.00071
0.01
δn = 7.45 = 0.00135
δk = 0.003
0.678 = 0.00443
δX = 2δm + 3δn + 0.5δk = 0.0769
∆X = X · δX = 3.1 · 103

Vera Egorova (UC) Aritmética Computacional 34 / 37


Estabilidad
1 Un proceso numérico es inestable cuando pequeños errores en
los datos de entrada, o errores de redondeo en alguna de las
etapas el proceso, producen errores grandes en los datos de
salida
2 Un proceso numérico es estable cuando no es inestable.
3 Un mismo algoritmo puede ser estable para algunos datos
iniciales e inestable para otros. Entonces se dice que el algoritmo
es condicionalmente estable.

El producto ⊗ de dos números de máquina es un cálculo estable,


sólo se pueden producir errores de desbordamiento (overflow)
La división de dos números de máquina es un cálculo estable,
sólo se pueden producir errores de desbordamiento (overflow)
La suma ⊕ de dos números de máquina es estable cuando los
dos números tienen el mismo signo, y puede ser inestable cuando
los dos números tienen signo distinto.
Vera Egorova (UC) Aritmética Computacional 35 / 37
Estabilidad y condición

Es importante que los cálculos realizados por la computadora sean


bien considionados, es decir pequeños cambios en los datos deben
de resultar en pequeños cambios en la solución.

Número de condición
x̂f 0 (x̂)
Número de condición = f (x̂)

Un valor > 1: el error relativo se amplifica;


Un valor < 1: el error relativo se atenúa;
Un valor  1: función está mal condicionada

Vera Egorova (UC) Aritmética Computacional 36 / 37


Bibliografía
1 CAPÍTULO 3 de:
Chapra S.C.; Canale R. (2005) Métodos Numéricos para
Ingenieros. Ed. McGRaw-Hill
2 D. Goldberg, What Every Computer Scientist Should Know About
Floating-Point Arithmetic
https://docs.oracle.com/cd/E19957-01/806-3568/
ncg_goldberg.html

Vera Egorova (UC) Aritmética Computacional 37 / 37

También podría gustarte