You are on page 1of 75

INSTITUTO POLITÉCNICO NACIONAL

Escuela Superior de Computo

Apuntes de Programacion II

autor:

M en C. Benjamı́n Luna Benoso

México, D. F. Diciembre 2008


ii

Introduccion
Este libro est estructurado tomando como referencia el temario para el curso de Progra-
mación II impartido en la Escuela Superior de Computo del Instituto Politécnico Nacional.
Los temas analizados difieren sólo un poco en el nombre y en el orden en que son presentados
en el temario correspondiente.

El estudio del análisis numérico se basa en buscar alternativas para resolver problemas
cuya solucion es difı́cil usando métodos directos, para ello, el análisis numérico se basa en la
alternativa de métodos numéricos.

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 prácticos de ejemplifi-
cación, se obtiene lo que se desea, sin embargo, en la vida real, varios problemas de los que
se plantean, no se conocen muy bien su naturaleza, generalmente se conocen o se obtienen
mediciones 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, registra
sus datos y ahora lo que le interesa conocer, es una funcion continua de tal manera, que si
se restringe a los puntos que él registro, exactamente se comporte como en el experimento
realizado. De manera, pasamos de los problemas continuos a los totalmente
está discre-
tos, que es como se obtienen mediciones y a partir de estas mediciones discretas, pasamos
nuevamente al espacio continuo, de ahı́ la importancia del análisis numérico.

Otra problematica interesante donde se puede notar la importancia del análisis numérico
es la siguiente: en un curso de Calculo, se hace notar
√ que la recta esta compuesto por una
infinidad de números, y que números como π, e y 2 (números irracionales) no tienen una
representación finita en su notacion decimal, esto significa que a ninguna persona le bastarı́a
su vida completa para escribir en notacion decimal alguno de estos números, entonces, como
lo hace una computadora. La parte que nos interesa de una computadora, es aquella donde
almacena la informacion para hacer cálculos, para representar números, sumas, etc., la parte
que nos interesa es la memoria. Si finalmente una computadora está compuesta en su total-
idad de circuitos, con una cantidad finita de estos, entonces como le hace para almacenar
un número irracional como los presentados si su representacion es infinita y la computadora
sólo puede guardar números binarios (ceros y unos). En realidad una computadora, no es
capaz de almacenar todos los números reales tal y como se conocen en su abstracción.
Si una computadora requiere almacenar un número irracional como π, este lo hace
utilizando algún método de truncamiento que se verá posteriormente y en realidad la
computadora no estará almacenando el número irracional π, si no mas bien, una
aproximacion a dicho valor.
iii

Si una computadora esta realizando cálculos numéricos donde ha utilizado valores aproxi-
mados a números reales, esto podrı́a generar una serie de errores que vendrı́an generandose
en cada operacion. Obteniendo finalmente una aproximaci n al valor real de la operación
que se deseaba conocer. Una problematica importante en este aspecto es el error que se va
obteniendo y saber decidir si es aceptable o no. Esto es algo que también es tratado en
el análisi numérico.

Los ejemplos anteriores, muestran la importancia que tiene el análisis numérico dentro de
las areas de la ciencias y la ingenierı́a.
iv

Contenido

Introducción ii

1 Aritmética de Punto Flotante 1


1.1 Números de Punto Flotante . . . . . . . . . . . . . . . . . . . . . .
. . . . . 1
1.1.1 Sistemas de Númeracion . . . . . . . . . . . . . . . . . . . . .
. . . . 1
1.1.2 Representacion Binaria de Números Negativos . . . . . . . . . . . .
. 7
1.1.3 Norma IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 9
1.2 Errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 14
1.2.1 Error Relativo y Error Absoluto . . . . . . . . . . . . . . . . 14
. . . . . de Punto Flotante . . . . . . . . . . . . . . . . 16
1.2.2 Aritmética
. . . .de. Representación
1.2.3 Errores . . . . . . . . . . . . . . . . . . . 16
. . . . . .
1.2.4 Reduccion de Errores . . . . . . . . . . . . . . . . . . . . 20
. . . . . .de. Errores . . . . . . . . . . . . . . . . . . . 23
1.2.5 Propagacion
. . . . de. Condicion
1.2.6 Número . . . . . . . . . . . . . . . . . . . . . . 24
. . . . . . .
2 Algoritmos para dar Solucion a la Ecuación de Una Variable 25
2.1 Algoritmos Para Búsqueda de Raı́ces . . . . . . . . . . . . . . . . . . .
. . . 25
2.1.1 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 25
2.1.2 Método de la Bisección . . . . . . . . . . . . . . . . . . . . . .
. . . . 26
2.1.3 Iteracion de Punto Fijo . . . . . . . . . . . . . . . . . . . . . .
. . . . 28
2.1.4 Método de Newton-Raphson y de la Secante . . . . . . . . . . . . .
. 30
2.2 Raı́ces de Polinomios . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 33

3 Algoritmos de Interpolacion 37
3.1 Algoritmos de Interpolacion . . . . . . . . . . . . . . . . . . . . . .
. . . . . 37
3.1.1 Polinomio de Lagrange . . . . . . . . . . . . . . . . . . . . . .
. . . . 38
3.1.2 Método de Neville . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 40
3.1.3 Diferencias Divididas de Newton . . . . . . . . . . . . . . . . .
. . . 41
3.2 Algoritmos de Ajuste de Curvas . . . . . . . . . . . . . . . . . . . . .
. . . . 44
3.2.1 Ajuste por Mı́nimos Cuadrados a una Recta . . . . . . . . . . . . .
. 45
3.2.2 Ajuste por Mı́nimos Cuadrados a un Polinomio de Grado n . . . . . .47
CONTENIDO v

4 Algoritmos para Derivación e Integración Numérica 49


4.1 Algoritmos para Derivación . . . . . . . . . . . . . . . . . . . . 49
4.2 Algoritmos de Integración . . . . . . . . . . . . . . . . . . . . . 51
. . . . . . .
5 Algoritmos Numéricos Utilizados en Algebra Lineal 55
5.1 Eliminación Gaussiana con Sustitución hacia Atrás . . . . . . . . . . . 55
5.2 Algoritmos Basados en Técnicas Iterativas . . . . . . . . . . . . . . . 58
.5.2.1 Normas de Vectores y Matrices . . . . . .. .. .. . . . . . . . . . .
. . . 58
5.2.2 Algoritmo de Jacobi . . . . . . . . . . . . . . . . . . . . . .
. . . . . 59
5.2.3 Algoritmo de Gauss-Seidel . . . . . . . . . . . . . . . . . . . .
. . . . 61

6 Algoritmos para dar Solucion Numérica a Ecuaciones Diferenciales Ordi-


narias 63
6.1 Algoritmos por Métodos de Taylor . . . . . . . . . . . . . . . . . . . .
. . . 63
6.1.1 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 63
6.1.2 Método de Taylor de Orden N . . . . . . . . . . . . . . . . . . .
. . . 64
6.2 Algoritmo de Runge-Kutta . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 65
6.2.1 Algoritmo de Runge-Kutta . . . . . . . . . . . . . . . . . . . .
. . . . 65

Bibliografı́a 67
1

Capı́tulo 1

Aritmética de Punto Flotante

1.1 Números de Punto Flotante


1.1.1 Sistemas de Númeración

A diario utilizamos números para el conteo de cosas; contamos objetos, personas, dinero,
etc., estamos muy familiarizados con los números naturales 1, 6, 98.32, 23784.12, 20993882
por mencionar algunos de una infinidad. Sin embargo, que significan exactamente. El número
97 por ejemplo significa nueve veces diez más 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 = xn xn−1 . . . x3 x2 x1 x0 .x−1 x−2 . . ., se tiene:


X
z= xi × 10i (1.1.1)
i

A los números representables en el modo anterior, se le conoce como sistema


decimal.
En general, para cada número natural b mayor que uno, se tiene un sistema de numeración
cuya base es b. Sin embargo, en la practica, a parte del sistema decimal, suelen utilizarse los
sistemas binario, octal y hexadecimal.

El sistema binario o base 2 se representa por medio de dos dı́gitos: 0 y 1. Para


evitar confusiones, 02 y 12 representarán el cero y uno en base binaria, y en general, el
número zb representará el número z en base b. Se tiene:
1.1. Números de Punto Flotante 2

02 = 010
12 = 110

De manera análoga 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 . . . x2 x1 x0 .x−1 x−2 . . . x−n representa un número en base binaria, en-


tonces, su representacion en base decimal queda como sigue:
i=−n
X
z2 = ( (xi × 2i ))10 (1.1.2)
i=m

La ecuacion (1.1.1) muestra la forma para convertir un número de base binaria a base
decimal. Ahora, analicemos el caso contrario, es decir, la conversión de un número de base
decimal a base binaria.

Para convertir el número 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 , con
R1 = 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 residuo


R2 , 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 proceso continuo de hacer divisiones sea cero, esto es, hasta que en el proceso se tenga
un cociente igual a cero

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

de lo anterior, se tiene:
1.1. Números 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 + 20 R1
···
= 2 × Qn + · · · + 2 × R3 + 21 × R2 + 20 R1
n 2

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

en conclusión,
Paso n+2: N10 = (Rn+1 · · · R3 R2 R1 )2
Ejemplo 1.1.1 Siguiendo la metodologı́a anterior, para convertir el número 27 10 a
base binaria 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 = (R5 R4 R3 R2 R1 )2 = 110112 X
Para convertir un número 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 parte
fraccionaria del número decimal. El dı́gito del producto a la izquierda del punto decimal será
1 o 0 y contribuye a la representación binaria, comenzando con el bit mas significativo 1 . La
parte 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 número 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,
...
1 bit
que se encuentra a la izquierda de la representación binaria
1.1. Números de Punto Flotante 4

luego 0.3910 = 0.01100012 (aproximado) X

Ejemplo 1.1.3 Para convertir el número 14.2510 a base binaria primeramente, se convierte
la 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 = (R4 R3 R2 R1 )2 = 11102

Convertida la parte entera a base binaria, procedemos a convertir la parte fraccionaria a


base binaria obteniéndose lo siguiente:

0.25 × 2 = 0.5, parte entera = 0


0.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 conversión de un número entre la base decimal y la


base binaria. Sin embargo el procedimiento es el mismo para convertir un número de base
10 a base b. Generalicemos entonces el concepto anterior.

Supongamos que se tiene el número (xm . . . x1 x0 .x−1 x−2 x−3 . . . x−n )10 y se desea conocer
su representación en base b. Para ello, primero observemos que la base b está compuesta por
b sı́mbolos, siendo estos: 0, 1, . . . , b − 1.

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

(xm . . . x1 x0 )a = b × Q1 + R1

Paso 2: Enseguida dividimos el cociente Q1 por b, obteniéndose un cociente Q2 y un residuo


R2 , 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 proceso continuo de hacer divisiones sea cero, esto es hasta que en el proceso se tenga
un cociente igual a cero
1.1. Números de Punto Flotante 5

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

de lo anterior, se tiene:

P Entera = 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
···
= b × Qi + · · · + b × R3 + b1 × R2 + b0 R1
i 2

···
= b × Qn + · · · + b × R3 + b1 × R2 + b0 R1
n 2

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

en conclusión,

