Apuntes Programación 2 ESCOM IPN

72
INSTITUTO POLIT ´ ECNICO NACIONAL Escuela Superior de C´omputo Apuntes de Programaci´ on II autor: M en C. Benjam´ ın Luna Benoso exico, D. F. Diciembre 2008

description

Un pequeño apunte desarrollado por el Dr en ciencias benjamin luna benoso, sobre el curso de programación 2 (metodos numericos) de la escuela superior de computo del ipn

Transcript of Apuntes Programación 2 ESCOM IPN

Page 1: Apuntes Programación 2 ESCOM IPN

INSTITUTO POLITECNICO NACIONALEscuela Superior de Computo

Apuntes de Programacion II

autor:

M en C. Benjamın Luna Benoso

Mexico, D. F. Diciembre 2008

Page 2: Apuntes Programación 2 ESCOM IPN

ii

Introduccion

Este libro esta estructurado tomando como referencia el temario para el curso de Progra-macion II impartido en la Escuela Superior de Computo del Instituto Politecnico Nacional.Los temas analizados difieren solo un poco en el nombre y en el orden en que son presentadosen el temario correspondiente.

El estudio del analisis numerico se basa en buscar alternativas para resolver problemascuya solucion es difıcil usando metodos directos, para ello, el analisis numerico se basa en laalternativa de metodos numericos.

En varias areas de la ingenierıa y las ciencias, se busca resolver problemas utilizando he-rramientas del algebra lineal o de las ecuaciones diferenciales; estos problemas, por ejemplo,suponen que se trabajan sobre funciones continuas, que para efectos practicos de ejemplifi-cacion, se obtiene lo que se desea, sin embargo, en la vida real, varios problemas de los quese plantean, no se conocen muy bien su naturaleza, generalmente se conocen o se obtienenmediciones por medio de aparatos y estos son registrados. Por ejemplo, un fısico experimen-tal, en un laboratorio registra datos de un experimento el cual repite varias veces, registrasus datos y ahora lo que le interesa conocer, es una funcion continua de tal manera, que sise restringe a los puntos que el registro, exactamente se comporte como en el experimentorealizado. De esta manera, pasamos de los problemas continuos a los totalmente discre-tos, que es como se obtienen mediciones y a partir de estas mediciones discretas, pasamosnuevamente al espacio continuo, de ahı la importancia del analisis numerico.

Otra problematica interesante donde se puede notar la importancia del analisis numericoes la siguiente: en un curso de Calculo, se hace notar que la recta esta compuesto por unainfinidad de numeros, y que numeros como π, e y

√2 (numeros irracionales) no tienen una

representacion finita en su notacion decimal, esto significa que a ninguna persona le bastarıasu vida completa para escribir en notacion decimal alguno de estos numeros, entonces, comolo hace una computadora. La parte que nos interesa de una computadora, es aquella dondealmacena la informacion para hacer calculos, para representar numeros, sumas, etc., la parteque nos interesa es la memoria. Si finalmente una computadora esta compuesta en su total-idad de circuitos, con una cantidad finita de estos, entonces como le hace para almacenarun numero irracional como los presentados si su representacion es infinita y la computadorasolo puede guardar numeros binarios (ceros y unos). En realidad una computadora, no escapaz de almacenar todos los numeros reales tal y como se conocen en su abstraccion. Siuna computadora requiere almacenar un numero irracional como π, este lo hace utilizandoalgun metodo de truncamiento que se vera posteriormente y en realidad la computadora noestara almacenando el numero irracional π, si no mas bien, una aproximacion a dicho valor.

Page 3: Apuntes Programación 2 ESCOM IPN

iii

Si una computadora esta realizando calculos numericos donde ha utilizado valores aproxi-mados a numeros reales, esto podrıa generar una serie de errores que vendrıan generandoseen cada operacion. Obteniendo finalmente una aproximacion al valor real de la operacionque se deseaba conocer. Una problematica importante en este aspecto es el error que se vaobteniendo y saber decidir si es aceptable o no. Esto es algo que tambien es tratado en elanalisi numerico.

Los ejemplos anteriores, muestran la importancia que tiene el analisis numerico dentro delas areas de la ciencias y la ingenierıa.

Page 4: Apuntes Programación 2 ESCOM IPN

iv

Contenido

Introduccion ii

1 Aritmetica de Punto Flotante 11.1 Numeros de Punto Flotante . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1 Sistemas de Numeracion . . . . . . . . . . . . . . . . . . . . . . . . . 11.1.2 Representacion Binaria de Numeros Negativos . . . . . . . . . . . . . 71.1.3 Norma IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2 Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.2.1 Error Relativo y Error Absoluto . . . . . . . . . . . . . . . . . . . . . 141.2.2 Aritmetica de Punto Flotante . . . . . . . . . . . . . . . . . . . . . . 161.2.3 Errores de Representacion . . . . . . . . . . . . . . . . . . . . . . . . 161.2.4 Reduccion de Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . 201.2.5 Propagacion de Errores . . . . . . . . . . . . . . . . . . . . . . . . . . 231.2.6 Numero de Condicion . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2 Algoritmos para dar Solucion a la Ecuacion de Una Variable 252.1 Algoritmos Para Busqueda de Raıces . . . . . . . . . . . . . . . . . . . . . . 25

2.1.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.1.2 Metodo de la Biseccion . . . . . . . . . . . . . . . . . . . . . . . . . . 262.1.3 Iteracion de Punto Fijo . . . . . . . . . . . . . . . . . . . . . . . . . . 282.1.4 Metodo de Newton-Raphson y de la Secante . . . . . . . . . . . . . . 30

2.2 Raıces de Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3 Algoritmos de Interpolacion 373.1 Algoritmos de Interpolacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.1.1 Polinomio de Lagrange . . . . . . . . . . . . . . . . . . . . . . . . . . 383.1.2 Metodo de Neville . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.1.3 Diferencias Divididas de Newton . . . . . . . . . . . . . . . . . . . . 41

3.2 Algoritmos de Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . 443.2.1 Ajuste por Mınimos Cuadrados a una Recta . . . . . . . . . . . . . . 453.2.2 Ajuste por Mınimos Cuadrados a un Polinomio de Grado n . . . . . . 47

Page 5: Apuntes Programación 2 ESCOM IPN

CONTENIDO v

4 Algoritmos para Derivacion e Integracion Numerica 494.1 Algoritmos para Derivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.2 Algoritmos de Integracion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5 Algoritmos Numericos Utilizados en Algebra Lineal 555.1 Eliminacion Gaussiana con Sustitucion hacia Atras . . . . . . . . . . . . . . 555.2 Algoritmos Basados en Tecnicas Iterativas . . . . . . . . . . . . . . . . . . . 58

5.2.1 Normas de Vectores y Matrices . . . . . . . . . . . . . . . . . . . . . 585.2.2 Algoritmo de Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2.3 Algoritmo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . 61

6 Algoritmos para dar Solucion Numerica a Ecuaciones Diferenciales Ordi-narias 636.1 Algoritmos por Metodos de Taylor . . . . . . . . . . . . . . . . . . . . . . . 63

6.1.1 Metodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636.1.2 Metodo de Taylor de Orden N . . . . . . . . . . . . . . . . . . . . . . 64

6.2 Algoritmo de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656.2.1 Algoritmo de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . . . 65

Bibliografıa 67

Page 6: Apuntes Programación 2 ESCOM IPN

1

Capıtulo 1

Aritmetica de Punto Flotante

1.1 Numeros de Punto Flotante

1.1.1 Sistemas de Numeracion

A diario utilizamos numeros para el conteo de cosas; contamos objetos, personas, dinero,etc., estamos muy familiarizados con los numeros naturales 1, 6, 98.32, 23784.12, 20993882por mencionar algunos de una infinidad. Sin embargo, que significan exactamente. El numero97 por ejemplo significa nueve veces diez mas siete unidades, esto es:

97 = (9× 10) + 7

haciendo una analogıa a lo anterior, 7583 significa

7583 = (7× 103) + (5× 102) + (8× 101) + (3× 100)

y 362.15 significa

362.15 = (3× 102) + (6× 101) + (2× 100) + (1× 10−1) + (5× 10−2),

en general, si z = xnxn−1 . . . x3x2x1x0.x−1x−2 . . ., se tiene:

z =∑i

xi × 10i (1.1.1)

A los numeros representables en el modo anterior, se le conoce como sistema decimal.En general, para cada numero natural b mayor que uno, se tiene un sistema de numeracioncuya base es b. Sin embargo, en la practica, a parte del sistema decimal, suelen utilizarse lossistemas binario, octal y hexadecimal.

El sistema binario o base 2 se representa por medio de dos dıgitos: 0 y 1. Para evitarconfusiones, 02 y 12 representaran el cero y uno en base binaria, y en general, el numero zbrepresentara el numero z en base b. Se tiene:

Page 7: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 2

02 = 010

12 = 110

De manera analoga a lo que se hizo con la base decimal, se tiene lo siguiente:

1012 = (1× 22) + (0× 21) + (1× 20) = 510

1101012 = (1× 25) + (1× 24) + (0× 23) + (1× 22) + (0× 21) + (1× 20) = 5310

110.012 = (1× 22) + (1× 21) + (0× 20) + (0× 2−1) + (1× 2−2) = 6.2510,

en general, si z2 = xm . . . x2x1x0.x−1x−2 . . . x−n representa un numero en base binaria, en-tonces, su representacion en base decimal queda como sigue:

z2 = (i=−n∑i=m

(xi × 2i))10 (1.1.2)

La ecuacion (1.1.1) muestra la forma para convertir un numero de base binaria a basedecimal. Ahora, analicemos el caso contrario, es decir, la conversion de un numero de basedecimal a base binaria.

Para convertir el numero entero positivo N = N10 a base binaria se hace lo siguiente:

Paso 1: Dividimos N entre 2, de aquı obtenemos un cociente Q1 y un residuo R1, conR1 = 0 o 1. Entonces se tiene:

N = 2×Q1 +R1

Paso 2: Enseguida dividimos el cociente Q1 por 2, obteniendo un cociente Q2 y un residuoR2, con R2 = 0 o 1. Se tiene:

Q1 = 2×Q2 +R2

Paso i: Se sigue el proceso anterior, de tal manera que en el paso i se tiene:

Qi−1 = 2×Qi +Ri

Paso n+1: Se sigue el proceso anterior hasta que el residuo del cociente en el procesocontinuo de hacer divisiones sea cero, esto es, hasta que en el proceso se tenga un cocienteigual a cero

Qn = 2×Qn+1 +Rn+1 = 2× (0) +Rn+1 = Rn+1 para algun n+ 1,

de lo anterior, se tiene:

Page 8: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 3

N = 2×Q1 +R1

= 2× (2×Q2 +R2) +R1

= 22 ×Q2 + 2×R2 +R1

= 22 × (2×Q3 +R3) + 21 ×R2 + 20 ×R1

= 23 ×Q3 + 22 ×R3 + 21 ×R2 + 20 ×R1

· · ·= 2i ×Qi + · · ·+ 22 ×R3 + 21 ×R2 + 20R1

· · ·= 2n ×Qn + · · ·+ 22 ×R3 + 21 ×R2 + 20R1

= 2n ×Rn+1 + · · ·+ 22 ×R3 + 21 ×R2 + 20R1,

en conclusion,

Paso n+2: N10 = (Rn+1 · · ·R3R2R1)2

Ejemplo 1.1.1 Siguiendo la metodologıa anterior, para convertir el numero 2710 a basebinaria se tiene lo siguiente:

27 = 2× 13 + 1, Q1 = 13 y R1 = 1,13 = 2× 6 + 1, Q2 = 6 y R2 = 1,6 = 2× 3 + 0, Q3 = 2 y R3 = 0,3 = 2× 1 + 1, Q4 = 1 y R4 = 1,1 = 2× 0 + 1, Q5 = 0 y R5 = 1,

luego, 2710 = (R5R4R3R2R1)2 = 110112 X

Para convertir un numero decimal fraccionario a base binaria, se hacen repetidas multi-plicaciones por 2, como se ilustra en ejemplo 1.1.2. En cada caso se multiplica por 2 la partefraccionaria del numero decimal. El dıgito del producto a la izquierda del punto decimal sera1 o 0 y contribuye a la representacion binaria, comenzando con el bit mas significativo1. Laparte fraccionaria del producto se utiliza como en el siguiente paso. Para mostrar lo anterior,consideremos el siguiente ejemplo.

Ejemplo 1.1.2 Para convertir el numero 0.3910 a base binaria, se tiene el siguiente proced-imiento:

0.39× 2 = 0.78, parte entera = 0,0.78× 2 = 1.56, parte entera = 1,0.56× 2 = 1.12, parte entera = 1,0.12× 2 = 0.24, parte entera = 0,0.24× 2 = 0.48, parte entera = 0,0.48× 2 = 0.96, parte entera = 0,0.96× 2 = 1.92, parte entera = 1,

. . .1bit que se encuentra a la izquierda de la representacion binaria

Page 9: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 4

luego 0.3910 = 0.01100012 (aproximado) X

Ejemplo 1.1.3 Para convertir el numero 14.2510 a base binaria primeramente, se conviertela parte entera a base binaria quedando de la siguiente manera:

14 = 2× 7 + 0, Q1 = 7 y R1 = 0,7 = 2× 3 + 1, Q2 = 3 y R2 = 1,3 = 2× 1 + 1, Q3 = 1 y R3 = 1,1 = 2× 0 + 1, Q4 = 0 y R4 = 1,

por tanto 1410 = (R4R3R2R1)2 = 11102

Convertida la parte entera a base binaria, procedemos a convertir la parte fraccionaria abase binaria obteniendose lo siguiente:

0.25× 2 = 0.5, parte entera = 00.5× 2 = 1.0, parte entera = 1

luego 0.2510 = 0.102. Por tanto 14.2510 = 1410 + 0.2510 = 11102 + 0.102 = 1110.102 X

Los ejemplos anteriores muestran la conversion de un numero entre la base decimal y labase binaria. Sin embargo el procedimiento es el mismo para convertir un numero de base10 a base b. Generalicemos entonces el concepto anterior.

Supongamos que se tiene el numero (xm . . . x1x0.x−1x−2x−3 . . . x−n)10 y se desea conocersu representacion en base b. Para ello, primero observemos que la base b esta compuesta porb sımbolos, siendo estos: 0, 1, . . . , b− 1.

Paso 1. Se considera la parte entera, esto es PEntera = (xm . . . x1x0)10 y se divide entre b,de aquı obtenemos un cociente Q1 y un residuo R1, con R1 ∈ {0, 1, . . . , b− 1}. Entonces setiene:

(xm . . . x1x0)a = b×Q1 +R1

Paso 2: Enseguida dividimos el cociente Q1 por b, obteniendose un cociente Q2 y un residuoR2, con R2 ∈ {0, 1, . . . , b− 1}. Se tiene

Q1 = b×Q2 +R2

Paso i: Se sigue el proceso anterior, de tal manera que en el paso i se tiene:

Qi−1 = b×Qi +Ri

Paso n+1: Se sigue el proceso anterior, hasta que el residuo del cociente en el procesocontinuo de hacer divisiones sea cero, esto es hasta que en el proceso se tenga un cocienteigual a cero

Page 10: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 5

