libro
TRANSCRIPT
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
ii
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
iv Contenido
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
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.
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 + ⋅ ⋅ ⋅
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)
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.
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:
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
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)
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:
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).
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.
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
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).
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
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.
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-
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.
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?
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
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
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)
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
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