Paso n+2: P Entera = (Rn+1 · · · R3 R2 R1 )b

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

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

P F racc × b = p1 .f1

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

0.f1 × b = p2 .f2

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

0.f2 × b = p3 .f3 ,

se realiza el proceso anterior repetidas veces tantas como sea necesario, quedando la parte
fraccionaria de la siguiente manera P F racc = (0.p1 p2 p3 . . . pk )b . Finalmente se
junta la parte entera y la parte fraccionaria, quedando la representación del número de
base decimal
a binaria de la siguiente manera:
1.1. Números de Punto Flotante 6

(xm . . . x1 x0 .x−1 x−2 x−3 . . . x−n )10 = (Rn+1 R3 R2 R1 .p1 p2 p3 . . . pk )b

Ahora analicemos el caso recı́proco, supongamos que se tiene el número Mb =


(xm . . . x1 x0 .x−1 x−2 . . . x−n )b en base b y se desea convertir a base decimal. Esta conversión
es directa obteniéndose de la siguiente manera:
i=−n
X
Mb = ( (xi × bi ))10
i=m
= (xm × bm + · · · + x1 × b1 + x0 × b0 + x−1 × b−1 + x−2 × b−2 + · · · + x−n × b−n )10

Los procedimientos anteriores son una generalización para convertir un número


de su
representación de base decimal a base b y viceversa, sin embargo, generalmente se hacen uso
únicamente de la base binaria, la base octal y la hexadecimal. La base binaria consta de
los dı́gitos 0 y 1; la base octal de los dı́gitos 0, 1, 2 , 3, 4, 5, 6, y 7; y la base hexadecimal
hace uso 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 número 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 = (R6 R5 R4 R3 R2 R1 )2 = 1000112 .

Por otro lado, se tiene:

35 = 8 + 3, Q01 = 4 y R01 = 3,
4 = 8 + 4, Q02 = 0 y R02 = 4,

luego 3510 = (R20 R0 1)8 = 438 .

Se tiene ademas:

35 = 16 × 2 + 3, Q001 = 2 y R100 = 3,
2 = 16 × 0 + 2, Q002 = 0 y R002 = 2,
1.1. Números de Punto Flotante 7

luego 3510 = (R200 R001)16 = 2316 . X

Del problema anterior, se tiene: 3510 = 1000112 = 438 = 2316 . El procedimiento


para
encontrar el número decimal a octal y hexadecimal es el mostrado en la sección, sin embargo,
observemos que:
4 3
z}8|{ z}8|{
3510 = 1000112 = ( 100 011 )2 = 438 y
216 3
}| { z16
}| {
3510 = 1000112 = (0010 0011)2 = 238

Ejemplo 1.1.5 Para convertir el número 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 número 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 omitirá colocar el subı́ndice para representar un número en


base decimal.

1.1.2 Representación Binaria de Números Negativos

La sección anterior muestra el procedimiento para representar un número de base decimal


a base b y viceversa. Sin embargo, únicamente se muestra dicha conversion para
números positivos. La problemática a resolver a continuacion es la representación binaria
de enteros negativos. Para ello, se hacen uso principalmente de tres representaciones:

• Signo-magnitud

• Complemento a uno

• Complemento a dos
1.1. Números de Punto Flotante 8

Representación Signo-Magnitud

Las cantidades se representan de izquierda a derecha (el bit mas significativo a la izquierda
y el menos significativo a la derecha) reservando el bit más significativo para representar el
signo, siendo 0 para valores positivos y 1 para valores negativos. Por ejemplo, en una palabra
de 8 bits, la representación de 61 y -61 son:

+61 = 0011 1101SM


−61 = 1011 1101SM

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

Si consideramos una palabra de 8 bits para representar un número en signo-magnitud, un


Byte puede representar números en el rango:

−127 ≤ n ≤ 127,

siendo 127 = 0111 1111SM el entero positivo más grande y −127 = 1000 0001SM el entero
negativo más grande.

Representación Complemento a Uno

Para enteros positivos el número se representa como en la representación signo-magnitud


con el bit más significativo 0. Para enteros negativos, se hace uso del complemento a
uno, esto es, primero se considera el entero positivo y después se cambian los bits 1 por 0
y los bits 0 por 1. En una palabra de 8 bits, los números +61 y −61 quedan representados
como:

+61 = 0011 1101C 1


−61 = 1100 0010C 1

Observemos que 0000 0000C 1 = +0 = −0 = 1111 1111C 1 ; esto es, el 0 tiene dos repre-
sentaciones nuevamente.
1.1. Números de Punto Flotante 9

Representación Complemento a Dos

Los enteros positivos se representan de igual manera a la representación signo-magnitud


y complemento uno, con el bit mas significativo igual a 0. Para enteros negativos se hace uso
del complemento a dos, esto es, primero se considera su representación positiva, se aplica
el complemento a uno y después se le suma un bit. El sistema sigue reservando el bit más
significativo para el signo, siendo 0 para entero positivos y 1 para negativos. En una palabra
de 8 bits, el número +61 queda representado como:

+61 = 0011 1101C 2

y para representar el número −61 se realiza lo siguiente:

1. Se considera su representación positiva, esto es: +61 = 0011 1101

2. Se aplica complementa a uno: 1100 0010


1100 0010
3. Se suma un bit: + 1
1100 0011

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

Observación: Algunos compiladores, como el Borland C++ utilizan tanto para palabras
de 16 y 32 bits la representacion complemento a dos para representar de manera interna los
números enteros.

1.1.3 Norma IEEE 754

En el área de ciencias e ingenierı́a es usual utilizar números muy grandes y números muy
pequeños. La norma IEEE 754 fue desarrollada en 1985 por el Insitute for Electrical
and Electronic Engineers, IEEE (Instituto para Ingenieros Eléctricos y Electronicos) y sirve
para representar en un computador los números de punto flotante. Esta norma fue
desarrollada con la finalidad para facilitar la portabilidad de programas numéricos.

Para facilitar su comprensión del formato IEEE 754, primero se considera un número de
punto flotante en su notación cientı́fica, esto es, en la que un número es representado me-
diante dos cantidades, la mantisa y la caracterı́stica o exponente. De esta manera,
cualquier número puede ser representado en la forma m ∗ be , siendo m la mantisa y e la
caracterı́stica.
1.1. Números de Punto Flotante 10

Por ejemplo, el número 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 número.


Sin embargo la representación de la que generalmente hacen uso los computadores es la
notacion cientı́fica normalizada, que es aquella donde el primer dı́gito fraccionario es
diferente de cero,
por ejemplo para el número 523.789, su notación cientı́fica normalizada es 0.523789 ∗ 103 .
Si la base es 2, significa que el primer bit fraccionario después del punto es 1, la
norma
IEEE 754 aprovecha este hecho de tal manera que al almacenar un número real, se emplea
la siguiente notacion cientı́fica:

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

La norma IEEE 754 define dos formatos básicos para almacenar números 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 Mantisa
Simple 1 8 23
Doble 1 11 52

Tabla 1.1.1: Formato IEEE

El bit más significativo contiene el signo del número, siendo 0 para valores positivos y 1
para valores negativos. El valor de la caracterı́stica se almacena en el siguiente bloque
de bits, siendo 8 para el formato simple y 11 para el formato doble. La representacion
de la caracterı́stica se conoce como el termino sesgado. Un valor fijo llamado sesgo se
resta de este campo para conseguir el valor de la caracterı́stica verdadera. El sesgo tiene
una valor
de 2k−1 − 1 con k el número de bits en el exponente binario. Ası́, para el formato simple, el
sesgo 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 manera
que los valores verdaderos varı́an entre -1023 y 1024. En los últimos 23 bits para el formato
simple y 52 para el formato doble se almacena la mantisa.

Para almacenar un número de punto flotante se siguen los siguientes pasos:

1. El número binario se escribe como en la notación cientı́fica 1.1.3

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


1 para negativos.

3. Se suma el valor del sesgo al exponente original y se almacena en el bloque de bits


correspondiente a la caracterı́stica.
1.1. Números de Punto Flotante 11

4. Se trunca la mantisa al tamaño de la palabra para la mantisa.

Ejemplo 1.1.7 Para convertir el número 20 a formato simple IEEE 754 se siguen la serie
de pasos siguientes:

1. Se convierte en número a base binaria y se escribe en la forma cientı́fica 1.1.3; esto es:
20 = 101002 = 1.01002100 .

2. Puesto que el número a almacenar es positivo, entonces el bit más significativo tendrá
un 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 la
caracterı́stica se almacenan los bits 10000011.

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

finalmente el número 20 en formato simple IEEE 754 es 0 10000011 01000000000000000000000.


X

Ejemplo 1.1.8 Convertir el número -125.32 al formato simple IEEE 754.

Se tiene:

1. Se convierte el número 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 número a almacenar es negativo, entonces el bit mas significativo tendrá
un 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 la
caracterı́stica se almacenan los bits 10000101.

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

finalmente el número -125.32 en formato simple IEEE 754 es 1 10000101 11110101010001111010111.


X

Para convertir un número de formato IEEE 754 a su representación binaria se hace la si-
guiente operacion:

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


1.1. Números de Punto Flotante 12

Ejemplo 1.1.9 Para convertir el número 0 10000011 01000000000000000000000 de formato


simple IEEE 754 a su representación binaria se hace la operacion 1.1.4, de donde se tiene lo
siguiente:

sesgo=127
z }| {
(−1)0 × 210000011 × 2− 1111111 × 1.01000000000000000000000
= 2100 × 1.01000000000000000000000
= 1.01000000000000000000000 × 2100
= 10100
= 2010

obteniéndose exactamente el número exacto 20 que ası́ era de esperar ya que este ejercicio
muestra 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 N aN 2 (Not a Number ). Es necesario considerar este tipo de valores para prevenir errores
que se puedan presentar. Las siguientes tablas muestran toda la gamma de interpretacion
de los números en el formato IEEE 754 para el formato simple y para el formato doble.

Precisión Simple
Signo Exponente Sesgado Parte Fraccionaria Valor
Cero Positivo 0 0 0 0
Cero Negativo 1 0 0 -0
Más Infinito 0 255 (todos unos) 0 ∞
Menos Infinito 1 255 (todos unos) 0 −∞
NaN Silencioso 0o1 255 (todos unos) =0 NaN
NaN Indicador 0o1 255 (todos unos) =0 NaN
Positivo Normalizado = 0 0 0 < e < 255 f (1.f ) ∗ 2e−127
Negativo Normalizado = 0 1 0 < e < 255 f −(1.f ) ∗ 2e−127
Positivo Denormalizado 0 0 f =0 (0.f ) ∗ 2e−126
Negativo Denormalizado 1 0 f =0 −(0.f ) ∗ 2e−126

Tabla 1.1.2: Interpretacion de números en formato simple IEEE 754


2 Para
una mayor referencia a los NaN pueden ver [5]
1.1. Números de Punto Flotante 13

Precisión Doble
Signo Exponente Sesgado Parte Fraccionaria Valor
Cero Positivo 0 0 0 0
Cero Negativo 1 0 0 -0
Más Infinito 0 2047 (todos unos) 0 ∞
Menos Infinito 1 2047 (todos unos) 0 −∞
NaN Silencioso 0o1 2047 (todos unos) =0 NaN
NaN Indicador 0o1 2047 (todos unos) =0 NaN
Positivo Normalizado = 0 0 0 < e < 2047 f (1.f ) ∗ 2e−1023
Negativo Normalizado = 0 1 0 < e < 2047 f −(1.f ) ∗ 2e−1023
Positivo Denormalizado 0 0 f =0 (0.f ) ∗ 2e−1022
Negativo Denormalizado 1 0 f =0 −(0.f ) ∗ 2e−1022

Tabla 1.1.3: Interpretacion de números en formato doble IEEE 754

En la norma estandar IEEE 754, para el caso del formato simple, los exponentes están
restringidos por la desigualdad:

−126 < e − 127 < 127

y la mantisa está restringida por la desigualdad:

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

por lo tanto el número más grande representado en el formato simple es:

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

y el número mas pequeño representable en el formato simple es:

2−126 ≈ 1.2 × 10−38

Ejercicio Encontrar el número más grande y más pequeño representable en el formato doble
IEEE 754.
1.2. Errores 14

1.2 Errores

A lo largo de esta obra, se emplearan técinas numéricas que ayudaran a resolver problemas
matemáticos. Mediante estas técnicas se una aproximacion a la solución real,
tendrá sin
embargo, el hecho de que no sea la solución real, nos genera un margen de error. Este error
en la práctica debe de ser considerado, pues nos puede acarrear situaciones inesperadas.

Los computadores son un ejemplo claro en la generación de errores. La recta real


esta compuesta de una infinidad de números, sin embargo un computador tiene
una cantidad finita de circuiterı́a, y por ende, no es capaz de almacenar toda la
infinidad de números reales. Por citar un ejemplo, consideremos el número irracional
π = 3.141592654 . . .. Un número irracional tiene la caracterı́stica de que no puede ser
expresado en forma fraccionaria
de una cantidad finita de dı́gitos con cierto periodo. Para que un computador maneje
el valor de π, debe de hacer uso de algún método que le permita registrar una cierta
cantidad finita de la parte fraccionaria del número y almacenarla. Esto, por supuesto nos
generará
un cierto error, ya que no se estará trabajando con el valor de la cantidad exacta, si no mas
bien con una aproximación. De est manera, en esta sección se dedicará a analizar la parte
correspondiente a los errores que se producen al hacer uso de una cantidad aproximada a su
respectivo valor real.

1.2.1 Error Relativo y Error Absoluto

En lo que sigue, suponemos un computador imaginario que trabaja con el sistema decimal
con una palabra de k dı́gitos en la mantisa. Además suponemos que los
números están representados en la forma normalizada de punto flotante:
mantisa
z }| {
±0. d1 d2 · · · dk ×10n , con 1 ≤ d1 ≤ 9 y 0 ≤ di ≤ 9, i = 2, . . . k (1.2.1)

A los números de la ecuacion 1.2.1 se les llama números de maquina decimales con
k-
dı́gitos.

En general, cualquier número real positivo y puede ser normalizado de la forma:

0.d1 d2 · · · dk dk+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 número


cuya forma es como el de la ecuacion 1.2.2, entonces requerir trabajar únicamente con k
dı́gitos de la mantisa, eliminando el resto, a esto se le conoce como forma de punto flotante.
Denotamos mediante f l(y) a la forma de punto flotante de y. El valor de f l(y) se obtiene
1.2. Errores 15

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

Definición 1.2.1 Si y es un número real expresado de la forma como en la ecuación 1.2.2,


entonces

f lc (y) = 0.d1 d2 · · · dk ,

este método es llamado método de corte o truncamiento a k-dı́gitos.

Definición 1.2.2 Si y es un número real expresado de la forma como en la ecuación 1.2.2,


entonces

dk si dk+1 < 5
f lr (y) = 0.d1 d2 · · · d0k, con d0k =
dk + 1 si dk+1 ≥ 5

este método es llamado método de redondeo a k-dı́gitos.



Ejemplo 1.2.1 3 = 1.732050808 · · · , normalizado es igual a 0.1732050808 × 101 ,
por √
tanto √ el método de corte y redondeo a 5-dı́gitos son respectivamente f l c ( 3) = 0.17320 y
f lr ( 3) = 0.17321. X

Definición 1.2.3 El error resultante al reemplazar un número con su forma de punto flotante
recibe el nombre de error de redondeo (independientemente del método que se aplique).

La siguiente definicion describe métodos para medir los errores de aproximacion.

Definición 1.2.4 Si p? es una aproximación de p, el error absoluto es EA = |p − p? |. Si


? |
p = 0 el error relativo es ER = |p|EA= |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 −


3
−3
0.17321
0.1×10 − × 101
| = 0.1 × 10 , ER = EA
= = 0.57736 × 10−3 y ERP = ER × 100 =
|0.17320| 0.17320
0.057%.
X

Definición 1.2.5 Se dice que el número p? se aproxima a p con t-dı́gitos o cifras significativas,
si t es el entero positivo más grande para el cual

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

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


1.2. Errores 16

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

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 numérico. Las cifras significativas de un número son aquellas que pueden
utilizarse en forma confiable.

1.2.2 Aritmética de Punto Flotante


Antes de continuar con la parte referente a los errores, es necesario conocer las operaciones
aritméticas de punto flotante. Estas se resumen enseguida. Si X = Xm ×B Xe y Y = Ym ×B Ye
, entonces:

X + Y = (Xm × B Xe −Ye + Ym ) × B Ye , con Xe ≤ Ye ,


X − Y = (Xm × B Xe −Ye − Ym ) × B Ye , con Xe ≤ Ye ,
X × Y = (Xm × Ym ) × B Xe +Ye y
X Xm
Y = Ym
× B Xe−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,
X
Y
=0.50.3 × 2−3
10
= 1.66 × 10−1 = 0.166 X

1.2.3 Errores de Representación

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 que
los números se almacenan con una mantisa de 4 dı́gitos decimales, una caracterı́stica de 2
dı́gitos decimales, de los cuales, el primero se usa para almacenar el signo.
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 números 8123000 y 0.00456 en nuestro computador
imaginario, primero se deben de normalizar los números quedando 0.8123×107 y 0.4560×10−2
respectivamente, por tanto los números almacenados en nuestro computador quedarı́an de
la siguiente manera:

Signo caracterı́stica mantisa


+ 7 8123
− 2 4560

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

a) Suma de Números muy Distintos en Magnitud

