libro

27

Upload: julio-rodas

Post on 12-Aug-2015

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Libro

MÉTODOS NUMÉRICOS CON

PROGRAMACIÓN EN MATLAB R⃝

Andrés Felipe Amador Rodríguez

Jorge Hernando Figueroa Jiménez

Ponti�cia Universidad Javeriana, Cali. 2011

i

Page 2: Libro

ii

Page 3: Libro

Contenido

1. Representaciones de Números en una Máquina y Errores 11.1. Representación de un número real en una máquina . . . . . . 41.2. Aritmética a K dígitos ó aritmética de precisión �nita . . . . . 111.3. Arimética en una Máquina . . . . . . . . . . . . . . . . . . . . 151.4. Pérdida de Dígitos o Cifras Signi�cativas . . . . . . . . . . . . 161.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

iii

Page 4: Libro

iv Contenido

Page 5: Libro

Capı́tulo 1Representaciones de Números en una

Máquina y Errores

La mayoría de las computadoras hacen los cálculos aritméticos usando elsistema binario (base 2) y no el sistema decimal (base 10). Cuando se in-troducen números en base 10, la computadora los convierte en números enbase 2 (0 quizás en base 16), lleva a cabo los cálculos en base 2 y �nalmentepresenta los resultados en base 10. La computadora al convertir el número enbase 10 a base 2 utiliza la llamada representación de punto �otante y en mu-chos casos trabaja con aproximaciones de los números que quiere representardando lugar a errores en los cálculos.

Antes de presentar la representación de punto �otante de un número real,se realizará un breve repaso sobre sistemas numéricos y notación cientí�ca.Si x es un número real entonces la representación de x en una base b es:

x = enen−1 ⋅ ⋅ ⋅ e0.d1d2d3 ⋅ ⋅ ⋅ dkdk+1 ⋅ ⋅ ⋅

donde ei y dj son dígitos entre 0 y b− 1.Si el valor de x se escribe en forma explícita entonces el valor de x es:

x = en × bn + en−1 × bn−1 + . . .+ e1 × b1 + e0×b0 + d1×b−1 + d2×b−2 + ⋅ ⋅ ⋅+dk × b−k + dk+1 × b−(k+1) + ⋅ ⋅ ⋅

A continuación, se escriben los números x = 13.625 y y = 401.3̄ en base10, 2, 8 y 16.

Ejemplo 1 (sistema decimal o base 10). Para representar un número seutilizan potencias de 10 junto con los dígitos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

1

Page 6: Libro

2 Capítulo 1. Representaciones de Números en una Máquina y Errores

a)

x = 13.625

= 1× 101 + 3× 100 + 6× 10−1 + 2× 10−2 + 5× 10−3

b)

y = 401.3

= 4× 102 + 0× 101 + 1× 100 + 3× 10−1 + 3× 10−2 + 3× 10−3 + ⋅ ⋅ ⋅

Ejemplo 2 (sistema binario o base 2). Para representar un número en bi-nario se usan los dígitos 0 y 1.

a)

x = 13.625

= 8 + 4 + 1 + 0.5 + 0.125

= 23 + 22 + 20 + 2−1 + 2−3

= 1× 23 + 1× 22 + 1× 20 + 1× 2−1 + 1× 2−3

= 1× 23 + 1× 22 + 0× 21 + 1× 20 + 1× 2−1 + 0× 2−2 + 1× 2−3

Luego

(13.625)10 = (1101.101)2

Los subíndices 10 y 2 indican la base en la que se encuentra el número.

b)

y = 401.3

= 256 + 128 + 16 + 1 + 0.25 + 0.0625 + ⋅ ⋅ ⋅= 1× 28 + 1× 27 + 1× 24 + 1× 20 + 1× 2−2 + 1× 2−4 + ⋅ ⋅ ⋅

Luego

(401.333 ⋅ ⋅ ⋅ )10 = (110010001.0101 ⋅ ⋅ ⋅ )2

Ejemplo 3 (sistema octal o base 8). El número se escribe usando los dígitosdel 0 al 7.

Page 7: Libro

3

a)

x = 13.625

= 8 + 5 + 0.625

= 1× 81 + 5× 80 + 5× 8−1

Luego(13.625)10 = (15.5)8

b)

y = 401.3

= 384 + 16 + 1 + 0.25 + 0.0625 + ⋅ ⋅ ⋅= 6× 82 + 2× 81 + 1× 80 + 2× 8−1 + 4× 8−2 + ⋅ ⋅ ⋅

Luego(401.333 . . .)10 = (621.24 . . .)8

Ejemplo 4 (sistema hexadecimal o base 16). Para representar un númeroen hexadecimal se usan los dígitos del 0 al 9 y las letras A,B,C,D,E y F enlugar de los números de 10, 11, 12, 13, 14 y 15 respectivamente.

a)

x = 13.625

= 13 + 0.625

= 13× 160 + 10× 16−1

= D× 160 + A× 16−1

Luego(13.625)10 = (D.A)16

b)

y = 401.3

= 256 + 144 + 1 + 0.3125 + 0.01953125 + ⋅ ⋅ ⋅= 1× 162 + 9× 161 + 1× 160 + 5× 16−1 + 5× 16−2 + ⋅ ⋅ ⋅

Page 8: Libro

4 Capítulo 1. Representaciones de Números en una Máquina y Errores

Luego