Qn = b×Qn+1 +Rn+1 = b× (0) +Rn+1 = Rn+1 para algun n+ 1,

de lo anterior, se tiene:

PEntera = b×Q1 +R1

= b× (b×Q2 +R2) +R1

= b2 ×Q2 + b×R2 +R1

= b2 × (b×Q3 +R3) + b1 ×R2 + b0 ×R1

= b3 ×Q3 + b2 ×R3 + b1 ×R2 + b0 ×R1

· · ·= bi ×Qi + · · ·+ b2 ×R3 + b1 ×R2 + b0R1

· · ·= bn ×Qn + · · ·+ b2 ×R3 + b1 ×R2 + b0R1

= bn ×Rn+1 + · · ·+ b2 ×R3 + b1 ×R2 + b0R1,

en conclusion,

Paso n+2: PEntera = (Rn+1 · · ·R3R2R1)b

Enseguida se considera la parte fraccionaria, esto es: PFracc = (0.x−1x−2x−3 . . . x−n)10,

Paso n+3: Se multiplica por b obteniendo una parte entera p1 y una parte fraccionaria f1,esto es:

PFracc× b = p1.f1

Paso n+4: Se multiplica 0.f1 por b obteniendo una parte entera p2 y una parte fraccionariaf2, esto es:

0.f1 × b = p2.f2

Paso n+5: Se multiplica 0.f2 por b obteniendo una parte entera p3 y una parte fraccionariaf3, esto es:

0.f2 × b = p3.f3,

se realiza el proceso anterior repetidas veces tantas como sea necesario, quedando la partefraccionaria de la siguiente manera PFracc = (0.p1p2p3 . . . pk)b. Finalmente se junta laparte entera y la parte fraccionaria, quedando la representacion del numero de base decimala binaria de la siguiente manera:

Page 11: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 6

(xm . . . x1x0.x−1x−2x−3 . . . x−n)10 = (Rn+1R3R2R1.p1p2p3 . . . pk)b

Ahora analicemos el caso recıproco, supongamos que se tiene el numero Mb =(xm . . . x1x0.x−1x−2 . . . x−n)b en base b y se desea convertir a base decimal. Esta conversiones directa obteniendose de la siguiente manera:

Mb = (i=−n∑i=m

(xi × bi))10

= (xm × bm + · · ·+ x1 × b1 + x0 × b0 + x−1 × b−1 + x−2 × b−2 + · · ·+ x−n × b−n)10

Los procedimientos anteriores son una generalizacion para convertir un numero de surepresentacion de base decimal a base b y viceversa, sin embargo, generalmente se hacen usounicamente de la base binaria, la base octal y la hexadecimal. La base binaria consta de losdıgitos 0 y 1; la base octal de los dıgitos 0, 1, 2 , 3, 4, 5, 6, y 7; y la base hexadecimal haceuso de los sımbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F .

Ejemplo 1.1.4 Convertir el numero 3510 a base binaria, octal y hexadecimal.

Se tiene:

35 = 2× 17 + 1, Q1 = 17 y R1 = 1,17 = 2× 8 + 1, Q2 = 8 y R2 = 1,8 = 2× 4 + 0, Q3 = 4 y R3 = 0,4 = 2× 2 + 0, Q4 = 2 y R4 = 0,2 = 2× 1 + 0, Q5 = 1 y R5 = 0,1 = 2× 0 + 1, Q6 = 0 y R6 = 1,

luego 3510 = (R6R5R4R3R2R1)2 = 1000112.

Por otro lado, se tiene:

35 = 8 + 3, Q′1 = 4 y R′1 = 3,4 = 8 + 4, Q′2 = 0 y R′2 = 4,

luego 3510 = (R′2R′1)8 = 438.

Se tiene ademas:

35 = 16× 2 + 3, Q′′1 = 2 y R′′1 = 3,2 = 16× 0 + 2, Q′′2 = 0 y R′′2 = 2,

Page 12: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 7

luego 3510 = (R′′2R′′1)16 = 2316. X

Del problema anterior, se tiene: 3510 = 1000112 = 438 = 2316. El procedimiento paraencontrar el numero decimal a octal y hexadecimal es el mostrado en la seccion, sin embargo,observemos que:

3510 = 1000112 = (

48︷︸︸︷100

38︷︸︸︷011 )2 = 438 y

3510 = 1000112 = (

216︷︸︸︷0010

316︷︸︸︷0011)2 = 238

Ejemplo 1.1.5 Para convertir el numero 2378 a base decimal se hace lo siguiente:

2378 = 2× 82 + 3× 81 + 7× 80 = 15910,

por tanto 2378 = 15910. X

Ejemplo 1.1.6 Para convertir el numero A2D16 a base decimal se hace lo siguiente:

A2D16 = A× 162 + 2× 161 +D×0

= 10× 162 + 2× 161 + 13×0 = 260510,

por lo tanto A2D16 = 260510. X

Cuando no haya confusion, se omitira colocar el subındice para representar un numero enbase decimal.

1.1.2 Representacion Binaria de Numeros Negativos

La seccion anterior muestra el procedimiento para representar un numero de base decimala base b y viceversa. Sin embargo, unicamente se muestra dicha conversion para numerospositivos. La problematica a resolver a continuacion es la representacion binaria de enterosnegativos. Para ello, se hacen uso principalmente de tres representaciones:

• Signo-magnitud

• Complemento a uno

• Complemento a dos

Page 13: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 8

Representacion Signo-Magnitud

Las cantidades se representan de izquierda a derecha (el bit mas significativo a la izquierday el menos significativo a la derecha) reservando el bit mas significativo para representar elsigno, siendo 0 para valores positivos y 1 para valores negativos. Por ejemplo, en una palabrade 8 bits, la representacion de 61 y -61 son:

+61 = 0011 1101SM−61 = 1011 1101SM

Sin embargo, observemos que 0000 0000SM = +0 = −0 = 1000 0000SM ; esto es, el cerotiene dos representaciones.

Si consideramos una palabra de 8 bits para representar un numero en signo-magnitud, unByte puede representar numeros en el rango:

−127 ≤ n ≤ 127,

siendo 127 = 0111 1111SM el entero positivo mas grande y −127 = 1000 0001SM el enteronegativo mas grande.

Representacion Complemento a Uno

Para enteros positivos el numero se representa como en la representacion signo-magnitudcon el bit mas significativo 0. Para enteros negativos, se hace uso del complemento a uno,esto es, primero se considera el entero positivo y despues se cambian los bits 1 por 0 y losbits 0 por 1. En una palabra de 8 bits, los numeros +61 y −61 quedan representados como:

+61 = 0011 1101C1

−61 = 1100 0010C1

Observemos que 0000 0000C1 = +0 = −0 = 1111 1111C1; esto es, el 0 tiene dos repre-sentaciones nuevamente.

Page 14: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 9

Representacion Complemento a Dos

Los enteros positivos se representan de igual manera a la representacion signo-magnitudy complemento uno, con el bit mas significativo igual a 0. Para enteros negativos se hace usodel complemento a dos, esto es, primero se considera su representacion positiva, se aplicael complemento a uno y despues se le suma un bit. El sistema sigue reservando el bit massignificativo para el signo, siendo 0 para entero positivos y 1 para negativos. En una palabrade 8 bits, el numero +61 queda representado como:

+61 = 0011 1101C2

y para representar el numero −61 se realiza lo siguiente:

1. Se considera su representacion positiva, esto es: +61 = 0011 1101

2. Se aplica complementa a uno: 1100 0010

3. Se suma un bit:1100 0010

+ 11100 0011

por lo tanto −61 = 1100 0011C2. Observemos que +0 = 0000 0000C2 = −0.

Observacion: Algunos compiladores, como el Borland C++ utilizan tanto para palabrasde 16 y 32 bits la representacion complemento a dos para representar de manera interna losnumeros enteros.

1.1.3 Norma IEEE 754

En el area de ciencias e ingenierıa es usual utilizar numeros muy grandes y numeros muypequenos. La norma IEEE 754 fue desarrollada en 1985 por el Insitute for Electrical andElectronic Engineers, IEEE (Instituto para Ingenieros Electricos y Electronicos) y sirve pararepresentar en un computador los numeros de punto flotante. Esta norma fue desarrolladacon la finalidad para facilitar la portabilidad de programas numericos.

Para facilitar su comprension del formato IEEE 754, primero se considera un numero depunto flotante en su notacion cientıfica, esto es, en la que un numero es representado me-diante dos cantidades, la mantisa y la caracterıstica o exponente. De esta manera, cualquiernumero puede ser representado en la forma m ∗ be, siendo m la mantisa y e la caracterıstica.

Page 15: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 10

Por ejemplo, el numero 523.789 es lo mismo que los numeros 0.523789 ∗103, 5237.9 ∗ 10−1,5.23789 ∗ 102 o que 523789 ∗ 10−3.

Con la notacion cientıfica se pueden tener varias formas de representar un numero. Sinembargo la representacion de la que generalmente hacen uso los computadores es la notacioncientıfica normalizada, que es aquella donde el primer dıgito fraccionario es diferente de cero,por ejemplo para el numero 523.789, su notacion cientıfica normalizada es 0.523789 ∗ 103.Si la base es 2, significa que el primer bit fraccionario despues del punto es 1, la normaIEEE 754 aprovecha este hecho de tal manera que al almacenar un numero real, se empleala siguiente notacion cientıfica:

x = ±(1.b1b2b3 . . .)× 2m con bi = 0 o 1 para cada i (1.1.3)

La norma IEEE 754 define dos formatos basicos para almacenar numeros de punto flotante:un formato simple de 32 bits y un formato doble de 64 bits. La base ımplicita es 2.

Formato bits para Signo bits para la Caracterıstica bits para MantisaSimple 1 8 23Doble 1 11 52

Tabla 1.1.1: Formato IEEE

El bit mas significativo contiene el signo del numero, siendo 0 para valores positivos y 1para valores negativos. El valor de la caracterıstica se almacena en el siguiente bloque debits, siendo 8 para el formato simple y 11 para el formato doble. La representacion de lacaracterıstica se conoce como el termino sesgado. Un valor fijo llamado sesgo se resta deeste campo para conseguir el valor de la caracterıstica verdadera. El sesgo tiene una valorde 2k−1 − 1 con k el numero de bits en el exponente binario. Ası, para el formato simple, elsesgo tiene un valor de 28−1− 1 = 127 de tal manera que los valores verdaderos varıan entre-127 y 128; para el formato doble, el sesgo tiene un valor de 211−1 − 1 = 1023 de tal maneraque los valores verdaderos varıan entre -1023 y 1024. En los ultimos 23 bits para el formatosimple y 52 para el formato doble se almacena la mantisa.

Para almacenar un numero de punto flotante se siguen los siguientes pasos:

1. El numero binario se escribe como en la notacion cientıfica 1.1.3

2. El signo se almacena en el bit mas significativo: 0 para valores positivos y 1 paranegativos.

3. Se suma el valor del sesgo al exponente original y se almacena en el bloque de bitscorrespondiente a la caracterıstica.

Page 16: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 11

4. Se trunca la mantisa al tamano de la palabra para la mantisa.

Ejemplo 1.1.7 Para convertir el numero 20 a formato simple IEEE 754 se siguen la seriede pasos siguientes:

1. Se convierte en numero a base binaria y se escribe en la forma cientıfica 1.1.3; esto es:20 = 101002 = 1.0100100

2 .

2. Puesto que el numero a almacenar es positivo, entonces el bit mas significativo tendraun valor de 0.

3. Se suma el sesgo (127) al valor del exponente (1002 = 4) y se almacena en el siguien-te bloque de 8 bits; esto es: 127 + 4 = 131 = 100000112, ası, en el bloque de lacaracterıstica se almacenan los bits 10000011.

4. En el bloque de la mantisa se almacenan los bits 01000000000000000000000

finalmente el numero 20 en formato simple IEEE 754 es 0 10000011 01000000000000000000000.X

Ejemplo 1.1.8 Convertir el numero -125.32 al formato simple IEEE 754.

Se tiene:

1. Se convierte el numero a base binaria y se escribe en la forma cientıfica 1.1.3; esto es:−125.32 = −1111101.0101000111101012 = −1.11110101010001111010111110

2 .

2. Puesto que el numero a almacenar es negativo, entonces el bit mas significativo tendraun valor de 1.

3. Se suma el sesgo (127) al valor del exponente (1102 = 6) y se almacena en el siguien-te bloque de 8 bits; esto es: 127 + 6 = 133 = 100001012, ası, en el bloque de lacaracterıstica se almacenan los bits 10000101.

4. En el bloque de la mantisa se almacenan los bits 11110101010001111010111

finalmente el numero -125.32 en formato simple IEEE 754 es 1 10000101 11110101010001111010111.X

Para convertir un numero de formato IEEE 754 a su representacion binaria se hace la si-guiente operacion:

(−1)bit mas significativo × 2caracteristica × 2−sesgo × 1.mantisa (1.1.4)

Page 17: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 12

Ejemplo 1.1.9 Para convertir el numero 0 10000011 01000000000000000000000 de formatosimple IEEE 754 a su representacion binaria se hace la operacion 1.1.4, de donde se tiene losiguiente:

(−1)0 × 210000011 × 2−

sesgo=127︷ ︸︸ ︷1111111 × 1.01000000000000000000000

= 2100 × 1.01000000000000000000000= 1.01000000000000000000000× 2100

= 10100= 2010

obteniendose exactamente el numero exacto 20 que ası era de esperar ya que este ejerciciomuestra la parte inversa al ejercicio 1.1.7 X

La norma IEEE 754 reserva ciertos valores para casos especiales como lo son ±0 y ±∞y NaN2 (Not a Number). Es necesario considerar este tipo de valores para prevenir erroresque se puedan presentar. Las siguientes tablas muestran toda la gamma de interpretacionde los numeros en el formato IEEE 754 para el formato simple y para el formato doble.

Precision SimpleSigno Exponente Sesgado Parte Fraccionaria Valor

Cero Positivo 0 0 0 0Cero Negativo 1 0 0 -0Mas Infinito 0 255 (todos unos) 0 ∞

Menos Infinito 1 255 (todos unos) 0 −∞NaN Silencioso 0 o 1 255 (todos unos) 6= 0 NaNNaN Indicador 0 o 1 255 (todos unos) 6= 0 NaN

Positivo Normalizado 6= 0 0 0 < e < 255 f (1.f) ∗ 2e−127

Negativo Normalizado 6= 0 1 0 < e < 255 f −(1.f) ∗ 2e−127

Positivo Denormalizado 0 0 f 6= 0 (0.f) ∗ 2e−126

Negativo Denormalizado 1 0 f 6= 0 −(0.f) ∗ 2e−126

Tabla 1.1.2: Interpretacion de numeros en formato simple IEEE 754

2Para una mayor referencia a los NaN pueden ver [5]

Page 18: Apuntes Programación 2 ESCOM IPN

1.1. Numeros de Punto Flotante 13

Precision DobleSigno Exponente Sesgado Parte Fraccionaria Valor

Cero Positivo 0 0 0 0Cero Negativo 1 0 0 -0Mas Infinito 0 2047 (todos unos) 0 ∞