Sean X = 0.003 y Y = 700, que sucede si deseamos almacenar el valor de X + Y


para usarlo posteriormente. Primeramente para operar los valores X y Y , estos
se deben de almacenar en el computador, para esto, primero se deben de normalizar
obteniendo:

X = 0.3000 × 10−2
Y = 0.7000 × 103

estos números 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.


1.2. Errores 18

b) Resta de Números Casi Iguales

Sean X = 0.3153 y Y = 0.3152, que sucede si ahora deseamos almacenar el


valor de
X − 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 sólo tiene una cifra
significativa 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 lo
siguiente es parte del cógido 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 A
fue 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,


EA
ER = |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 . Se
tiene:

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:


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 de


0.031%, sin embargo, esto nos genero un error porcentual del 100% en el resultado final del
cálculo 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,


este
requerirá de 3 dı́gitos para la caracterı́stica siendo el primero para el signo, pero
nuestro
computador 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 interrumpen
los calculos. A este tipo de error se le conoce como overflow, desbordamiento o sobreflujo.
Un sobreflujo surge como consecuencia de una operación artimética de dos número válidos
cuyo resultado es un número 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 la


operación 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 puede almacenarse en nuestro computador, generandose de esta manera lo que se
conoce como un error llamado underflow o subflujo. Un subflujo surge como consecuencia
de una operación aritmética de dos números cuyo resultado es un número tan pequeño que
el computador no puede manejar.

Tanto el sobreflujo como el subflujo pueden aparecer pueden aparecer a partir de opera-
ciones aritméticas que involucran productos o cocientes. El subflujo no es un problema
tan serio como lo es el sobreflujo. En el caso del sobreflujo los computadores
interrumpen los cálculos y envian un mensaje de error, mientras que en el caso del subflujo,
los computadores trabajan el resultado del valor como cero.
1.2. Errores 20

d) División entre un Número muy Pequeño

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 cálculo
de X , se obtuvo el valor de C ? = 0.9001 × 10−3 en lugar de C . El error absoluto, relativo y
porcentual entre el valor de C y C ? son:

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


EA −4
ER = |0.9000×10 −3 | = 10 ,
ERP = ER × 100 = 0.01%

Ahora bien, hagamos uso del valor de C ? en lugar de C para el cálculo 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,


EA
ER = |0.9000 × |
= 0.1111,
10 6
ERP = ER × 100 = 11.11%

El error relativo como consecuencia de haber obtenido el valor de C ? se ha multiplicado


1111 veces. Este error surge como consecuencia de realizar una división donde el cociente se
obtuvo de cálculos anteriores generandose un pequenño error.

1.2.4 Reduccion de Errores

En la seccion anterior se vieron posibles errores que se generan en un computador. Ahora


lo que nos interesa es tratar de reducir lo mejor posible los errores generados.

Ejemplo 1.2.5 Consideremos la ecuación cuadratica x2 − 101.01x + 0.10101 = 0.


Para encontrar las raı́ces, se recurre a la formula general

−b±2 b
x= −4ac
2a
1.2. Errores 21

sustituyendo los valores en la fórmula general para nuestro ejemplo y aplicando una aritmé-
tica de redondeo a cinco dı́gitos, se tiene:


101.01± (−101.01)2 −4(0.10101)
x∗ = √ 2
101.01± 10203−0.40404
=
√ 2
101.01± 10203
= 2
101.01±101.01
= 2

luego

x∗+ = 101.01+101.01
2 = 101.01 y
∗ 101.01−101.01
x− = 2
=0

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

∗|
|x+ −x+
ERP = x
× 100
+|
|
|101.01−101.01|
= 100
|101.01 |
×
= 0% y
|x− −x∗ |
ERP = |x −− × 100
|
|0.00100−0|
= |0.001 | × 100
= 100%

Se observa que el método fue adecuado para la solución x+ , pero no del todo para x− . En
este ejemplo se presenta el problema de restar números casi iguales, dando como resultado
pérdida de exactitud. Veamos, que sucede, si en lugar de aplicar la formula general tal
y como se efecto para encontrar el valor de x− , se recurre a la racionalización de términos.
Se tiene:

b− b2
x− = − −4ac
√2a √
= −b− b −4ac −b+ b√
2 2 −4ac
2a − b+ −b2
4ac
2 b 2−(b
= −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:


1.2. Errores 22

x− = √2(0.10101)
101.01+ 101.012−4(0.10101)
0.20202
= 101.01+101.01
0.20202
= 202.02
= 0.001

el cual es el valor verdadero utilizando el método de redondeo a cinco dı́gitos. Está formula
alternativa para calcular una raı́z pequeña de una ecuacion cuadrática casi siempre produce
una respuesta más exacta que la formula usual. X

Ejemplo 1.2.6 Consideremos el polinomio f (x) = x3 − 3.2x2 + 7.1x + 2.5.


Evaluemos
x = 5.17 en f (x) utilizando una aritmética de redondeo dı́gitos. La siguiente tabla muestra
los resultados intermedios para llegar a la solución final.

x x2 x3 3.2x2 7.1x
Exacto 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.862933


Redondeo a tres dı́gitos f (5.17) = 138 − 85.4 + 36.7 + 2.5 = 91.8

obteniéndose un error relativo porcentual de

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

Como método 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%. Disminuyendo
en 0.02% el error. Este método siempre disminuye el error, en algunos casos da resultados
con un porcentaje mucho mejor. Los polinomios siempre deben de anidarse antes de realizar
cualquier evaluación, pues de está forma se minimiza el número de cálculos aritméticos y por
tanto los errores.
1.2. Errores 23

1.2.5 Propagación de Errores

El error de propagacion sirve para estimar el error resultante en una función a partir de
valores de entrada. El objetivo es estimar como se propagan los errores; por ejemplo, si
se suman o multiplican dos números que tienen error, como se ve reflejado esto al aplicar
estos valores a una funcion.

Cuando se evalúa una función en un punto x = a, en general se dispone de


un valor aproximado a a: a? , teniéndose como error a = a − a? . Nuestro objetivo es
determinar el error de propagacion de la función; esto es:

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

Figura 1.2.1: Gráfica de una función en la cercanı́a de a

Nuestro objetivo es determinar la relación existente entre a y f . Si 0 < a 1, entonces


f (x) puede aproximarse por la tangente al punto x = a, teniéndose:

f (a)−f (a∗ )
f 0 (a) ≈ a−a∗
= f
a
1.2. Errores 24

entonces
f ≈ af
0
(a) ≈ af
0
(a∗ )
y por lo tanto
| f | ≈ | a ||f 0 (a∗ )|
de esta manera, se define el error de propagacion como:
| f | = | x ||f 0 (x∗ )| = |x − x∗ ||f 0 (x∗ )|

Ejemplo 1.2.7 Si f (x) = x3 + 1 con x∗ = 3.21 y con a = 0.01, entonces el error de


propa- gación es | f | = |0.01||3(3.21)2 + 1| = 0.3191. Puesto que f (3.21) = 34.0761, entonces
el valor real se encuentra dentro del intervalo [34.0761−0.3191, 34.0761+0.3191] = [33.7570,
34.3952].
X

1.2.6 Número de Condicion

Definición 1.2.6 Sean f y x∗ una aproximación de x, se define el número


condicionado como:
x∗ f 0 (x∗ )
NC = f (x∗ )

El número 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 función debido a
perturbaciones pequeñas en los valores de entrada.
1. Si N C = 1, entonces el error relativo de f (x) es igual al error relativo de x.
2. Si N C > 1, entonces el error relativo de f (x) es mayor que el error relativo de x.
3. Si N C < 1, entonces el error relativo de f (x) es menor que el error relativo de x.

Si N C 1, se dice que la función esta mal condicionada.


π
Ejemplo 1.2.8 Sean f (x) = tan x y x∗ = 2
+ 0.022π . Se tiene:
1
f 0 (x) = sec2 x = cos2
x
luego
∗ x) 2 ∗
N C = x (1/cos
tan x∗
= 1.6022(1024.9)
−31.998
= −51.319
por tanto la función esta mal condicionada. Esto se debe a que en una vecindad de π/2 la
tangente tiende tanto a infinito positivo como a infinito negativo.
25

Capı́tulo 2

Algoritmos para dar Solución a la


Ecuación de Una Variable

2.1 Algoritmos Para Búsqueda de Raı́ces


2.1.1 Algoritmos

A lo largo de los apuntes, se estarán trabajando procedimientos como los ya vistos en la


sección 1.1.1, donde se mostraron procedimientos para convertir un número de base decimal
a base binaria y viceversa. Estos procedimientos son llamados algoritmos.

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

• Contiene valores de entrada.


• contiene una serie finita de pasos.
• Contiene valores de salida.
• No se permiten ciclos infinitos.
• Está bien definido.

A la descripcion de los algoritmos por medio de texto parecido al código de computadora


se le llama seudocodigo. Un algoritmo se compone de valores de Entrada,
Proceso(en el que se describe la serie finita de pasos) y Salida; es de está forma en que se
describiran los seudocódigos de los algoritmos presentados a lo largo de estos apuntes.

Ejemplo 2.1.1 Un algoritmo para calcular


2.1. Algoritmos Para Búsqueda de Raı́ces 26

N
X
xii = x11 + x22 + · · · + xN
N
i=1

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

ENTRADA: N, x1 , x2 , . . . , xN .
X N
SALIDA: SU M A = xii.
i=1
PROCESO: Se utiliza una variable auxiliar aux
paso 1: Establecer SU M A = 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: SU M A = SU M A +
aux. paso 6: Poner aux = 1.
paso 7: SALIDA (SUMA).
PARAR. X

Definición 2.1.1 Un algoritmo se dice que es estable si cambios pequeños en los


datos
de entrada producen cambios pequeños en los datos de salida. En caso contrario
se dice que es inestable. Si un algoritmo es estable solo para ciertos datos iniciales se
dice que es condicionalmente estable.

Los algoritmos que nos interesan trabajar son aquellos que sean estables. En este capı́tulos,
nos dedicaremos a la búsqueda de raı́ces para una función f (x) = 0. Se describiran algunos
métodos que nos ayudaraan a aproximar la raı́z de una función. El primer método a tratar
es el método de la biseccion.

2.1.2 Método de la Bisección

Antes de describir de que se trata el método de la biseccion, recordemos el teorema del


valor intermedio.

Teorema del Valor Intermedio Si f es una función continua en un intervalo [a, b] y y es


un número que se encuentra entre f (a) y f (b), entonces existe c ∈ [a, b] tal que f (c) = y.

El método de la bisección hace uso del teorema del valor intermedio. Se aplica de la
siguiente manera: dada una función f continua en un intervalo [a, b] donde de antemano
se 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 pérdida de generalidad, supongamos que se tiene la primera situación.
Puesto que f (a) > 0 y f (b) < 0 con f función continua, entonces por el
teorema del
2.1. Algoritmos Para Búsqueda de Raı́ces 27

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


punto
medio del intervalo [a, b]. Por tricotomı́a de los números reales, se tiene p1 < c o p1 = c
o p1 > c. Si p1 = c,
entonces p1 es la raı́z que estábamos buscando. Sin pérdida de
generalidad, 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 valor
intermedio existe c0 ∈ [p1 , b] tal que f (c0 ) = 0. Obsérvese que c0 = c. Tomamos p2 = p1 + b−p
2
1

; esto es, p2 es el punto medio del intervalo [p1 , b] y aplicamos nuevamente el


razonamiento anterior. Este proceso se hace repetidamente hasta que encerremos la raı́z
en un intervalo
suficientemente pequeño (figura 2.1.1).

Figura 2.1.1: Método de la bisección

Algoritmo 2.1.1: Método de la Bisección.

Entrada: función f ; intervalo [a, b]; número máximo de iteraciones N0 ; tolerancia T OL.
Salida: solución aproximada p o mensaje de error.
Proceso: se requieren de dos variables auxiliares f a y f p
Paso 1: Tomar i = 1 y f a = 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 f p = f (p)
paso 5: Si f (p) = 0 o (b − a)/2 < T OL, entonces
SALIDA(p).
PARAR.
paso 6: Si signo(f (a)) ∗ signo(f (p)) > 0, tomar
−1 si x < 0
1
la funcion signo se define como signo(x) = 0 si x = 0
1 si x >
0
2.1. Algoritmos Para Búsqueda de Raı́ces 28

a = p y f a = f p, en caso contrario, tomar


b = p.
paso 7: SALIDA(Procedimiento terminado sin éxito después 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:

1−0
p1 = 0 + 2
= 0.5,

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

1−0.5
p2 = 0.5 + 2
= 0.75,

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

p3 = 0.5 + 0.75−0.5
2
= 0.625.
X

2.1.3 Iteración de Punto Fijo

Definición 2.1.2 Sea g una funcion. Un punto p en el dominio de g se dice que es punto
fijo si g(p) = p.

El método de punto fijo se basa en la definicion de punto fijo. Sea f una funcion, definamos
g(x) = x−f (x). Si p es un punto fijo de g, entonces f (p) = g(p)−p = 0, esto es, un punto fijo
para g es una raı́z para f . De esta manera, si se desea encontrar las raı́ces de una función f
, basta con encontrar los puntos fijos de una funcion g construida a partir de f de tal
manera que los puntos fijos de g sean raı́ces de f . El ejemplo 2.1.3 muestra posibles
elecciones de la función g para una función 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 )/5
g3 (x) = −1/(x2 + 2x + 5)
2.1. Algoritmos Para Búsqueda de Raı́ces 29

son ejemplos de posibles elecciones para la funcion g.

El método de punto fijo requiere de un punto inicial cercano al valor de la raı́z y partir de
éste, se comienzan a realizar iteraciones hasta aproximarse cada vez más al valor de la raı́z
que se esta buscando.

Algoritmo 2.1.2: Método de Punto Fijo.

Entrada: función f ; aproximacion inicial p0 ; número máximo de iteraciones; tolerancia T OL.


Salida: solución 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 | < T OL, entonces
SALIDA(p).
PARAR.
paso 4: hacer p0 = p.
paso 7: SALIDA(Procedimiento terminado sin éxito después de N0 iteraciones).
PARAR.

Ejemplo 2.1.4 Se desea encontrar una aproximación a una raı́z de la funcion f (x) = x4 +
2x2 − x − 3 mediante el método del punto fijo. Para ello se proponen las siguientes funciones
como posibles candidatas para la elección de g.

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


4 1/2
g2 (x) = ( x+3−x2
)
x+3 1/2
g3 (x) = ( x2 +2 )
4
+2x2 +3
g4 (x) = 3x4x3 +4x−1

la tabla 2.1.1 proporciona los resultados del método de iteración de punto fijo para las cuatro
opciones de g con p0 = 1.

De la tabla 2.1.1 se observa que aunque las funciones gi son problemas de punto fijo para
la misma función f , difieren ampliamente como métodos de aproximacion a la solución del
problema. X
2.1. Algoritmos Para Búsqueda de Raı́ces 30

n g1 g2 g3 g4
0 1 1 1 1
1 1.189207115 1.224744871 1.154700538 1.142857143
2 1.080057753 0.993666159 1.11642741 1.12448169
3 1.149671431 1.228568645 1.126052233 1.124123164
4 1.107820530 0.987506429 1.123638885 1.12412303
5 1.133932285 1.232183418 1.124244497 1.12412303
6 1.118003118 0.981585828 1.124092553
7 1.127857163 1.235563209 1.124130676
8 1.121813166 0.97596246 1.124121111
9 1.125539874 1.238689029 1.124123511
10 1.123249432 0.970684691 1.124122909

Figura 2.1.1: Método de punto fijo para la misma función f y con diferentes funciones g

El siguiente teorema es de gran importancia para la exclusión de ciertas funciones g 0is.

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

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

entonces para cualquier número p0 ∈ [a, b], la sucesión definida por

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

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

2.1.4 Método de Newton-Raphson y de la Secante

Consideremos la figura 2.1.2. Deseamos encontrar la aproximación a una raı́z de f de


la siguiente manera. Dado un punto inicial p0 , calculamos la tangente a este
punto vı́a
la 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 0 (p 0) = p0 −p1

de donde
2.1. Algoritmos Para Búsqueda de Raı́ces 31

p1 = p0 − f 0f(p(p00) .
)

Encontrado el valor p1 , se hace el mismo procedimiento para el cálculo de p2 , obteniendose

p2 = p1 − f 0f(p(p11) .
)

Se continua haciendo el mismo proceso hasta obtener una aproximación adecuada a la


raı́z buscada.

Figura 2.1.2: Método de Newton-Raphson

Algoritmo 2.1.3: Método de Newton-Raphson.


ENTRADA: función f ; aproximación inicial p0 ; número máximo de iteraciones N0 ; tolerancia
T OL.
SALIDA: solución 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 0 (p0 )
paso 3: Si |p − p0 | < T OL, entonces
SALIDA(p).
PARAR.
paso 4: Hacer p0 = p.
paso 5: SALIDA(Procedimiento terminado sin éxito después de N0 iteraciones).
PARAR.
Ejemplo 2.1.5 Sean f (x) = x2 − 6 y p0 = 1. Encontrar el valor de p2 .
Se tiene
2.1. Algoritmos Para Búsqueda de Raı́ces 32

p1 = 1 − ff0(1)
(1)
12−
=1− 2(1)
6
= 3.5

luego

p2 = 3.5 − ff0(3.5)
(3.5)

2
= 3.5 − 3.5
2(3.5)
6
= 2.067.
X

El elemento pn en el método de Newton-Raphson está dado por:

pn = pn−1 − ff (p n−1 )
0 (p
n−1 )
para n > 0.

Para n > 1 anteriormente se tienen cálculados al menos los puntos p0 y p1 . Si se desea


evitar el problema de evaluar en la derivada de una función se puede recurrir a calcular a la
secante que une a los puntos (pn−1 , f (pn−1 )) y (pn−2 , f (pn−2 )) como una aproximacion a la
derivada en el punto pn−1 , obteniéndose:

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

Esta ultima formula alternativa al método de Newton-Raphson recibe el nombre


del
método de la secante. Para ello, se requieren dos puntos de aproximacion a la raı́n el lugar
de uno como en el método de Newton-Raphson.

Algoritmo 2.1.4: Método de la Secante.

ENTRADA: función f ; aproximación inicial p0 y p1 ; número máximo de iteraciones N0 ;


tolerancia T OL.
SALIDA: solución aproximada p o mensaje de error.
PROCESO: se requieren dos variables auxiliares q0 y q1 .
paso 1: Tomar
q0 = f (p0 ) y
q1 = 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 )
2.2. Raı́ces de Polinomios 33