(401.333 ⋅ ⋅ ⋅ )10 = (191.55 ⋅ ⋅ ⋅ )16

De�nición 1.1 (notación cientí�ca en base 10). Un número real x se diceque está escrito en notación cientí�ca en base 10 si tiene la forma:x = ±M × 10n donde 1 ≤M < 10 (si x ∕= 0) y n es un entero. M se conocecomo la mantisa, 10 es la base y n es el exponente o característica.

Ejemplo 5.

x = 1231 = 1.231× 103

y = −0.0000738 = −7.38× 10−5

De la misma forma, se puede utilizar la notación cientí�ca en el sistemabinario. En este caso x = ±M × 2n donde 1 ⩽ M < 2 (si x ∕= 0) y n es unentero.Por ejemplo x = (1101.101)2 = (1.101101)2× 23.

Ejercicio 1. Explorar las funciones:

dec2base, bin2dec, dec2hex

Ejercicio 2. Diseñe un archivo .m que dado un número entero x contruyasu representación en base 2

1.1. Representación de un número real en una

máquina

Una máquina generalmente no almacena una cantidad matemática x sinouna aproximación binaria a x llamada representación de punto �otante,denotada por �(x) y de la forma:

x ≈ �(x) = ±1 ⋅ d1d2d3 . . . dk × 2n

donde di es un dígito binario

x ≈ �(x) = (−1)s 1 ⋅ f × 2n, donde f = d1d2d3 . . . dk (1.1)

Page 9: Libro

1.1. Representación de un número real en una máquina 5

La cantidad s indica el signo del número, la cantidad 1 ⋅ f es la mantisay se encuentra en base 2, y la cantidad n es el exponente.

La máquina utiliza un formato (longitud de palabra) para almacenar unnúmero real. Constan de múltiplos de 8 bits, donde cada posición contieneun dígito binario o bit.

El formato de precisión simple usa 32 bits, para almacenar un númeroreal, el de precisión doble 64 bits y el extendido 128 bits.

En el formato de precisión simple (32 bits), el primer bit está reservadopara el signo del número denotado por s en la ecuación (1.1) (1 para negativoy 0 para positivo ya que (−1)1 = −1 y (−1)0 = 1); los ocho bits siguientesse utilizan para almacenar un patrón de bits que representan al exponente n;los 23 bits restantes se usan para la mantisa, pero sólo se almacena la partede la mantisa denotada por f por que el dígito principal siempre es 1.

En la �gura (1.1) se muestra la distribución de los 32 bits en un formatode precisión simple.

1 bit 8 bits 23 bitsSigno del número Exponente Mantisa. Parte fraccionaria f

Figura 1.1: Distribución de 32 bits

El valor del exponente de 8 bits varía de (00000000)2 = 0 a (11111111)2 =255 para enteros positivos y no permitiría representar exponentes negativos;por esta razón el valor binario del exponente n no se almacena directamentey en vez de ello se almacena en forma sesgada como un valor no negativo c.La relación del exponente n en términos del valor almacenado c y el sesgo bes: n = c− b. Para el caso del formato de 32 bits b = 127.

Por ejemplo, si el exponente n es 2, entonces n = c − b, 2 = c − 127,c = 129.En lugar de almacenar el exponente n = 2 = (00000010)2 se almacenac = 129 = (10000001)2.

Si el exponente fuera n = −5, entonces n = c− b, −5 = c− 127, c = 122En lugar de almacenar n = −5 = (−00000101)2, se almacena c = 122 =(01111010)2.En la �gura (1.2) se muestra el valor real del exponente n y el correspondientevalor del exponente sesgado c que se almacenaría en el formato.

Page 10: Libro

6 Capítulo 1. Representaciones de Números en una Máquina y Errores

- 127 -5 0 2 128

2551291271220

(Valor real del exponente n)

(Valor del exponente sesgado calmacenado en el formato)

Figura 1.2: Valores de los exponentes n y c

Ejemplo 6. Represente en formato de precisión simple los números: x =13.625 y y = −0.375.Primero se escribe el número en notación de punto �otante base 2 de la forma(1.1) fl(x) = (−1)s(1.f)× 2n y luego se lo almacena en el formato.

a)

x = 13.625 = (1101.101)2

= (1.101101)2 × 23

fl(x) = (−1)0(1.101101)× 23

En este caso s = 0 porque el número es positivo, la parte fraccionaria fde la mantisa es f = 101101, el exponente real es n = 3, pero se almacenael exponente sesgado c. n = c− 127, 3 = c− 127, c = 130 = (10000010)2.La representación de x = 13.625 en el formato de precisión simple es:

0 10000010 10110100000000000000000Signo del número Exponente Parte fraccionaria f de la

mantisa

b)

y = −0.375 = (−0.011)2

= (−1.1)2 × 2−2

fl(y) = (−1)1(1.1)× 2−2

Como el número es negativo s = −1, la parte fraccionaria de la mantisaes f = 1 y el exponente real es n = −2, el exponente sesgado es c = 125 =(01111101)2. La representación de y = −0.375 en el formato de precisiónsimple es:

Page 11: Libro

1.1. Representación de un número real en una máquina 7

1 01111101 10000000000000000000000

En el formato de precisión doble (64 bits), el primer bit está reservadopara el signo del número; los 11 bits siguientes se usan para almacenar elexponente sesgado, y los 52 bits restantes se usan para almacenar la mantisaf . El sesgo b que se usa es 1023. En la �gura (1.3) se muestra la correspon-dencia entre el valor real del exponente n y el valor sesgado del exponentec.