Menos Infinito 1 2047 (todos unos) 0 −∞NaN Silencioso 0 o 1 2047 (todos unos) 6= 0 NaNNaN Indicador 0 o 1 2047 (todos unos) 6= 0 NaN

Positivo Normalizado 6= 0 0 0 < e < 2047 f (1.f) ∗ 2e−1023

Negativo Normalizado 6= 0 1 0 < e < 2047 f −(1.f) ∗ 2e−1023

Positivo Denormalizado 0 0 f 6= 0 (0.f) ∗ 2e−1022

Negativo Denormalizado 1 0 f 6= 0 −(0.f) ∗ 2e−1022

Tabla 1.1.3: Interpretacion de numeros en formato doble IEEE 754

En la norma estandar IEEE 754, para el caso del formato simple, los exponentes estanrestringidos por la desigualdad:

−126 < e− 127 < 127

y la mantisa esta restringida por la desigualdad:

1 ≤ (1.f)2 ≤ (1.11111111111111111111111)2 = 2− 2−23

por lo tanto el numero mas grande representado en el formato simple es:

(2− 2−23) ∗ 2127 ≈ 3.4× 1038

y el numero mas pequeno representable en el formato simple es:

2−126 ≈ 1.2× 10−38

Ejercicio Encontrar el numero mas grande y mas pequeno representable en el formato dobleIEEE 754.

Page 19: Apuntes Programación 2 ESCOM IPN

1.2. Errores 14

1.2 Errores

A lo largo de esta obra, se emplearan tecinas numericas que ayudaran a resolver problemasmatematicos. Mediante estas tecnicas se tendra una aproximacion a la solucion real, sinembargo, el hecho de que no sea la solucion real, nos genera un margen de error. Este erroren la practica debe de ser considerado, pues nos puede acarrear situaciones inesperadas.

Los computadores son un ejemplo claro en la generacion de errores. La recta real estacompuesta de una infinidad de numeros, sin embargo un computador tiene una cantidadfinita de circuiterıa, y por ende, no es capaz de almacenar toda la infinidad de numerosreales. Por citar un ejemplo, consideremos el numero irracional π = 3.141592654 . . .. Unnumero irracional tiene la caracterıstica de que no puede ser expresado en forma fraccionariade una cantidad finita de dıgitos con cierto periodo. Para que un computador maneje elvalor de π, debe de hacer uso de algun metodo que le permita registrar una cierta cantidadfinita de la parte fraccionaria del numero y almacenarla. Esto, por supuesto nos generaraun cierto error, ya que no se estara trabajando con el valor de la cantidad exacta, si no masbien con una aproximacion. De esta manera, en esta seccion se dedicara a analizar la partecorrespondiente a los errores que se producen al hacer uso de una cantidad aproximada a surespectivo valor real.

1.2.1 Error Relativo y Error Absoluto

En lo que sigue, suponemos un computador imaginario que trabaja con el sistema decimalcon una palabra de k dıgitos en la mantisa. Ademas suponemos que los numeros estanrepresentados en la forma normalizada de punto flotante:

±0.

mantisa︷ ︸︸ ︷d1d2 · · · dk×10n, con 1 ≤ d1 ≤ 9 y 0 ≤ di ≤ 9, i = 2, . . . k (1.2.1)

A los numeros de la ecuacion 1.2.1 se les llama numeros de maquina decimales con k-dıgitos.

En general, cualquier numero real positivo y puede ser normalizado de la forma:

0.d1d2 · · · dkdk+1 · · · × 10n, con 1 ≤ d1 ≤ 9 y 0 ≤ di ≤ 9, i = 2, . . . k (1.2.2)

Si nuestro computador imaginario de k dıgitos en la mantisa requiere almacenar un numerocuya forma es como el de la ecuacion 1.2.2, entonces requerira trabajar unicamente con kdıgitos de la mantisa, eliminando el resto, a esto se le conoce como forma de punto flotante.Denotamos mediante fl(y) a la forma de punto flotante de y. El valor de fl(y) se obtiene

Page 20: Apuntes Programación 2 ESCOM IPN

1.2. Errores 15

terminando el valor de la mantisa de y en k cifras decimales. Para ello hay dos formas derealizarlo que se muestran en las siguientes definiciones.

Definicion 1.2.1 Si y es un numero real expresado de la forma como en la ecuacion 1.2.2,entonces

flc(y) = 0.d1d2 · · · dk,

este metodo es llamado metodo de corte o truncamiento a k-dıgitos.

Definicion 1.2.2 Si y es un numero real expresado de la forma como en la ecuacion 1.2.2,entonces

flr(y) = 0.d1d2 · · · d′k, con d′k =

{dk si dk+1 < 5

dk + 1 si dk+1 ≥ 5

este metodo es llamado metodo de redondeo a k-dıgitos.

Ejemplo 1.2.1√

3 = 1.732050808 · · · , normalizado es igual a 0.1732050808 × 101, portanto el metodo de corte y redondeo a 5-dıgitos son respectivamente flc(

√3) = 0.17320 y

flr(√

3) = 0.17321. X

Definicion 1.2.3 El error resultante al reemplazar un numero con su forma de punto flotanterecibe el nombre de error de redondeo (independientemente del metodo que se aplique).

La siguiente definicion describe metodos para medir los errores de aproximacion.

Definicion 1.2.4 Si p? es una aproximacion de p, el error absoluto es EA = |p − p?|. Si

p 6= 0 el error relativo es ER = EA|p| = |p−p?|

p, y el error relativo porcentual o simplemente

error porcentual es ERP = ER× 100 (%).

Ejemplo 1.2.2 Si p = 0.17320× 101 y p? = 0.17321× 101, entonces EA = |0.17320× 101 −0.17321×101| = 0.1×10−3, ER = EA

|0.17320| = 0.1×10−3

0.17320= 0.57736×10−3 y ERP = ER×100 =

0.057%. X

Definicion 1.2.5 Se dice que el numero p? se aproxima a p con t-dıgitos o cifras significativas,si t es el entero positivo mas grande para el cual

ER = |p−p?||p| < 5× 10−t

Ejemplo 1.2.3 Si p = 0.51× 10−1 y p? = 0.5× 10−1, entonces:

Page 21: Apuntes Programación 2 ESCOM IPN

1.2. Errores 16

ER = |0.51×10−1−0.50×10−1||0.51×10−1| = 0.19× 10−1 < 0.5× 10−1

por tanto p? se aproxima a p con 1 cifra significativa. X

El concepto de cifra significativa se ha desarrollado para designar formalmente la confia-bilidad de un valor numerico. Las cifras significativas de un numero son aquellas que puedenutilizarse en forma confiable.

1.2.2 Aritmetica de Punto Flotante

Antes de continuar con la parte referente a los errores, es necesario conocer las operacionesaritmeticas de punto flotante. Estas se resumen enseguida. SiX = Xm×BXe y Y = Ym×BYe ,entonces:

X + Y = (Xm ×BXe−Ye + Ym)×BYe , con Xe ≤ Ye,X − Y = (Xm ×BXe−Ye − Ym)×BYe , con Xe ≤ Ye,X × Y = (Xm × Ym)×BXe+Ye y

XY

= Xm

Ym×BXe−Ye

Ejemplo 1.2.4 Si X = 0.5× 102 = 50 y Y = 0.3× 103 = 300, entonces

X + Y = (0.5× 102−3 + 0.3)× 103

= 0.35× 103 = 350,X − Y = (0.5× 102−3 − 0.3)× 103

= −0.25× 103 = −250,X × Y = (0.5× 0.3)× 102+3

= 0.15× 105 = 15000,XY

= 0.50.3× 102−3

= 1.66× 10−1 = 0.166 X

1.2.3 Errores de Representacion

Para mostrar algunos de los errores que se pueden presentar en un computador, imagine-mos que nuestro computador, ademas de trabajar con el sistema decimal, supongamos quelos numeros se almacenan con una mantisa de 4 dıgitos decimales, una caracterıstica de 2dıgitos decimales, de los cuales, el primero se usa para almacenar el signo.

Page 22: Apuntes Programación 2 ESCOM IPN

1.2. Errores 17

Signo caracterıstica mantisa± 1 dıgito 4 dıgitios

Tabla 1.2.1: Almacenamiento del computador imaginario

Por ejemplo, si deseamos almacenar los numeros 8123000 y 0.00456 en nuestro computadorimaginario, primero se deben de normalizar los numeros quedando 0.8123×107 y 0.4560×10−2

respectivamente, por tanto los numeros almacenados en nuestro computador quedarıan dela siguiente manera:

Signo caracterıstica mantisa+ 7 8123− 2 4560

Con ayuda de nuestro computador imaginario, se pueden mostrar ciertos errores que secometen.

a) Suma de Numeros muy Distintos en Magnitud

Sean X = 0.003 y Y = 700, que sucede si deseamos almacenar el valor de X + Y parausarlo posteriormente. Primeramente para operar los valores X y Y , estos se deben dealmacenar en el computador, para esto, primero se deben de normalizar obteniendo:

X = 0.3000× 10−2

Y = 0.7000× 103

estos numeros no los puede operar directamente el computador ya que tienen distinta carac-terıstica, para ello, se deben de desnormalizar antes de efectuar la suma.

0.000003× 103

+0.700000× 103

0.700003× 103

por lo tanto, el valor de la suma almacenado en nuestro computador queda ası:

Signo caracterıstica mantisa+ 3 7000

y por tanto la suma no se realizo.

Page 23: Apuntes Programación 2 ESCOM IPN

1.2. Errores 18

b) Resta de Numeros Casi Iguales

Sean X = 0.3153 y Y = 0.3152, que sucede si ahora deseamos almacenar el valor deX − Y . Se tiene:

0.3153× 100

−0.3152× 100

0.0001× 100

ya que la mantisa del valor de la resta esta desnormalizada, el computador primero la nor-maliza 0.1000× 10−3 y la almacena de la siguiente manera:

Signo caracterıstica mantisa− 3 1000

hasta aquı no ha habido error alguno, sin embargo el valor de la resta solo tiene una cifrasignificativa y no se puede confiar en su exactitud, ya que si este valor es usado para pos-teriores operaciones puede generar resultados inesperados. Por ejemplo, supongamos que losiguiente es parte del cogido de un programa:

X = (A−B) ∗ C

con A = 0.3153 × 100, B = 0.3152 × 100 y C = 0.1000 × 105. Al operar, se tiene X =0.00001 × 105 = 1, siendo correcto este valor, sin embargo, supongamos que el valor de Afue calculado anteriormente y el valor fue A? = 0.3154× 100, se tiene que el error absoluto,relativo y porcentual entre el valor de A y el valor de A∗ son:

EA = |0.3153− 0.3154| = 0.0001,ER = EA

|0.3153| = 0.00031,

ERP = ER× 100 = 0.031%

Ahora bien, hagamos uso del valor de A? en lugar de A para obtener el valor de X. Setiene:

X? = (A? −B) ∗ C= (0.3154× 100 − 0.3152× 100) ∗ 0.1000× 105

= 2

El error absoluto, relativo y porcentual entre el valor de X y X? son:

Page 24: Apuntes Programación 2 ESCOM IPN

1.2. Errores 19

EA = |1− 2| = 1,ER = EA

|1| = 1,

ERP = ER× 100 = 100%

En conclusion, el error del calculo de A? en lugar de A nos genero un error porcentual de0.031%, sin embargo, esto nos genero un error porcentual del 100% en el resultado final delcalculo de X.

c) Overflow (desbordamiento o sobreflujo) y Underflow (subflujo)

Sean X = 0.7000× 107 y Y = 0.3000× 109, se tiene:

0.7000× 107

∗0.3000× 109

0.2100× 1016

luego, si se desea almacenar el valor de X ∗ Y en nuestro computador imaginario, esterequerira de 3 dıgitos para la caracterıstica siendo el primero para el signo, pero nuestrocomputador solo tiene capacidad para dos dıgitos siendo el primero para el signo y por tanto,el valor de X ∗ Y no se puede almacenar en nuestro computador y por ende se interrumpenlos calculos. A este tipo de error se le conoce como overflow, desbordamiento o sobreflujo.Un sobreflujo surge como consecuencia de una operacion artimetica de dos numero validoscuyo resultado es un numero tan grande que el computador no puede manejar.

Ahora, consideremos los valores X = 0.6000 × 10−8 y Y = 0.3000 × 10−5 y hagamos laoperacion producto. Se tiene:

0.6000× 10−8

∗0.3000× 10−5

0.1800× 10−13

la caracterıstica es -13 y nuevamente como en el caso del overflow, este valor no puedealmacenarse en nuestro computador, generandose de esta manera lo que se conoce como unerror llamado underflow o subflujo. Un subflujo surge como consecuencia de una operacionaritmetica de dos numeros cuyo resultado es un numero tan pequeno que el computador nopuede manejar.

Tanto el sobreflujo como el subflujo pueden aparecer pueden aparecer a partir de opera-ciones aritmeticas que involucran productos o cocientes. El subflujo no es un problema tanserio como lo es el sobreflujo. En el caso del sobreflujo los computadores interrumpen loscalculos y envian un mensaje de error, mientras que en el caso del subflujo, los computadorestrabajan el resultado del valor como cero.

Page 25: Apuntes Programación 2 ESCOM IPN

1.2. Errores 20

d) Division entre un Numero muy Pequeno

Supongamos que se desea operar:

X = A−B/C

con valores A = 0.1120×109, B = 0.1000×106 y C = 0.9000×10−3. Bajo estas condiciones,X = 0.0009 × 109 = 0.9000 × 106. Supongamos que tras operaciones anteriores al calculode X, se obtuvo el valor de C? = 0.9001× 10−3 en lugar de C. El error absoluto, relativo yporcentual entre el valor de C y C? son:

EA = |0.9000× 10−3 − 0.9001× 10−3| = 0.0001× 10−3,ER = EA

|0.9000×10−3| = 10−4,

ERP = ER× 100 = 0.01%

Ahora bien, hagamos uso del valor de C? en lugar de C para el calculo de X. Se tiene:

X∗ = A−B/C?

= 0.1120× 109 − 0.1000× 106/0.9001× 10−3

= 0.1000× 107

El error absoluto, relativo y porcentual entre el valor de X y X? son:

EA = |0.9000× 106 − 0.1000× 107| = 100000,ER = EA

|0.9000×106| = 0.1111,

ERP = ER× 100 = 11.11%

El error relativo como consecuencia de haber obtenido el valor de C? se ha multiplicado1111 veces. Este error surge como consecuencia de realizar una division donde el cociente seobtuvo de calculos anteriores generandose un pequenno error.

1.2.4 Reduccion de Errores

En la seccion anterior se vieron posibles errores que se generan en un computador. Ahoralo que nos interesa es tratar de reducir lo mejor posible los errores generados.

Ejemplo 1.2.5 Consideremos la ecuacion cuadratica x2 − 101.01x + 0.10101 = 0. Paraencontrar las raıces, se recurre a la formula general

x = −b±√b2−4ac

2a

Page 26: Apuntes Programación 2 ESCOM IPN

1.2. Errores 21

sustituyendo los valores en la formula general para nuestro ejemplo y aplicando una aritme-tica de redondeo a cinco dıgitos, se tiene:

x∗ =101.01±

√(−101.01)2−4(0.10101)

2

= 101.01±√

10203−0.404042

= 101.01±√

102032

