37
Matemáticas Análisis Numérico I 4° Semestre Unidad 2. Sistemas numéricos Clave 050920624/ 060920624 Universidad Abierta y a Distancia de México

Análisis Numérico I 4° Semestre - campus.unadmexico.mx

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Matemáticas

Análisis Numérico I

4° Semestre

Unidad 2. Sistemas numéricos

Clave

050920624/ 060920624

Universidad Abierta y a Distancia de México

Page 2: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 2

Índice

Unidad 2. Sistemas numéricos 3

Presentación de la unidad 3

Competencia específica 3

Logros de la unidad 3

2.1. Sistemas numéricos 4

2.1.1. El sistema binario y el sistema decimal 5

2.1.2. Operaciones 9

2.2. Soluciones numéricas 11

2.2.1 Otros sistemas numéricos (octal, hexadecimal, base n) 11

2.2.2. Punto flotante 13

2.3. Representación numérica 14

2.3.1 Método del punto fijo 23

2.3.2. Fuentes de error 26

2.3.3. Tipos de error 27

2.3.4. Estabilidad numérica 29

Cierre de la unidad 36

Para saber más: 36

Referencias Bibliográficas 37

Figura 1. Figura que ilustra el proceso de cómputo y cálculo teórico de una función así como la

propagación del error hacia delante (función computada y teórica) y el error hacia atrás (error en los

datos) .......................................................................................................................................................... 31

Tabla 1. Parámetros usados en diferentes sistemas de punto flotante, los estándares de la IEEE para SP y

DP corresponder a las arquitecturas de 32 y 64 bits respectivamente. ..................................................... 17

Tabla 2. Tabla que muestra el conjunto de punto flotante para <2,3,-1,1>. En la primer columna se

enumeran todos los elementos de este conjunto, la segunda corresponde al signo, las siguientes tres a la

mantisa, después el exponente y al final su representación en base 10. .................................................. 18

Page 3: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 3

Unidad 2. Sistemas numéricos

Presentación de la unidad

En esta sección analizaremos y entenderemos como se representa la información de forma

numérica. También generalizaremos este concepto para presentar como se representa la

información numéricamente en cualquier base.

Analizaremos y presentaremos los sistemas de punto flotante y su funcionamiento para

representar información

Presentaremos también las distintas fuentes de error que pueden surgir a partir de esta

representación.

Competencia específica

Representar análisis de errores para resolver algoritmos complejos utilizando distintas

representaciones numéricas

Logros de la unidad

• Conocer la necesidad e importancia de representar los

números reales a través de un conjunto de números

finito.

• Conocer los métodos que se siguen para que

represente lo mejor posible a los reales y la aritmética

redefinida para dicho conjunto.

• Conocer el error que se produce al mapear los

elementos y operaciones reales en estos conjuntos y

Page 4: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 4

como diseñar algoritmos que minimicen este error.

2.1. Sistemas numéricos

El desarrollo de los sistemas numéricos responde a la necesidad específica de encontrar el

símbolo que corresponde al cómputo de algún problema, es decir, una vez que nosotros hemos

planteado y resuelto un problema este resultado es representado por un símbolo específico,

satisfaciendo así una de las tareas fundamentales de las matemáticas, la de mapear elementos

entre conjuntos.

A lo largo de la Historia han existido varios sistemas numéricos, entre ellos podemos distinguir

el decimal, el binario y el romano. Actualmente el sistema numérico que usamos

cotidianamente es el decimal que es de tipo posicional, a diferencia del sistema de números

romanos sobre el cual, nuestro actual sistema, representa una ventaja que se puede notar a la

hora de hacer operaciones. A continuación, distinguiremos las distintas propiedades que

caracterizan al sistema posicional en distintas bases.

En la unidad anterior vimos la dificultad de presentar la gran mayoría de los números reales, en

realidad podemos concluir que, en nuestra vida cotidiana, únicamente trabajamos con un

subconjunto de los números racionales, a saber aquellos en los que la expansión decimal no es

infinita (y de hecho es mucho menor que eso).

Es importante hacer notar que de aquí en adelante haremos una distinción entre los resultados

teóricos y los aplicados, esto se debe a que no siempre teoría y práctica empatan y de hecho

eso es justo de lo que trata toda esta asignatura.

Page 5: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 5

2.1.1. El sistema binario y el sistema decimal

Comencemos pues con el siguiente ejemplo: el número 352 es expresable de la siguiente

forma:

352 = 3 ∙ 100 + 5 ∙ 10 + 2 = 3 ∙ 102 + 5 ∙ 101 + 2 ∙ 100

De la expresión anterior es fácil distinguir que el 352 fue expresado como una combinación

lineal de los coeficientes {3,5,2} y las potencias {0,1,2} del número 10, entonces al 10 lo

denominamos la base de este sistema. Es decir, en nuestro sistema el número 352 fue

expresado en forma polinomial con un conjunto de coeficientes y los distintos elementos de la

base de nuestro sistema.

Tampoco es difícil observar que nuestro sistema posicional base 10 (de aquí en adelante,

sistema base 10) es capaz de representar números menores a 1, esto, como bien sabes se

puede lograr usando potencias negativas de la base. Por ejemplo, el 352.11 se expresa como:

352.11 = 3 ∙ 102 + 5 ∙ 101 + 2 ∙ 100 + 1 ∙ 10−1 + 1 ∙ 10−2

Decimos que este es un sistema posicional porque no es lo mismo un 3 multiplicando al

elemento de la base cuya potencia es dos (102), que si estuviera multiplicando al elemento de

la base cuya potencia es 0 (100).

3 ∙ 102 ≠ 3 ∙ 100

La notación es la siguiente, el número natural 𝑁 se expresa como:

𝑁 = 𝑎𝑛10𝑛 + 𝑎𝑛−110

𝑛−1 +⋯+ 𝑎0100 (1)

La elección del número 10 como la base del sistema numérico parece obvia es meramente

circunstancial, tal vez su predominio se haya debido a su facilidad de entendimiento y manejo,

pero a lo largo de la historia el ser humano ha escogido distintas bases para expresar números,

entre estos están la bases 12, 20 e incluso 60. La elección de la base depende en gran medida

del campo específico en donde se quieran mapear números.

Page 6: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 6

Con la llegada de las computadoras digitales, donde los diferentes estados basales son la

existencia o no de un impulso magnético o eléctrico, se escogió como la base de sistema

numérico al 2, esto es, se usa el sistema binario para representar números con estas

computadoras.

La expresión de números en esta base funciona de la misma forma que en el sistema de base

10. Podemos ver los siguientes ejemplos para aclarar este punto:

1103101310

===

1211211012

===

1 ∙ 20

1 ∙ 21 + 1 ∙ 20

1 ∙ 23 + 1 ∙ 22 + 0 ∙ 21 + 1 ∙ 20

El ejemplo anterior está dividido en tres columnas, la primera indica el número en base 10, la

segunda indica su equivalente en sistema binario y la tercera la expansión polinomial del mismo

número en base 2. Los subíndices en las primeras dos columnas indican la base en la que se

encuentra expresada el número en cuestión. De aquí en adelante no usaremos el subíndice 10 a

menos que sea estrictamente necesario identificar dicha base.

De forma general podemos decir que cualquier entero no negativo 𝑁 se representa en sistema

binario de la siguiente forma:

𝑁 = (𝑎𝑛𝑎𝑛−1…𝑎0)2 = 𝑎𝑛2𝑛 + 𝑎𝑛−12

𝑛−1 +⋯+ 𝑎020 = 𝑎𝑛2

𝑛 +⋯+ 𝑎0 (2)

En el sistema posicional binario a cada uno de los diferentes dígitos en las distintas posiciones

se le denomina como bit. Al conjunto de 8 bits se le denomina byte. Las computadoras de hoy

en día representan la información de manera interna (números, caracteres) con conjuntos de