paso 4: Si |p − p1 | < T OL, entonces


SALIDA(p).
PARAR.
paso 5: Hacer p0 =
p1 , q0 =
q1 , p1 =
py
q1 = f (p).
paso 6: SALIDA(Procedimiento terminado sin éxito después de N0 iteraciones).
PARAR.

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

Se tiene:

p2 = 2− ff (2)−f
(2)(2−3)
(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 análisis numérico. Su
importancia se notará en los capı́tulos siguientes donde se tratará el tema de interpolación.
Está sección esta dedicada a este tipo de funciones especiales: los polinomios.

Definición 2.2.1 Un polinomio de grado n es una función P : R → R que tiene la siguiente


forma:

P (x) = an xn + an −1 xn−1 + · · · + a1 x + a0

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

El siguiente teorema es de suma importancia en la teorı́a algebraı́ca que concierne a los


polinomios. Su importancia data en el hecho de que siempre es posible encontrar raı́ces para
un polinomio de grado n ≥ 1 en el campo de los números complejos.
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 únicas x1 , x2 , . . . , xk (posiblemente complejas), y
enteros
positivos m1 , m2 , . . . , mk con Σi=1
k
mi = 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.

Definición 2.2.1 Sea P (x) un polinomio. r es raı́z de multiplicidad m de P (x), si existe un


polinomio Q(x) tal que

P (x) = (x − r)m Q(x) con Q(r) = 0

Algoritmo de la División Dados los polinomios P (x) y Q(x), existen dos únicos polinomios
C (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 división de un polinomio


P (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 0 (x) = Q0 (x)(x − a) + Q(x)

y por tanto
2.2. Raı́ces de Polinomios 35

P 0 (a) = Q(a).

El método de Horner o división sintética es un método que nos ayuda a


encontrar el cociente y el resto al dividir un polinomio por x − a para algún a, y por ende
por lo anterior, nos ayuda a encontrar el valor de P 0 (a).

Método de Horner Sea

P (x) = an xn + an −1 xn−1 + · · · + a1 x + a0 .
Si bn = an y bk = ak + bk+1 x0 para k = n − 1, n − 2, . . . , 1, 0, entonces b0 = P (x0 ). Mas aún,
si

Q(x) = bn xn−1 + bn −1 xn−2 + · · · + b2 x + b1 ,


entonces

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

El teorema anterior describe el método de Horner, sin embargo para llevarlo a la practica se
sigue el siguiente algoritmo.

Algoritmo 2.2.1: Método de Horner.

ENTRADA: grado n del polinomio; coeficientes a0 , a1 , . . . , an ; x0 .


SALIDA: y = P (x0 ); z = P 0 (x0 ).
PROCESO:
paso 1: Tomar
y = an y
z = an
paso 2: Para j = n − 1, n − 2, . . . , 1 tomar
y = x0 y + aj
z = x0 z + y
paso 3: Hacer y = x0 y + a0
paso 4: SALIDA(y,z).
PARAR.

Al realizar los cálculos con el método de Horner se recurre a una tabla que se construye
como en el ejemplo siguiente.

Ejemplo 2.2.1 Al aplicar el método de Horner al polinomio p(x) = 3x4 + 2x3 − x2 + 4x + 2


en x0 = −2, se tiene:
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 = 2
b4 x0 = −6 b3 x0 = 8 b2 x0 = −14 b1 x0 = 20
b4 = 3 b3 = −4 b2 = 7 b1 = −10 b0 = 22

por lo tanto

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


37

Capı́tulo 3

Algoritmos de Interpolación

3.1 Algoritmos de Interpolación

Figura 3.1.1: Grafica que muestra puntos aislados tomados de una


muestra de algún experimento hipotético.

Supongamos que la figura 3.1.1 muestra los datos registrados en un experimento fı́sico
que depende del tiempo. El eje de la abscisa muestra los diferentes tiempos en que se llevo
a cabo el mismo experimento repetidas veces, y el eje de la ordenada muestra los valores
aproximados del resultado del experimento. Este tipo de registros se obtienen a menudo en
un laboratorio de fı́sica, puede haber registros para lapsos cortos de tiempo o para lapsos
muy largos. Un ejemplo de tales registros, puede ser el de la población ya sea a nivel de
un pais o la poblacion mundial. Por ejemplo, el eje de las abscisas puede representar
las mediciones registradas en el año t0 , t1 , etc., y el eje de la ordenada puede
representar la población para el respectivo año de registro.

Una vez obtenidos los datos como se muestran en la figura 3.1.1, lo interesante del asunto
es determinar el valor que le corresponde a la función para un valor no registrado, esto es,
por ejemplo, en la figura se muestran datos registrados para valores t0 , t1 hasta t5 ,
para
3.1. Algoritmos de Interpolacion 38

estos valores, conocemos el valor exacto que le corresponde a la función f (t), sin embargo
que sucede si se desea conocer un valor t0 que se encuentre en el intervalo (t0 , t1 ), este valor
no fue registrado. La problemática a resolver enseguida será encontrar métodos
con los
cuales sea posible encontrar dicho valor. La idea data en encontrar una función
continua que pase por los puntos registrados, de tal manera que sea posible determinar
de manera confiable 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 Interpolación.

3.1.1 Polinomio de Lagrange

Consideremos el problema de encontrar un polinomio de grado maximo n que pase por


los n + 1 puntos: (x0 , f (x0 )), (x1 , f (x1 )), . . . , (xn , f (xn )). Sea
(x−x0 )(x−x1 )...(x−xk−1 )(x−xk+1 )···(x−xn )
Ln.k (x) = (xk −x0 )(xk − x1 ) ··· (x k − )(x k − x k+1) ···(x kx−
x k−1 n)
para k = 0, 1, . . . , n
Y n
(x − xi )
= para k = 0, 1, . . . , n
(xk − xi )
i=0,i=k

Se define el n-ésimo polinomio interpolante de Lagrange como:

Pn (x) = f (x0 )Ln,0 (x) + f (x1 )Ln,1 (x) + · · · + f (xn )Ln,n (x)
X n
= f (xk )Ln,k (x).
k=0
3.1. Algoritmos de Interpolacion 39

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

Observemos que

1 si j = k
Lk (xj ) =
0 si j = 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 siguiente
tabla:

x f (x)
8.1 16.94410
8.3 17.56492
8.6 18.50515

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

(x−8.3)(x−8.6)
L0 (x) = (8.1−8.3)(8.1−8.6)
x2 −16.9x+71.38
= (−0.2)(−0.5)
= 0.1
(x − 16.9x + 71.38)
1 2
(x−8.1)(x−8.6)
L1 (x) = (8.3−8.1)(8.3−8.6)
x2 −16.7x+69.66
= (0.2)(−0.3)
= − 0.061 (x2 − 16.7x + 69.66)
(x−8.1)(x−8.3)
L2 (x) = (8.6−8.1)(8.6−8.3)
x2 −16.4x+67.23
= (0.5)(0.3)
= 1 2
0.15 (x
− 16.4x + 67.23)

por tanto, el polinomio dos de Lagrange está 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
3.1. Algoritmos de Interpolacion 40

En el ejemplo 3.1.1 se calculo el polinomio dos de Lagrange, a partir de éste se pueden


encontrar valores aproximados para datos que no se encuentran en la tabla, por ejemplo, se
tiene P2 (8.2) = 17.35896, P2 (8.4) = 17.97624 y P2 (8.5) = 18.2865.

Enseguida se muestran el método de Neville seguido del método de diferencias divididas


de Newton que de igual manera sirven para interpolar.

3.1.2 Método de Neville

Algoritmo 3.1.1: Método 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 hacer
para i = 0, . . . , n − j tomar
+(xi+j −x)Pi,j−1
Pi,j = (x−xi )Pi+1,j−1
xi+j −x i
paso 2: SALIDA(P (x)).
PARAR.
i xi Pi,0 Pi,1 Pi,2 ··· P i, n
0 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: Método de Neville.


Ejemplo 3.1.2 Apliquemos el método 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,4


0 0 0 3 0.9319 1.4918 1.6180
1 1 1 1.6213 1.6785 1.7022
2 2 1.4142 1.7071 1.7260
3 4 2 1.7640
4 5 2.2360
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 algoritmo
3.1.1, teniéndose:

+(x1 −x)P0,0
P0,1 = (x−x0 )P1,0
x1 −x0
= (3−0)(1)+(1−3)(0)
1−0
=3
+(x2 −x)P1,0
P1,1 = (x−x1 )P2,0
x2 −x1
= (3−1)(1.4142)+(2−3)(1)
2−1
= 1.6213
+(x3 −x)P1,1
P1,2 = (x−x1 )P2,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 el
valor 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 desea
interpolar. Para abreviar denotemos fi = f (xi ). Consideremos el siguiente
polinomio de grado 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 ai 0 s se escogen adecuadamente de modo que Pn (xi ) = f (xi ) en los n


+ 1 puntos conocidos, entonces se puede conseguir que Pn sea un polinomio de
interpolación. Nuestro objetivo será encontrar los valores adecuados
i para las a0 s. Para
ello, consideremos
primeramente la siguiente notacion.

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

ft −fs
f [x s, x t] = xt −xs

Obsérvese que f [xs , xt ] = f [xt , xs ].

Las diferencias de orden superior se definen en términos de diferencias de orden inferior,


por ejemplo, la diferencia dividida de segundo orden de los valores x0 y x2 se define como:
3.1. Algoritmos de Interpolacion 42

f [x1 ,x 2 ]−f [x0 ,x 1 ]


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

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

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


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

La diferencia dividida de orden cero se define como:

f [xs ] = fs .

Consideremos nuevamente el polinomio mostrado en la ecuación 3.1.1, Si deseamos que


el polinomio interpole los puntos (xi , fi ) para i = 0, . . . , n, entonces se debe de cumplir que
Pn (xi ) = fi , obteniéndose entonces:

f0 = Pn (x0 ) = a0

de donde a0 = f0 = f [x0 ],

continuando, se tiene

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


f1 f1
de donde a1 = = = f [x1 , x0 ].
−a0 −f0
x1 −x0 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 ].
3.1. Algoritmos de Interpolacion 43

Enseguida se muestra el algoritmo de el método de diferencias divididas.

Algoritmo 3.1.2: Método de Diferencias Divididas.

ENTRADA: valores x, x0 , x1 , . . . , xn ; valores f (x0 ), f (x1 ), . . . f (xn ).


SALIDA: Tabla 3.1.2
PROCESO:
paso 1: Para i = 1, 2, . . . , n hacer
para j = 0, . . . , n − i calcular
f [j, . . . , n] = f [j+1,...,i]−f [j,...,i−1]
xj+1 −x j
y se coloca en la
columna i de la tabla 3.1.2
paso 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: Método de Diferencias Divididas.

Ejemplo
√ 3.1.3 Apliquemos el método de√diferencias divididas para para aproximar el valor
de 3 considerando la función 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.0115
1 1 0.4142 -0.0404 0.0053
2 1.4142 0.2929 -0.0189
3 2 0.2360
4 2.2360

Por ejemplo, para calcular los valores f [x0 , x1 ] y f [x1 , x2 , x3 ], se hace uso del paso 1 del
algoritmo 3.1.2, teniéndose:
3.2. Algoritmos de Ajuste de Curvas 44

−f0
f [x 0, x 1] = xf11−x 0
= 1−0
1−0
=1
f [x1 , x2 , x3 ] = f [x2 ,xx33]−f
−x1
[x1 ,x 2 ]

= 0.2929−0.4142
2−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 haber
sido el resultado de un experimento, y dichos registros de puntos son parecidos a como se
muestran en la tabla 3.1.3 a). El objetivo de está seccion es tratar de resolver la problemática
de encontrar un polinomio de grado n >= 1 que se ajuste más a los puntos registrados, esto
es, obtener un polinomio que se le parezca más a los puntos registrados, de tal manera que
sea posible encontrar el valor aproximado de un dato no registrado. La primera parte, será
encontrar dicho polinomio de grado n = 1 (figura 3.1.3 b)), enseguida se
desarrollar de
manera 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.


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 una
recta. Consideremos el punto registrado (xi , yi ), el correspondiente valor de la ecuacion de
la recta para este valor de la abscisa es a1 xi + a0 . La problematica consiste en encontrar los
valores de a0 y a1 de tal manera que la distancia entre el valor de yi y a1 xi + a0 sea mı́nima.
El método de mı́nimos cuadrados consiste en determinar la mejor linea de aproximación,
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
siguiente diferencia sea mı́nima.
m
X
[yi − (a1 xi + a0 )]2 (3.1.1)
i=1

