You are on page 1of 10

Convenciones para expresar resultados, Gráfica

de procesos, Aritmética de punto flotante


PRELIMINAR - Ing. Ignacio Bello
marzo de 2016 - rev04

1. Convenciones
Definiremos convenciones para expresar los resultados numéricos y su corres-
pondiente error. En evaluaciones y trabajos prácticos de la materia se exigirá que
se aplique alguna de las dos convenciones para todos los resultados finales. Si
en el ejercicio no se especifica, se sugiere usar la convención A.
Las convenciones son arbitrarias, y diremos que su uso está limitado al curso.
Distintos autores presentan convenciones similares pero no iguales.
NOTA: No confundir las convenciones para expresar un resultado con con-
signas del tipo “trabaje con álgebra de 5 cifras”.
NOTA: No se deben aplicar las convenciones en los cálculos intermedios.

1.1. Definiciones
Definición 1.1 (Definiciones básicas). Llamaremos a al verdadero valor de
una cierta magnitud (asumiendo que tal cosa existe), a (léase “a sombrero”) al
valor aproximado de la misma, ea al error absoluto y ∆a a un real positivo que
es cota para el error absoluto. Al cociente entre el error y el verdadero valor
lo llamaremos error absoluto era , y a su cota ∆ra . Aceptamos como buena
aproximación para el error relativo reemplazar en el denominador el verdadero
valor a por la aproximación a
ea = a − a
|ea | ≤ ∆a
a−a a−a
era = ≈
a a
|era | ≤ ∆ra
Convención 1.2 (A - Forma tı́pica). Dada en clase coloquialmente. Se lleva la
cota de error redondeando hacia arriba a algo de la forma

∆a = 0.d1 · 10−t

con d1 un dı́gito mayor o igual que 1. Luego se escribe el resultado a con la


misma cantidad de cifras decimales que el error aplicando redondeo simétrico.

1
Convención 1.3 (B - Resultado correctamente redondeado). Dada en clase
coloquialmente. Se lleva la cota de error redondeando hacia arriba a algo de la
forma
∆a = 0.5 · 10−t
Luego se escribe el resultado a con la misma cantidad de cifras decimales menos
uno que el error aplicando redondeo simétrico.
Definición 1.4 (Cifras decimales significativas). Diremos que una medición o
resultado a tiene t cifras decimales significativas (c.d.s.) si t es el mayor entero
tal que
|ea | ≤ 0.5 · 10−t
NOTA: No confundir con el concepto de “cifras significativas” o “dı́gitos
significativos” definido en la bibliografı́a ([2], [3]) y de uso más habitual

Convención 1.5 (Notación). Sea a una medición o resultado con cota de error
∆a, anotaremos
a = a ± ∆a
que es equivalente a
a ∈ [a − ∆a, a + ∆a]

1.2. Ejemplos
Resultado bruto Conv. A Conv. B c.d.s.
123.45678 ± 0.0033 123.457 ± 0.004 123.46 ± 0.5 · 10−2 2
123.45678 ± 0.0059 123.457 ± 0.006 123.5 ± 0.5 · 10−1 1
123.12345 ± 0.005 123.123 ± 0.005 123.12 ± 0.5 · 10−2 2
188.141 ± 2.18 188 ± 3 190 ± 5 −1
211117 ± 611 211100 ± 700 210000 ± 5000 −4

1.3. Cultura
Cosas interesantes que no entran en el examen.

En ambas convenciones indicamos que se redondee el resultado a deter-


minada cantidad de cifras, en lugar de truncarlo. En la primera es una
decisión arbitraria; pero para que la segunda convención tenga sentido
se debe necesariamente redondear el resultado, si se quisiera truncar de-
berı́amos llevar el error a la forma 1 · 10−t en lugar de usar 0.5 · 10−t .

La forma de redondeo que aplicamos es el redondeo simétrico con desem-


pate alejándose de cero (Round half away from zero). Varios lenguajes de
programación implementan en su función de redondeo otro método llama-
do redondeo simétrico hacia par (Round half to even). Tener en cuenta
que si se desea programar un presentador de resultados de acuerdo a estas
convenciones, puede fallar por esta forma de redondeo, y porque además
la máquina almacena una representación binaria del número y no una de-
cimal.
Ver http://en.wikipedia.org/wiki/Rounding