bytes, particularmente de 4 y 8 bytes, es decir, con 32 y 64 bits, a estos conjuntos de bits se les

denominan palabras, es decir, palabras de 32 bits o palabras de 64 bits.

Entonces, a partir de estos ejemplos podemos extraer el siguiente algoritmo. Considerando los

coeficientes 𝑎𝑛, … , 𝑎0 del polinomio en base 𝛼

Page 7: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 7

𝑝(𝑥) = 𝑎𝑛𝑥𝑛 + 𝑎𝑛−1𝑥

𝑛−1 +⋯+ 𝑎1𝑥1 + 𝑎0𝑥

0 (3)

y el número 𝛽 se pueden mapear los número 𝑏𝑖 con 𝑛 ≤ 𝑖 ≤ 0 de la siguiente forma

𝑏𝑛 ← 𝑎𝑛𝑏𝑛−1 ← 𝑎𝑛−1 + 𝑏𝑛𝛽𝑏𝑛−2 ← 𝑎𝑛−2 + 𝑏𝑛−1𝛽

⋮𝑏0 ← 𝑎0 + 𝑏1𝛽

Algoritmo 1. Algoritmo para convertir un número de una base 𝜶 a un número en base 𝜷

Entonces 𝑏0 = 𝑝(𝛽).

Aplicando este algoritmo al número binario 11012 queda de la siguiente forma. Nuestros

coeficientes son los números 𝑎3 = 1, 𝑎2 = 1, 𝑎1 = 0 y 𝑎0 = 1 y el número 𝛽 = 2

𝑏3𝑏2𝑏1

===

11 + 1 ∙ 2 = 30 + 3 ∙ 2 = 6

𝑏0 = 1 + 6 ∙ 2 = 13

Por lo tanto

11012 ≡ 1310

Entonces podemos ver que este algoritmo puede convertir un número binario a su equivalente

decimal ¿A qué número corresponde el número 10002?

La conversión de un número en base 10 a base 2 se puede hacer mediante el algoritmo inverso,

es decir, a partir de la expresión (2) sabemos que el número 𝑁10 se puede desarrollar en

potencias de 2 de la siguiente forma

𝑁 =∑ 𝑏𝑖2𝑖

𝑛

𝑖=0

(4)

donde 𝑏𝑖𝜖{0,1}. Entonces 𝑁 en notación binaria, análogamente al caso decimal, queda

expresado como:

𝑁2 ≡ 𝑏𝑛𝑏𝑛−1…𝑏1𝑏0

Page 8: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 8

Si a la expresión (4) la dividimos entre 2 entonces obtenemos:

𝑁

2= 𝑏𝑛2

𝑛−1 + 𝑏𝑛−12𝑛−2 +⋯+ 𝑏12

0 +𝑏02

Es decir, al dividir 𝑁/2 el residuo que ya no fue divisible entre 2 es 𝑏0, nos queda ahora

encontrar 𝑏1 de la misma forma, esto lo haremos encontrando el residuo de dividir 𝑄0/2 donde

𝑄0 está definido por 𝑁/2 = 𝑄0 + 𝑏0/2 y así recursivamente hasta llegar a algún número

natural 𝐾 tal que 𝑄𝐾 = 0

Entonces el algoritmo nos queda de la siguiente manera:

𝑖 = 0 𝑁 = 2𝑄𝑖 + 𝑏𝑖 𝐻𝑎𝑠𝑡𝑎 𝑄𝑖 = 0 𝑄𝑖 = 2𝑄𝑖+1 + 𝑏𝑖+1

Algoritmo 2. Algoritmo para convertir un número en base 10 a base 2, se requiere encontrar el residuo en cada paso e irlo

anexando. Si reemplazamos el 2 por un número cualquiera 𝒉 entonces este mismo algoritmo sirve para convertir un número en

base 10 a base 𝒉.

Lo que resta es coleccionar todos los 𝑏𝑖 en el orden que indican los índices para conformar el

número binario, por ejemplo:

242 = 2 ∙ 121 + 0, 𝑏0 = 0121 = 2 ∙ 60 + 1, 𝑏1 = 160 = 2 ∙ 30 + 0, 𝑏2 = 0 30 = 2 ∙ 15 + 1, 𝑏3 = 115 = 2 ∙ 7 + 1, 𝑏4 = 17 = 2 ∙ 3 + 1, 𝑏5 = 1

3 = 2 ∙ 1 + 1, 𝑏6 = 11 = 2 ∙ 0 + 1, 𝑏7 = 1

Entonces nuestro a partir de nuestro algoritmo podemos establecer la equivalencia que:

Page 9: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 9

242 ≡ 111110102

Entonces a partir de estos dos casos particulares podemos generalizar que la expresión de un

entero 𝑁 en una base cualquiera 𝑏 natural se expresa como:

𝑁 = (𝑎𝑛𝑎𝑛−1𝑎𝑛−2…𝑎0)𝑏 =

2.1.2. Operaciones

En la sección anterior hemos visto como se expresan los números dentro de nuestro sistema

numérico y también dentro del sistema numérico binario. Pero esta descripción no es suficiente

ya que no son operables, es decir, necesitamos fundamentar el funcionamiento de las

operaciones de suma y producto a partir de la definición que acabamos de dar.

Sean 𝑝 y 𝑞 dos números en base 10 tal que 𝑝 ≠ 𝑞. Entonces ambos pueden ser expresados de

la siguiente forma

𝑝 = 𝑝𝑛𝑝𝑛−1…𝑝0𝑞 = 𝑞𝑚𝑞𝑚−1…𝑞0

𝑚 ≠ 𝑛

Entonces esto quiere decir que

𝑝 = 𝑝𝑛 ∙ 10𝑛 + 𝑝𝑛−1 ∙ 10

𝑛−1 +⋯+ 𝑝0 ∙ 100

𝑞 = 𝑞𝑚 ∙ 10𝑚 + 𝑞𝑚−1 ∙ 10

𝑚−1 +⋯+ 𝑞0 ∙ 100

Entonces suponiendo sin pérdida de generalidad que 𝑛 ≥ 𝑚, la suma de p y q está definida de

la siguiente manera.

𝑝 + 𝑞 = (𝑝𝑛 ∙ 10𝑛 +⋯+ 𝑝𝑚 ∙ 10

𝑚 +⋯+ 𝑝0 ∙ 100) + (𝑞𝑚 ∙ 10

𝑚 +⋯+ 𝑞0 ∙ 100)

= 𝑝𝑛 ∙ 10𝑛 +⋯+ (𝑝𝑚 + 𝑞𝑚) ∙ 10

𝑚 +⋯+ (𝑝0+𝑞0) ∙ 100

Page 10: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 10

Para encontrar el número específico podemos usar el Algoritmo 1 descrito en la unidad

anterior, esto porque las sumas 𝑝𝑖 + 𝑞𝑖 pueden estar rebasando la base 𝑏 en la que están

expresados los coeficientes.

El Algoritmo 1 automáticamente va acumulando el resultado computado, o bien, podemos

hacer en cada una de las sumas el algoritmo que conocemos como acarreo en el que cada

posición 𝑞𝑖 del resultado conserva el resultado de (𝑞𝑖 + 𝑝𝑖)𝑚𝑜𝑑 𝑏 y se acarrea a la posición 𝑖 +

1 la parte entera (𝑝𝑖𝑠𝑜) de la división (𝑞𝑖 + 𝑏𝑖 + 𝑎𝑐𝑎𝑟𝑟𝑒𝑜)/𝑏. El algoritmo siguiente ilustra el

sistema recién descrito.

𝑎𝑐𝑎𝑟𝑟𝑒𝑜 = 0𝑟0≤𝑖≤𝑛+1 = 0𝑃𝑎𝑟𝑎 𝑖 ≔ 0…𝑛 + 1: 𝑟𝑖 = (𝑝𝑖 + 𝑞𝑖) 𝑚𝑜𝑑 𝑏 𝑎𝑐𝑎𝑟𝑟𝑒𝑜 = 𝑝𝑖𝑠𝑜((𝑝𝑖 + 𝑞𝑖 + 𝑎𝑐𝑎𝑟𝑟𝑒𝑜)/𝑏)