con {(xi , yi )}m


i=1 los puntos de datos a los que se desea realizar el ajuste.

Para que la ecuación 3.1.1 tenga un valor mı́nimo, debemos de tener que:

m
X m
X

0= ∂a0 [yi − (a1 xi − a0 )] = 2 (yi − a1 xi − a0 )(−1)
2

i=1 i=1

y
m
X m
X

0= ∂a1 [yi − (a1 xi + a0 )] = 2 (yi − a1 xi − a0 )(−xi )
2

i=1 i=1

Las ecuaciones anteriores se simplifican en las siguientes ecuaciones

m
X m
X
a0 m + a1 xi = yi
i=1 i=1

y
m
X m
X m
X
a0 xi + a1 x2i = xi yi
i=1 i=1 i=1

de donde, la solución al anterior sistema de ecuaciones con a0 y a1 con incognitas es:


3.2. Algoritmos de Ajuste de Curvas 46

m
X m
X m
X m
X
2
xi yi − xi yi xi
i=1 i=1 i=1 i=1
a0 (3.1.2)
= m m
X X
m( xi2 ) − ( xi )2
i=1 i=1

y
m
X m
X m
X
m xi yi − xi yi
i=1 i=1 i=1
a1 = m m (3.1.3)
X X
m( xi ) − (
2
xi )2
i=1 i=1

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.1


yi 1.84 1.96 2.21 2.45 2.94 3.18

Para realizar el ajuste respectivo, se sustituyen los valores directamente en las ecuaciones
3.1.2 y 3.1.3, teniéndose:

(14.17)(14.58)−(22.78)(8.9)
a0 6(14.17)−(8.9)2
= = 0.663
6(22.78)−(8.9)(14.58)
a1 6(14.17)−(8.9)2
= = 1.190

Por lo tanto y = a0 + a1 x = 0.663 + 1.190x es el polinomio que mejor se ajusta a


los puntos 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 tabla correspondientes a los valores de las ordenadas respectivas, por otro lado, si
deseamos conocer alguna aproximación de un valor no registrado, ahora podemos recurrir a
dicho polinomio, por ejemplo y(x = 1.4) = 2.329.

Enseguida, nuestro objetivo ser mostrar el ajuste de puntos a un polinomio de grado


n ≥ 1.
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 mostró el ajuste de puntos a una recta, sin embargo que sucede si
dichos puntos no se acoplan a una recta del todo bien, que sucede si en lugar de acoplarse a
una recta, se ajustan mejor a un polinomio de segundo grado, o a uno de tercero. La
figura
3.1.4 muestra el ajuste de puntos a un polinomio de grado 2. En está seccion se mostrarán
las 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 )}m


i=1 son los puntos que se desean ajustar a un polinomio de la
forma

Pn (x) = an xn + an−1 xn−1 + · · · + a1 x + a0

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

m
X
E= (yi − Pn (xi ))2 (3.1.4)
i=1
m
X m
X m
X
= yi2 −2 Pn (xi )yi + (Pn (xi ))2
i=1 i=1 i=1
m m n m n
X X X j
X X
= yi − 2
2
( aj xi )yi + ( aj xji )2
i=1 i=1 j=1 i=1 j=1

De igual manera al caso de la seccion anterior, para que la ecuación 3.1.4 tenga el mı́nimo
valor, se debe de cumplir que
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 a0is las incognitas)
y n + 1 ecuaciones. Se tiene que el sistema de ecuaciones 3.1.5 es equivalente al siguiente
sistema de ecuaciones:
m
X m
X m
X m
X m
X
a0 x0i + a1 x1i + a2 xi2 + · · · + an xni = yi xi0
i=1 i=1 i=1 i=1 i=1
m
X m
X m
X m
X m
X
a0 x1i + a1 xi2 + a2 xi3 + · · · + an xin+1 = yi xi1 (3.1.6)
i=1 i=1 i=1 i=1 i=1
m m m
··· m m
X X X X X
a0 xni + a1 xn+1
i + a2 xn+2
i + · · · + an xn+n
i = yi xin
i=1 i=1 i=1 i=1 i=1

m
Por tanto, para ajustar los puntos {(xi , yi )}i=1 a un polinomio de grado n < m − 1 se
debe 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 realizar
el ajuste de dichos puntos a un polinomio de grado 2. Para ello, se tienen que
encontrar constantes 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.58


8.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 + a1 x + a2 x2 =


0.5965 + 1.2553x − 0.0108x2 . X
49

Capı́tulo 4

Algoritmos para Derivacion e


Integración Numérica

El objetivo de esté capı́tulo es mostrar la derivación e integración de funciones por medio


de métodos numéricos. Únicamente se mostrarán las fórmulas sin el previo desarrollo que
conlleva a estas. Si se desea tener un estudio profundo de las fórmulas, se puede
revisar
[1]. Comenzaremos con la parte referente a la derivación seguida de integracion simple e
integración compuesta.

4.1 Algoritmos para Derivacion

Supongamos que se tiene una función f ∈ C n+1 (I ) con I un intervalo. Sea {x0 , x1 , . . . , xn }
una sucesion de n + 1 puntos distintos en I . La fórmula 4.1.1 recibe el nombre de formula
de (n+1) puntos para aproximar f 0 (xj ).
m
X f (n+1) (ε(xj )) m
0
f (xj ) = f (xk )L0k(xj ) + Πk=0,k=j (xj − xk ) (4.1.1)
(n + 1)!
k=0

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


m
X
De la ecuación 4.1.1 se concluye f (xk )L0k (xj ) es una aproximación al valor
que de
k=0
f 0 (x).

La figura 4.1.1 muestra la interpretacion gráfica que se tiene al usar la ecuaión 4.1.1 en el
caso que se consideren tres puntos. Obsérvese que el punto a encontrar la aproximación de
su derivada se encuentra en el medio de los otros dos puntos.
4.1. Algoritmos para Derivación 50

Figura 4.1.1: fórmula de tres puntos.

Existen dos casos especiales del uso de la ecuación 4.1.1, una de ellas se muestra en la
figura 4.1.1, donde se hace uso de la ecuación 4.1.1 para el caso de tres puntos; y la otra
cuando se consideran cinco puntos. Enseguida se muestran las fórmulas para el caso de
tres
y cinco puntos cuyas fórmulas se les conoce como formula de tres puntos y formula de cinco
puntos respectivamente. En el caso de la formula de tres puntos se muestran dos variantes.

formulas de tres puntos :

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

formula de cinco puntos :