- 1023 0 1024

204710230

(Valor real del exponente n)

(Valor del exponente sesgado calmacenado en el formato)

Figura 1.3: Correspondencia entre el valor real y el valor sesgado del exponente

Por ejemplo, el número real que representa el formato de precisión doble(64 bits).

0 10000001001 10011000. . . . .. . . . . . . . 0

Corresponde a un número positivo, el exponente sesgado es

c = (10000001001)2 = 1033

luego el exponente real es n = c − b, n = 1033 − 1023 = 10 y la partefraccionaria de la mantisa es f = 10011. Por lo tanto el número que representaes:

(1.10011)2 × 210 = (1× 20 + 1× 2−1 + 0× 2−2 + 0× 2−3 + 1× 2−4 + 1× 2−5)× 210

= 210 + 29 + 26 + 25

= 1632

Observaciones

Page 12: Libro

8 Capítulo 1. Representaciones de Números en una Máquina y Errores

1. Los números que representa una máquina están dentro de un rangonumérico que depende del formato que esta utilice (ya que existen re-stricciones para la mantisa y el exponente, impuestas por la longitud depalabra), esto quiere decir que no todo número real se puede represen-tar. Para un formato de precisión simple (32 bits) el máximo númeropositivo (Mnp) es aproximadamente 3× 1038 y el mínimo número pos-itivo (mnp) es aproximadamente 10−38. El mínimo número negativo(mnn) es � 3× 1038 y el máximo número negativo (Mnn) es �10−38. Enla �gura (??) se ilustran los intervalos de números representables en elformato de precisión simple.1

Cuando se hacen cálculos en una máquina que usa un formato de pre-cisión simple y la magnitud del número resultante es menor que 10−38

se produce un subdesbordamiento o sub�ujo (under�ow) y suele dárseleel valor de cero; los números que tengan una magnitud mayor a 3×1038

producen un desbordamiento o sobre�ujo (over�ow) y los cálculos seinterrumpen. En la �gura (??) se ilustran los intervalos donde ocurreun over�ow o under�ow.

El rango numérico para una máquina que usa un formato de precisióndoble (64 bits) comprende números cuya magnitud está entre 10−308 y10308.

2. Los números en una máquina no están uniformemente distribuidos;además no todo número real que se encuentre en el rango numérico dela máquina se puede representar exactamente.Por ejemplo el número -39,9, tiene una mantisa que es una sucesiónbinaria in�nitamente larga (−39.9 = −1.0011111100× 25) que se debereducir a 23 bits (en precisión simple) para poder almacenarlo.

El método de reducción dictado por la norma IEEE (Institute of Elec-trical and Electronic Engineers) es el redondeo estadístico en el quese redondea hacia arriba si el valor más allá del bit 23 de f excedea 2−24, se redondea hacia abajo si es menor que 2−24, y se redondeaal siguiente valor par o impar si es exactamente 2−24. Para −39.9,fl(−39.9) = −1.00111111001100110011010×25 se redondeó hacia arri-

1�Cuando el número que se quiere representar es 0, se iguala a 0 cada uno de los 31últimos bits, de modo que el esquema descrito en la ecuación (1.1) se omite en este caso.El bit de signo puede ser 0 ó 1. La magnitud más pequeña diferente de 0 que se puedealmacenar es limitada por esta excepción y es 2−126 ≈ 10−38 � (Akai, p. 51)

Page 13: Libro

1.1. Representación de un número real en una máquina 9

ba. El valor del número almacenado es −39.90000152587890625�.(Akai,p. 49).

Para ilustrar esta situación considere una máquina que maneja númerosde la forma:± 1 ⋅ d1d2 × 2n donde n = −1, 0, 1.

Los números positivos que maneja esta máquina son:

1.00×2−1 = (1× 20 + 0× 2−1 + 0× 2−2)× 2−1 = 0.5

1.01×2−1 = 0.625

1.10×2−1 = 0.75

1.11×2−1 = 0.875

1.00×20 = 1

1.01×20 = 1.25

1.10×20 = 1.5

1.11×20 = 1.75

1.00×21 = 2

1.01×21 = 2.5

1.10×21 = 3

1.11×21 = 3.5

El rango numérico de la máquina que se está considerando se encuen-tra entre 0.5 y 3.5 para números positivos, y entre −3.5 y −0.5 paranúmeros negativos. Observe que no todos los números reales que se en-cuentran en el intervalo [0.5, 3.5] se pueden representar en esta máquina,por ejemplo el número real 2.1 se almacenaría como 2 (¾porqué?).En general en el sistema numérico de una máquina hay huecos o dis-continuidades.

3. En la recta real, dado cualquier número real no existe el siguientenúmero real más pequeño ni el siguiente número más grande; pero en elsistema numérico de una máquina si existe. Para ilustrar esta situaciónconsidere el número de una máquina de precisión simple

El número es positivo, el exponente sesgado es (10001111)2 = 143, elexponente real es 16 y la mantisa es:

Page 14: Libro

10 Capítulo 1. Representaciones de Números en una Máquina y Errores

0 10001111 10010000000000000000001

(1.100100000000000000000001)2. El número que representa la máquinaes:(1.100100000000000000000001)2 × 216 = 102400.0078125El siguiente número más grande en la máquina se halla sumando 2−23