Algoritmo 3. Algoritmo del acarreo para la suma de números.

De la definición de suma podemos ver que cada uno de los coeficientes de los diferentes

monomios cumple (𝑝𝑖 + 𝑞𝑖) = (𝑞𝑖 + 𝑝𝑖) ya que todos son pertenecientes a un campo. En este

caso y considerando las salvedades mencionadas es fácil comprobar que

𝑝 + 𝑞 = 𝑞 + 𝑝

Si 𝑘 es un escalar, entonces 𝑘𝑝 se define como:

𝑘𝑝 = 𝑘(𝑝𝑛 ∙ 10𝑛 +⋯+ 𝑝𝑚 ∙ 10

𝑚 + 𝑝𝑚−1 ∙ 10𝑚−1 + …+ 𝑝0 ∙ 10

0)

= 𝑘𝑝𝑛 ∙ 10𝑛 +⋯+ 𝑘𝑝𝑚 ∙ 10

𝑚 + 𝑘𝑝𝑚−1 ∙ 10𝑚−1 + …+ 𝑘𝑝0 ∙ 10

0

De la misma forma podemos aplicar el Algoritmo 1 o considerar que cada multiplicación se

puede expresar como ∑ 𝑝𝑖𝑘𝑖=1 y aplicar el algoritmo del acarreo.

La asociatividad y exponenciación se pueden extender a partir de estos ejemplos y se deja

como ejercicio al lector.

Page 11: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 11

2.2. Soluciones numéricas

2.2.1 Otros sistemas numéricos (octal, hexadecimal, base n)

Como ya dijimos, el sistema binario es el que se usa de forma nativa en todas las computadoras

digitales y dispositivos electrónicos hoy en día pero el decimal es con el que estamos muy

acostumbrados a trabajar. El sistema octal, es decir, el sistema numérico base 8, cumple con la

característica de que la conversión de un número de base 2 a uno de base 10 es muy sencilla.

En otras palabras, el sistema octal sirve como un sistema intermedio entre el de base 2 y el de

base 10.

La conversión de octal a binario se logra únicamente reemplazando el dígito en octal por su

equivalente en binario, por ejemplo

3478 → 38 ≡ 0112, 48 ≡ 1002, 78 ≡ 1112 → 111001112

Y análogamente el paso de binario a octal es equivalente con la precaución de separar el

número binario en grupos de 3 (esto se debe a que se requieren 3 posiciones para expresar en

binario todos los digititos en base 8).

101110112 → 0102 ≡ 28, 1112 ≡ 78, 0112 ≡ 38 → 2738

Es por esto que para convertir de base 10 a base 2 es más rápido convertirlo primero a octal y

después convertirlo a binario. Usaremos el ejemplo usado previamente, convertiremos el 242 a

binario pasando primero por octal, para entender el siguiente ejemplo hay que tomar en

cuenta que 1010 = 128.

242 = 28(12)82 + 48(12)8

1 + 28(12)80

Usando el primer algoritmo para convertir a binario tenemos que

Page 12: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 12

𝑏2 ← 28𝑏1 ← 48 + 28(12)8 = 308𝑏0 ← 28 + 308(12)8 = 28 + 3608 = 3628

Entonces tenemos que:

242 = 3628 = 111100102

Otro sistema numérico que importante por mencionar es el sistema hexadecimal (base 16) ya

que al igual que el sistema octal, este se ha desarrollado a la par del desarrollo de las

computadoras y también es un sistema intermedio entre el sistema binario y el decimal.

Notacionalmente el sistema Hexadecimal se abrevia comúnmente como Hex lo que puede

indicar que el conjunto de números agrupados bajo dicha abreviatura está en hexadecimal.

Este consta de una base de 16 símbolos o dígitos que son, por convención

{0,1,2,3,4,5,6,7,8,9, 𝐴, 𝐵, 𝐶, 𝐷, 𝐸, 𝐹}

Su importancia radica en la característica de que

28 = 24+4 = 2424 = 16 ∙ 16

El extremo izquierdo de la expresión anterior representa a la unidad de memoria en una

computadora, denominada byte, y el derecho indica que se requieren dos símbolos de este

sistema para representar un byte de memoria para representar un solo byte.

Si quisiéramos convertir el número 217𝐹16 a base 10 tenemos que ocupar el mismo algoritmo

una vez más de la siguiente forma

217𝐹16 = 2 ∙ 163 + 1 ∙ 162 + 7 ∙ 161 + 15 ∙ 160

= 2 ∙ 4096 + 1 ∙ 256 + 7 ∙ 16 + 15= 8192 + 256 + 112 + 15 = 8575

Page 13: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 13

Para convertir un número cualquier en base 𝛽1 a base 𝛽2 podemos usar el algoritmo 2 con la

siguiente salvedad, expresamos 𝛽2 en la base 𝛽1 y llevamos a cabo el algoritmo para esta

misma base 𝛽1. En cada paso, el residuo lo expresamos en base 𝛽2.

En el caso particular de los sistemas octal, hexadecimal y binario el paso entre ellas es muy

sencillo ya que 16 = 2 ∙ 8 = 24, es decir, lo que hay que hacer es agrupar de 3 en 3 para

convertir de binarios

2.2.2. Punto flotante

Hasta este momento hemos expresado números enteros pero la duda inmediata es como

expresar números no enteros. Hemos dicho en repetidas ocasiones que no todos los reales

pueden estar descritos por cuestiones de uso de recursos, esta conclusión está basada en la

siguiente descripción de números no enteros.

Los números reales son uno de los grandes logros del intelecto humano, una buena cantidad de

los resultados matemáticos están basados en la estructura de estos números. Pero como ya

hemos dicho con anterioridad no es posible representar exactamente cualquier número real

para poder efectuar cómputo con ellos, y sin embargo tenemos que hacerlo de alguna forma,

entonces lo que nos queda es encontrar y desarrollar métodos para poder representarlos, así

como redefinir las operaciones que funcionan con los números reales para que funciones con

los números que definamos.

De una forma sencilla el sistema de punto flotante guarda una gran similitud con la notación

científica. Cualquier número puede ser expresado en notación científica recorriendo el punto

decimal de tal forma que sólo quede una cifra a la izquierda del punto y el resto del número a la

derecha del mismo, todo multiplicado por la potencia de 10 necesaria para obtener el mismo

número. Por ejemplo, si el número es 1324098, en notación científica el número 𝑥 se expresa

como

𝑥 = 1.324098 × 106

Page 14: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 14

Si el número es 0.23355 entonces el número 𝑥 equivalente en notación científica es

𝑥 = 2.3355 × 10−1

O bien si el número es 124.435 entonces el número 𝑥 equivalente es:

𝑥 = 1.24435 × 10−2

La característica de esta notación es que todos los números tienen una representación estándar

que depende de un número y su parte decimal y su valor absoluto depende de la potencia de

10 a la que esté elevado ese número.

Esta característica del sistema de punto flotante es la que más nos interesa aprovechar para

poder representar números en cualquier base.

2.3. Representación numérica

El sistema de punto flotante FL es el conjunto de todos los números 𝑓𝑙(𝑥) tal que 𝑥 ∈ ℝ se

representa de la siguiente forma:

𝑓𝑙(𝑥) = ± (𝑑0 +𝑑1𝛽1

+𝑑2𝛽2+⋯+

𝑑𝑝−1

𝛽𝑝−1) × 𝛽𝑒

(1)

Donde 𝑒 ∈ ℕ se llama exponente o característica, la secuencia de dígitos (llamada cadena de

caracteres o simplemente cadena) 𝑑𝑖 se denomina mantisa 0 ≤ 𝑑𝑖 ≤ 𝛽, Los números que