f 0 (x0 ) ≈ 1
12h
[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.5811
1.6 1.6124
1.7 1.6431
1.8 1.6733
1.9 1.7029

1
Se tiene que f 0 (x) = 2(x+1) 0 0
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:


4.2. Algoritmos de Integración 51

fórmula 4.1.2 con h = 0.1: f 0 (1.7) = 2(0.1)1 [−3f (1.7) + 4f (1.8) − f (1.9)] = 0.3041
fórmula 4.1.3 con h = 0.1: f 0 (1.7) = 2(0.1)1 [f (1.8) − f (1.6)] = 0.3043

Formula de cinco puntos:

fórmula 4.1.4 con h = 0.1: f 0 (1.7) = 12(0.1)1 [f (1.5) − 8f (1.6) + 8f (1.8) − f (1.9)] = 0.3042. X

4.2 Algoritmos de Integración


Consideremos la figura 4.1.2. Supongamos que deseamos calcular el área bajo la curva de
la funcion f (x) dentro de un intervalo [a, b]. La solucion a esta problemática es bien conocida
y es mediante la integración de la funcion f con extremo inferior el valor de a y
extremo superior el valor de b. Sin embargo, en está seccion se resolverá el problema de
integrar una función f (x) sobre un intervalo [a, b] pero desde el punto de vista del análisis
numérico.

Figura 4.1.2: Integracion mediante fórmula cerrada de Newton-Cotes.

Consideremos nuevamente la figura 4.1.2. Supongamos que se desea calcular la integral


sobre el intervalo [a, b]. Para ello, primeramente hagamos una partición 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 particion, se pueden
está obtener
fórmulas para aproximar el valor de la integral. Puesto que se incluyen los
extremos del
intervalo [a, b] como elementos de la partición, las formulas concernientes al cálculo de la
integral bajo está situacion se les conoce como formulas cerradas de (n+1) puntos de Newton-
Cotes. Las fórmulas cerradas de Newton-Cotes para el caso n = 1, n = 2 y n = 3
reciben
un nombre en particular; dichas fórmulas se muestran enseguida.

n = 1: Regla del Trapecio:


R x1 h
x0 f (x)dx ≈ 2 [f (x0 ) + f (x1 )]
4.2. Algoritmos de Integración 52
4.2. Algoritmos de Integración 53

n = 2: Regla de Simpson :
R x2
x0 f (x)dx ≈ h3 [f (x0 ) + 4f (x1 ) + f (x2 )]

n = 3: Regla de tres octavos de Simpson :


R x3
x0 f (x)dx ≈ 8
3h
[f (x0 ) + 3f (x1 ) + 3f (x2 ) + f (x3 )]

La figura 4.1.3 muestra la regla del trapecio aplicada a una función f (x). Para este caso, la
partición únicamente cuenta con tres elementos de lo cuales dos son los extremos del intervalo
a integral, de est manera, se observa que si se desea realizar una mejor exactitud de dicha
integral, 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 el
número de elementos de la particion es a consideracion de quien hace uso de dichas fórmulas,
esto es, para obtener un mayor grado de precisi n considerando la regla del trapecio y la
regla 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 partición considerando que xi = a + ih con h = (b − a)/n (figura 4.1.2).

Figura 4.1.3: Fórmula del Trapecio.

Regla compuesta del Trapecio:


n−1
X
Rb
a
f (x)dx ≈ h2 [f (a) + 2 f (xj ) + f (b)]
j=1

Regla compuesta de Simpson :


(n/2)−1 n/2
Rb X X
a
f (x)dx ≈ h3 [f (a) +2 f (x2j ) + 4 f (x2j−1 ) + f (b)]
j=1 j=1
4.2. Algoritmos de Integración 54

Si en lugar de considerar los nodos x0 = a y xn = b de la partición como hasta ahora


lo hemos estado haciendo con las fórmulas cerradas de Newton-Cotes, ahora consideramos
la partición 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 los extremos del intervalo en la partición, estos se deben de anexar con una
numeracion acorde, teniéndose x−1 := a y xn+1 := b (figura 4.1.4).

Figura 4.1.3: Integracion mediante fórmula abierta de Newton-Cotes.

A las formulas de integración para el caso de está particion, se les conoce como formulas
abiertas de Newton-Cotes.

Formulas abiertas de Newton-Cotes para:

n = 0:
R x1
x−1 f (x)dx ≈ 2hf (x0 )

n=1
R x2
x−1 f (x)dx ≈ 3h
2 [f (x0 ) + f (x1 )]

n=2
R x3
x−1 f (x)dx ≈ 4h
3 [2f (x0 ) − f (x1 ) + 2f (x2 )]

R 0.5 2
Ejemplo 4.1.2 Se tiene que dx = 2ln|x − = 2[ln(3.5) − ln(4)] =
0 −0.2670.
0.5
4|| 0 x−4
Resolviendo la integral mediante las formulas de Newton-Cotes cerradas abiertas, se obtiene:

Fórmulas cerradas de Newton-Cotes:

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


4.2. Algoritmos de Integración 55

R 0.5 2 0.5
0 x−4 dx = 2
[f (0) + f (0.5)] = −0.2678

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


R 0.5 2 0.25
0 x−4 dx = 3
[f (0) + 4f (0.25) + f (0.5)] = −0.2670

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


R 0.5 2 3(0.1666)
0 x−4 dx = 8
[f (0) + 3f (0.1666) + 3f (0.333) + f (0.5)] = −0.2669

Fórmulas abiertas de Newton-Cotes para:

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


R 0.5 2
0 x−4
dx = 2(0.25)f (0.25) = −0.2666

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


R 0.5 2 3(0.1666)
0 x−4 dx = 2
[f (0.1666) + f (0.3333)] = −0.2667

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


R 0.5 2 4(0.125)
0 x−4 dx = 3
[2f (0.125) − f (0.25) + 2f (0.375)] = −0.2670. X
55

Capı́tulo 5

Algoritmos Numéricos Utilizados en


Algebra Lineal

En este capı́tulo se muestran algoritmos para resolver sistemas de ecuaciones lineales de


la forma:
a11 x1 + a12 x2 + · · · + a1n xn = b1 (5.1)
a21 x1 + a22 x2 + · · · + a2n xn = b2
···
an1 x1 + an2 x2 + · · · + ann xn = bn

donde las aij son coeficientes y las xi son las incógnitas. Dado un conjunto de ecuaciones
como en 5.1, con coeficientes dados, se desea encontrar los valores de los x0is tales que cumplan
el sistema de ecuaciones.

5.1 Eliminación Gaussiana con Sustitucion hacia Atrás


Sea Ej la representación de la ecuacion j del sistema de ecuaciones 5.1, esto es:

Ej : aj1 x1 + aj2 x2 + · · · + ajn xn = bj ,

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

1. Si c ∈ R − {0} es una constante, entonces cEj multiplica toda la ecuación j por c. Está
nueva ecuación se sustituye por Ej . Esta operación se denota mediante cEj → Ej .

2. La operación Ei + cEj → Ei significa que la ecuación j se multiplica por la constante


c y se suma con la ecuación i sustituyendo esta ultima ecuación por el resultado de lo
anterior.
5.1. Eliminación Gaussiana con Sustitución hacia Atrás 56

3. La opreación Ei ↔ Ej significa que las ecuaciones i y j se intercambian de posición.

Para representar un sistema de ecuaciones, a menuda suele utilizarse su representación


matricial sobre el conjunto de coeficientes. Consideremos el sistema de ecuaciones 5.1. Sean

a11 a12 · · · a1n


a21 a22 · · · a2n
A=
. . .
an1 an2 · · · ann
y
b1

b2
b=

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

a11 a12 · · · a1n . b1


a21 a22 · · · a2n .. b2
[A, b] = . . . . .
. . . . .
an1 an2 · · · ann .. bn

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


renglón 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. Está
nueva ecuación se sustituye por Rj . Esta operación se denota mediante cRj → Rj .
2. La operación Ri + cRj → Ri significa que la fila j se multiplica por la constante c y se
suma con la fila i sustituyendo esta ultima fila por el resultado de lo anterior.
3. La opreación Ri ↔ Rj significa que las filas i y j se intercambian de posición.

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:

a11 a12 · · · a1n . a1,n+1

[A, b] ≡ 0 a22 · · · a 2n .. 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:
5.1. Eliminación Gaussiana con Sustitución hacia Atrás 57

a11 x1 + a12 x2 + · · · + a1n xn = a1,n+1


a22 x2 + · · · + a2n xn = a2,n+1
···
ann xn = an,n+1

de donde
an,n+1
xn = ann
,
an−1,n+1 −an−1,n xn
xn−1 = an−1,n−1

y en general
ai,n+1 −ai,n xn −···−ai,i+1 xi+1
xi = aii

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

Al método anterior para la solución del sistema de ecuaciones, se le conoce como elimi-
nacion gaussiana con sustitución hacia atras.

Ejemplo 5.1.1 Resolver el sistema de ecuaciones

x1 + 2x2 + 3x3 = 1
4x1 + 5x2 + 6x3 = −2
7x1 + 8x2 + 10x3 = 5

utilizando el método de eliminación gaussiana con sustitución hacia atrás.

La matriz aumentada del sistema es:

1 2 3 . 1

[A, b] = 4 5 6 .. −2
7 8 10 .
5
el cual, mediante operaciones fundamentales, es equivalente a la matriz

1 2 3 .
1

[A, b] ≡ 0 1 2 .. 2

0 0 1 .
10
1−3x3 −2x2
de donde, x3 = 10/1 = 10, x2 = 2−2x3
1
= 2 − 2(10) = −18 y x1 = 1
= 1 − 3(10) −
2(−18) = 7. X
5.2. Algoritmos Basados en Técnicas Iterativas 58

5.2 Algoritmos Basados en Técnicas Iterativas

En está sección se mostraran métodos iterativos para la resolución 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

Definición 5.2.1 Dado un vector x ∈ Rn , una norma en Rn es una función k • k : Rn → R


tal que:
1. kxk ≥ 0 para cada x ∈ Rn .
2. kxk = 0 si y sólo si x = 0.
3. kcxk = ckxk para toda c ∈ R y x ∈ Rn .
4. kx + yk ≤ kxk + kyk para todo x, y ∈ Rn .

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


n
X
kxk2 = [ xi2 ]1/2 y kxk∞ = max1≤i≤n |xi |
i=1

son normas sobre Rn .

A las normas k • k2 y k • k∞ de la proposici n anterior se les conoce como norma euclideana


y norma infinito respectivamente.

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

Definición 5.2.2 Sean x y y dos vectores en Rn . Una distancia d en Rn es una función


d : Rn × Rn → R tal que
1. d(x, y) ≥ 0.
2. d(x, y) = d(y, x).
3. d(x, y) = 0 si y sólo 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:

Proposición 5.2.2 Si k • k es una norma en Rn , entonces la funcion d : Rn × Rn


→ R
definida como
5.2. Algoritmos Basados en Técnicas Iterativas 59

d(x, y) = kx − yk

es una distancia.

Definición 5.2.3 Sea An el conjunto de todas las matrices cuadradas de tamaño n × n. Una
norma sobre An , es una función k • k : An → R tal que para cada A ∈ An :

1. kAk ≥ 0.

2. kAk = 0 si y sólo si A es la matriz cero de tamaño n × n.

3. kcAk = |c|kAk

4. kA + Bk ≤ kAk + kBk

5. kABk ≤ kAkkBk

Enseguida se presentan los algoritmos iterativos de Jacobi y de Gauss-Seidel que manejan


la 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 la respectiva ecuación Ei obteniendo el siguiente sistema de ecuaciones equivalente:

x1 = aa11
12
x2 + · · · + aa1n11
xn + ab111 (5.2)
x2 = aa22
21
x1 + · · · + aa2n 22
xn + ab22
2

···
a an,n−1 bn
xn =
an1
x1 +
n2
x2 + · · · xn−1 +
ann ann ann ann

enseguida se propone una posible solucion al sistema de ecuaciones como en 5.2. Sea x0 =
(x0 , x0 , . . . , x0 ) una propuesta de solución. Ahora se sustituyen los valores de x0
en1 la2 n
ecuación 5.2 obteniendo un nuevo vector de soluciones x1 = (x11 , x21 , . . . , xn1 ) a partir de x0
de la siguiente manera:

a12 a b1
x11
0
= x + · · · + 0a1n11 xn +
a11 2 a11
a21 a b2
x12
0
= a22 x1 + · · · + 0a2n22 xn + a22
···
a n,n−1
01
x an1 a n2 bn
n = ann x1 + 0ann x2 + · · · 0 ann xn−1 + ann

Enseguida se sustituyen los valores del vector x1 en la anterior ecuacion para obtener un
nuevo vector de soluciones x2 de la siguiente manera
5.2. Algoritmos Basados en Técnicas Iterativas 60

a12 a b1
x21
1
= x + · · · + 1a1n11 xn +
a11 2 a11
a21 a b2
x22
1
= a22 x1+ · · · + 1a2n22 xn + a22
···
a n,n−1
12
x an1 a n2 bn
n = ann x1 + 1ann x2 + · · · 1 ann xn−1 + ann

kx k −xk−1 k
y ası́ sucesivamente hasta que kxk k
< T OL para alguna k y para alguna tolerancia T OL
asignada previamente.

Ejemplo 5.2.2 Consideremos el siguiente sistema de ecuaciones

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

de aquı́, despejamos cada variable xi de la ecuación Ei para obtener una ecuación de la forma
5.2

x1 = 41 x2 − 41 x3 + 47
x2 = 21 x1 + 81 x3 + 21
8
x3 = 52 x1 − 51 x2 + 3

Proponemos un vector de solución. Por ejemplo, sea x0 = (1, 2, 2), sustituimos


en la
ecuación anterior para obtener un vector de solución x1 = (x11 , x21 , x31 ) con

01 1 1 0 7
1 = 4 x2 − 4 x3 + 4
x = 1.75
01 1 1 0 21
x2 = 2 x1 + 8 x3 + 8 = 3.375
1 20 0 1
3 = 5 x1 − 5 x2 + 3
x = 3.00

Nuestro nuevo vector de soluciones es x1 = (1.75, 3.375, 3.00), enseguida se


repite el procedimiento anterior tomando ahora en cuenta el nuevo vector solucion x1 para
obtener
un nuevo vector solución x2 . La siguiente tabla muestra la sucesion de vectores
solucion
{xk k=1
19
que es donde se estabiliza la solución.
}
5.2. Algoritmos Basados en Técnicas Iterativas 61

k x1k x2k x3k


0 1.0 2.0 2.0
1 1.75 3.375 3.0
2 1.84375 3.875 3.025
3 1.9625 3.925 2.9625
4 1.99062500 3.97656250 3.00000000
5 1.99414063 3.99531250 3.00093750
.. .. .. ..
15 1.99999993 3.99999985 2.99999993
.. .. .. ..
19 2.00000000 4.00000000 3.00000000

de donde el vector solución 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 = aa11
12
x2 + · · · + aa1n
11
xn + ab111 (5.2)
x2 = aa22
21
x1 + · · · + aa2n
22
xn + ab22
2

···
an2 an,n−1 bn
xn =
a
xn−1 +
ann x1 + ann x2 + · · · ann
n1
ann

Nuevamente se propone un vector solución x0 = (x0 , x0 , . . . , x0 ) y se sustituye


en la 1 2 n
primera ecuación del anterior sistema de ecuaciones, aquella donde, se encuentra despejada
la variable x11

01 a12 a b1
x 1 = a11 x2 + · · · + 0a1n11 xn + a11

enseguida se actualiza el vector x0 teniendo como primera entrada x11 de la operacion anterior,
esto es, x0 = (x11 , x20 , . . . , xn0 ), se sustituyen los valores necesarios para encontrar el valor de
x12 del sistema de ecuaciones, esto es, se tome el valor de la ecuación anterior,
donde se
encuentra despejada la variable x12, esto es:
a21 a b2
x12
1
= a22 x1 + · · · + 0a2n22 xn + a22

actualizamos las entradas del vector x0 , teniéndose x0 = (x11 , x21 , x30 , . . . , xn0 ), se sigue con el
procedimiento anterior hasta que se hayan obtenido todas las entradas del vector de solución
correspondiente x1 . Después, se toma a x1 como vector solución y se repite el
proceso
5.2. Algoritmos Basados en Técnicas Iterativas 62

anterior para encontrar el valor del vector de solución x2 y ası́ sucesivamente


hasta que
kxk −xk −1
k kxk k < T OL para alguna k y para alguna tolerancia T OL 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 ecuación Ei

x1 = 41 x2 − 41 x3 + 47
x2 = 21 x1 + 81 x3 + 21
8
x3 = 52 x1 − 51 x2 + 3

proponemos nuevamente el vector solucion x0 = (1, 2, 2). Sustituimos los valores respectivos
en la primera ecuación para obtener
1 1 7
x11
0 = 4 x2 − 4 x30+ 4
= 1.75,

actualizamos nuestro vector x0 = (1.75, 2, 2) y sustituimos en la ecuación dos de


nuestro sistema de ecuaciones obteniendo

x21 = 21x1 1+ 81x3 0+ 21


8
= 3.75

se actualiza nuevamente el vector solucion, teniendo x0 = (1.75, 3.75, 2) y


finalmente se
sustituyen los valores respectivos en la tercera ecuacion para obtener
1 21 1 1
3 = 5 x1 − 5 x2 + 3 = 2.95
x

en este momento todas las entradas del vector solución forman parte del vector de solcuión
x1 , esto es x0 = (1.75, 3.75, 2.95). Se continua con el mismo procedimiento para obtener las
entradas del vector solucion x2 y ası́ sucesivamente.La siguiente tabla muestra la sucesión
de vectores solucion {xk }10k=1 que es donde se estabiliza la solución.

k x1k x2k x3k


0 1.0 2.0 2.0
1 1.75 3.37 2.95
2 1.95 3.96875 2.98625
3 1.995625 3.999609375 2.99903125
.. .. .. ..
8 1.99999983 3.99999988 2.99999996
9 1.99999998 3.99999999 3.00000000
10 2.00000000 4.00000000 3.00000000

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


63

Capı́tulo 6

Algoritmos para dar Solución


Numérica a Ecuaciones Diferenciales
Ordinarias

En lo que sigue, se muestran algoritmos para la resolucón de ecuaciones


diferenciales ordinarias por medio de ecuaciones diferenciales. Para ello,
consideramos el problema de encontrar una solucion al problema de valor inicial
dy
dt
= f (t, y), con a ≤ t ≤ b y y(a) = α

6.1 Algoritmos por Métodos de Taylor

6.1.1 Método de Euler

Supongamos que se tiene el problema con valor inicial

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

en n números uniformemente espaciados en el intervalo [a, b]. Para resolver el anterior sistema
de ecuaciones, tomemos los valores

h = (b − a)/n
t0 = a
w0 =
α
6.1. Algoritmos por Métodos de Taylor 64

Puesto que el problema se dividió en n puntos uniformemente espaciados en el intervalo


[a, b], debemos calcular una pareja de puntos (ti , wi ) para cada punto de la partición. Para
esto, 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 método de Euler para aproximar soluciones del siguiente problema
de valor inicial

y 0 = 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 que


t0 = a = 2 y w0 = α = 1; y ti = a+hi, wi = w−i 1 +hfi−1 (t , wi−1 ) = wi−1 +h(1+(t i−1 −w i−1)2 )
para i = 1, 2. La siguiente tabla muestra los valores de las parejas (ti , wi )

ti wi
2 1
2.5 2
3 2.625

6.1.2 Método de Taylor de Orden N

Nuevamente se tiene el problema con valor inicial

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

en n números uniformemente espaciados en el intervalo [a, b]. Para cada i, ti se calcula de


igual manera que en el método de Euler. Los valores wi se calculan de la siguiente manera

w0 = α
wi+1 = wi + hT N (ti , wi ) para i = 0, 1, . . . , n − 1 y
n−1
T N (ti , wi ) = f (ti , wi ) + h2 f 0 (ti , wi ) + · · · + h n! f n−1 (t i, w i)
6.2. Algoritmo de Runge-Kutta 65

Ejemplo 6.1.2 Apliquemos el método de Taylor de orden dos para resolver el problema de
valor inicial del ejercicio 6.1.1.

Se tiene que t0 = 2 y w0 = 1. Luego T N =2 (t0 , w0 ) = f (t0 , w0 ) +2 h f 0 (t0 , w0 ) = 1 + (t0 − w0 )2 +


h
2
(2(t − y)(1 − y 0 )) = 1 + (t0 − w0 )2 + h2 (2(t − y)(1 − (1 + (t0 − w0 )2 ))). Sustituyendo se tiene
que T 2 (t0 , w0 ) = T 2 (2, 1) = 1.5, sustituyendo en el respectivo valor para w1 , se tiene que
w1 = 1.75. La siguiente tabla muestra la pareja de valores (ti , wi )

ti wi
2 1
2.5 1.75
3 2.425

6.2 Algoritmo de Runge-Kutta

6.2.1 Algoritmo de Runge-Kutta

Para resolver el problema con valor inicial

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

con el método de Runge-Kutta de orden 2 y orden 4, se divide el intervalo [a, b] en n números


uniformemente espaciados. Hay dos variantes para el método de Runge-Kutta de orden
2, uno de los cuales es conocido como método modificado de Euler y el otro como método
de Heun. Las formulas son muy parecidas a las de la sección anterior, de está manera
solo se presentarán las fórmulas de los métodos.

Para el método modificado de Euler (Runge-Kutta de orden 2) se tienen las siguientes


fórmulas

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

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


6.2. Algoritmo de Runge-Kutta 66

w0 =
α
wi+1 = wi + 4h [f (ti , wi + 3f (ti + 32 h, wi + 32 hf (ti , wi )))] para i = 0, 1, . . . , n − 1

Finalmente se muestran las fórmulas para el métod de Runge-Kutta de orden cuatro.

w0 =
α
k1 = hf (ti , wi )
k2 = hf (ti + 2h , wi + 21 k1 )
k3 = hf (ti + 2h , wi + 21 k2 )
k4 = hf (ti+1 , wi + k3 )
wi+1 = wi + 61 (k1 + 2k2 + 2k3 + k4 ) para i = 0, 1, . . . , n − 1.
67

Bibliografı́a

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


edición. 2002.

[2] Steven C. Chapra y Raymond P. Canale. Métodods Numéricos para Ingenieros.


Mc Graw Hill. Quinta edición. 2007.

[3] Curtis F. Gerald y patrick O. Wheatley. Analisis Numérico con


Aplicaciones.
Pearson Education. Sexta edicion. México 2000.

[4] A. Nieves y F. Dominguez. Métodos Numéricos Aplicados a la Ingenierı́a. CECSA.


México.

[5] William Stallings. Organizacion y Arquitectura de Computadores. Diseño para Op-


timizar Prestaciones. Prentice Hall. Madrid 2000.

You might also like