a la mantisa (o un 1 al último dígito de la mantisa ¾por qué?)1.10010000000000000000001+ 11.10010000000000000000010Luego, el número siguiente más grande en la máquina es:

(1.1001 . . . 010)2 × 216 = (1× 20 + 1× 2−1 + 1× 2−4 + 1× 2−22)× 216

= 102400.015625

El siguiente número más pequeño en la máquina se halla restando 2−23

a la mantisa, 1.10010000000000000000001- 11.10010000000000000000000El número siguiente más pequeño en la máquina es:

(1.10010 . . . . . . 0)2 × 216 = 102400

En esta máquina, si x es el número y xp y xg denotan respectivamenteel siguiente número más pequeño y el siguiente número más grandeentonces:

Como se observa, el número original de la máquina no sólo representaa 102400.0078125 sino a muchos números reales que se hallen entreeste número y sus números más cercanos. En otras palabras el númerooriginal de la máquina representa cualquier número real en el intervalo[102400, 102400.015625).

Page 15: Libro

1.2. Aritmética a K dígitos ó aritmética de precisión �nita 11

1.2. Aritmética a K dígitos ó aritmética de pre-

cisión �nita

Signi�ca que los cálculos se hacen con un número constante de dígitos asípor ejemplo: si se quiere sumar x = 12.16 y z = 8.7243 usando aritméticade corte a 3 dígitos, el resultado es x + z = 12.1 + 8.72 = 20.8; ahora si xy z se suman usando aritmética de redondeo a tres dígitos, el resultado esx+ z = 12.2 + 8.72 = 20.9. Observe que el resultado que se obtiene en amboscasos es una aproximación al valor exacto x+ z = 20.8843.

En general, cuando se usa aritmética a k dígitos lo primero que se hacees escribir los números en la forma:

x = ±0 ⋅ d1d2d3 . . . dkdk+1dk+2 . . .× 10n, d1 ∕= 0

después se aproxima x por

fl(x) = ±0 ⋅ d1d2d3 . . . dk × 10n

si se usa corte; y si se usa redondeo, x se aproxima por

fl(x) = ±0 ⋅ d1d2d3 . . . �k × 10n

donde �k = dk si dk+1 es 0, 1, 2, 3, 4 o �k = dk + 1 si dk+1 es 5, 6, 7, 8, 9.

Ejemplo 7. El número 227tiene una expansión decimal de la forma:

22

7= 3.142857 ⋅ ⋅ ⋅ = 0.3142857 ⋅ ⋅ ⋅ × 101

La representación de punto �otante de 227usando corte a 4 dígitos es

fl22

7= 0.3142× 101 = 3.142

Si se usa redondeo a 4 dígitos

fl22

7= 0.3143× 101 = 3.143

Observe que el cuarto dígito ahora es 3 y no 2, esto se debe a que el quintodígito en la expansión de 22/7 es 8 y como 8 es mayor que 5 se le suma 1 alcuarto dígito.

Page 16: Libro

12 Capítulo 1. Representaciones de Números en una Máquina y Errores

Ejemplo 8. Escribir el número x = 148.17 en la forma de punto �otanteusando corte y redondeo a 4, 3 y 2 dígitos.

x = 148.17 = 0.14817× 103

El error que resulta al reemplazar un número cualquiera x por su forma de

corte redondeo4 dígitos fl(x) = 0.1481× 103 = 148.1 fl(x) = 0.1482× 103 = 148.23 dígitos fl(x) = 0.148× 103 = 148 fl(x) = 0.148× 103 = 1482 dígitos fl(x) = 0.14× 103 = 140 fl(x) = 0.15× 103 = 150

punto �otante fl(x) se conoce como error de redondeo independientementede si se aplica corte o redondeo para hallar la forma de punto �otante fl(x).

Ejemplo 1.

Ejemplo 2. Escribir el número x = 148.17 en la forma de punto �otanteusando corte y redondeo a 4, 3 y 2 dígitos.Solución:x = 148.17 = 0.14817× 103

corte redondeo4 dígitos fl(x) = 0.1481× 103 = 148.1 fl(x) = 0.1482× 103 = 148.23 dígitos fl(x) = 0.148× 103 = 148 fl(x) = 0.148× 103 = 1482 dígitos fl(x) = 0.14× 103 = 140 fl(x) = 0.15× 103 = 150

El error que resulta al reemplazar un número cualquiera x por su forma depunto �otante fl(x) se conoce como error de redondeo independientementede si se aplica corte o redondeo para hallar la forma de punto �otante fl(x).A continuación se de�ne el error absoluto y el error relativo. Si x̄ es unaaproximación de x entonces el error absoluto es ∣x − x̄ ∣ y el error relativo

es

∣∣∣∣∣x − x̄

x

∣∣∣∣∣, x ∕= 0.

Ejemplos

Observe que el error relativo es el mismo en los tres casos, pero el er-ror absoluto es distinto en cada caso. Es aconsejable como una medida de

Page 17: Libro

1.2. Aritmética a K dígitos ó aritmética de precisión �nita 13

Error absoluto Error relativox = 104 x̄ = 103 1 0.009615384x = 1.04 x̄ = 1.03 0.01 0.009615384x = 0.0104 x̄ = 0.0103 0.0001 0.009615384

precisión trabajar con el error relativo ya que el error absoluto puede serengañoso.2