= 101.01±101.012

luego

x∗+ = 101.01+101.012

= 101.01 yx∗− = 101.01−101.01

2= 0

Por tanto las raıces son x∗+ = 101.01 y x∗− = 0. Sin embargo las soluciones verdaderasredondeadas a cinco dıgitos decimales son x+ = 101.01 y x− = 0.00100 generandose erroresrelativos porcentuales de:

ERP =|x+−x∗+||x+| × 100

= |101.01−101.01||101.01| × 100

= 0% y

ERP =|x−−x∗−||x−| × 100

= |0.00100−0||0.001| × 100

= 100%

Se observa que el metodo fue adecuado para la solucion x+, pero no del todo para x−. Eneste ejemplo se presenta el problema de restar numeros casi iguales, dando como resultadoperdida de exactitud. Veamos, que sucede, si en lugar de aplicar la formula general tal ycomo se efecto para encontrar el valor de x−, se recurre a la racionalizacion de terminos. Setiene:

x− = −b−√b2−4ac

2a

= −b−√b2−4ac

2a−b+√b2−4ac

−b+√b2−4ac

= b2−(b2−4ac)

2a(−b+√b2−4ac)

= 2c−b+√b2−4ac

utilizando la expresion anterior con a = 1, b = −101.01 y c = 0.10101 se obtiene:

Page 27: Apuntes Programación 2 ESCOM IPN

1.2. Errores 22

x− = 2(0.10101)

101.01+√

101.012−4(0.10101)

= 0.20202101.01+101.01

= 0.20202202.02

= 0.001

el cual es el valor verdadero utilizando el metodo de redondeo a cinco dıgitos. Esta formulaalternativa para calcular una raız pequena de una ecuacion cuadratica casi siempre produceuna respuesta mas exacta que la formula usual. X

Ejemplo 1.2.6 Consideremos el polinomio f(x) = x3 − 3.2x2 + 7.1x + 2.5. Evaluemosx = 5.17 en f(x) utilizando una aritmetica de redondeo dıgitos. La siguiente tabla muestralos resultados intermedios para llegar a la solucion final.

x x2 x3 3.2x2 7.1xExacto 5.17 26.7289 138.188413 85.53248 36.707

redondeo a tres dıgitos 5.17 26.7 138 85.4 36.7

luego

Exacto f(5.17) = 138.188413− 85.53248 + 36.707 + 2.5 = 91.862933Redondeo a tres dıgitos f(5.17) = 138− 85.4 + 36.7 + 2.5 = 91.8

obteniendose un error relativo porcentual de

ERP = |91.862933−91.8||91.862933| × 100

= 0.06%

Como metodo alternativo, f(x) se puede escribir de la manera:

f(x) = ((x− 3.2)x+ 7.1)x+ 2.5,

esto da como resultado que f(5.17) = 91.9, de donde se tiene ERP = 0.04%. Disminuyendoen 0.02% el error. Este metodo siempre disminuye el error, en algunos casos da resultadoscon un porcentaje mucho mejor. Los polinomios siempre deben de anidarse antes de realizarcualquier evaluacion, pues de esta forma se minimiza el numero de calculos aritmeticos y portanto los errores.

Page 28: Apuntes Programación 2 ESCOM IPN

1.2. Errores 23

1.2.5 Propagacion de Errores

El error de propagacion sirve para estimar el error resultante en una funcion a partir devalores de entrada. El objetivo es estimar como se propagan los errores; por ejemplo, si sesuman o multiplican dos numeros que tienen error, como se ve reflejado esto al aplicar estosvalores a una funcion.

Cuando se evalua una funcion en un punto x = a, en general se dispone de un valoraproximado a a: a?, teniendose como error εa = a − a?. Nuestro objetivo es determinar elerror de propagacion de la funcion; esto es:

εf = f(a)− f(a∗)

Figura 1.2.1: Grafica de una funcion en la cercanıa de a

Nuestro objetivo es determinar la relacion existente entre εa y εf . Si 0 < εa � 1, entoncesf(x) puede aproximarse por la tangente al punto x = a, teniendose:

f ′(a) ≈ f(a)−f(a∗)a−a∗ =

εfεa

Page 29: Apuntes Programación 2 ESCOM IPN

1.2. Errores 24

entonces

εf ≈ εaf′(a) ≈ εaf

′(a∗)

y por lo tanto

|εf | ≈ |εa||f ′(a∗)|de esta manera, se define el error de propagacion como:

|εf | = |εx||f ′(x∗)| = |x− x∗||f ′(x∗)|

Ejemplo 1.2.7 Si f(x) = x3 + 1 con x∗ = 3.21 y con εa = 0.01, entonces el error de propa-gacion es |εf | = |0.01||3(3.21)2+1| = 0.3191. Puesto que f(3.21) = 34.0761, entonces el valorreal se encuentra dentro del intervalo [34.0761−0.3191, 34.0761+0.3191] = [33.7570, 34.3952].X

1.2.6 Numero de Condicion

Definicion 1.2.6 Sean f y x∗ una aproximacion de x, se define el numero condicionadocomo:

NC = x∗f ′(x∗)f(x∗)

El numero condicionado compara el error relativo de x con x∗ y el de f(x) con f(x∗).Esto es, mide la sensibilidad de valores de salida de una funcion debido a perturbacionespequenas en los valores de entrada.

1. Si NC = 1, entonces el error relativo de f(x) es igual al error relativo de x.

2. Si NC > 1, entonces el error relativo de f(x) es mayor que el error relativo de x.

3. Si NC < 1, entonces el error relativo de f(x) es menor que el error relativo de x.

Si NC � 1, se dice que la funcion esta mal condicionada.

Ejemplo 1.2.8 Sean f(x) = tan x y x∗ = π2

+ 0.02π2. Se tiene:

f ′(x) = sec2 x = 1cos2 x

luego

NC = x∗(1/cos2 x∗)tan x∗

= 1.6022(1024.9)−31.998

= −51.319

por tanto la funcion esta mal condicionada. Esto se debe a que en una vecindad de π/2 latangente tiende tanto a infinito positivo como a infinito negativo.

Page 30: Apuntes Programación 2 ESCOM IPN

25

Capıtulo 2

Algoritmos para dar Solucion a laEcuacion de Una Variable

2.1 Algoritmos Para Busqueda de Raıces

2.1.1 Algoritmos

A lo largo de los apuntes, se estaran trabajando procedimientos como los ya vistos en laseccion 1.1.1, donde se mostraron procedimientos para convertir un numero de base decimala base binaria y viceversa. Estos procedimientos son llamados algoritmos.

Un algoritmo es una serie de pasos que sirven parta resolver un problema. Sus principalescaracterısticas son:

• Contiene valores de entrada.

• contiene una serie finita de pasos.

• Contiene valores de salida.

• No se permiten ciclos infinitos.

• Esta bien definido.

A la descripcion de los algoritmos por medio de texto parecido al codigo de computadorase le llama seudocodigo. Un algoritmo se compone de valores de Entrada, Proceso(en elque se describe la serie finita de pasos) y Salida; es de esta forma en que se describiran losseudocodigos de los algoritmos presentados a lo largo de estos apuntes.

Ejemplo 2.1.1 Un algoritmo para calcular

Page 31: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 26

N∑i=1

xii = x11 + x2

2 + · · ·+ xNN

donde N y los valores x1, x2, . . . , xN estan dados y ordenados se describe enseguida:

ENTRADA: N, x1, x2, . . . , xN .

SALIDA: SUMA =N∑i=1

xii.

PROCESO: Se utiliza una variable auxiliar auxpaso 1: Establecer SUMA = 0 y aux = 1.paso 2: Para i = 1 hasta i = N hacer pasos 3 a 6:

paso 3: Para j = 1 hasta j = i hacer paso 4:paso 4: aux = aux ∗ xi.

paso 5: SUMA = SUMA+ aux.paso 6: Poner aux = 1.

paso 7: SALIDA (SUMA).PARAR. X

Definicion 2.1.1 Un algoritmo se dice que es estable si cambios pequenos en los datosde entrada producen cambios pequenos en los datos de salida. En caso contrario se diceque es inestable. Si un algoritmo es estable solo para ciertos datos iniciales se dice que escondicionalmente estable.

Los algoritmos que nos interesan trabajar son aquellos que sean estables. En este capıtulos,nos dedicaremos a la busqueda de raıces para una funcion f(x) = 0. Se describiran algunosmetodos que nos ayudaraan a aproximar la raız de una funcion. El primer metodo a tratares el metodo de la biseccion.

2.1.2 Metodo de la Biseccion

Antes de describir de que se trata el metodo de la biseccion, recordemos el teorema delvalor intermedio.

Teorema del Valor Intermedio Si f es una funcion continua en un intervalo [a, b] y y esun numero que se encuentra entre f(a) y f(b), entonces existe c ∈ [a, b] tal que f(c) = y.

El metodo de la biseccion hace uso del teorema del valor intermedio. Se aplica de lasiguiente manera: dada una funcion f continua en un intervalo [a, b] donde de antemanose conoce que existe una sola raız, entonces, se tiene que [f(a) > 0 y f(b) < 0] o [f(a) <0 y f(b) > 0]. Sin perdida de generalidad, supongamos que se tiene la primera situacion.Puesto que f(a) > 0 y f(b) < 0 con f funcion continua, entonces por el teorema del

Page 32: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 27

valor intermedio, existe c ∈ [a, b] tal que f(c) = 0. Sea p1 = a + b−a2

; p1 es el puntomedio del intervalo [a, b]. Por tricotomıa de los numeros reales, se tiene p1 < c o p1 = co p1 > c. Si p1 = c, entonces p1 es la raız que estabamos buscando. Sin perdida degeneralidad, supongamos que p1 < c, entonces se tiene que signo(f(p1)) = signo(f(a)) > 01

y signo(f(b)) < 0 si y solo si signo(f(p1)) ∗ signo(f(b)) < 0, luego por el teorema del valorintermedio existe c′ ∈ [p1, b] tal que f(c′) = 0. Observese que c′ = c. Tomamos p2 = p1+ b−p1

2;

esto es, p2 es el punto medio del intervalo [p1, b] y aplicamos nuevamente el razonamientoanterior. Este proceso se hace repetidamente hasta que encerremos la raız en un intervalosuficientemente pequeno (figura 2.1.1).

Figura 2.1.1: Metodo de la biseccion

Algoritmo 2.1.1: Metodo de la Biseccion.

Entrada: funcion f ; intervalo [a, b]; numero maximo de iteraciones N0; tolerancia TOL.Salida: solucion aproximada p o mensaje de error.Proceso: se requieren de dos variables auxiliares fa y fp

Paso 1: Tomar i = 1 y fa = f(a)paso 2: Para i = 1 hasta i = N0 hacer pasos 3 A 6:paso 3: Tomar p = a+ b−a

2.

paso 4: Hacer fp = f(p)paso 5: Si f(p) = 0 o (b− a)/2 < TOL, entonces

SALIDA(p).PARAR.

paso 6: Si signo(f(a)) ∗ signo(f(p)) > 0, tomar

1la funcion signo se define como signo(x) =

−1 si x < 00 si x = 01 si x > 0

Page 33: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 28

a = p y fa = fp, en caso contrario, tomarb = p.

paso 7: SALIDA(Procedimiento terminado sin exito despues de N0 iteraciones).PARAR.

Ejemplo 2.1.2 La ecuacion f(x) = x3 − 7x2 + 14x − 6 = 0 tiene una raız en el intervalo[0, 1] ya que f(0) = −6 < 0 y f(1) = 2 > 0. Para calcular el valor de p3 se tiene:

p1 = 0 + 1−02

= 0.5,

puesto que f(p1) = f(0.5) = −0.625 < 0, entonces

p2 = 0.5 + 1−0.52

= 0.75,

puesto que f(p2) = f(0.75) = 0.984 > 0, entonces

p3 = 0.5 + 0.75−0.52

= 0.625. X

2.1.3 Iteracion de Punto Fijo

Definicion 2.1.2 Sea g una funcion. Un punto p en el dominio de g se dice que es puntofijo si g(p) = p.

El metodo de punto fijo se basa en la definicion de punto fijo. Sea f una funcion, definamosg(x) = x−f(x). Si p es un punto fijo de g, entonces f(p) = g(p)−p = 0, esto es, un punto fijopara g es una raız para f . De esta manera, si se desea encontrar las raıces de una funcion f ,basta con encontrar los puntos fijos de una funcion g construida a partir de f de tal maneraque los puntos fijos de g sean raıces de f . El ejemplo 2.1.3 muestra posibles elecciones de lafuncion g para una funcion f dada.

Ejemplo 2.1.3 Si f(x) = x3 + 2x2 + 5x+ 1, entonces las funciones:

g1(x) = x− f(x)g2(x) = (−1− x3 − 2x2)/5g3(x) = −1/(x2 + 2x+ 5)

Page 34: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 29

son ejemplos de posibles elecciones para la funcion g.

El metodo de punto fijo requiere de un punto inicial cercano al valor de la raız y partir deeste, se comienzan a realizar iteraciones hasta aproximarse cada vez mas al valor de la raızque se esta buscando.

Algoritmo 2.1.2: Metodo de Punto Fijo.

Entrada: funcion f ; aproximacion inicial p0; numero maximo de iteraciones; tolerancia TOL.Salida: solucion aproximada p o mensaje de error.Proceso:

Paso 1: Para i = 1 y hasta i = N0 hacer pasos 2 a 4:paso 2: Tomar p = g(p0).paso 3: Si |p− p0| < TOL, entonces

SALIDA(p).PARAR.

paso 4: hacer p0 = p.paso 7: SALIDA(Procedimiento terminado sin exito despues de N0 iteraciones).

PARAR.

Ejemplo 2.1.4 Se desea encontrar una aproximacion a una raız de la funcion f(x) = x4 +2x2−x− 3 mediante el metodo del punto fijo. Para ello se proponen las siguientes funcionescomo posibles candidatas para la eleccion de g.

g1(x) = (3 + x− 2x2)1/4

g2(x) = (x+3−x4

2)1/2

g3(x) = ( x+3x2+2

)1/2

g4(x) = 3x4+2x2+34x3+4x−1

la tabla 2.1.1 proporciona los resultados del metodo de iteracion de punto fijo para las cuatroopciones de g con p0 = 1.

De la tabla 2.1.1 se observa que aunque las funciones gi son problemas de punto fijo parala misma funcion f , difieren ampliamente como metodos de aproximacion a la solucion delproblema. X

Page 35: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 30

n g1 g2 g3 g4

0 1 1 1 11 1.189207115 1.224744871 1.154700538 1.1428571432 1.080057753 0.993666159 1.11642741 1.124481693 1.149671431 1.228568645 1.126052233 1.1241231644 1.107820530 0.987506429 1.123638885 1.124123035 1.133932285 1.232183418 1.124244497 1.124123036 1.118003118 0.981585828 1.1240925537 1.127857163 1.235563209 1.1241306768 1.121813166 0.97596246 1.1241211119 1.125539874 1.238689029 1.12412351110 1.123249432 0.970684691 1.124122909

Figura 2.1.1: Metodo de punto fijo para la misma funcion f y con diferentes funciones g

El siguiente teorema es de gran importancia para la exclusion de ciertas funciones g′is.