caracterizan a nuestro conjunto de punto flotante son:

𝛽 base

𝑝 precisión

[𝑒𝑀𝐼𝑁 , 𝑒𝑀𝐴𝑋] rango de exponentes

Es claro, por la definición de 𝑑𝑖 que 𝛽 es la base de nuestro sistema, a la cadena 𝑑1𝑑2…𝑑𝑝−1 se

le conoce como fracción, el exponente de nuestro número 𝑓𝑙(𝑥) toma cualquier valor en el

rango de exponentes, es decir, 𝑒𝑀𝐼𝑁 ≤ 𝑒 ≤ 𝑒𝑀𝐴𝑋, y como todo el número está en la misma base

Page 15: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 15

este exponente indica, de la misma forma que en la notación científica, cuantos lugares se tiene

que recorrer el punto decimal hacia la izquierda en caso de ser negativo o derecha en caso

contrario. Por ejemplo, el número real 0.1 con 𝛽 = 10, 𝑝 = 6.

𝑓𝑙(0.1) = 1.00 × 10−1

Pero con 𝛽 = 2, 𝑝 = 24 obtenemos

𝑓𝑙(0.1) = 1.10011001100110011001101 × 2−4

Observa como en la misma representación del mismo número real en sistemas de punto

flotante son muy distintas, en el primero la representación es exacta y en el segundo aparece

un patrón (110011. ..) que se repite periódicamente, lo mismo sucede si quieres expresar el

0.310 en base 2 pero en base 3 la representación es exacta. También puedes observar cómo la

mantisa en ambos casos es tan grande como la precisión lo indique, y en cada dígito (𝑑𝑖) puede

ser ocupado por un número no más grande que 𝛽 − 1, p veces.

Con esta representación definida así podríamos tener el problema de que un número tenga dos

representaciones, por ejemplo, el mismo 0.1 pero con 𝛽 = 2, 𝑝 = 23 quedaría expresado como

𝑓𝑙(0.1) = 0.1100110011001100110011 × 2−3

Este puede ser un gran problema y para evitarlo se hará que 𝑑0 ≠ 0, es decir, se usa la

convención de que ningún número empiece con 0 y el resto de la fracción se usa para expresar

nuestro número. Al seguir esta convención decimos que nuestro conjunto de números está

normalizado y los números tendrán la siguiente forma:

𝑓𝑙(𝑥) = ±𝑑0. 𝑑1𝑑2…𝑑𝑝−1 × 𝛽𝑒; 0 ≤ 𝑑𝑖 ≤ 𝛽, 1 ≤ 𝑑0 ≤ 𝛽 (2)

Pero el normalizar nuestro conjunto aparece entonces un problema, el de expresar el número 0

y es que como está definido hasta este momento no es posible, dado que 𝑑0 = 1. Usaremos la

notación < 𝛽, 𝑝, 𝑒𝑀𝐼𝑁 , 𝑒𝑀𝐴𝑋 >.

La cantidad posible de exponentes en el rango [𝑒𝑀𝐼𝑁 , 𝑒𝑀𝐴𝑋] es 𝑒𝑀𝐴𝑋 − 𝑒𝑀𝐼𝑁 + 1, dentro de

nuestro sistema de punto flotante cuando no necesitamos recorrer el punto decimal. Aún

Page 16: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 16

cuando los sistemas de punto flotante pueden ser expresados en cualquier base, las

computadoras de hoy en día usan, como ya hemos dicho, el sistema de punto flotante con base

2.

Entonces, debido a que esta de bits cantidad está fija (como mencionamos antes, esta

secuencia de dígitos se denomina palabra en una computadora) especificaremos como se

expresan estos números dentro de la palabra de tamaño 𝑁 a partir de la precisión definida para

el conjunto. Usaremos 1 bit para el signo, 𝑝 − 1 bits para la mantisa y 𝑁 − 𝑝 − 1 bits para el

exponente

|𝑠|1|𝑑1| … |𝑑𝑝−1|𝑒1|𝑒2| … |𝑒𝑁|

Propiedades

El signo puede valer 0 si el número es positivo y 1 si el número es negativo. Entonces, tomando

en cuenta todos estos elementos la cantidad de números que podemos expresar en algún

sistema de punto flotante dado es:

2(𝛽 − 1)𝛽𝑝−1(𝑒𝑀𝐴𝑋 − 𝑒𝑀𝐼𝑁 + 1) + 1 (3)

El 2 se debe al bit que reservamos para expresar el signo, el primer dígito de la mantisa de

nuestro sistema normalizado tiene (𝛽 − 1) opciones y este valor puede estar en cada una de

las 𝑝 − 1 posiciones, es por esto que lo multiplicamos por (𝛽𝑝−1) y esto lo multiplicamos por la

cantidad posible de exponentes posibles𝑒𝑀𝐴𝑋 − 𝑒𝑀𝐼𝑁 + 1, el 1 es porque reservaremos un

lugar para el número 0. La cantidad de bits que requerimos para almacenar todos los números

de algún sistema de punto flotante es:

𝑙𝑜𝑔2 (𝑒𝑀𝐴𝑋 − 𝑒𝑀𝐼𝑁 + 1) + 𝑙𝑜𝑔(𝛽𝑝) + 1 (4)

En la siguiente tabla puedes ver los valores de diferentes conjuntos de punto flotante usados en

distintos sistemas

Page 17: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 17

Sistema 𝜷 𝒑 𝒆𝑴𝑨𝑿 𝒆𝑴𝑰𝑵

IEEE SP (precisión simple) 2 24 −126 127

IEEE DP (doble precisión) 2 53 −1,022 1,023

Supercomputadora Cray 2 48 −16,383 16,384

Calculadora HP 10 12 −499 499

IBM 370 16 6 −64 63

Tabla 1. Parámetros usados en diferentes sistemas de punto flotante, los estándares de la IEEE para SP y DP corresponder a

las arquitecturas de 32 y 64 bits respectivamente.

Como mencionamos antes debido a que el primer número siempre será distinto de cero (𝑑0 =

1) por ser un sistema normalizado, entonces no hay manera directa de expresar el cero, para

hacerlo usaremos la propiedad de que los números naturales son numerable, esto es,

incluiremos un elemento en nuestro conjunto y lo forzaremos a ser el primer elemento del

mismo para representar en el sistema representará el cero. Para lograr esto haremos que

𝑓𝑙(0) = 1.0 𝑥 𝛽𝑒𝑀𝐼𝑁−1

En la siguiente tabla puedes ver todos los números de un sistema de punto flotante de juguete

cuyos parámetros son < 2,3, −1,1 >.

𝒊 𝒔 𝒎𝒂𝒏𝒕𝒊𝒔𝒂 𝒆𝒙𝒑 𝒏𝒖𝒎𝟏𝟎

1 0 1 0 0 -1 0.5

2 0 1 0 1 -1 0.625

3 0 1 1 0 -1 0.75

4 0 1 1 1 -1 0.875

5 0 1 0 0 0 1

6 0 1 0 1 0 1.25

7 0 1 1 0 0 1.5

8 0 1 1 1 0 1.75

9 0 1 0 0 1 2

Page 18: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 18

10 0 1 0 1 1 2.5

11 0 1 1 0 1 3

12 0 1 1 1 1 3.5

13 1 1 0 0 -1 -0.5

14 1 1 0 1 -1 -0.625

15 1 1 1 0 -1 -0.75

16 1 1 1 1 -1 -0.875

17 1 1 0 0 0 -1

18 1 1 0 1 0 -1.25

19 1 1 1 0 0 -1.5

20 1 1 1 1 0 -1.75

21 1 1 0 0 1 -2

22 1 1 0 1 1 -2.5

23 1 1 1 0 1 -3

24 1 1 1 1 1 -3.5

25 0 1 0 0 -2 0