Ejercicio 1.Si fl(x) es una aproximación de x con corte a k dígitos. Demuestre queel error relativo que se comete al reemplazar x por fl(x) está acotado por10−k+1.

Solución:Suponga que x = 0 ⋅ d1d2 . . . dkdk+1dk+2 . . .× 10n.fl(x) = 0× d1d2 . . . dk × 10n

∣x − fl(x)∣x

=

∣∣∣∣∣0 ⋅ d1d2 . . . dkdk+1dk+2 . . .× 10n − 0 ⋅ d1d2 . . . dk × 10n

0 ⋅ d1 d2 . . . dk dk+1dk+2 . . .× 10n

∣∣∣∣∣=

∣∣∣∣∣ 0.00 . . . dk+1 dk+2 . . .

0 ⋅ d1d2 . . . dk dk+1 dk+2 . . .

∣∣∣∣∣=

∣∣∣∣∣ 0 ⋅ dk+1dk+2 . . .× 10−k

0 ⋅ d1 d2 . . . dk dk+1 dk+2 . . .

∣∣∣∣∣ ⩽ 1

0.1× 10−k = 10× 10−k = 10−k+1

Luego

∣∣∣∣∣x − fl(x)

x

∣∣∣∣∣ ⩽ 10−k+1.

(La desigualdad es porque una cota para el numerador 0 ⋅dk+1dk+2 . . .×10−k

es 0.99 . . . × 10−k ⩽ 1 × 10−k ; y una fracción alcanza su valor más grandecuando el denominador es el más pequeño, en este caso el valor más pequeñopara 0 ⋅ d1d2 . . . dkdk+1dk+2 . . . es 0.1).Ejercicio 2. (Para el lector)

Demuestre que el error relativo que se comete al reemplazar x por �(x)usando redondeo a k dígitos está acotado por 1

2× 10−k+1.

Sugerencia: se deben considerar dos casos:

2 �Un error de sólo un metro al determinar la distancia entre la tierra y Júpiter seríaalgo asombroso, pero no sería algo aceptable que un cirujano cometiera un error de esamagnitud al efectuar una incisión. . . � (Kincaid, p. 42).

Page 18: Libro

14 Capítulo 1. Representaciones de Números en una Máquina y Errores

Si dk+1 < 5 entonces fl(x) = 0 ⋅ d1d2 . . . dk × 10n.Si dk+1 ≥ 5 entonces fl(x) = 0 ⋅ d1d2 . . . dk × 10n + 10n−k.

De�nición 1.2. Se dice que el número x aproxima a x con t dígitos (o cifras)signi�cativos, si t es el entero no negativo más grande para el cual,∣∣∣∣x− x̄x

∣∣∣∣ < 5× 10−t

Ejemplos

1) Si x = 3.141592 y x̄ = 3.1∣∣∣∣x− x̄x∣∣∣∣ = 0.013239147 = 1.3239147× 10−2 < 5× 10−2

x̄ aproxima a x con 2 cifras signi�cativas.

2) Si x = 100000 y x̄ = 99994∣∣∣∣x− x̄x∣∣∣∣ = 0.00006 = 0.6× 10−4 < 5× 10−4

x̄ aproxima a x con 4 cifras signi�cativas

3) Si x = 0.000012 y x = 0.00004∣∣∣∣x− x̄x∣∣∣∣ = 2.3̄ < 5× 100

x̄ aproxima a x sin cifras signi�cativas

4) Si x = 0.000012 y x = 0.00001∣∣∣∣x− x̄x∣∣∣∣ = 0.16̄ = 1.6̄× 10−1 < 5× 10−1

x̄ aproxima a x con 1 cifra signi�cativa

Page 19: Libro

1.3. Arimética en una Máquina 15

1.3. Arimética en una Máquina

Para analizar los errores que surgen al efectuar cálculos en una máquinadebido a la limitante de la longitud de palabra (precisión simple, precisióndoble etc.) se supondrá una máquina que opera en decimal y trabaja arit-mética a 5 dígitos usando redondeo. Si fl(x) y fl(z) son las representacionespara x y z, y además ⊕, ⊖, ⊗ y ⊘ denotan las operaciones suma, resta,multiplicación y división en la máquina entonces:

x⊕ z = fl(fl(x) + fl(z))

x⊖ z = fl(fl(x)− fl(z))

x⊗ z = fl(fl(x)× fl(z))

x⊘ z = fl(fl(x)÷ fl(z))

Ejemplo.

Para x = 23

= 0.66666 . . .× 100, fl(x) = 0.66667× 100 = 0.66667

z = 227

= 0.3142857142 . . .× 101, fl(z) = 0.31429× 101 = 3.1429

x⊕ z = fl(0.66667 + 3.1429) = fl(3.80957) = 3.8096 = 0.38096× 101

x⊖z = fl(0.66667−3.1429) = fl(−2.47623) = −2.4762 = −0.24762×101

x⊗z = fl(0.66667×3.1429) = fl(2.095277143) = 2.0953 = 0.20953×101

x⊘z = fl(0.66667÷3.1429) = fl(0.21211938) = 0.21212 = 0.21212×100

En la tabla siguiente se muestran los valores de las operaciones en lamáquina, los valores reales y el error relativo en cada operación.

Operación Resultadosen lamáquina

Valor real Error relati-vo

x⊕ zx⊖ zx⊗ zx⊘ z