Teorema de Punto Fijo Sea g una funcion continua en un intervalo [a, b] tal que esderivable en (a, b). Si existe una constante k, 0 < k < 1 con

|g′(x)| ≤ k para cada x ∈ (a, b),

entonces para cualquier numero p0 ∈ [a, b], la sucesion definida por

pn = g(pn−1), n ≥ 1,

converge al unico punto fijo p en [a, b].

2.1.4 Metodo de Newton-Raphson y de la Secante

Consideremos la figura 2.1.2. Deseamos encontrar la aproximacion a una raız de f dela siguiente manera. Dado un punto inicial p0, calculamos la tangente a este punto vıala derivada y v”ia la pendiente de una recta dados dos puntos, siendo estos, los puntos(p0, f(p0)) y (p1, 0) como se muestra en la figura 2.1.2. Se tiene

f ′(p0) = f(p0)p0−p1

de donde

Page 36: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 31

p1 = p0 − f(p0)f ′(p0)

.

Encontrado el valor p1, se hace el mismo procedimiento para el calculo de p2, obteniendose

p2 = p1 − f(p1)f ′(p1)

.

Se continua haciendo el mismo proceso hasta obtener una aproximacion adecuada a laraız buscada.

Figura 2.1.2: Metodo de Newton-Raphson

Algoritmo 2.1.3: Metodo de Newton-Raphson.

ENTRADA: funcion f ; aproximacion inicial p0; numero maximo de iteraciones N0; toleranciaTOL.

SALIDA: solucion aproximada p o mensaje de error.PROCESO:

paso 1: Para i = 1 hasta i = N0 hacer pasos 2 a 4:paso 2: Hacer p = p0 − f(p0)/f

′(p0)paso 3: Si |p− p0| < TOL, entonces

SALIDA(p).PARAR.

paso 4: Hacer p0 = p.paso 5: SALIDA(Procedimiento terminado sin exito despues de N0 iteraciones).

PARAR.

Ejemplo 2.1.5 Sean f(x) = x2 − 6 y p0 = 1. Encontrar el valor de p2.

Se tiene

Page 37: Apuntes Programación 2 ESCOM IPN

2.1. Algoritmos Para Busqueda de Raıces 32

p1 = 1− f(1)f ′(1)

= 1− 12−62(1)

= 3.5

luego

p2 = 3.5− f(3.5)f ′(3.5)

= 3.5− 3.52−62(3.5)

= 2.067. X

El elemento pn en el metodo de Newton-Raphson esta dado por:

pn = pn−1 − f(pn−1)f ′(pn−1)

para n > 0.

Para n > 1 anteriormente se tienen calculados al menos los puntos p0 y p1. Si se deseaevitar el problema de evaluar en la derivada de una funcion se puede recurrir a calcular a lasecante que une a los puntos (pn−1, f(pn−1)) y (pn−2, f(pn−2)) como una aproximacion a laderivada en el punto pn−1, obteniendose:

pn = pn−1 − f(pn−1)f ′(pn−1)

= pn−1 − f(pn−1)f(pn−1)−f(pn−2)

pn−1−pn−2

= pn−1 − f(pn−1)(pn−1−pn−2)f(pn−1)−f(pn−2)

Esta ultima formula alternativa al metodo de Newton-Raphson recibe el nombre delmetodo de la secante. Para ello, se requieren dos puntos de aproximacion a la raın el lugarde uno como en el metodo de Newton-Raphson.

Algoritmo 2.1.4: Metodo de la Secante.

ENTRADA: funcion f ; aproximacion inicial p0 y p1; numero maximo de iteraciones N0;tolerancia TOL.

SALIDA: solucion aproximada p o mensaje de error.PROCESO: se requieren dos variables auxiliares q0 y q1.

paso 1: Tomarq0 = f(p0) yq1 = f(p1)

paso 2: Para i = 2 hasta i = N0 hacer pasos 3 a 5:paso 3: Hacer p = p1 − q1(p1 − p0)/(q1 − q0)

Page 38: Apuntes Programación 2 ESCOM IPN

2.2. Raıces de Polinomios 33

paso 4: Si |p− p1| < TOL, entoncesSALIDA(p).PARAR.

paso 5: Hacer p0 = p1,q0 = q1,p1 = p yq1 = f(p).

paso 6: SALIDA(Procedimiento terminado sin exito despues de N0 iteraciones).PARAR.

Ejemplo 2.1.6 Encontrar el valor de p3 con p0 = 3 y p1 = 2 para la funcion f(x) = x2 − 6.

Se tiene:

p2 = 2− f(2)(2−3)f(2)−f(3)

= 2.3333

luego

p3 = 2.3333− f(2.3333)(2.3333−2)f(2.3333)−f(2)

= 2.4615 X

2.2 Raıces de Polinomios

Las funciones polinomiales son de gran importancia en el estudio del analisis numerico. Suimportancia se notara en los capıtulos siguientes donde se tratara el tema de interpolacion.Esta seccion esta dedicada a este tipo de funciones especiales: los polinomios.

Definicion 2.2.1 Un polinomio de grado n es una funcion P : R→ R que tiene la siguienteforma:

P (x) = anxn + an−1x

n−1 + · · ·+ a1x+ a0

con ai valores constantes llamadas coeficientes del polinomio P (x) y an 6= 0

El siguiente teorema es de suma importancia en la teorıa algebraıca que concierne a lospolinomios. Su importancia data en el hecho de que siempre es posible encontrar raıces paraun polinomio de grado n ≥ 1 en el campo de los numeros complejos.

Page 39: Apuntes Programación 2 ESCOM IPN

2.2. Raıces de Polinomios 34

Teorema Fundamental del Algebra Si P (x) es un polinomio de grado n ≥ 1 con coefi-cientes reales o complejos, entonces P (x) tiene al menos una raız (posiblemente compleja).

Corolario 2.2.1 Si P (x) es un polinomio de grado n ≥ 1 con coeficientes reales o com-plejos, entonces existen constantes unicas x1, x2, . . . , xk (posiblemente complejas), y enterospositivos m1,m2, . . . ,mk con Σk

i=1mi = n tal que:

P (x) = an(x− x1)m1(x− x2)

m2 · · · (x− xk)mk

Corolario 2.2.2 Si P (x) y Q(x) son polinomios de grado a lo mas n con P (xi) = Q(xi)para x1, x2, . . . , xk con k > n, entonces P (x) = Q(x) para todos los valores de x.

Definicion 2.2.1 Sea P (x) un polinomio. r es raız de multiplicidad m de P (x), si existe unpolinomio Q(x) tal que

P (x) = (x− r)mQ(x) con Q(r) 6= 0

Algoritmo de la Division Dados los polinomios P (x) y Q(x), existen dos unicos polinomiosC(x) y R(x) tal que:

P (x) = C(x)Q(x) +R(x) con grado(R(x)) < grado(Q(x)) o grado(R(x)) = 0

Teorema del Resto Si Q(x) es el cociente y R(x) es el resto de la division de un polinomioP (x) por el polinomio x− a aplicando el algoritmo de la division, entonces

R(a) = P (a).

Dado un polinomio P (x). Por el algoritmo de la division para polinomios, se tiene

P (x) = Q(x)(x− a) +R(x) con grado(R(x)) = 0.

luego

P ′(x) = Q′(x)(x− a) +Q(x)

y por tanto

Page 40: Apuntes Programación 2 ESCOM IPN

2.2. Raıces de Polinomios 35

P ′(a) = Q(a).

El metodo de Horner o division sintetica es un metodo que nos ayuda a encontrar elcociente y el resto al dividir un polinomio por x−a para algun a, y por ende por lo anterior,nos ayuda a encontrar el valor de P ′(a).

Metodo de Horner Sea

P (x) = anxn + an−1x

n−1 + · · ·+ a1x+ a0.

Si bn = an y bk = ak + bk+1x0 para k = n− 1, n− 2, . . . , 1, 0, entonces b0 = P (x0). Mas aun,si

Q(x) = bnxn−1 + bn−1x

n−2 + · · ·+ b2x+ b1,

entonces

P (x) = (x− x0)Q(x) + b0.

El teorema anterior describe el metodo de Horner, sin embargo para llevarlo a la practica sesigue el siguiente algoritmo.

Algoritmo 2.2.1: Metodo de Horner.

ENTRADA: grado n del polinomio; coeficientes a0, a1, . . . , an;x0.SALIDA: y = P (x0); z = P ′(x0).PROCESO:

paso 1: Tomary = an yz = an

paso 2: Para j = n− 1, n− 2, . . . , 1 tomary = x0y + ajz = x0z + y

paso 3: Hacer y = x0y + a0

paso 4: SALIDA(y,z).PARAR.

Al realizar los calculos con el metodo de Horner se recurre a una tabla que se construyecomo en el ejemplo siguiente.

Ejemplo 2.2.1 Al aplicar el metodo de Horner al polinomio p(x) = 3x4 + 2x3− x2 + 4x+ 2en x0 = −2, se tiene:

Page 41: Apuntes Programación 2 ESCOM IPN

2.2. Raıces de Polinomios 36

coeficiente de x4 x3 x2 x1 x0

x0 = −2 a4 = 3 a3 = 2 a2 = −1 a1 = 4 a0 = 2b4x0 = −6 b3x0 = 8 b2x0 = −14 b1x0 = 20

b4 = 3 b3 = −4 b2 = 7 b1 = −10 b0 = 22

por lo tanto

P (x) = (x+ 2)(3x3 − 4x2 + 7x− 10) + 22. X

Page 42: Apuntes Programación 2 ESCOM IPN

37

Capıtulo 3

Algoritmos de Interpolacion

3.1 Algoritmos de Interpolacion

Figura 3.1.1: Grafica que muestra puntos aislados tomados de unamuestra de algun experimento hipotetico.

Supongamos que la figura 3.1.1 muestra los datos registrados en un experimento fısicoque depende del tiempo. El eje de la abscisa muestra los diferentes tiempos en que se llevoa cabo el mismo experimento repetidas veces, y el eje de la ordenada muestra los valoresaproximados del resultado del experimento. Este tipo de registros se obtienen a menudo enun laboratorio de fısica, puede haber registros para lapsos cortos de tiempo o para lapsosmuy largos. Un ejemplo de tales registros, puede ser el de la poblacion ya sea a nivel deun pais o la poblacion mundial. Por ejemplo, el eje de las abscisas puede representar lasmediciones registradas en el ano t0, t1, etc., y el eje de la ordenada puede representar lapoblacion para el respectivo ano de registro.

Una vez obtenidos los datos como se muestran en la figura 3.1.1, lo interesante del asuntoes determinar el valor que le corresponde a la funcion para un valor no registrado, esto es,por ejemplo, en la figura se muestran datos registrados para valores t0, t1 hasta t5, para

Page 43: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 38

estos valores, conocemos el valor exacto que le corresponde a la funcion f(t), sin embargoque sucede si se desea conocer un valor t′ que se encuentre en el intervalo (t0, t1), este valorno fue registrado. La problematica a resolver enseguida sera encontrar metodos con loscuales sea posible encontrar dicho valor. La idea data en encontrar una funcion continuaque pase por los puntos registrados, de tal manera que sea posible determinar de maneraconfiable aquellos valores que no fueron registrados. A esto se le conoce como interpolacion.Comenzaremos dicho estudio con el polinomio de Lagrange.

Figura 3.1.2: Ejemplo de Interpolacion.

3.1.1 Polinomio de Lagrange

Consideremos el problema de encontrar un polinomio de grado maximo n que pase porlos n+ 1 puntos: (x0, f(x0)), (x1, f(x1)), . . . , (xn, f(xn)). Sea

Ln.k(x) = (x−x0)(x−x1)...(x−xk−1)(x−xk+1)···(x−xn)

(xk−x0)(xk−x1)···(xk−xk−1)(xk−xk+1)···(xk−xn)para k = 0, 1, . . . , n

=n∏

i=0,i 6=k

(x− xi)(xk − xi)

para k = 0, 1, . . . , n

Se define el n-esimo polinomio interpolante de Lagrange como:

Pn(x) = f(x0)Ln,0(x) + f(x1)Ln,1(x) + · · ·+ f(xn)Ln,n(x)

=n∑k=0

f(xk)Ln,k(x).

Page 44: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 39

Si el grado del polinomio es claro, entonces escribiremos Lk en lugar de Ln,k.

Observemos que

Lk(xj) =