Tabla 2. Tabla que muestra el conjunto de punto flotante para <2,3,-1,1>. En la primer columna se enumeran todos los

elementos de este conjunto, la segunda corresponde al signo, las siguientes tres a la mantisa, después el exponente y al final

su representación en base 10.

Observa cómo los 24 elementos, usualmente llamados números de máquina, son simétricos

respecto del cero, esto se debe a que el bit del signo multiplica por -1 cada uno de los valores

positivos, y también observa su distribución dentro de la recta real, es fácil observar que no

están uniformemente distribuidos.

Esto muestra que los conjuntos de punto flotante representan únicamente un subconjunto de

los números reales (en sentido estricto representan un subconjunto de los números racionales

ya que no se puede representar hasta el momento ningún irracional) y es que todos los

números de la tabla son consecutivos (el mismo ejercicio se puede realizar poniendo los

Page 19: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 19

exponentes en representación binaria) y al transformarlos a reales nos quedan huecos.

Entonces de aquí podemos preguntarnos qué es lo que pasa si necesitamos representar alguno

de estos números o si llegamos a la frontera de nuestro sistema, es decir si alcanzamos los

valores más alto y más bajo. Estas son las razones por las que un número cualquiera 𝑥 no pueda

ser representado por un conjunto de punto flotante (FL).

Los valores más pequeño y más grande se denominan underflow level (UFL) y overflow level

(OFL), ambos se pueden encontrar de la siguiente manera.

𝑈𝐹𝐿 = 𝛽𝐿

𝑂𝐹𝐿 = 𝛽𝑒𝑀𝐴𝑋+1(1 − 𝛽−𝑝)

Para nuestro ejemplo, 𝑈𝐹𝐿 = 2−1 = 0.5 y 𝑂𝐹𝐿 = 22(1 − 2−3) = 4 ∗ 0.88 = 3.5. Cualquier

número real fuera de estos valores no puede ser representado por nuestro sistema de punto

flotante. A todos los números que excedan OFL serán representados por un valor singular

denominado 𝐼𝑁𝐹. En Octave podemos obtener este valor de la siguiente manera:

octave:1> 10e9999999

ans = Inf

octave:2>

O bien podrías diseñar un script que vaya agregando alguna cantidad predefinida h hasta

obtener Inf. Esto lo dejaremos a tu iniciativa.

Supongamos que 𝑥 está representado por 𝑓𝑙(𝑥)de forma inexacta por

𝑓𝑙(𝑥) = 𝑑. 𝑑𝑑𝑑 …𝑑 × 𝛽𝑒

Podría ocurrir que en la última cifra el dígito 𝑑𝑝−1 valga cualquier valor entre 0 y 𝛽. a estas

cifras las denominaremos ulp (unidades en el último lugar). El máximo error, es decir, cuando

no podamos decidir si 𝑓𝑙(𝑥) representa a 𝑥 o bien a 𝑥 + 1, se da si el último dígito 𝑑𝑝−1 de

𝑓𝑙(𝑥) vale 𝛽/2, Para computar el error que corresponde a . 5𝑢𝑙𝑝 tenemos que se puede

computar por (𝛽/2) 𝛽−𝑝 × 𝛽𝑒, es decir, la mitad de la base en la última posición de la mantisa.

Page 20: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 20

Como los valores que puede tomar un número van desde 𝛽𝑒 hasta 𝛽 × 𝛽𝑒, es decir, desde la

posición en la que está el número actual hasta el número que sigue, entonces el error relativo

(que definiremos con detalle después, pero se puede entender muy fácil ya que no es otra cosa

que la diferencia de un número real 𝑥 y su representación 𝑓𝑙(𝑥) dividida por 𝑥) puede variar

entre los siguientes dos valores:

(𝛽2)𝛽−𝑝 × 𝛽𝑒

𝛽𝑒 ,

(𝛽2)𝛽−𝑝 × 𝛽𝑒

𝛽𝑒+1

Es decir, 1/2𝑢𝑙𝑝 varía por un factor 𝛽 de la siguiente forma:

1

2𝛽−𝑝 ≤

1

2𝑢𝑙𝑝 ≤

𝛽

2𝛽−𝑝

(5)

Podemos definir a 𝑒𝑝𝑠 = 𝜖𝑀𝑎𝑐ℎ = 𝛽

2𝛽−2 para poder establecer como criterio de redondeo de

un real 𝑥 al flotante 𝑓𝑙(𝑥) superior y así determinar con 𝑒𝑝𝑠 el error relativo de dicho

redondeo. En nuestro ejemplo 𝑒𝑝𝑠 = 0.125.

Entonces una característica de 𝑒𝑝𝑠 es que al sumar 𝑒𝑝𝑠 a 1 obtenemos el siguiente elemento

de nuestro conjunto:

𝑓𝑙(1 + 𝑒𝑝𝑠) > 1 (6)

Hasta el momento hemos usado la notación 𝑓𝑙(𝑥) para determinar el número de máquina que

mapea a 𝑥 pero podemos profundizar un poco más ya que es un aspecto importante a descatar,

y es que el mapeo:

𝑥 → 𝑓(𝑥)

Significa encontrar el número más cercano a 𝑥 dentro de nuestro conjunto de punto flotante

bajo las consideraciones que acabamos de mencionar, a esta operación se le conoce como

redondeo.

Page 21: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 21

Para obtener 𝑒𝑝𝑠 del sistema con que estés trabajando puedes llevar a cabo la prueba de Moler

octave:3> a=4.0/3;

octave:4> b=a-1;

octave:5> c=b+b+b;

octave:6> eps=1-c;

octave:7> eps

eps = 2.2204e-016

octave:8>

Entonces nuestro sistema de punto flotante tiene los siguientes valores distinguibles:

0 < 𝑈𝐹𝐿 < 𝑒𝑝𝑠 < 𝑂𝐹𝐿 (7)

Otro valor importante a distinguir es lo que se obtiene si hacemos una operación como 0/0,

que es un valor que no está definido en los reales. En este caso usualmente obtenemos el valor

NaN, que significa Not a Number.

octave:9> 0/0

warning: division by zero

ans = NaN

octave:10>

Aritmética

Una vez definida la descripción numérica de nuestros conjuntos de punto flotante tenemos que

definir ahora como operar con ellos, es decir, definir la aritmética, es decir no podemos sumar

las magnitudes de los números de máquina 1.422 × 10−3 y 3.4235 × 108 ya que claramente

representan uno es muy pequeño comparado con el otro.

El modelo estándar de aritmética para operar números es el siguiente

Page 22: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 22

𝑓𝑙(𝑥 𝑜𝑝 𝑦) ≡ (𝑥 𝑜𝑝 𝑦)(1 + 𝛿), 𝛿 ≤ 𝑒𝑝𝑠, 𝑜𝑝 = +,−,∗,/ (8)

Lo que indica este modelo es que el mapeo del resultado de la operación teórica (también se le

denomina como verdadera) de 𝑥 con 𝑦 es lo mismo que hacer la operación 𝑜𝑝 indicada para

después redondear el resultado. Este modelo de aritmética es muy usado pero una

modificación se pude hacer con el siguiente modelo

𝑓𝑙(𝑥 𝑜𝑝 𝑦) ≡𝑥 𝑜𝑝 𝑦

1 + 𝛿, 𝛿 ≤ 𝑒𝑝𝑠

En el caso de la suma o resta lo primero que tenemos que considerar al sumar dos números

dentro de nuestro sistema de punto flotante es que los exponentes estén alineados, es decir,

ambos tienen el mismo exponente, lo que significa desnormalizar los números para después

realizar la operación eliminando los dígitos menos significativos considerando la precisión 𝑝 del

sistema. Ejemplo, si 𝑥, 𝑦 ∈ 𝐹𝐿<10,6,−1,2>

𝑥 = 1.92403 × 102

𝑦 = 6.35782 × 10−1

𝑥 + 𝑦 = 192.403 + 0.635782 = 193.038782 = 1.93039 × 102