3.8096-2.47622.09530.21212

80/21-52/2144/217/33

0.200× 10−4

0.385× 10−5

0.295× 10−4

0.571× 10−5

Como el error relativo más grande en las operaciones es 0.295× 10−4 losresultados tienen 5 dígitos signi�cativos ya que 0.295×10−4 = 2.95×10−5 <5× 10−5.

Page 20: Libro

16 Capítulo 1. Representaciones de Números en una Máquina y Errores

1.4. Pérdida de Dígitos o Cifras Signi�cativas

Se presenta cuando se restan cantidades casi iguales en una máquina, porejemplo, si x = 2.1784301 y z = 2.1765628 se restan en una máquina decimalque maneja 5 dígitos y usa redondeo se tendría que:fl(x) = 0.21784× 101

fl(z) = 0.21766× 101

fl(x)− fl(z) = 0.00018× 101

x⊖ z = fl(fl(x)− fl(z)) = 0.18000× 10−2

Observe que para representar a x ⊖ z en su forma de punto �otante senecesito desplazar dígitos en la mantisa añadiendo tres ceros en el lado dere-cho, estos ceros carecen de sentido y no representan una exactitud adicionalya que sólo sirven para denotar el lugar decimal.El valor real de x− z es 0.0018673 y el error relativo es de 0.036041.

El valor dado por la máquina tiene 2 cifras signi�cativas ya que 0.036041 =3.6041 × 10−2 < 5 × 10−2. En este caso, aunque se trabaja con 5 dígitos, elnúmero 0.18000 × 10−2 sólo tiene 2 cifras signi�cativas, ya que las primerastres cifras de x y z coinciden, su diferencia x− z sólo contiene 2 cifras deci-males.Para apreciar la pérdida de dígitos signi�cativos cuando se restan númeroscasi iguales suponga que x y z son números reales tales que x > z, yx = 0 ⋅ d1d2d3 . . . dpdp+1dp+2 . . . dkdk+1 . . .× 10n yz = 0 ⋅ d1d2d3 . . . dp�p+1�p+2 . . . �k�k+1 . . .× 10n

si se utiliza una máquina decimal que usa una mantisa a k dígitos (corte)entoncesfl(x) = 0 ⋅ d1d2d3 . . . dpdp+1dp+2 . . . dk × 10n

fl(z) = 0 ⋅ d1d2d3 . . . dp�p+1�p+2 . . . �k × 10n, ahora,

fl(x)− fl(z) = 0.000 . . . 0︸ ︷︷ ︸p cifras

�p+1 �p+2 . . . �k︸ ︷︷ ︸k - p cifras

× 10n

x⊖ y = fl(fl(x)− fl(z)) = 0. �p+1 �p+2�k︸ ︷︷ ︸k - p cifras

×10n−p

Por lo tanto el número que se usa para representar a x− z tendrá solamentek − p cifras signi�cativas.

La pérdida de dígitos signi�cativos debido al error de redondeo a vecesse puede evitar reformulando el problema o reordenando los cálculos o reem-

Page 21: Libro

1.4. Pérdida de Dígitos o Cifras Signi�cativas 17

plazando en el caso de haber una función por un polinomio de Taylor.Ejemplo 1.

El enunciado√x2 + 1 − 1 implica perdida de cifras signi�cativas para

valores de x cercanos a 0 ya que√x2 + 1 ≈ 1 para x ≈ 0 , y se restarían dos

números casi iguales.Si se evalúa en x = 0.1 y se usa aritmética a 6 dígitos usando redondeo

se tiene:

x2 = 0.01 = 0.1× 10−1

x2 + 1 = 0.1× 10−1 + 1 = 1.01 = 0.101× 101

√x2 + 1 = 1.004987562 = 0.1004987562× 101

√x2 + 1 ≈ 1.00499 (redondeo a 6 dígitos)

√x2 + 1− 1 ≈ 1.00499− 1√x2 + 1− 1 ≈ 0.00499 = 0.499× 10−2.

Para evitar la pérdida de dígitos signi�cativos el enunciado√x2 + 1 − 1 se puede presentar también como

√x2 + 1− 1 =

(√x2 + 1− 1

) (√x2 + 1 + 1)(√

x2 + 1 + 1) =

x2√x2 + 1 + 1

x2√x2 + 1 + 1

≈ 0.01

1.00499 + 1=

0.01

2.00499= 0.498756× 10−2

(redondeo a 6 dígitos)El valor real de

√x2 + 1− 1 en x = 0.1 es 0.498756211× 10−2.

El error relativo con la expresión√x2 + 1 − 1 es:

4.88793913× 10−4 < 5× 10−4. (cuatro cifras signi�cativas).

El error relativo con la expresiónx2√

x2 + 1 − 1es:

4.230523758× 10−7 < 5× 10−7 (siete cifras signi�cativas).Ejemplo 2.

El valor del polinomio 3.5x2 − 4.9x evaluado en x = 5.8 es 89.32.Si se usa aritmética de 3 dígitos redondeo, se tiene:x2 ≈ 33.6, 3.5x2 ≈ 118, 4.9x ≈ 28.4luego 3.5x2 − 4.9x ≈ 89.6El error relativo es aproximadamente 3.135× 10−3.

Page 22: Libro

18 Capítulo 1. Representaciones de Números en una Máquina y Errores