{1 si j = k

0 si j 6= k

luego, se tiene:

Pn(xk) = f(xk) para k = 0, 1, . . . , n.

esto es, el polinomio de Lagrange es tal que pasa por cada uno de los puntos (xk, f(xk)).

Ejemplo 3.1.1 Para encontrar el polinomio de grado dos para los valores de la siguientetabla:

x f(x)8.1 16.944108.3 17.564928.6 18.50515

primeramente se encuentran los valores de L0(x), L1(x) y L2(x), obteniendo:

L0(x) = (x−8.3)(x−8.6)(8.1−8.3)(8.1−8.6)

= x2−16.9x+71.38(−0.2)(−0.5)

= 10.1

(x2 − 16.9x+ 71.38)

L1(x) = (x−8.1)(x−8.6)(8.3−8.1)(8.3−8.6)

= x2−16.7x+69.66(0.2)(−0.3)

= − 10.06

(x2 − 16.7x+ 69.66)

L2(x) = (x−8.1)(x−8.3)(8.6−8.1)(8.6−8.3)

= x2−16.4x+67.23(0.5)(0.3)

= 10.15

(x2 − 16.4x+ 67.23)

por tanto, el polinomio dos de Lagrange esta dado por:

P2(x) = f(x0)L0(x) + f(x1)L1(x) + f(x2)L2(x)= (16.94410)(10x2 − 169x+ 713.8) + (17.56492)(−16.66x2 + 278.222x− 1160.53) +

(18.50515)(6.66x2 − 109.224x+ 447.751)= 0.054x2 + 2.19x− 4.23 X

Page 45: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 40

En el ejemplo 3.1.1 se calculo el polinomio dos de Lagrange, a partir de este se puedenencontrar valores aproximados para datos que no se encuentran en la tabla, por ejemplo, setiene P2(8.2) = 17.35896, P2(8.4) = 17.97624 y P2(8.5) = 18.2865.

Enseguida se muestran el metodo de Neville seguido del metodo de diferencias divididasde Newton que de igual manera sirven para interpolar.

3.1.2 Metodo de Neville

Algoritmo 3.1.1: Metodo de Neville.

ENTRADA: valores x, x0, x1, . . . , xn; valores P0,0 = f(x0), P1,0 = f(x1), . . . Pn,0 = f(xn).SALIDA: Tabla 3.1.1. con P (x) = P0,n

PROCESO:

paso 1: Para j = 0, 2, . . . , n hacerpara i = 0, . . . , n− j tomar

Pi,j =(x−xi)Pi+1,j−1+(xi+j−x)Pi,j−1

xi+j−xi

paso 2: SALIDA(P (x)).PARAR.

i xi Pi,0 Pi,1 Pi,2 · · · Pi, n0 x0 P0,0 P0,1 P0,2 · · · P0,n

1 x1 P1,0 P1,1 P1,2 · · ·· · · · · · · · · · · · · · · · · ·n xn Pn,0

Tabla 3.1.1: Metodo de Neville.

Ejemplo 3.1.2 Apliquemos el metodo de Neville para para aproximar el valor de√

3 con-siderando la funcion f(x) =

√x y los valores x0 = 0, x1 = 1, x2 = 2, x3 = 4 y x4 = 5.

Enseguida se muestra la tabla 3.1.1 para este problema en especifico.

i xi Pi,0 Pi,1 Pi,2 Pi,3 Pi,40 0 0 3 0.9319 1.4918 1.61801 1 1 1.6213 1.6785 1.70222 2 1.4142 1.7071 1.72603 4 2 1.76404 5 2.2360

Page 46: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 41

Por ejemplo, para calcular los valores P0,1, P1,1, P1,2, se hace uso del paso 1 del algoritmo3.1.1, teniendose:

P0,1 = (x−x0)P1,0+(x1−x)P0,0

x1−x0

= (3−0)(1)+(1−3)(0)1−0

= 3P1,1 = (x−x1)P2,0+(x2−x)P1,0

x2−x1

= (3−1)(1.4142)+(2−3)(1)2−1

= 1.6213P1,2 = (x−x1)P2,1+(x3−x)P1,1

x3−x1

= (3−1)(1.7071)+(4−3)(1.6213)4−1

= 1.6785

El paso 2 del algoritmo 3.1.1 muestra el valor del polinomio interpolado y evaluado en elvalor de la variable x, por tanto, para este ejemplo en especifico, se tiene 1.6180 = P4,4 =P (x = 3) ≈ f(3) =

√3. X

3.1.3 Diferencias Divididas de Newton

Sean (x0, f(x0)), (x1, f(x1)), . . . , (xn, f(xn)) n puntos que se conocen a los que se deseainterpolar. Para abreviar denotemos fi = f(xi). Consideremos el siguiente polinomio degrado n:

Pn = a0 + (x− x0)a1 + (x− x0)(x− x1)a2 + · · ·+ (x− x0)(x− x1) · · · (x− xn−1)an (3.1.1)

Si los valores a′is se escogen adecuadamente de modo que Pn(xi) = f(xi) en los n + 1puntos conocidos, entonces se puede conseguir que Pn sea un polinomio de interpolacion.Nuestro objetivo sera encontrar los valores adecuados para las a′is. Para ello, consideremosprimeramente la siguiente notacion.

Se denomina primera diferencia dividida entre los valores xs y xt a el valor:

f [xs, xt] = ft−fs

xt−xs

Observese que f [xs, xt] = f [xt, xs].

Las diferencias de orden superior se definen en terminos de diferencias de orden inferior,por ejemplo, la diferencia dividida de segundo orden de los valores x0 y x2 se define como:

Page 47: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 42

f [x0, x1, x2] = f [x1,x2]−f [x0,x1]x2−x0

y en general, la diferencia dividida de orden n entre los valores x0 y xn se define como:

f [x0, x1, . . . , xn] = f [x1,x2,...,xn]−f [x0,x1,...xn−1]xn−x0

.

La diferencia dividida de orden cero se define como:

f [xs] = fs.

Consideremos nuevamente el polinomio mostrado en la ecuacion 3.1.1, Si deseamos queel polinomio interpole los puntos (xi, fi) para i = 0, . . . , n, entonces se debe de cumplir quePn(xi) = fi, obteniendose entonces:

f0 = Pn(x0) = a0

de donde a0 = f0 = f [x0],

continuando, se tiene

f1 = Pn(x1) = a0 + (x1 − x0)a1

de donde a1 = f1−a0

x1−x0= f1−f0

x1−x0= f [x1, x0].

continuando con este proceso, se tiene en general, que:

ai = f [x0, x1, . . . , xi]

por tanto

Pn(x) = f0 + (x− x0)f [x0, x1] + (x− x0)(x− x1)f [x0, x1, x2] + · · ·+ (x− x0)(x− x1) · · · (x−xn−1)f [x0, x1, . . . , xn].

Page 48: Apuntes Programación 2 ESCOM IPN

3.1. Algoritmos de Interpolacion 43

Enseguida se muestra el algoritmo de el metodo de diferencias divididas.

Algoritmo 3.1.2: Metodo de Diferencias Divididas.

ENTRADA: valores x, x0, x1, . . . , xn; valores f(x0), f(x1), . . . f(xn).SALIDA: Tabla 3.1.2PROCESO:

paso 1: Para i = 1, 2, . . . , n hacerpara j = 0, . . . , n− i calcular

f [j, . . . , n] = f [j+1,...,i]−f [j,...,i−1]xj+1−xj

y se coloca en la

columna i de la tabla 3.1.2paso 2: SALIDA(P (x)).

PARAR.

xi fi f [xi, xi+1] f [xi, xi+1, xi+2] · · · f [xi, xi+1, . . . , xi+n]x0 f0 f [x0, x1] f [x0, x1, x2] · · · f [x0, x1, . . . , xn]x1 f1 f [x1, x2] f [x1, x2, x3] · · ·· · · · · · · · · · · · · · ·xn fn

Tabla 3.1.2: Metodo de Diferencias Divididas.

Ejemplo 3.1.3 Apliquemos el metodo de diferencias divididas para para aproximar el valorde√

3 considerando la funcion f(x) =√x y los valores x0 = 0, x1 = 1, x2 = 2, x3 = 4 y

x4 = 5.

Enseguida se muestra la tabla 3.1.2 para este problema en especifico.

i xi f [xi, xi+1] f [xi, xi+1, xi+2] f [xi, xi+1, xi+2, xi+3] f [xi, xi+1, xi+2, xi+3, xi+4]0 0 1 -0.2929 0.0631 -0.01151 1 0.4142 -0.0404 0.00532 1.4142 0.2929 -0.01893 2 0.23604 2.2360

Por ejemplo, para calcular los valores f [x0, x1] y f [x1, x2, x3], se hace uso del paso 1 delalgoritmo 3.1.2, teniendose:

Page 49: Apuntes Programación 2 ESCOM IPN

3.2. Algoritmos de Ajuste de Curvas 44

f [x0, x1] = f1−f0x1−x0

= 1−01−0

= 1f [x1, x2, x3] = f [x2,x3]−f [x1,x2]

x3−x1

= 0.2929−0.41422−1

= 0.0404

Se tiene que el polinomio interpolado es:

P4(x) = f0+(x−x0)f [x0, x1]+(x−x0)(x−x1)f [x0, x1, x2]+(x−x0)(x−x1)(x−x2)f [x0, x1, x2, x3]+(x− x0)(x− x1)(x− x2)(x− x3)f [x0, x1, x2, x3, x4]= (x)(1)+(x)(x−1)(−0.2929)+(x)(x−1)(x−2)(0.0631)+(x)(x−1)(x−2)(x−4)(−0.0115)

y por tanto P4(3) = 1.6902. X

3.2 Algoritmos de Ajuste de Curvas

Supongamos que se se han registrado una cierta cantidad de puntos que pudieron habersido el resultado de un experimento, y dichos registros de puntos son parecidos a como semuestran en la tabla 3.1.3 a). El objetivo de esta seccion es tratar de resolver la problematicade encontrar un polinomio de grado n >= 1 que se ajuste mas a los puntos registrados, estoes, obtener un polinomio que se le parezca mas a los puntos registrados, de tal manera quesea posible encontrar el valor aproximado de un dato no registrado. La primera parte, seraencontrar dicho polinomio de grado n = 1 (figura 3.1.3 b)), enseguida se desarrollara demanera general para encontrar un polinomio de grado n > 1.

Figura 3.1.3: a) Registro de puntos. b) Ajuste de puntos a un polinomio de grado 1.

Page 50: Apuntes Programación 2 ESCOM IPN

3.2. Algoritmos de Ajuste de Curvas 45

3.2.1 Ajuste por Mınimos Cuadrados a una Recta

Consideremos la figura 3.1.3 b) en donde se muestra el ajuste de puntos por medio de unarecta. Consideremos el punto registrado (xi, yi), el correspondiente valor de la ecuacion dela recta para este valor de la abscisa es a1xi + a0. La problematica consiste en encontrar losvalores de a0 y a1 de tal manera que la distancia entre el valor de yi y a1xi + a0 sea mınima.El metodo de mınimos cuadrados consiste en determinar la mejor linea de aproximacion,cuando el error es la suma de los cuadrados de las diferencias entre los valores de y dados;esto es, consiste en determinar los valores de a0 y a1 de tal manera que el valor de la siguientediferencia sea mınima.

m∑i=1

[yi − (a1xi + a0)]2 (3.1.1)

con {(xi, yi)}mi=1 los puntos de datos a los que se desea realizar el ajuste.

Para que la ecuacion 3.1.1 tenga un valor mınimo, debemos de tener que:

0 = ∂∂a0

m∑i=1

[yi − (a1xi − a0)]2 = 2

m∑i=1

(yi − a1xi − a0)(−1)

y

0 = ∂∂a1

m∑i=1

[yi − (a1xi + a0)]2 = 2

m∑i=1

(yi − a1xi − a0)(−xi)

Las ecuaciones anteriores se simplifican en las siguientes ecuaciones

a0m+ a1

m∑i=1

xi =m∑i=1

yi

y

a0

m∑i=1

xi + a1

m∑i=1

x2i =

m∑i=1

xiyi

de donde, la solucion al anterior sistema de ecuaciones con a0 y a1 con incognitas es:

Page 51: Apuntes Programación 2 ESCOM IPN

3.2. Algoritmos de Ajuste de Curvas 46

a0 =

m∑i=1

x2i

m∑i=1

yi −m∑i=1

xiyi

m∑i=1

xi

m(

m∑i=1

x2i )− (

m∑i=1

xi)2

(3.1.2)

y

a1 =

m

m∑i=1

xiyi −m∑i=1

xi

m∑i=1

yi

m(

m∑i=1

x2i )− (

m∑i=1

xi)2

(3.1.3)

Ejemplo 3.1.4 Ajustar los siguientes puntos a la ecuacion de una recta.

xi 1.0 1.1 1.3 1.5 1.9 2.1yi 1.84 1.96 2.21 2.45 2.94 3.18

Para realizar el ajuste respectivo, se sustituyen los valores directamente en las ecuaciones3.1.2 y 3.1.3, teniendose:

a0 = (14.17)(14.58)−(22.78)(8.9)6(14.17)−(8.9)2

= 0.663a1 = 6(22.78)−(8.9)(14.58)

6(14.17)−(8.9)2

= 1.190

Por lo tanto y = a0 + a1x = 0.663 + 1.190x es el polinomio que mejor se ajusta a lospuntos dados. X

En el ejemplo anterior, se observa que y(x = 1.1) = 1.197, y(x = 1.5) = 2.448 y y(x =2.1) = 3.162, es decir, este polinomio se aproxima a los valores registrados en la tablacorrespondientes a los valores de las ordenadas respectivas, por otro lado, si deseamos conoceralguna aproximacion de un valor no registrado, ahora podemos recurrir a dicho polinomio,por ejemplo y(x = 1.4) = 2.329.

Enseguida, nuestro objetivo sera mostrar el ajuste de puntos a un polinomio de gradon ≥ 1.

Page 52: Apuntes Programación 2 ESCOM IPN

3.2. Algoritmos de Ajuste de Curvas 47

3.2.2 Ajuste por Mınimos Cuadrados a un Polinomio de Grado n

La seccion anterior, se mostro el ajuste de puntos a una recta, sin embargo que sucede sidichos puntos no se acoplan a una recta del todo bien, que sucede si en lugar de acoplarse auna recta, se ajustan mejor a un polinomio de segundo grado, o a uno de tercero. La figura3.1.4 muestra el ajuste de puntos a un polinomio de grado 2. En esta seccion se mostraranlas formulas respectivas para el ajuste de puntos a un polinomio de grado n.

Figura 3.1.4: Ajuste de puntos a un polinomio de grado n.

Supongamos que {(xi, yi)}mi=1 son los puntos que se desean ajustar a un polinomio de laforma

Pn(x) = anxn + an−1x

n−1 + · · ·+ a1x+ a0

con n < m− 1, mediante ajuste de mınimos cuadrados. La forma de resolver esta problema-tica es de manera similar a como se hizo en la seccion anterior al encontrar los valores a0 ya1 mediante la formula 3.1.1. En este caso, se desean encontrar los valores a0, a1, . . . , an detal manera que el valor de la siguiente diferencia sea mınima.

E =m∑i=1

(yi − Pn(xi))2 (3.1.4)

=m∑i=1

y2i − 2

m∑i=1

Pn(xi)yi +m∑i=1

(Pn(xi))2

=m∑i=1

y2i − 2

m∑i=1

(n∑j=1

ajxji )yi +

m∑i=1

(n∑j=1

ajxji )

2

De igual manera al caso de la seccion anterior, para que la ecuacion 3.1.4 tenga el mınimovalor, se debe de cumplir que

Page 53: Apuntes Programación 2 ESCOM IPN

3.2. Algoritmos de Ajuste de Curvas 48

∂E∂aj

= 0 para j = 0, 1, . . . , n (3.1.5)

de donde se obtiene un sistema de ecuaciones de n+1 incognitas (siendo las a′is las incognitas)y n + 1 ecuaciones. Se tiene que el sistema de ecuaciones 3.1.5 es equivalente al siguientesistema de ecuaciones:

a0

m∑i=1

x0i + a1

m∑i=1

x1i + a2

m∑i=1

x2i + · · ·+ an

m∑i=1

xni =m∑i=1

yix0i

a0

m∑i=1

x1i + a1

m∑i=1

x2i + a2

m∑i=1

x3i + · · ·+ an

m∑i=1

xn+1i =

m∑i=1

yix1i (3.1.6)

· · ·

a0

m∑i=1

xni + a1

m∑i=1

xn+1i + a2

m∑i=1

xn+2i + · · ·+ an

m∑i=1

xn+ni =

m∑i=1

yixni

Por tanto, para ajustar los puntos {(xi, yi)}mi=1 a un polinomio de grado n < m − 1 sedebe de resolver el sistema de ecuaciones 3.1.6.

Ejemplo 3.1.5 Consideremos los puntos dados en el ejemplo 3.1.4 y procedamos a realizarel ajuste de dichos puntos a un polinomio de grado 2. Para ello, se tienen que encontrarconstantes a0, a1 y a2 tales que satisfagan el sistema de ecuaciones 3.1.6 con m = 6 y n = 2,esto es:

6a0 + 8.9a1 + 14.17a2 = 14.588.9a0 + 14.17a1 + 24.023a2 = 22.808

14.17a0 + 24.023a1 + 42.8629a2 = 38.0962

Resolviendo el anterior sistema de ecuaciones, se tiene que P2(x) = a0 + a1x + a2x2 =

0.5965 + 1.2553x− 0.0108x2. X

Page 54: Apuntes Programación 2 ESCOM IPN

49

Capıtulo 4

Algoritmos para Derivacion eIntegracion Numerica

El objetivo de este capıtulo es mostrar la derivacion e integracion de funciones por mediode metodos numericos. Unicamente se mostraran las formulas sin el previo desarrollo queconlleva a estas. Si se desea tener un estudio profundo de las formulas, se puede revisar[1]. Comenzaremos con la parte referente a la derivacion seguida de integracion simple eintegracion compuesta.

4.1 Algoritmos para Derivacion