En el caso de la multiplicación únicamente tenemos que sumar los exponentes con

complemento a 2 y se multiplican las mantisas haciendo el redondeo al final como lo indica el

modelo estándar de aritmética.

El caso de la división es el mismo, si el resultado no cae dentro del conjunto tiene que ser

redondeado una vez obtenido el número.

Page 23: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 23

2.3.1 Método del punto fijo

En esta asignatura vamos a lidiar con pasar de resultados teóricos posibles a su implementación

concreta, a tener que encontrar el número específico que satisface alguna ecuación y esto se

puede hacer ya sea encontrándolo en papel o bien usando una computadora. Las

computadoras, como ya hemos dicho, no cuentan con una fuente infinita de recursos y los

números en particular hay que guardarlos en algún lugar específico. Aunque los ingenieros en

electrónica y físicos pueden diseñar la tecnología para hacer esto lo que necesitamos es

trabajar en un modelo que se pueda implementar y que funcione con estas restricciones.

La representación de números en el sistema posicional base 10 se hace como hemos visto,

basada en potencias de 10 que determinan la posición de cada uno de los coeficientes.

Pero podemos deshacernos de cada potencia de 10 (o base n cualquiera) y ubicar a cada uno de

los coeficientes en una posición distinta, identificando cada posición o casilla como uno de las

diferentes potencias de la base en la que estemos hablando.

Si estamos hablando de un sistema con base 2 a cada casilla se le llama bit y los coeficientes

pueden ser cualquier valor entre {0,1}. A través de un cambio de base podemos mapear un

número entero cualquiera con un número binario cualquiera, pero aún sin este algoritmo el

mapeo es bastante intuitivo

010 → 02

110 → 12

210 → 102

310 → 112

910 → 10012

1010 → 10102

Page 24: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 24

El método de punto fijo especifica como mapear naturales entre binarios cuando tenemos una

restricción de espacio. Como ya hemos mencionado la cantidad de bits continua se denomina

palabra, las computadoras hoy en día usan palabras de 32 bits, es decir, tienen registros donde

pueden guardar 32 1’s seguidos, una forma de representar naturales es con la convención signo

y magnitud, donde reservamos 1 bit para el signo y 𝑛 − 1 bits restantes para la magnitud del

número.

𝑠|𝑑0|𝑑1|… |𝑑𝑛−1

Por ejemplo, si la palabra tiene es de 8 bits y queremos representar 8 y -8 la representación en

bits es

+810 = 00001000

−810 = 10001000

Pero los algoritmos para operar con esta convención tienen un gran inconveniente y es la

representación del neutro aditivo

0 = 000000002 = 100000002

Una alternativa para representar números negativos es usar el complemento a 2, que a su vez

usa complemento a 1, así que veremos primero el complemento a 1 de un número.

El complemento a 1 de un número 𝑥2 con 𝑟 dígitos en base 2 se obtiene

𝐶1(𝑥2) = 𝑟2 − 𝑥2

donde 𝑟2 = 11…1 r veces, es decir, es toda la palabra con los bits ocupados en 1.

En el sistema binario esto se traduce de la siguiente forma, si queremos complementar a 1 el

número 810 con una palabra de 8 bits entonces

Page 25: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 25

𝐶1(810) = 𝐶1(000010002) = 111111112 − 000010002 = 111101112

Si queremos complementar a 1 el 1010 o el −1010 obtenemos:

𝐶1(1010) = 𝐶1(000010102) = 111111112 − 000010102 = 111101012

𝐶1(−1010) = 𝐶1(111101012) = 000010102

Lo que divide el dominio en dos partes, todos aquellos con el primer bit con 1 serán los

números negativos y con 0 serán los positivos, como se puede ver al sumar 111101012 +

000010102 obtenemos 0.

El complemento a 2 es simplemente sumar 1 al complemento a 1 del número 𝑥2 es decir,

𝐶2(𝑥2) = 𝐶1(𝑥2) + 12

Lo primero que hay que notar es el término 𝐶1(𝑥2) es hacer primero el complemento a 1 el

número 𝑥2 y luego sumar 12, en nuestro ejemplo:

𝐶2(1010) = 𝐶2(000010102) = 000010102 + 12 = 111101012

𝐶2(−1010) = 𝐶2(111101012) = 000010102

En el complemento a 2 tenemos que aumentar un bit en el extremo izquierdo para determinar

cuándo obtenemos un desborde en el caso de sumar un número no soportado por el sistema.

Estas técnicas de sumas nos servirán para trabajar con números en el sistema de punto fijo.

Hasta el momento sólo hemos hablado de representar enteros en un arreglo de bits, pero cómo

hacemos para representar racionales. Esto lo podemos hacer dividiendo nuestra palabra en dos

partes, una para la parte entera y otra para la fraccionaria. Por ejemplo, si nuestra palabra es de

Page 26: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 26

16 bits entonces podemos especificar los primeros 8 bits para la parte entera y los siguientes

para la fraccionaria.

27 26 25 24 23 22 21 20⏟ 27 26 25 24 23 22 21 20⏟

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Por ejemplo, con esta convención, el número 01001101010000112 ≡ 77.6710 o bien el

número 10011011010101102 ≡ −100.162. Entonces salta a la vista que las operaciones se

hacen sobre la palabra completa, operando como un entero cualquiera y el punto decimal se

puede establecer después.

El inconveniente de esta notación es su poca flexibilidad para representar una gran gama de

números donde los exponentes ocupan más valores que los permitidos por el segmento de la

palabra asignado para ellos.

2.3.2. Fuentes de error

Hemos definido el conjunto y las operaciones aritméticas de nuestro conjunto de punto

flotante, pero no es lo único en lo que debemos fijarnos ya que al estar trabajando con

aritmética finita de punto flotante es inevitable el tener que redondear, no todos los elementos

en los Reales pueden ser representados entonces algunos elementos son redondeados dentro

de nuestro conjunto de punto flotante, desde este preciso momento estamos induciendo

errores. Acotar estos errores es importante para obtener cálculos representativos de los

resultados teóricos.

El redondeo es una fuente de errores otra es la incerteza de los datos, esos se pueden obtener

a partir de

a) Medición

b) Almacenamiento de la información

c) Acarreo de cómputos previos.

Page 27: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 27

2.3.3. Tipos de error

El análisis de los errores en los diferentes métodos usados es una tarea fundamental para el

análisis numérico, en esta sección veremos una introducción al análisis del error y como

acotarlo. Para poder hablar de error estamos obligados a hablar con respecto a que es ese

error, entonces es necesario establecer un marco de referencia. A la función original que

mapea a los reales en los reales la denotaremos como usualmente lo hacemos

𝑓:ℝ → ℝ

Al método que la aproxima o computa la denotaremos por

𝑓

Cuando el dato es el número real o la entrada teórica la denominaremos

𝑥

En oposición a un dato aproximado, resultado de ruido o redondeo, o bien por resultado de un

cómputo que denotaremos

�̂� = 𝑥 + ℎ

Entonces nuestro resultado deseado, teórico lo denotamos por

𝑓(𝑥)

que es la forma usual de hacerlo y nuestro resultado aproximado, que nos denota sobre que

exactamente estamos computando, lo denotaremos por

𝑓(�̂�) = 𝑓(𝑥 + ℎ)

Pero si trabajamos con un método sobre los datos aproximados tendremos que escribir

𝑓(�̂�)

La pregunta salta a la vista ¿cuál es el error ocasionado por este cómputo? La respuesta es

bastante directa, tenemos que sacar la distancia entre lo computado y lo esperado.

Page 28: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 28

𝐸𝑟𝑟𝑜𝑟 𝑇𝑜𝑡𝑎𝑙 = 𝑓(�̂�) − 𝑓(𝑥)

Donde el primer término es el error computacional, es decir, el error por usar métodos

aproximados y el segundo término es el que obtenemos por usar datos ruidosos o sujetos a