Si el polinomio se escribe como x(3.5x - 4.9) y se evalúa en x = 5.8 usandoaritmética de 3 dígitos y redondeo entonces:3.5x ≈ 20.3, 3.5x− 4.9 ≈ 15.4x(3.5x− 4.9) ≈ 89.3En este caso el error relativo es 0 (no siempre es así). El error se ha reducidoporque en la segunda parte se ha disminuido el número de cálculos, en laprimera se necesitan 3 multiplicaciones y una resta. En la segunda sólo dosmultiplicaciones y una resta.En general los polinomios deben expresarse en forma anidada antes de realizaruna evaluación, porque así se disminuye al mínimo la cantidad de cálculosaritméticos.Si el polinomio ax 3 + bx 2 + cx + d se expresa como x [x(ax + b) + c] + d¾Cuántas operaciones necesita cada expresión para su evaluación?Ejemplo 3.

La cantidad1√

4.0000000024− 2presenta pérdida de cifras signi�cativas

por que se restan números casi iguales.Una forma alternativa para aproximar esta cantidad es la siguiente.El polinomio de Taylor de grado 1 para la función f(x) =

√x alrededor de

x0 = 4 es:P1 (x) = f (x0) + f ′ (x0) (x− x0)P1 (x) = 2 + 1

4(x− 4)

Ahora se puede aproximar f(x) por P1(x),y evaluar en x = 4.0000000024

f(x) ≈ P1 (x)√x ≈ 2 + 1

4(x− 4)√

4.0000000024 ≈ 2 + 14

(4.0000000024− 4) = 2 + 14

(0.0000000024)= 2 + 1

4(24× 10−10)

= 2 + 6× 10−10√4.0000000024 ≈ 2 + 6× 10−10

Luego1√

4.0000000024− 2≈ 1

2 + 6× 10−10 − 2=

1

6× 10−10=

1

6× 1010

Los tres primeros dígitos signi�cativos son 1.67 × 109.Encuentre en diferentes calculadoras o en un computador el número igual

a1√

4.0000000024− 2¾Qué puede concluir?

Page 23: Libro

1.5. Ejercicios 19

1.5. Ejercicios

1. Escriba los números 275.5, 79.625 y 22 + 2−10 en base 2, 8 y 16.

2. Halle en decimal (16.1)8, (1C.AF)16, (1.0011)2, (1001.01)2.

3. Escriba los números del ejercicio 1 en la notación cientí�ca en el sistemabinario.

4. Veamos cómo hallar el número racional en base 10 representada por elnúmero binario (0.01)2

Escribiéndolo en forma desarrollada:

(0.01)2 = (0× 2−1) + (1× 2−2) + (0× 2−3) + (1× 2−4) + . . .

=∞∑k=1

(2−2)k = −1+∞∑k=0

(2−2)k

= −1 + 11−1/4 = −1 + 4/3 = 1/3.

Es una serie geométrica de razón 1/4 y primer término 1.

Muestre que (0.0011)2 = 15

= 0.2 y que (0.001)2 = 17.

5. Represente los números 7.2 y �8/7 en un formato de precisión simple(use corte) (Sugerencia: utilice el resultado del ejercicio 4)

6. Obtenga el equivalente decimal de los números dados en los siguientesformatos

a) Precisión simple

0 10011111 01110000000000000000101

1 01111111 11000000000000000000000

b) Precisión doble

0 00001111111 100000000 . . . 00000000011

Page 24: Libro

20 Capítulo 1. Representaciones de Números en una Máquina y Errores

7. Encuentre en decimal el número siguiente y el anterior a los númerosdel ejercicio 6 a).

8. Demuestre que 4/5 no se puede representar de manera exacta en unamáquina que tiene un formato de precisión simple. ¾Cuál es el númerode máquina más cercano?.

9. ¾Es 2/3 (1− 2−24) un número que se puede representar de manera ex-acta en un formato de precisión simple?

10. ¾Cuáles de los siguientes números se pueden representar exactamenteen un formato de precisión simple?

1040, 2−1, 1/5, 1/3, 1/256.

11. Sea x = 216 + 2−8 + 2−9 + 2−10. Si x∗ denota el número de máquinamás cercano a x en un formato de precisión simple ¾Cuál es el valor de∣x− x∗∣?.

12. Convierta los siguientes números binarios en su forma decimal.

a) 1.0110101 b)11.0010010001

13. Los números del ejercicio anterior son aproximadamente√

2 y �. Halleel error de dichas aproximaciones; es decir, halle

a)√

2- 1.0110101 (use√

2=1.41421356237309 . . . )

b) �-11.0010010001 (use �=3.14159265358979 . . . )

14. La serie in�nita 1 + 12

+ 13

+ 14. . . es divergente. Escriba un programa

que evalúe esta suma. ¾Es divergente la serie de la computadora? Encaso negativo, ¾por qué no?

15. �El término epsilon de la máquina es el menor valor positivo tal que lamáquina es capaz de distinguir entre (1 +∈ ) y 1. Este valor dependedel hardware y de cómo el compilador de un lenguaje de programaciónalmacena la mantisa de un número de punto �otante. El epsilon de lamáquina para una mantisa normalizada (1 ⋅ f) donde f se almacena enubicaciones de n bits es igual a 2−n. Para una mantisa no normalizada(⋅1f) que se almacena en ubicaciones de n bits, el epsilon de la máquina

Page 25: Libro

1.5. Ejercicios 21