Supongamos que se tiene una funcion f ∈ Cn+1(I) con I un intervalo. Sea {x0, x1, . . . , xn}una sucesion de n + 1 puntos distintos en I. La formula 4.1.1 recibe el nombre de formulade (n+1) puntos para aproximar f ′(xj).

f ′(xj) =m∑k=0

f(xk)L′k(xj) +

f (n+1)(ε(xj))

(n+ 1)!Πmk=0,k 6=j(xj − xk) (4.1.1)

para alguna ε(x) ∈ I y con Lk(x) el k-esimo polinomio de Lagrange.

De la ecuacion 4.1.1 se concluye quem∑k=0

f(xk)L′k(xj) es una aproximacion al valor de

f ′(x).

La figura 4.1.1 muestra la interpretacion grafica que se tiene al usar la ecuaion 4.1.1 en elcaso que se consideren tres puntos. Observese que el punto a encontrar la aproximacion desu derivada se encuentra en el medio de los otros dos puntos.

Page 55: Apuntes Programación 2 ESCOM IPN

4.1. Algoritmos para Derivacion 50

Figura 4.1.1: formula de tres puntos.

Existen dos casos especiales del uso de la ecuacion 4.1.1, una de ellas se muestra en lafigura 4.1.1, donde se hace uso de la ecuacion 4.1.1 para el caso de tres puntos; y la otracuando se consideran cinco puntos. Enseguida se muestran las formulas para el caso de tresy cinco puntos cuyas formulas se les conoce como formula de tres puntos y formula de cincopuntos respectivamente. En el caso de la formula de tres puntos se muestran dos variantes.

formulas de tres puntos :

f ′(x0) ≈ 12h

[−3f(x0) + 4f(x0 + h)− f(x0 + 2h)] (4.1.2)f ′(x0) ≈ 1

2h[f(x0 + h)− f(x0 − h)] (4.1.3)

formula de cinco puntos :

f ′(x0) ≈ 112h

[f(x0 − 2h)− 8f(x0 − h) + 8f(x0 + h)− f(x0 + 2h)] (4.1.4)

Ejemplo 4.1.1 Considere la siguiente tabla de valores con f(x) =√x+ 1

x f(x)1.5 1.58111.6 1.61241.7 1.64311.8 1.67331.9 1.7029

Se tiene que f ′(x) = 12(x+1)1/2 , por lo tanto f ′(1.7) = 0.3042. Al aproximar f ′(1.7) mediante

las formulas de tres y cinco puntos se obtienen los siguientes resultados.

Formula de tres puntos:

Page 56: Apuntes Programación 2 ESCOM IPN

4.2. Algoritmos de Integracion 51

formula 4.1.2 con h = 0.1: f ′(1.7) = 12(0.1)

[−3f(1.7) + 4f(1.8)− f(1.9)] = 0.3041

formula 4.1.3 con h = 0.1: f ′(1.7) = 12(0.1)

[f(1.8)− f(1.6)] = 0.3043

Formula de cinco puntos:

formula 4.1.4 con h = 0.1: f ′(1.7) = 112(0.1)

[f(1.5)− 8f(1.6) + 8f(1.8)− f(1.9)] = 0.3042. X

4.2 Algoritmos de Integracion

Consideremos la figura 4.1.2. Supongamos que deseamos calcular el area bajo la curva dela funcion f(x) dentro de un intervalo [a, b]. La solucion a esta problematica es bien conociday es mediante la integracion de la funcion f con extremo inferior el valor de a y extremosuperior el valor de b. Sin embargo, en esta seccion se resolvera el problema de integrar unafuncion f(x) sobre un intervalo [a, b] pero desde el punto de vista del analisis numerico.

Figura 4.1.2: Integracion mediante formula cerrada de Newton-Cotes.

Consideremos nuevamente la figura 4.1.2. Supongamos que se desea calcular la integralsobre el intervalo [a, b]. Para ello, primeramente hagamos una particion del intervalos [a, b]de la siguiente manera. Consideremos la particion {x0, x1, x2, . . . , xn} del intervalo [a, b]compuesta por (n + 1) puntos de tal forma que x0 = a, x1 = a + h, x2 = a + 2h, . . . , xi =a + ih, . . . xn = b donde h = (b − a)/n. Considerando esta particion, se pueden obtenerformulas para aproximar el valor de la integral. Puesto que se incluyen los extremos delintervalo [a, b] como elementos de la particion, las formulas concernientes al calculo de laintegral bajo esta situacion se les conoce como formulas cerradas de (n+1) puntos de Newton-Cotes. Las formulas cerradas de Newton-Cotes para el caso n = 1, n = 2 y n = 3 recibenun nombre en particular; dichas formulas se muestran enseguida.

n = 1: Regla del Trapecio: ∫ x1

x0f(x)dx ≈ h

2[f(x0) + f(x1)]

Page 57: Apuntes Programación 2 ESCOM IPN

4.2. Algoritmos de Integracion 52

n = 2: Regla de Simpson: ∫ x2

x0f(x)dx ≈ h

3[f(x0) + 4f(x1) + f(x2)]

n = 3: Regla de tres octavos de Simpson:∫ x3

x0f(x)dx ≈ 3h

8[f(x0) + 3f(x1) + 3f(x2) + f(x3)]

La figura 4.1.3 muestra la regla del trapecio aplicada a una funcion f(x). Para este caso, laparticion unicamente cuenta con tres elementos de lo cuales dos son los extremos del intervaloa integral, de esta manera, se observa que si se desea realizar una mejor exactitud de dichaintegral, entonces se deben de considerar una mayor cantidad de puntos sobre el intervalo.Para la regla del trapecio y la regla de Simpson, existen sus variantes respectivas, donde elnumero de elementos de la particion es a consideracion de quien hace uso de dichas formulas,esto es, para obtener un mayor grado de precision considerando la regla del trapecio y laregla de Simpson, se tienen la regla compuesta del trapecio y la regla compuesta de Simpson,donde a diferencia de las reglas anteriores se consideran una cantidad arbitraria de (n + 1)puntos de la particion considerando que xi = a+ ih con h = (b− a)/n (figura 4.1.2).

Figura 4.1.3: Formula del Trapecio.

Regla compuesta del Trapecio:

∫ baf(x)dx ≈ h

2[f(a) + 2

n−1∑j=1

f(xj) + f(b)]

Regla compuesta de Simpson:

∫ baf(x)dx ≈ h

3[f(a) + 2

(n/2)−1∑j=1

f(x2j) + 4

n/2∑j=1

f(x2j−1) + f(b)]

Page 58: Apuntes Programación 2 ESCOM IPN

4.2. Algoritmos de Integracion 53

Si en lugar de considerar los nodos x0 = a y xn = b de la particion como hasta ahoralo hemos estado haciendo con las formulas cerradas de Newton-Cotes, ahora consideramosla particion formada por {x0, x1, x2, . . . , xn} con x0 = a + h y xi = x0 + ih = a + (i + 1)h,donde h = (b − a)/(n + 2), esto implica que xn = b − h. Por tanto, si deseamos incluir losextremos del intervalo en la particion, estos se deben de anexar con una numeracion acorde,teniendose x−1 := a y xn+1 := b (figura 4.1.4).

Figura 4.1.3: Integracion mediante formula abierta de Newton-Cotes.

A las formulas de integracion para el caso de esta particion, se les conoce como formulasabiertas de Newton-Cotes.

Formulas abiertas de Newton-Cotes para:

n = 0: ∫ x1

x−1f(x)dx ≈ 2hf(x0)

n = 1 ∫ x2

x−1f(x)dx ≈ 3h

2[f(x0) + f(x1)]

n = 2 ∫ x3

x−1f(x)dx ≈ 4h

3[2f(x0)− f(x1) + 2f(x2)]

Ejemplo 4.1.2 Se tiene que∫ 0.5

02

x−4dx = 2ln|x − 4||0.50 = 2[ln(3.5) − ln(4)] = −0.2670.

Resolviendo la integral mediante las formulas de Newton-Cotes cerradas abiertas, se obtiene:

Formulas cerradas de Newton-Cotes:

Regla del trapecio(h = (b− a) = 0.5):

Page 59: Apuntes Programación 2 ESCOM IPN

4.2. Algoritmos de Integracion 54

∫ 0.5

02

x−4dx = 0.5

2[f(0) + f(0.5)] = −0.2678

Regla de Simpson (h = (b− a)/2) = 0.25):∫ 0.5

02

x−4dx = 0.25

3[f(0) + 4f(0.25) + f(0.5)] = −0.2670

Regla de tres octavos de Simpson(h = (b− a)/3 = 0.1666):∫ 0.5

02

x−4dx = 3(0.1666)

8[f(0) + 3f(0.1666) + 3f(0.333) + f(0.5)] = −0.2669

Formulas abiertas de Newton-Cotes para:

n = 0(h = (b− a)/(2) = 0.25) :∫ 0.5

02

x−4dx = 2(0.25)f(0.25) = −0.2666

n = 1(h = (b− a)/3) = 0.1666∫ 0.5

02

x−4dx = 3(0.1666)

2[f(0.1666) + f(0.3333)] = −0.2667

n = 2(h = (b− a)/4 = 0.125)∫ 0.5

02

x−4dx = 4(0.125)

3[2f(0.125)− f(0.25) + 2f(0.375)] = −0.2670. X

Page 60: Apuntes Programación 2 ESCOM IPN

55

Capıtulo 5

Algoritmos Numericos Utilizados enAlgebra Lineal

En este capıtulo se muestran algoritmos para resolver sistemas de ecuaciones lineales dela forma:

a11x1 + a12x2 + · · ·+ a1nxn = b1 (5.1)a21x1 + a22x2 + · · ·+ a2nxn = b2

· · ·an1x1 + an2x2 + · · ·+ annxn = bn

donde las aij son coeficientes y las xi son las incognitas. Dado un conjunto de ecuacionescomo en 5.1, con coeficientes dados, se desea encontrar los valores de los x′is tales que cumplanel sistema de ecuaciones.

5.1 Eliminacion Gaussiana con Sustitucion hacia Atras

Sea Ej la representacion de la ecuacion j del sistema de ecuaciones 5.1, esto es:

Ej : aj1x1 + aj2x2 + · · ·+ ajnxn = bj,

entonces las operaciones fundamentales para un sistema de ecuaciones como 5.1, se muestranenseguida:

1. Si c ∈ R−{0} es una constante, entonces cEj multiplica toda la ecuacion j por c. Estanueva ecuacion se sustituye por Ej. Esta operacion se denota mediante cEj → Ej.

2. La operacion Ei + cEj → Ei significa que la ecuacion j se multiplica por la constantec y se suma con la ecuacion i sustituyendo esta ultima ecuacion por el resultado de loanterior.

Page 61: Apuntes Programación 2 ESCOM IPN

5.1. Eliminacion Gaussiana con Sustitucion hacia Atras 56

3. La opreacion Ei ↔ Ej significa que las ecuaciones i y j se intercambian de posicion.

Para representar un sistema de ecuaciones, a menuda suele utilizarse su representacionmatricial sobre el conjunto de coeficientes. Consideremos el sistema de ecuaciones 5.1. Sean

A =

a11 a12 · · · a1n

a21 a22 · · · a2n...

......

an1 an2 · · · ann

y

b =

b1b2...bn

se define la matriz aumentada de A con b denotada como [A, b] por

[A, b] =

a11 a12 · · · a1n

... b1

a21 a22 · · · a2n... b2

......

......

...

an1 an2 · · · ann... bn

Si [A, b] es la matriz aumentada del sistema de ecuaciones 5.1 y si Rj representa el j-esimo

renglon de la matriz, entonces las operaciones fundamentales para la matriz aumentada son:

1. Si c ∈ R − {0} es una constante, entonces cRj multiplica toda la fila j por c. Estanueva ecuacion se sustituye por Rj. Esta operacion se denota mediante cRj → Rj.

2. La operacion Ri + cRj → Ri significa que la fila j se multiplica por la constante c y sesuma con la fila i sustituyendo esta ultima fila por el resultado de lo anterior.

3. La opreacion Ri ↔ Rj significa que las filas i y j se intercambian de posicion.

Consideremos la matriz aumentada [A, b] del sistema de ecuaciones 5.1. Mediante opera-ciones fundamentales, esta matriz puede llevarse a otra equivalente de la forma:

[A, b] ≡

a11 a12 · · · a1n

... a1,n+1

0 a22 · · · a2n... a2,n+2

......

......

...0 0 · · · 0 ann an,n+n

tal que aij = 0 si i < j. Esta ultima matriz es equivalente al sistema de ecuaciones siguiente:

Page 62: Apuntes Programación 2 ESCOM IPN

5.1. Eliminacion Gaussiana con Sustitucion hacia Atras 57

a11x1 + a12x2 + · · ·+ a1nxn = a1,n+1

a22x2 + · · ·+ a2nxn = a2,n+1

· · ·annxn = an,n+1

de donde

xn = an,n+1

ann,

xn−1 = an−1,n+1−an−1,nxn

an−1,n−1

y en general

xi =ai,n+1−ai,nxn−···−ai,i+1xi+1

aii

para i = n− 1, n− 2, . . . , 2, 1.

Al metodo anterior para la solucion del sistema de ecuaciones, se le conoce como elimi-nacion gaussiana con sustitucion hacia atras.

Ejemplo 5.1.1 Resolver el sistema de ecuaciones

x1 + 2x2 + 3x3 = 14x1 + 5x2 + 6x3 = −27x1 + 8x2 + 10x3 = 5

utilizando el metodo de eliminacion gaussiana con sustitucion hacia atras.

La matriz aumentada del sistema es:

[A, b] =

1 2 3... 1

4 5 6... −2

7 8 10... 5

el cual, mediante operaciones fundamentales, es equivalente a la matriz

[A, b] ≡

1 2 3... 1

0 1 2... 2

0 0 1... 10

de donde, x3 = 10/1 = 10, x2 = 2−2x3

1= 2 − 2(10) = −18 y x1 = 1−3x3−2x2

1= 1 − 3(10) −

2(−18) = 7. X

Page 63: Apuntes Programación 2 ESCOM IPN

5.2. Algoritmos Basados en Tecnicas Iterativas 58

5.2 Algoritmos Basados en Tecnicas Iterativas

En esta seccion se mostraran metodos iterativos para la resolucion de sistemas de ecua-ciones como en 5.1. para ello, es necesario, primeramente definir algunos conceptos previos.

5.2.1 Normas de Vectores y Matrices

Definicion 5.2.1 Dado un vector x ∈ Rn, una norma en Rn es una funcion ‖ • ‖ : Rn → Rtal que:

1. ‖x‖ ≥ 0 para cada x ∈ Rn.

2. ‖x‖ = 0 si y solo si x = 0.

3. ‖cx‖ = c‖x‖ para toda c ∈ R y x ∈ Rn.

4. ‖x + y‖ ≤ ‖x‖+ ‖y‖ para todo x,y ∈ Rn.

Proposicion 5.2.1 Si x = (x1, x2, . . . , xn) ∈ Rn es un vector, entonces

‖x‖2 = [n∑i=1

x2i ]

1/2 y ‖x‖∞ = max1≤i≤n|xi|

son normas sobre Rn.