2
Para programar un presentador de resultados de acuerdo a alguna de las
convenciones, puede ser conveniente tratar los resultados y cotas de error
como cadenas de texto, aplicar la convención, y luego volver a grabar el
resultado como número.
Al aplicar las convenciones, el intervalo para el resultado puede no conte-
ner el intervalo original. Por ejemplo (ver fila 3 de la tabla) si obtenemos
a = 123.12345 ± 0.005, el valor 123.1281 está dentro del intervalo de po-
sibles valores de a, pero al aplicar cualquiera de las dos convenciones se
pierde. Si esto le parece incorrecto, no lo aplique en la vida profesional.
[6] recomienda convenciones similares a las del curso pero exige asegurarse
que el intervalo obtenido contenga al original.

2. Gráfica de procesos
Consiste un esquema que represente los pasos a seguir por una computadora
para realizar un algoritmo compuesto por sucesivas operaciones básicas (suma,
resta, etc.). Asumiremos que al completar cada operación básica, el resultado
parcial se almacena en memoria con cierto error relativo. El esquema deberá re-
presentar los valores de ingreso, el resultado, los errores relativos inherentes de
los datos y los generados al almacenar resultados.
Para presentar el tema seguiremos la siguiente hoja de ruta:

Hoja de ruta
1. Determinar error relativo propagado de las operaciones básicas
2. Encontrar la gráfica de proceso de las operaciones básicas
3. Analizar un algoritmo que resuelve y = (a + b) + c como una secuencia de
operaciones básicas, graficarlo

4. Encontrar el error relativo del resultado ery


5. Acomodar los términos de la expresión de ery y acotarlos
6. Definir (para el ejemplo) el número de condición Cp y el término de esta-
bilidad Te

2.1. Propagación de error relativo en operaciones básicas


Usaremos la fórmula de propagación de errores en primer orden para anali-
zar cómo se propaga el error relativo. Arrastraremos el signo de los errores, y
expresaremos el error relativo de la operación como combinación lineal de los
errores relativos de los datos.

X ∂y
ey = · exi
i
∂xi x

3
Suma

y = x1 + x2
ey = ex1 + ex2
x1 x2
ery = · erx1 + · erx2
x1 + x2 x1 + x2

Resta

y = x1 − x2
ey = ex1 − ex2
x1 x2
ery = · erx1 − · erx2
x1 − x2 x1 − x2

Producto

y = x1 · x2
ey = x2 · ex1 + x1 · ex2
ery = erx1 + erx2

División

y = x1 /x2
1 x1
ey = · ex1 − 2 · ex2
x2 x2
ery = erx1 − erx2

Raı́z cuadrada


y= x1
1
ey = √ · ex1
2 x1
1
ery = erx
2

2.2. Gráfica de procesos para operaciones básicas


Representaremos con un grafo los resultados anteriores (falta la raı́z, a com-
pletar). Para los datos, indicamos el nombre en la burbuja, y bajo la misma el
error relativo inherente de los mismos (al que llamaremos ii ). Para las operacio-
nes, pondremos el signo de la operación en la burbuja, el nombre de la variable
resultado bajo la burbuja, los coeficientes para calcular el error relativo sobre las
flechas que llegan, y por último el error relativo de redondeo arriba a la derecha
de la burbuja (al que llamaremos εi ). Ver figura 1

4
Figura 1: Operaciones básicas

2.3. Ejemplo gráfica de procesos


Graficaremos el proceso para y = (a + b) + c. Llamaremos al resultado
intermedio n = a + b, luego y = n + c. A los errores relativos de los datos los
indicamos con la letra i; y suponemos que en cada operación se genera un error
relativo al almacenar el resultado, los cuales indicamos con la letra griega ε. Ver
figura 2
Observando el gráfico, calculamos el error relativo de n y de y

ia · a + ib · b
ern = + εn
a+b
en · n + ic · c
ery = + εy
n+c
a · ia + b · ib + c · ic a+b
ery = + · εn + εy
a+b+c a+b+c
Ahora acotaremos todos los errores inherentes por el real positivo r y los
errores de redondeo por µ. Aplicaremos (si hace falta) la desigualdad triangular.

|ij | ≤ r
|εj | ≤ µ
 
|a| + |b| + |c| |a + b|
∆ry = ·r+ 1+ ·µ
|a + b + c| |a + b + c|

5
Figura 2: Ejemplo

Al coeficiente que acompaña r lo llamaremos número de condición del pro-


blema Cp y al coeficiente que acompaña a µ lo llamaremos término de estabilidad
Te . El Cp depende del problema numérico, el Te depende tanto del problema
numérico como del algoritmo. Tratamos, para un problema dado, de encontrar
el algoritmo con menor Te . Se considera deseable que el Te no sea mucho mayor
que el Cp . Ver ejemplos en [1], sección I.8.