es 21−n. El error al almacenar una cantidad x tiene una cota superior∈ ∣x∣. � (Akai, p. 60-61)A continuación se muestra un seudocódigo para calcular ∈.Determine el epsilon de su máquina.

16. �El epsilon de la máquina (ver el problema 15) permite estimar unacota superior para el error en una operación. Sea f(x, y)el resultadoverdadero de una operación sobre x y y y sea ∈ el epsilon de la máquina.El error E al calcular y almacenar f(x, y) está acotado por

E ⩽ B = ∈ ∣ f (x, y) ∣ + (1+ ∈)

( ∣∣∣∣∈ x∂f∂x∣∣∣∣ +

∣∣∣∣∈ y∂f∂y∣∣∣∣)

Los términos con las derivadas parciales explican los errores en la op-eración debidos a representaciones inexactas de x y y; la multiplicaciónpor (1 + ∈) y la adición de ∈ ∣f(x, y)∣ explica los errores al almacenarel resultado.

Con el resultado del problema 15 (o un valor �cticio de 10−7 para∈), estimar la cota superior B para el error en z en las operacionessiguientes.� (Akai, p. 61).

a) z = 1.897 + 9.635

b) z = 4.058× 13.27

c) z = 2.345÷ 19.28

d) z = 19.28÷ 2.345

17. Aplique la aritmética de redondeo a tres dígitos para realizar los sigu-ientes cálculos. Calcule los errores absolutos y relativos con el valorexacto determinado por lo menos a 5 dígitos.

a) (121− 0.327)− 119 b)1314− 6

7

2e− 5.4c)� − 22

7117

18. Repita el ejercicio anterior aplicando la aritmética de corte a 3 dígitos.

19. Sea f(x) =x cosx− senx

x− senx

a) Encuentre limx→ 0

f(x)

Page 26: Libro

22 Capítulo 1. Representaciones de Números en una Máquina y Errores

b) Aplique la aritmética de redondeo a cuatro dígitos para evaluarf(0.1).

c) Reemplace las funciones trigonométricas con su tercer polinomio deMaclaurin y repita la parte b).

d) El valor real es f(0.1) = −1.99899998. Encuentre el error relativode los valores obtenidos en las partes b) y c).

20. �Suponga que los puntos (x0, y0) y (x1, y1) se encuentran en una rectay que y1 ∕= y0. Se cuenta con dos fórmulas para hallar la intersección xde la línea:

x =x0y1 − x1y0y1 − yo

x = x0 −(x1 − x0)y0y1 − yo

a) Demuestre que ambas fórmulas son algebraicamente correctas.

b) Use los datos (x0, y0) =(1.31, 3.24), (x1, y1) =(1.93, 4.26) y la arit-mética de redondeo a tres dígitos para calcular la intersección x enambas fórmulas ¾Cuál de los métodos es mejor?� (Burden, p. 28).

21. El polinomio de Taylor de grado n para f(x) = ex esn∑

i=0

xi

i!.

Use este polinomio y la aritmética de corte a tres dígitos para encontraruna aproximación a e−5 mediante cada uno de los siguientes métodos.

a) e−5 ≈9∑

i=0

(−5)i

i!=

9∑i=0

(−1)i5i

i!

b) e−5 = 1/e5 ≈1

9∑i=0

(5)i

i!

¾Cuál fórmula da mayor exactitud?.

22. Sugiera cómo se podría evitar la pérdida de dígitos signi�cativos en lossiguientes cálculos si x ≈ 0:

a)√x2 + 1− x

Page 27: Libro

1.5. Ejercicios 23

b) x−3(senx− x)

c) (cosx− e−x)/ senx

d) senhx− tanhx

23. Suponga que a ∕= 0 y que b2−4ac > 0 y conside la ecuación ax2+bx+c =0. Sus raíces se pueden hallar mediante la conocida fórmula:

a) x1 = (−b+√b2 − 4ac)/(2a) x2 =(−b−

√b2 − 4ac)/(2a)

Pruebe que estas raíces pueden calcularse mediante las fórmulas equiv-alentes

b) x1 = (−2c)/(b+√b2 − 4ac

)x2 = (−2c)/

(b−√b2 − 4ac

)Indicación: Racionalice el numerador.

Observación: Cuando√b2 − 4ac ≈ ∣b∣, hay que proceder con cuidado

para evitar la pérdida de precisión por cancelación. Si b > 0, entoncesx1 debería ser calculado con la segunda fórmula y x2 con la primerfórmula; mientras si b < 0, entonces x1 debería ser calculado usando laprimera fórmula y x2 debería ser calculado usando la segunda.

24. Use la fórmula adecuada para calcular x1 y x2, tal como se explica enel anterior ejercicio, para hallar las raíces de las siguientes ecuacionesde segundo grado. (Use aritmética de corte a 6 dígitos).

a) x2 − 1000.001x+ 1 = 0

b) x2 + 10000.0001x+ 1 = 0

25. Determine los tres primeros dígitos signi�cativos de los números

a) [(8.0000000025)1/3 − 2]−1

Sugerencia: Utilice serie de Taylor para aproximar (8 + x)1/3

b)10−15

1015 ln(1 + 10−15)− 1Sugerencia: Utilice la serie de Taylor para aproximar ln(1 + x)

c)0.13× 10−15

cos(10−10)− 1use radianes.

Sugerencia: Utilice serie de Taylor para aproximar cosx