cómputos, es decir, el error de propagación de los datos. Entonces podemos reexpresar el

error total por:

𝐸𝑟𝑟𝑜𝑟 𝑇𝑜𝑡𝑎𝑙 = (𝑓(�̂�) − 𝑓(�̂�))⏟ 𝑐𝑜𝑚𝑝𝑢𝑡𝑎𝑐𝑖𝑜𝑛𝑎𝑙

− (𝑓(�̂�) − 𝑓(𝑥))⏟ 𝑑𝑎𝑡𝑜𝑠

Esto nos dice que el error que se va induciendo en los datos tiene un efecto en el cómputo, con

o sin método aproximado pero el método no influye sobre el error en los datos. Nuestro

principal interés es sobre el error computacional debido a que es lo que depende más de

nuestra elección.

Los errores asociados al error computacional se pueden subdividir en dos tipos:

1) Redondeo

2) Truncamiento:

El error por redondeo como hemos visto se debe al mapeo implícito en el modelo números de

máquina y a la aritmética sobre estos números. Al tener que escoger 𝑓𝑙(𝑥) más cercano a 𝑥

estamos redondeando el resultado.

Los errores por truncamiento se dan comúnmente por el método escogido para mapear un

número, el ejemplo típico con el polinomio de Taylor, cuando escogemos cuantos términos de

nuestra serie de Taylor representa nuestra función entonces estamos truncando todas los

posibles refinamientos subsecuentes. Es decir, los errores por truncamiento sin inherentes al

método de cómputo escogido, usualmente es algún parámetro en el algoritmo el que

determina la cantidad de iteraciones que se aproxima el resultado.

Page 29: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 29

La manera en la que podemos cuantificar el error que claramente depende de que tanto se

desvía el valor computado del teórico, a ese valor le llamamos error absoluto y se define por

𝐸𝑟𝑟𝑎𝑏𝑠 = |𝑓(𝑥) − 𝑓(�̂�)| (9)

El error relativo es simplemente la proporción que representa este error del valor original.

𝐸𝑟𝑟𝑟𝑒𝑙 =𝐸𝑟𝑟𝑎𝑏𝑠𝑓(𝑥)

(10)

2.3.4. Estabilidad numérica

La propagación de errores es inevitable cuando estamos trabajando con el elemento que mejor

representa un real, es decir, al elegir número de nuestro conjunto de punto flotante para

representar uno o más reales la propagación de errores es algo que inexorablemente sucederá.

Entonces para poder medir y entender esta propagación de errores hay dos conceptos que nos

serán útiles, estos son el condicionamiento y la estabilidad. El condicionamiento de una

función 𝑓(𝑥) se usa para describir la sensibilidad del valor de una función a cambios en su

argumento. En pocas palabras queremos ver que tan sensible es una función a los cambios en

el argumento o bien, que tan sensibles es el resultado del cómputo de una función (valores

𝑓(𝑥)) respecto de los datos de entrada (valores 𝑥). El condicionamiento de un problema es un

número asociado a los datos.

Decimos que un problema está bien condicionado si una perturbación o cambio en los datos

de entrada causa un cambio de magnitud proporcional en su resultado, esto lo podemos

cuantificar usando los tipos de error que recién vimos. En un sentido complementario decimos

que un problema está mal condicionado si un pequeño cambio en la entrada produce un

cambio desproporcionado o grande en el resultado. El condicionamiento depende únicamente

Page 30: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 30

de los datos y no del algoritmo. En general, mientras más alto el valor del condicionamiento,

más mal condicionado estará un problema.

Formalmente lo definimos el condicionamiento 𝐶𝑜𝑛𝑑 o bien 𝜅 como:

𝐶𝑜𝑛𝑑 =|𝑒𝑟𝑟𝑜𝑟 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑜 𝑑𝑒 𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛 |

|𝑒𝑟𝑟𝑜𝑟 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑜 𝑑𝑒 𝑑𝑎𝑡𝑜𝑠|=|(𝑓(�̂�) − 𝑓(𝑥))/𝑓(𝑥)|

|(�̂� − 𝑥)/𝑥|

(11)

Al numerador, es decir, a la medida del error en el cómputo de la función respecto del cálculo

teórico también se le conoce como propagación del error relativo hacia delante.

|𝑓(�̂�) − 𝑓(𝑥)

𝑓(𝑥)|

(12)

Al denominador, es decir, a la medida del error en los datos se le conoce como propagación del

error relativo hacia atrás.

|�̂� − 𝑥

𝑥|

(13)

Para entender el condicionamiento vamos a considerar que el error hacia atrás es pequeño, es

decir, vamos a analizar el condicionamiento cuando la variación en los datos es pequeña. Un

problema bien condicionado es aquel en el que 𝜅 ≈ 1, esto se logra cuando el denominador y

numerador son casi iguales, y guarda un perfecto sentido con nuestra descripción de

condicionamiento ya que implica que el cambio relativo en la solución es aproximadamente

similar al cambio relativo en la entrada de datos.

Si en cambio tenemos un condicionamiento mucho mayor a 1 quiere decir que el error relativo

en el cómputo de la solución, es decir, en el error hacia delante, fue mucho mayor al error

relativo en los datos, y este es el caso que nos interesa. Cuando nuestro condicionamiento sea

mucho mayor a 1 querrá decir que nuestro problema (función) está mal condicionado.

Page 31: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 31

Figura 1. Figura que ilustra el proceso de cómputo y cálculo teórico de una función así como la propagación del error hacia

delante (función computada y teórica) y el error hacia atrás (error en los datos)

Suponiendo que 𝑓 es diferenciable y desarrollando un poco el extremo derecho de la expresión

anterior vemos que obtenemos:

𝐶𝑜𝑛𝑑 = |𝑥(𝑓(𝑥 + ℎ) − 𝑓(𝑥))

ℎ𝑓(𝑥)|

De nuestras lecciones de cálculo recordamos que

𝑓(𝑥 + ℎ) − 𝑓(𝑥) ≈ ℎ𝑓′(𝑥)

Entonces reescribiendo (11) tenemos que

𝐶𝑜𝑛𝑑 = |𝑥𝑓′(𝑥)

𝑓(𝑥)|

(14)

Ejemplo

Considera la función 𝑓(𝑥) = √𝑥. ¿Cuál es el condicionamiento de 𝑓(𝑥)? Sabemos que 𝑓′(𝑥) =

1

2√𝑥, entonces el condicionamiento de esta función es

𝜅 = |𝑥𝑓′(𝑥)

𝑓(𝑥)| = |

𝑥

2√𝑥

√𝑥| =

1

2

Page 32: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 32

Este tipo de condicionamiento específico es muy bueno porque es menor a 1 y aparte es

independiente de 𝑥.

Ejemplo

Considera la función

𝑓(𝑥) =10

1 − 𝑥2

su derivada es:

𝑓′(𝑥) =20𝑥

(1 − 𝑥2)2

por lo tanto 𝜅 para esta función es

𝜅 = |𝑓′(𝑥)𝑥

𝑓(𝑥)| = |

[20𝑥

(1 − 𝑥2)2] 𝑥

101 − 𝑥2

| =2𝑥2

|1 − 𝑥2|

Que como puedes ver depende del valor de |𝑥|. Esto es, conforme |𝑥| vaya creciendo, el

condicionamiento de 𝑓(𝑥) también lo hará.

La estabilidad es un concepto asociado a la sensibilidad numérica y al acarreo de errores

involucrados en el cómputo de 𝑓(𝑥), es decir, es una medida asociada al algoritmo específico

con el que se trabaje.

Decimos que un algoritmo es inestable si en cada paso involucrado la acumulación del error

crece demasiado. Es estable en caso contrario. Es fácil suponer que para determinar la

estabilidad de un algoritmo tenemos que hacer uso del condicionamiento ya que queremos ver

la propagación del error en cada paso del mismo.