2.4. Cultura
Cosas importantes que no entran en el examen.

Introdujimos coloquialmente la gráfica de procesos como forma de analizar


la propagación de errores. Si se quiere un análisis formal, se debe buscar
el tema Análisis retrospectivo de errores o Backward Error Analysis en la
bibliografı́a.
Se presentaron a través de un ejemplo los números Cp y Te . El Cp se define
formalmente en bibliografı́a especializada, por ejemplo en [4]. En [2] y [3]
se lo define para sistemas de ecuaciones lineales, tema que daremos en el
curso.
Para algoritmos complejos el análisis gráfico o hacia atrás se vuelve muy
complejo. El Cp se puede estimar comparando el resultado del algoritmo al
perturbar levemente una por una las variables de entrada. El Te se puede
estimar comparando el resultado del algoritmo para distintas precisiones
de máquina, tı́picamente doble y simple.

6
3. Representación de punto flotante
Presentaremos a modo de introducción algunos ejemplos de máquina con
resultados que pueden no ser los esperados para el lector. El objetivo de esta
sección es simplemente dar una mirada general de cómo funciona la aritmética
de punto flotante, y qué cuidados se deben tener al trabajar con computadoras.

3.1. Ejemplos
Usaremos la consola de Octave por su comodidad. Octave es un lenguaje de
programación interpretado, de código libre, compatible con el comercial Matlab.
Se instala fácilmente en las versiones más populares de Linux y en Windows,
para aprender a usarlo se recomienda [5]. En otros lenguajes de programación
(interpretados o compilados) se esperan resultados similares.
Antes de comenzar con los ejemplos, daremos la instrucción en la consola:
>> format long
para que los resultados se expresen con mayor precisión.

3.1.1. Ejemplo 1
Calculamos dos restas que deberı́an dar resultado nulo:
>> 2.5-0.5-0.5-0.5-0.5-0.5
ans = 0
>> 0.5-0.1-0.1-0.1-0.1-0.1
ans = 2.77555756156289e-017
En el primer caso el resultado es exactamente 0, en el segundo caso obtuvimos
un número (aprox. 3 · 10−17 ) que para muchas aplicaciones puede ser asimilable
a 0, pero es infinitamente más grande.

3.1.2. Ejemplo 2
Probemos dos operaciones lógicas cuyo resultado deberı́a ser falso (== es la
comparación lógica, resultado 0 significa falso, 1 significa verdadero):
>> 1 + 1e-15 == 1
ans = 0
>> 1 + 1e-16 == 1
ans = 1
En el primer caso el resultado efectivamente es falso, pero en el segundo obte-
nemos como verdadero 1 + 1 · 10−16 = 1, aparentemente el segundo término de
la suma “se pierde en el camino” por ser muy pequeño.

3.1.3. Ejemplo 3
Probaremos la asociatividad de la suma. Definimos tres variables

a = 1/(3 · 1012 ), b = 1, c = −1

y las sumamos en distinto orden:

7
>> a = 1/3e12
a = 3.33333333333333e-013
>> b = 1
b = 1
>> c = -1
c = -1
>> a + b + c
ans = 3.33288951992472e-013
>> a + (b + c)
ans = 3.33333333333333e-013
El resultado debe ser a, pero en el primer caso tenemos un error ya en la cuarta
cifra significativa.
En lugar de usar el operador +, probamos con la función sum para sumar
coordenadas de vectores de Octave:
>> sum([a, b, c])
ans = 3.33288951992472e-013
>> sum([a, b, c], ’extra’)
ans = 3.33333333333333e-013
Cuando la llamamos sin pasarle argumentos especiales, el resultado es el mismo
que en el primer caso. Cuando le pasamos el argumento extra la función obtiene
el resultado correcto.

3.2. Números de máquina