A las normas ‖•‖2 y ‖•‖∞ de la proposicion anterior se les conoce como norma euclideanay norma infinito respectivamente.

Ejemplo 5.2.1 Si x = (2,−1, 3) ∈ R3, entonces ‖x‖2 = (22 + (−1)2 + 32)1/2 = (14)1/2 =3.7416 y ‖x‖∞ = max1≤i≤3|xi| = max1≤i≤3{|2|, | − 1|, |3|} = 3.

Definicion 5.2.2 Sean x y y dos vectores en Rn. Una distancia d en Rn es una funciond : Rn × Rn → R tal que

1. d(x,y) ≥ 0.

2. d(x,y) = d(y,x).

3. d(x,y) = 0 si y solo si x = y

4. d(x,y) ≤ d(x, z) + d(z,y) para cualquier z ∈ Rn

Dada una norma, se induce una distancia dada de la siguiente manera:

Proposicion 5.2.2 Si ‖ • ‖ es una norma en Rn, entonces la funcion d : Rn × Rn → Rdefinida como

Page 64: Apuntes Programación 2 ESCOM IPN

5.2. Algoritmos Basados en Tecnicas Iterativas 59

d(x,y) = ‖x− y‖

es una distancia.

Definicion 5.2.3 Sea An el conjunto de todas las matrices cuadradas de tamano n×n. Unanorma sobre An, es una funcion ‖ • ‖ : An → R tal que para cada A ∈ An:

1. ‖A‖ ≥ 0.

2. ‖A‖ = 0 si y solo si A es la matriz cero de tamano n× n.

3. ‖cA‖ = |c|‖A‖

4. ‖A+B‖ ≤ ‖A‖+ ‖B‖

5. ‖AB‖ ≤ ‖A‖‖B‖

Enseguida se presentan los algoritmos iterativos de Jacobi y de Gauss-Seidel que manejanla norma de vectores.

5.2.2 Algoritmo de Jacobi

Dado un sistema de ecuaciones como en 5.1, primero se despeja la variable xi en larespectiva ecuacion Ei obteniendo el siguiente sistema de ecuaciones equivalente:

x1 = a12

a11x2 + · · ·+ a1n

a11xn + b1

a11(5.2)

x2 = a21

a22x1 + · · ·+ a2n

a22xn + b2

a22

· · ·xn = an1

annx1 + an2

annx2 + · · · an,n−1

annxn−1 + bn

ann

enseguida se propone una posible solucion al sistema de ecuaciones como en 5.2. Sea x0 =(x0

1, x02, . . . , x

0n) una propuesta de solucion. Ahora se sustituyen los valores de x0 en la

ecuacion 5.2 obteniendo un nuevo vector de soluciones x1 = (x11, x

12, . . . , x

1n) a partir de x0

de la siguiente manera:

x11 = a12

a11x0

2 + · · ·+ a1n

a11x0n + b1

a11

x12 = a21

a22x0

1 + · · ·+ a2n

a22x0n + b2

a22

· · ·x1n = an1

annx0

1 + an2

annx0

2 + · · · an,n−1

annx0n−1 + bn

ann

Enseguida se sustituyen los valores del vector x1 en la anterior ecuacion para obtener unnuevo vector de soluciones x2 de la siguiente manera

Page 65: Apuntes Programación 2 ESCOM IPN

5.2. Algoritmos Basados en Tecnicas Iterativas 60

x21 = a12

a11x1

2 + · · ·+ a1n

a11x1n + b1

a11

x22 = a21

a22x1

1 + · · ·+ a2n

a22x1n + b2

a22

· · ·x2n = an1

annx1

1 + an2

annx1

2 + · · · an,n−1

annx1n−1 + bn

ann

y ası sucesivamente hasta que ‖xk−xk−1‖‖xk‖ < TOL para alguna k y para alguna tolerancia TOL

asignada previamente.

Ejemplo 5.2.2 Consideremos el siguiente sistema de ecuaciones

4x1 − x2 + x3 = 74x1 − 8x2 + x3 = −21−2x1 + x2 + 5x3 = 15

de aquı, despejamos cada variable xi de la ecuacion Ei para obtener una ecuacion de la forma5.2

x1 = 14x2 − 1

4x3 + 7

4

x2 = 12x1 + 1

8x3 + 21

8

x3 = 25x1 − 1

5x2 + 3

Proponemos un vector de solucion. Por ejemplo, sea x0 = (1, 2, 2), sustituimos en laecuacion anterior para obtener un vector de solucion x1 = (x1

1, x12, x

13) con

x11 = 1

4x0

2 − 14x0

3 + 74

= 1.75x1

2 = 12x0

1 + 18x0

3 + 218

= 3.375x1

3 = 25x0

1 − 15x0

2 + 3 = 3.00

Nuestro nuevo vector de soluciones es x1 = (1.75, 3.375, 3.00), enseguida se repite elprocedimiento anterior tomando ahora en cuenta el nuevo vector solucion x1 para obtenerun nuevo vector solucion x2. La siguiente tabla muestra la sucesion de vectores solucion{xk}19

k=1 que es donde se estabiliza la solucion.

Page 66: Apuntes Programación 2 ESCOM IPN

5.2. Algoritmos Basados en Tecnicas Iterativas 61

k xk1 xk2 xk30 1.0 2.0 2.01 1.75 3.375 3.02 1.84375 3.875 3.0253 1.9625 3.925 2.96254 1.99062500 3.97656250 3.000000005 1.99414063 3.99531250 3.00093750...

......

...15 1.99999993 3.99999985 2.99999993...

......

...19 2.00000000 4.00000000 3.00000000

de donde el vector solucion para el sistema de ecuaciones es x19 = (2, 4, 3). X

5.2.3 Algoritmo de Gauss-Seidel

El algoritmo iterativo de Gauss-Seidel es muy parecido al algoritmo de Jacobi, para ello,retomemos la ecuacion 5.2 y consideremos nuevamente

x1 = a12

a11x2 + · · ·+ a1n

a11xn + b1

a11(5.2)

x2 = a21

a22x1 + · · ·+ a2n

a22xn + b2

a22

· · ·xn = an1

annx1 + an2

annx2 + · · · an,n−1

annxn−1 + bn

ann

Nuevamente se propone un vector solucion x0 = (x01, x

02, . . . , x

0n) y se sustituye en la

primera ecuacion del anterior sistema de ecuaciones, aquella donde, se encuentra despejadala variable x1

1

x11 = a12

a11x0

2 + · · ·+ a1n

a11x0n + b1

a11

enseguida se actualiza el vector x0 teniendo como primera entrada x11 de la operacion anterior,

esto es, x0 = (x11, x

02, . . . , x

0n), se sustituyen los valores necesarios para encontrar el valor de

x12 del sistema de ecuaciones, esto es, se tome el valor de la ecuacion anterior, donde se

encuentra despejada la variable x12, esto es:

x12 = a21

a22x1

1 + · · ·+ a2n

a22x0n + b2

a22

actualizamos las entradas del vector x0, teniendose x0 = (x11, x

12, x

03, . . . , x

0n), se sigue con el

procedimiento anterior hasta que se hayan obtenido todas las entradas del vector de solucioncorrespondiente x1. Despues, se toma a x1 como vector solucion y se repite el proceso

Page 67: Apuntes Programación 2 ESCOM IPN

5.2. Algoritmos Basados en Tecnicas Iterativas 62

anterior para encontrar el valor del vector de solucion x2 y ası sucesivamente hasta que‖xk−xk−1‖‖xk‖ < TOL para alguna k y para alguna tolerancia TOL asignada previamente.

Ejemplo 5.2.3 Consideremos nuevamente el sistema de ecuaciones del ejemplo 5.2.2. Con-sideremos el despeje de la variable xi de la ecuacion Ei

x1 = 14x2 − 1

4x3 + 7

4

x2 = 12x1 + 1

8x3 + 21

8

x3 = 25x1 − 1

5x2 + 3

proponemos nuevamente el vector solucion x0 = (1, 2, 2). Sustituimos los valores respectivosen la primera ecuacion para obtener

x11 = 1

4x0

2 − 14x0

3 + 74

= 1.75,

actualizamos nuestro vector x0 = (1.75, 2, 2) y sustituimos en la ecuacion dos de nuestrosistema de ecuaciones obteniendo

x12 = 1

2x1

1 + 18x0

3 + 218

= 3.75

se actualiza nuevamente el vector solucion, teniendo x0 = (1.75, 3.75, 2) y finalmente sesustituyen los valores respectivos en la tercera ecuacion para obtener

x13 = 2

5x1

1 − 15x1

2 + 3 = 2.95

en este momento todas las entradas del vector solucion forman parte del vector de solcuionx1, esto es x0 = (1.75, 3.75, 2.95). Se continua con el mismo procedimiento para obtener lasentradas del vector solucion x2 y ası sucesivamente.La siguiente tabla muestra la sucesionde vectores solucion {xk}10

k=1 que es donde se estabiliza la solucion.

k xk1 xk2 xk30 1.0 2.0 2.01 1.75 3.37 2.952 1.95 3.96875 2.986253 1.995625 3.999609375 2.99903125...

......

...8 1.99999983 3.99999988 2.999999969 1.99999998 3.99999999 3.0000000010 2.00000000 4.00000000 3.00000000

de donde el vector solucion para el sistema de ecuaciones es x10 = (2, 4, 3). X

Page 68: Apuntes Programación 2 ESCOM IPN

63

Capıtulo 6

Algoritmos para dar SolucionNumerica a Ecuaciones DiferencialesOrdinarias

En lo que sigue, se muestran algoritmos para la resolucon de ecuaciones diferencialesordinarias por medio de ecuaciones diferenciales. Para ello, consideramos el problema deencontrar una solucion al problema de valor inicial

dydt

= f(t, y), con a ≤ t ≤ b y y(a) = α

6.1 Algoritmos por Metodos de Taylor

6.1.1 Metodo de Euler

Supongamos que se tiene el problema con valor inicial

y′ = f(t, y), con a ≤ t ≤ b y y(a) = α

en n numeros uniformemente espaciados en el intervalo [a, b]. Para resolver el anterior sistemade ecuaciones, tomemos los valores

h = (b− a)/nt0 = aw0 = α

Page 69: Apuntes Programación 2 ESCOM IPN

6.1. Algoritmos por Metodos de Taylor 64

Puesto que el problema se dividio en n puntos uniformemente espaciados en el intervalo[a, b], debemos calcular una pareja de puntos (ti, wi) para cada punto de la particion. Paraesto, para cada valor 1 ≤ i ≤ n se hace

wi = wi−1 + hf(ti−1, wi−1)ti = a+ hi

En cada paso se muestra el valor de la pareja (ti, wi).

Ejemplo 6.1.1 Aplicar el metodo de Euler para aproximar soluciones del siguiente problemade valor inicial

y′ = 1 + (t− y)2, con 2 ≤ t ≤ 3, y(2) = 1 y h = 0.5.

Puesto que h = 0.5 y 2 ≤ t ≤ 3, se tiene n = (b − a)/h = (3 − 2)/0.5 = 2. Se tiene quet0 = a = 2 y w0 = α = 1; y ti = a+hi, wi = wi−1+hf(ti−1, wi−1) = wi−1+h(1+(ti−1−wi−1)

2)para i = 1, 2. La siguiente tabla muestra los valores de las parejas (ti, wi)

ti wi2 1

2.5 23 2.625

X

6.1.2 Metodo de Taylor de Orden N

Nuevamente se tiene el problema con valor inicial

y′ = f(t, y), con a ≤ t ≤ b y y(a) = α

en n numeros uniformemente espaciados en el intervalo [a, b]. Para cada i, ti se calcula deigual manera que en el metodo de Euler. Los valores wi se calculan de la siguiente manera

w0 = αwi+1 = wi + hTN(ti, wi) para i = 0, 1, . . . , n− 1 y

TN(ti, wi) = f(ti, wi) + h2f ′(ti, wi) + · · ·+ hn−1

n!fn−1(ti, wi)

Page 70: Apuntes Programación 2 ESCOM IPN

6.2. Algoritmo de Runge-Kutta 65

Ejemplo 6.1.2 Apliquemos el metodo de Taylor de orden dos para resolver el problema devalor inicial del ejercicio 6.1.1.

Se tiene que t0 = 2 y w0 = 1. Luego TN=2(t0, w0) = f(t0, w0) + h2f ′(t0, w0) = 1 + (t0−w0)

2 +h2(2(t− y)(1− y′)) = 1 + (t0−w0)

2 + h2(2(t− y)(1− (1 + (t0−w0)

2))). Sustituyendo se tieneque T 2(t0, w0) = T 2(2, 1) = 1.5, sustituyendo en el respectivo valor para w1, se tiene quew1 = 1.75. La siguiente tabla muestra la pareja de valores (ti, wi)

ti wi2 1

2.5 1.753 2.425

X

6.2 Algoritmo de Runge-Kutta

6.2.1 Algoritmo de Runge-Kutta

Para resolver el problema con valor inicial

y′ = f(t, y), con a ≤ t ≤ b y y(a) = α

con el metodo de Runge-Kutta de orden 2 y orden 4, se divide el intervalo [a, b] en n numerosuniformemente espaciados. Hay dos variantes para el metodo de Runge-Kutta de orden 2,uno de los cuales es conocido como metodo modificado de Euler y el otro como metodo deHeun. Las formulas son muy parecidas a las de la seccion anterior, de esta manera solo sepresentaran las formulas de los metodos.

Para el metodo modificado de Euler (Runge-Kutta de orden 2) se tienen las siguientesformulas

w0 = αwi+1 = wi + h

2[f(ti, wi) + f(ti+1, wi + hf(ti, wi))] para i = 0, 1, . . . , n− 1

Para el metodo de Heun (Runge-Kutta de orden 2) se tienen las siguientes formulas

Page 71: Apuntes Programación 2 ESCOM IPN

6.2. Algoritmo de Runge-Kutta 66

w0 = αwi+1 = wi + h

4[f(ti, wi + 3f(ti + 2

3h,wi + 2

3hf(ti, wi)))] para i = 0, 1, . . . , n− 1

Finalmente se muestran las formulas para el metod de Runge-Kutta de orden cuatro.

w0 = αk1 = hf(ti, wi)k2 = hf(ti + h

2, wi + 1

2k1)

k3 = hf(ti + h2, wi + 1

2k2)

k4 = hf(ti+1, wi + k3)wi+1 = wi + 1

6(k1 + 2k2 + 2k3 + k4) para i = 0, 1, . . . , n− 1.

Page 72: Apuntes Programación 2 ESCOM IPN

67

Bibliografıa

[1] Richard L. Burden y J.Douglas Faires. Analisis Numerico. Thomson Learning. 7a

edicion. 2002.

[2] Steven C. Chapra y Raymond P. Canale. Metodods Numericos para Ingenieros.Mc Graw Hill. Quinta edicion. 2007.

[3] Curtis F. Gerald y patrick O. Wheatley. Analisis Numerico con Aplicaciones.Pearson Education. Sexta edicion. Mexico 2000.

[4] A. Nieves y F. Dominguez. Metodos Numericos Aplicados a la Ingenierıa. CECSA.Mexico.

[5] William Stallings. Organizacion y Arquitectura de Computadores. Diseno para Op-timizar Prestaciones. Prentice Hall. Madrid 2000.