Determinar la estabilidad de algún método o algoritmo suele ser muy trabajoso y requiere una

buena cantidad de experiencia matemática ya que se tiene que poner especial atención en cada

Page 33: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 33

paso del algoritmo analizando la propagación de errores y cuidando el condicionamiento en

cada paso.

Ejemplo.

Considera la ecuación

𝑎𝑥2 + 𝑏𝑥 + 𝑐 = 0

Como bien sabes, la solución a esta ecuación cuadrática está dada por

𝑥1 =−𝑏 + √𝑏2 − 4𝑎𝑐

2𝑎

𝑥2 =−𝑏 − √𝑏2 − 4𝑎𝑐

2𝑎

(15)

El cómputo de los valores planteados en (15) implica la implemenntación de un algoritmo en el

que se tienen que calcular en algún orden distintos factores como son 2𝑎, √𝑏2 − 4𝑎𝑐 y – 𝑏 para

después operar con ellos. Pero así de ingenua como es esta fórmula puede acarrear una gran

cantidad de errores numéricos, sobre todo cuando las dimensiones de nuestros coeficientes

son muy dispares o simplemente muy grandes.

En el caso de que sean muy grandes entonces 𝑏2 o 4𝑎𝑐 podrían alcanzar los valores de 𝑂𝐹𝐿 o

incluso 𝑈𝐹𝐿 si 𝑏 ≪ 1. Esto se puede solucionar dividiendo entre el más grande, pero un caso

más interesante es cuando tenemos que computar el valor de – 𝑏 ± √𝑑.

Al efectuar la resta entre dos valores cuyas magnitudes están sujetas a ajustes por redondeo

puede darse un fenómeno conocido como cancelación catastrófica en el que la información

que proveen los dígitos en las posiciones menos significativas de la mantisa se pierde debido al

redondeo.

Page 34: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 34

Considera el caso cuando 𝑎 = 0.05010, 𝑏 = −98.78, 𝑐 = 5.015. Las raíces correctas para este

caso redondeadas a 10 cifras son:

𝑥1 = 1971.605916

𝑥2 = 0.050770694

Pero con una precisión de 4 cifras significativas obtenemos que

√𝑏2 − 4𝑎𝑐 = 98.77

𝑏 = 98.78

Por lo tanto, la operación – 𝑏 ± √𝑏2 − 4𝑎𝑐 = 98.78 ± 98.77 = 1972, 0.099. Es claro que el

error cometido en la segunda raíz es inmenso, esto se debe a los pequeños errores que se

fueron acumulando en el proceso del cálculo de las raíces y donde las cifras menos significativas

se fueron redondeando, acumulando así un error relativo inmenso al final. Para acotar este

error tomamos la consideración en el que podríamos obtener cancelación catastrófica.

Considerando el caso cuando 𝑏2 ≫ 𝑎𝑐 y 𝑏 > 0 podemos multiplicar (15) por – 𝑏 − √𝑏2 − 4𝑎𝑐

en el numerador y denominador obtenemos la siguiente expresión

𝑥1 =2𝑐

−𝑏 − √𝑏2 − 4𝑎𝑐

𝑥2 =2𝑐

−𝑏 + √𝑏2 − 4𝑎𝑐

(16)

De esta forma las raíces de nuestro polinomio serán (16). 𝑥1, (15). 𝑥2. En cambio, si 𝑏 < 0 las

raíces que nos dan el resultado serán (15). 𝑥1, (16). 𝑥2. Para nuestro particular ejemplo

nuestras raíces toman los siguientes valores numéricos.

𝑥1,2 = 1972, 0.051

Como podrás ver se requieren hacer muchas consideraciones para determinar la estabilidad de

un sistema, así como para proponer un algoritmo más estable. Heurísticamente lo que tiene

que hacer alguien que diseña algún método numérico es seguir los siguientes consejos:

Page 35: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 35

1) Evitar hacer restas de cantidades que estén acarreando errores a lo largo del método.

2) Evaluar y evitar llegar a los valores 𝑈𝐹𝐿 o 𝑂𝐹𝐿.

3) Usar transformaciones bien condicionadas del problema.

4) Para calcular acarreos es preferible usar la expresión 𝑛𝑣𝑎𝑙 = 𝑛𝑣𝑎𝑙 + 𝑖𝑛𝑐𝑟𝑒𝑚𝑒𝑛𝑡𝑜

5) Usar expresiones matemáticas equivalentes que no necesariamente sean

numéricamente equivalentes, por ejemplo, el cálculo de la ecuación de segundo grado

que acabamos de ver ya que la solución original (15) tal como está planteada es más

inestable que al hacer las consideraciones tomadas en (16).

6) Minimizar la magnitud de cantidades temporales intermedias muy grandes. Esto quiere

decir que si alguna cantidad intermedia interviene directamente en el cómputo del

resultado final y su tamaño relativo respecto del resultado es muy grande puede ser la

causa de redondeos muy grandes.

Page 36: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 36

Cierre de la unidad

En esta unidad hemos discutido una de las bases más importantes entre la matemática que

algunos llaman pura y la aplicada: La necesidad de representar de alguna manera los elementos

del conjunto de los reales y el error que esto conlleva. También has aprendido algunas formas

de medir el error entre los resultados teóricos y los numéricos. Y has aprendido las bases del

análisis de estabilidad numérica de algoritmos, así como heurísticas para diseñar algoritmos

estables. Estas bases son fundamentales para el entendimiento de esta asignatura y

representan un punto de vista distinto a la inmaculada concepción de la pureza de las

matemáticas contrastado contra la necesidad y pragmatismo de encontrar números específicos

a problemas planteados.

Para saber más:

"Lorenz equation" (2013, March 22). PlanetMath.org. Freely available at

https://planetmath.org/LorenzEquation

"Numerical Computation Guide" (2013, Enero 24) Sun Microsystems, Inc. Available at

http://docs.oracle.com/cd/E19957-01/806-3568/ncgTOC.html

"IEEE floating point". (2013, January 24). In Wikipedia, The Free Encyclopedia. Retrieved 07:52,

January 25, 2013, from

http://en.wikipedia.org/w/index.php?title=IEEE_floating_point&oldid=534677145

"Relación de indeterminación de Heisenberg". (2013, 24 de enero). Wikipedia, La enciclopedia

libre. Fecha de consulta: 08:01, enero 25, 2013 desde

http://es.wikipedia.org/w/index.php?title=Relaci%C3%B3n_de_indeterminaci%C3%B3n

_de_Heisenberg&oldid=63246345

"Binary, Ternary, Octal, Duodecimal, Hexadecimal Systems, Base Conversion" (2013, January

24) In Interactive Mathematics Miscellany and Puzzles Accessed 25 January 2013.

Available at http://www.cut-the-knot.org/binary.shtml

Page 37: Análisis Numérico I 4° Semestre - campus.unadmexico.mx

Unidad 2. Sistemas numéricos

UnADM | DCEIT | MT | MANU1 37

Referencias Bibliográficas

Burden, R. (2011) Análisis numérico (7ª edición) México: Cengage Learning.

Mathews, J., Fink, K. (2000). Métodos Numéricos con MATLAB. (3ª edición) Madrid, España.

Prentince Hall.

Villatoro, F,R. et al. (2002). Aritmética flotante y análisis de errores. Recuperado de:

http://www.lcc.uma.es/~villa/tn/tema02.pdf

Concepto de Estabilidad Numérica - Cálculo de errores. (2015) [en línea]. Disponible en:

https://www.youtube.com/watch?v=asjsFpd6uqg

Métodos numéricos, análisis de errores. (2015) [en línea]. Disponible en:

https://www.youtube.com/watch?v=zbSi5ywDCls

Jiménez López, V. Pallarés Ruiz, A. (s.f.) Métodos numéricos. Recuperado de:

http://www.um.es/docencia/vjimenez/ficheros/textos/metodosnumericos.pdf