De acuerdo a la convención IEEE 7541 , los números se guardan en memoria
con una terna de valores (s, c, q) en base binaria (también hay una alternativa
en base decimal, pero no la analizaremos), donde s indica el signo, c es la mantisa
o significando y q es el exponente. El número de máquina m se forma a partir
de la terna como m = (−1)s · (c)2 · 2q .
Para s se asigna un único bit (posición de memoria que vale 0 o 1); para
c se asigna una cantidad de bits que se llama precisión p; y el exponente es
un número entero acotado Emin ≤ q ≤ Emax . Por convención, para que la
representación de un número sea única, se toma 1 ≤ c < 2, de forma tal que
la mantisa tendrá siempre la forma (c)2 = 1.b1 b2 b3 . . . bp ; el primer dı́gito de
la mantisa es por convención un 1 y no es necesario almacenarlo en memoria.
Las cotas para el exponente Emin y Emax son tı́picamente muy parecidos (por
ejemplo −126 y 127 o −1022 y 1023).
A aquellos números que pueden ser almacenados de forma exacta por una
computadora trabajando con aritmética de punto flotante los llamamos números
de máquina. Formalizando
Definición 3.1 (Números de máquina). M es el conjunto de los números de
máquina,
M = {m : m = (−1)s · (c)2 · 2q }
donde:
s ∈ {0, 1}
1 Institute of Electronic and Electrical Engineers Standard for Floating Point Arithmetic

(IEEE 754), publicado por primera vez en 1985, última edición en 2008.

8
c ∈ Q, (c)2 = 1.b1 b2 b3 b4 . . . bp
bi ∈ {0, 1}, p ∈ Z+
q ∈ Z, Emin ≤ q ≤ Emax

3.3. Propiedades
Los números de máquina son un subconjunto finito de los racionales.

Los números de máquina son más densos a valores absolutos menores, y


se separan más a medida que se alejan del 0.
Cuando queremos almacenar un número cualquiera, la computadora lo
redondea (con algún criterio) a un número de máquina. El criterio más
habitual es redondear al más cercano.

El mayor (en valor absoluto) número de máquina que podemos formar


es mmax = (1.1111 . . .)2 · 2Emax . Si por ejemplo Emax = 1023, eso da
aproximadamente 1.8 · 10308 . Al intervalo [−mmax , mmax ] se lo conoce
como rango de máquina. Si intentamos almacenar un número más grande
en valor absoluto que mmax obtendremos una excepción llamada overflow.
La computadora devuelve el resultado infinito (con signo) y debe levantar
una advertencia en la ejecución del programa.
El menor (en valor absoluto) número de máquina que podemos formar
es mmin = (1.000 . . .)2 · 2Emin . Si por ejemplo Emin = −1022, eso da
aproximadamente 9.8 · 10−324 . El intervalo [−mmin , mmin ] es como un
hueco alrededor del cero. Si intentamos almacenar un número más chico en
valor absoluto que mmin obtendremos una excepción llamada underflow.
La computadora devuelve el resultado cero (con signo) y debe levantar
una advertencia en la ejecución del programa.
Algunos sistemas achican el hueco alrededor del cero usando números sub-
normales que surgen de permitir que la primera cifra de la mantisa sea 0
en lugar de 1.

3.4. Formatos tı́picos SINGLE y DOUBLE


Completar con tablita.

3.5. Aritmética de punto flotante


Cuando la computadora debe hacer una operación con dos números de
máquina de determinada precisión, trabaja momentáneamente al doble de preci-
sión para llegar a un resultado, y luego lo almacena redondeándolo a un número
de máquina.
Para comprender mejor el álgebra de punto flotante, ver [2] capı́tulo 2 y
anexo C. Sólo diremos que las sucesivas operaciones de redondeo para conver-
tir los datos y los resultados intermedios a números de máquina hacen que se
pierdan propiedades como la conmutatividad o asociatividad de la suma o la
multiplicación. Expresiones que son iguales matemáticamente no lo serán al
evaluarlas en la computadora.

9
En general se esperan errores pequeños, pero hay casos particulares donde
se debe tener cuidado. En algunos casos se puede achicar el error asociado a
trabajar con punto flotante usando un algoritmo mejor, en otros no queda más
que aumentar la precisión de máquina.

3.5.1. Ejemplos
Completar con ejemplos

Referencias
[1] González, H. Análisis Numérico, Primer Curso. 2da ed. Buenos Aires: Nue-
va Librerı́a, 2011.
[2] Cheney, W.; Kincaid, D. Numerical Mathematics and Computing. 6ta ed.
EE.UU.: Thomson Brooks/Cole, 2008.

[3] Burden, R. L,; Faires, J.D. Análisis Numéirco. 2da ed. México: Iberoaméri-
ca, 1996.
[4] Trefethen, L.N.; Bau, D. Numerical Linear Algebra. SIAM, 1997.
[5] Borrel i Nogueras, G. Introducción informal a Matlab y Octave. [Digital],
2008.
[6] Bakhvalov, N. S. Numerical Methods. 1st ed. U.R.S.S.: MIR, 1977.

10

You might also like