Você está na página 1de 128

APUNTES DE MTODOS NUMRICOS

Ing. Arturo J. Lpez Garca


2011
3
Contenido
pgina
1. Errores 5
1.1 Sistemas numricos de punto flotante 5
1.2 Sistemas de punto flotante de computadoras reales 7
1.3 Algoritmos estables e inestables 14
2. Solucin de ecuaciones no lineales 15
2.1 Mtodo iterativo de punto fijo 15
2.2 Aceleracin de la convergencia 20
2.3 Mtodo de Newton-Raphson 22
2.4 Mtodo de la secante 24
2.5 Mtodo de la biseccin 27
2.6 Orden de convergencia 31
3. Solucin de sistemas de ecuaciones lineales 33
3.1 Eliminacin de Gauss 34
3.2 Pivoteo mximo de columna 38
3.3 Descomposicin LU 41
3.4 Solucin de sistemas tridiagonales 50
3.5 Mtodos iterativos: Jacobi y Gauss Seidel 54
4. Solucin de sistemas de ecuaciones no lineales 63
4.1 Mtodo de punto fijo multivariable 63
4.2 Mtodo de Newton Raphson multivariable 67
4.3 Mtodo de Broyden 72
5. Optimizacin
5.1 Bsqueda unidimensional con seccin dorada
5.2 Optimizacin sin restricciones de funciones multivariables
6. Aproximacin e interpolacin 101
6.1 Interpolacin de Lagrange 102
6.2 Interpolacin mediante splines 107
6.3 Interpolacin inversa 115
4
6.4 Aproximacin discreta de mnimos cuadrados 115
6.5 Regresin lineal mltiple 119
7. Derivacin e integracin numrica
7.1 Derivacin con polinomios de Lagrange 123
7.2 Frmulas de (n + 1) puntos
5
1. Errores
El resolver problemas numricos mediante una computadora implica la presencia de dos tipos de
errores: truncamiento y redondeo.
Los errores de truncamiento tienen que ver con el mtodo matemtico empleado en la solucin
del problema. Un ejemplo clsico es la aproximacin de la funcin exponencial mediante un
polinomio de Taylor. Esta funcin se define con la serie McLaurin:
Dado que no es factible calcular un nmero infinito de sumandos, es necesario entonces
aproximar e a travs de un polinomio de un grado conocido. En una decisin de este tipo se
x
introduce un error de truncamiento, el cual siempre es una funcin exclusiva del mtodo
empleado. Por ejemplo, si el polinomio de Taylor es de tercer grado

entonces el error de truncamiento estar dado por la suma de todos los trminos no incluidos en
la aproximacin.
Los errores de redondeo aparecen al ejecutar operaciones aritmticas con una computadora. Dado
que los valores numricos no pueden ser representados en la memoria de una computadora con
un nmero infinito de cifras, los errores de redondeo son inevitables. Para poder entender como
se generan y se propagan este tipo de errores es necesario conocer la manera en que los valores
numricos son representados dentro de una computadora, es decir, su sistema numrico de punto
flotante.
1.1 Sistemas numricos de punto flotante
Dentro de la memoria de una computadora los valores numricos son representados mediante
aproximaciones conocidas como de punto flotante (floating point). La forma general de este tipo
de representaciones es:
1 2 3 p
. d d d ....... d * B
e
1 2 3 p
en la cual los p dgitos d d d ....... d son la mantisa del nmero, B la base y e el exponente. Si
1
d 0 entonces se trata de una representacin normalizada. Cuando la base es binaria (B = 2) y la
1
representacin normalizada, entonces d siempre ser un 1 y frecuentemente no se ocupa un bit
6
para almacenarlo (bit escondido). El nmero de dgitos p de la mantisa es conocido como
precisin.
Suponiendo una base B = 10 y una precisin de cinco dgitos (p = 5), los siguientes son ejemplos

de notacin normalizada:
Nmero Representacin
normalizada de
punto flotante
27.39 .27390X10
2
-.000124 -.12400X10
-3
370285 .37029X10
6
3.141592 .31416X10
1
.66666667 .66667X10
0
Supngase un sistema normalizado muy simplificado con base binaria, bit escondido, una
precisin p de dos dgitos y un exponente e tal que -2 # e # 3. En este sistema los nmeros
posibles son:
2 2
.10 * 2 = 1/8 .11 * 2 = 3/16
-2 -2
2 2
.10 * 2 = 1/4 .11 * 2 = 3/8
-1 -1
2 2
.10 * 2 = 1/2 .11 * 2 = 3/4
0 0
2 2
.10 * 2 = 1 .11 * 2 = 3/2
1 0
2 2
.10 * 2 = 2 .11 * 2 = 3
2 2
2 2
.10 * 2 = 4 .11 * 2 = 6
3 3
El cero (0) tambin se incluye en el sistema no obstante que por definicin es una cantidad no
normalizada.
Considere la siguiente grfica que muestra los valores positivos arriba mostrados
7
Este sistema simplificado se puede utilizar para obtener algunas conclusiones vlidas para
cualquier sistema de punto flotante:
1.- El nmero de valores que pueden ser representados es finito.
2.- La existencia de huecos y discontinuidades. Por ejemplo, en nuestro sistema simplificado, el
valor 0.90 no tiene una representacin exacta por lo que ser aproximado por el nmero ms
cercano; 1.0.
3.- Los nmeros de punto flotante no estn uniformemente espaciados. La distancia entre
nmeros es ms pequea cerca del cero y ms grande cerca del mayor valor posible.
La distancia entre 1.0 y el siguiente valor mayor que 1.0 se conoce como el psilon del sistema
de punto flotante y es una medida de la exactitud del mismo. Para el sistema simplificado del
ejemplo de arriba, psilon es igual a .
En un sistema de punto flotante es posible que se generen algunos errores al tratar de representar
ciertas cantidades. Sean N es el valor por representar, Nmax el nmero positivo ms grande y
Nmin el nmero positivo ms pequeo entonces la tabla mostrada a continuacin muestra esos
errores.
Condicin Error
N > Nmax Desbordamiento positivo
(positive overflow)
N < -Nmax Desbordamiento negativo
(negative underflow)
0 < N < Nmin Subdesbordamiento positivo
(positive underflow)
-Nmin < N < 0 Subdesbordamiento negativo
(negative underflow)
Para el sistema simplificado del ejemplo; Nmax = 6 y Nmin = 1/8.
1.2 Sistemas de punto flotante de computadoras reales
8
Antes de 1985 cada fabricante de computadoras diseaba sus propios sistemas de punto flotante.
Esta situacin tena el inconveniente de que potencialmente un mismo programa pidiera generar
resultados diferentes en distintas arquitecturas. Para evitar esta situacin, el Instituto de
Ingenieros Electricistas y Electrnicos, cuyas siglas en ingls son IEEE, defini un estndar para
representaciones de punto flotante y resultados computacionales conocido como IEEE Std 754-
1985. A partir de 1985 los fabricantes de computadoras estn obligados a cumplir por lo menos
con las disposiciones de este estndar asegurando entonces la consistencia de los programas.
Las representaciones de punto flotante de simple y doble precisin segn IEEE Std 754-1985
son:
precisin simple
longitud de palabra de 32 bits
mantisa de 24 dgitos (23 ms un dgito escondido)
exponente de 8 bits
signo de 1 bit
nmero positivo ms grande: 1.701X10
38
nmero positivo ms pequeo: 1.1755X10
-38
precisin en dgitos decimales: 7
exponente mantisa
3130 2322 0
precisin doble
longitud de palabra de 64 bits
mantisa de 53 bits (52 ms un dgito escondido)
exponente de 11 bits
signo de 1 bit
nmero positivo ms grande: 8.988X10
307
nmero positivo ms pequeo: 2.225X10
-308
precisin en dgitos decimales:16
exponente mantisa
63 5251 0
En ambos casos la base es binaria (B = 2). No es necesario usar en bit adicional para el signo del
exponente ya que a este se le agrega una constante conocida como valor de sesgo. Por lo tanto el
valor real del exponente ser el representado menos el valor de sesgo. En precisin simple el
valor de sesgo es 127 y en precisin doble es 1023 .
La representacin de resultados computacionales es:
9
0.0
000.... 000 000.... 000
Inf ( 4)
111.... 111 000.... 000
NaN (Not a Number: resultado de una operacin numrica invlida)
111.... 111 diferente de 0
Como referencia, una tabla con el resumen de distintos sistemas numricos de punto flotante.
Sistema Longitud
total, en
bits
Bits en
la
mantisa
Bits en el
exponente
Base Exponente
mximo
Exponente
mnimo
Nmero
positivo ms
grande
Nmero
positivo ms
pequeo
Precisin,
en
dgitos
decimales
IEEE SP 32 23* 8 2 127 -126 1.701E38 1.1755E-38 7
IEEE DP 64 52* 11 2 1023 -1022 8.988E307 2.225E-308 16
Cray SP 64 48 14 2 8190 -8189 .273E2466 .367E-2465 15
Cray DP 128 96 14 2 8189 -8188 .273E2466 .367E-2465 30
VAX SP 32 23 8 2 127 -127 1.701E38 5.877E-39 7
VAX DP-1 64 55 8 2 127 -127 1.701E38 5.877E-39 16
VAX DP-2 64 52 11 2 1023 -1023 8.988E307 1.123E-308 15
IBM SP 32 24 7 16 63 -64 7.237E75 8.636E-78 7
IBM DP 64 56 7 16 63 -64 7.237E75 8.636E-78 16
HP 49G 16 12 3 10 499 -499 9.999E499 9.999E-499 12
Voyage 200 18 14 3 10 999 -999 9.999E999 9.999E-999 14
* ms el dgito escondido
Dado que la longitud de palabra de una computadora no es infinita, la representacin de punto
flotante implica una aproximacin y por lo tanto un error. Este tipo de error se conoce como de
redondeo y est presente siempre que se usa una calculadora o una computadora para realizar
clculos aritmticos. Las excepciones a esta regla ocurren cuando el nmero es una potencia
entera de la base empleada.
Al sumar, restar, multiplicar o dividir aproximaciones de punto flotante se generan errores
10
adicionales. Para mostrar esto, considere los tres siguientes ejercicios en los cuales se supone un
sistema de punto flotante de base decimal (B = 10), cuatro dgitos en la mantisa (p = 4) y un
exponente e que puede tomar valores en el intervalo -9 # e # 9.
Ejercicio
Suponga que a = 1/3 y b = 7/5. Calcule los errores absoluto y relativo para las siguientes
operaciones:
1.- a + b
2.- b - a
3.- a b
4.- b a
Las aproximaciones de punto flotante para a y b son, respectivamente, a* = .3333X10 y b* =
0
.1400X10 .
1
1.- Para sumar o restar dos aproximaciones de punto flotante es necesario que ambas tengan el
miso exponente. Para determinar a* + b* , al segundo operando se le aplica un corrimiento de un
dgito en la mantisa asegurando as que las dos representaciones tengan momentneamente el
mismo exponente:

.3333X10
0
+ 1.4000 X10
0
----------------
1.7333X10
0
El resultado se expresa tambin como una representacin de punto flotante .1733X10
1
error absoluto = | valor exacto - valor aproximado | = | 26/15 - .1733X10 | = | 26/15 - 1733/1000|
1
error absoluto = |1/3000| = 1/3000 | .00033
error relativo = error absoluto/| valor exacto| = (1/3000)/|(26/15)| = 1/5200 .00019
2.- En el clculo de b* - a* ahora el corrimiento es aplicado al sustraendo a*:
.1400 X10
1
- .0333 X10
1
--------------
.1067 X10
1
error absoluto = | 16/15 - 1067/1000 | = 1/3000 .00033
error relativo = (1/3000)/| (16/15)| = 1/3200 .00031
11
3.- En el producto de aproximaciones de punto flotante las mantisas se multiplican y los
exponentes se suman
.3333X10
0
.1400X10
1
----------------------
0000
0000
13332
3333
-----------------------
.04666200X10
1
En este caso el resultado es expresado com .4666X10 .
0
error absoluto = | 7/15 - 4666/10000 | = 1/15000 .00007
error relativo = (1/150000)/|(7/15)| = 1/7000 .00014
4.- En b* a* las mantisas se dividen y los exponentes se restan:
.42004 X10
1
----------------------
.3333X10 | .140000000X10
0 1
13332
---------
6680
6666
------
14000
13332
--------
668
El resultado es la aproximacin .4200X10 .
1
error absoluto = | 21/5 - 4200/1000 | = 0
error relativo = 0/|(21/5)| = 0
Ejercicio
12
Considere u = 3785.7 y v=3785.3. Determine los errores absoluto y relativo correspondientes a la
operacin u - v.
Las aproximaciones de punto flotante son:
u* = .3786X10
4
v* = .3785X10
4
.3786X10
4
- .3785X10
4
-------------
.0001X10 = .1000X10
4 1
La sustraccin de dos nmeros casi iguales implica una prdida de dgitos significativos.
error absoluto = | .4 - .1000X10 | = | .4 - 1 | = | 4/10 - 10/10 | = 6/10 = .6000
1
error relativo = (6/10) / |(4/10)| = 3/2 = 1.5
Al restar dos cantidades casi iguales se obtienen errores absolutos y relativos grandes.
Ejercicio
Considere u = 27.14 y v = .000006 . Determine los errores absoluto y relativo que resultan de la
operacin uv.
Las aproximaciones de punto flotante son:
u* = .2714X10
2
v* = .6000X10
-5

.45233X10
7
-----------------------------
.6000X10 | .27140000X10
-5 2
24000
----------
31400
30000
-----------
14000
12000
-----------
20000
18000
-----------
20000
13
18000
---------
2000
El resultado es la aproximacin .4523X10 . El valor exacto de u v es
7
u v = (2714/100) / (6/1000000) = 13570000/3
Por lo tanto los errores absoluto y relativo quedan
error absoluto = | 13570000/3 - 4523000 | = 1000/3 333.33333
error relativo = (1000/3) / | 13570000/3 | = 1/13570 .00007
El dividir entre nmeros muy pequeos implica errores absolutos grandes con errores relativos
pequeos.
1.3 Algoritmos estables e inestables
Suponga que un error e es introducido en algn paso de un algoritmo y que el error despus de n
n
operaciones subsecuentes es E .
n
Si | E | . C n e donde C es una constante independiente de n,
se dice que el crecimiento de error es lineal y que al algoritmo
es estable.
n
Si | E | . k e para alguna constante k > 1, se dice que el
n
crecimiento de error es exponencial y que al algoritmo es
inestable.
La siguiente grfica muestra ambos crecimiento de errores



14
15
2. Solucin de ecuaciones no lineales
Se trata de encontrar un valor x que cumple la igualdad f(x) = 0. Este valor se conoce como un
cero o una raz de f(x).
2.1 Mtodo iterativo de punto fijo
Dada una funcin g(x) , un valor x tal que x = g(x) es llamado un punto fijo de g.
Una ecuacin no lineal f(x) = 0 puede ser transformada mediante operaciones algebraicas en una
funcin x = g(x) de tal manera que un punto fijo de g(x) sea tambin una raz de f(x). Por
ejemplo, considere a f(x) = x - x -2 = 0; cualquiera de las posibilidades
2

es una funcin cuyo punto fijo es una solucin de f(x) = 0.
El primer paso de un procedimiento que puede encontrar un punto fijo de g(x) consiste en
proponer una estimacin inicial x , evaluar g(x) en x para obtener una nueva aproximacin
(0) (0)
x , es decir, x = g(x ). La siguiente aproximacin se calcula mediante x = g(x ) y de esta
(1) (1) (0) (2) (1)
forma se van generando aproximaciones x , x , x , x , .... . El proceso definido por x =
(3) (4) (5) (6) (k+1)
g(x ) se da por terminado cuando se cumple alguno de los siguientes criterios de convergencia
(k)
para las dos ltimas iteraciones:
1.- *x - x * <
(k+1) (k)
2.- *x - x * / *x * <
(k+1) (k) (k+1)
3.- f(*x *) <
(k+1)
y entonces se considera que x es un punto fijo aproximado de g(x) y se dice que el proceso
(k+1)
alcanz la convergencia. La tolerancia es fijada antes de iniciar el clculo de las iteraciones.
Este procedimiento es conocido como el mtodo de punto fijo o de iteracin funcional.
16
Geomtricamente un punto fijo de g(x) es la interseccin de la recta y = x con la curva
y = g(x). La siguiente figura muestra las grficas de las cuatro funciones g(x) indicadas arriba y
el comportamiento del mtodo de punto fijo para cada una de ellas.
Ejemplo
Encuentre una raz aproximada de f(x) = x - x - 2 = 0 con el mtodo de punto fijo. Use las
2
funciones g(x) descritas anteriormente. En todos los casos, inicie con x = 1.5 y considere un
(0)
criterio de convergencia *x - x * < 1X10 con un mximo de 20 iteraciones.
(k+1) (k) -4
g(x) = x - 2
2
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 0.25000 1.25000
2 -1.93750 2.18750
17
3 1.75391 3.69141
4 1.07619 0.67772
5 -0.84182 1.91801
6 -1.29134 0.44952
7 -0.33245 0.95889
8 -1.88948 1.55703
9 1.57013 3.45960
10 .46530 1.10483
11 -1.78350 2.24880
12 1.18087 2.96437
13 -0.60555 1.78642
14 -1.63331 1.02776
15 .66770 2.30101
16 -1.55417 2.22188
17 0.41545 1.96962
18 -1.82740 2.24585
19 1.33939 3.16679
20 -0.20603 1.54542
g(x) = %(x + 2)
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 1.87083 0.37083
2 1.96744 0.09661
3 1.99184 0.02440
4 1.99796 0.00612
18
5 1.99949 0.00153
6 1.99987 0.00038
7 1.99997 0.00010
g(x) = 1 + 2/x
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 2.33333 0.83333
2 1.85714 0.47619
3 2.07692 0.21978
4 1.96296 0.11396
5 2.01887 0.05590
6 1.99065 0.02821
7 2.00469 0.01404
8 1.99766 0.00704
9 2.00117 0.00351
10 1.99941 0.00176
11 2.00029 0.00088
12 1.99985 0.00044
13 2.00007 0.00022
14 1.99996 0.00011
15 2.00002 0.00005
g(x) = (x +2)/(2x -1)
2
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 2.12500 0.62500
El lenguaje de pseudocdigo empleado est basado en el propuesto por Guillermo
1
Levine G., en su libro Computacin y Programacin Moderna, Pearson Educacin,
Mxico2001.
19
2 2.00481 0.12019
3 2.00001 0.00480
4 2.00000 7.68X10
-6
La condicin suficiente pero no necesaria que garantiza la convergencia del mtodo de punto fijo
est dada por el teorema:
Si g(x) y gN(x) son continuas en un intervalo alrededor de un
punto fijo x de la ecuacin x = g(x), y si *gN(x)* < 1 para toda
x en el intervalo, entonces x = g(x ) , k = 0, 1, 2, ...,
(k+1) (k)
converge en el punto fijo x = x en el supuesto de que x se
(0)
escoja en el intervalo.
A continuacin, un pseudocdigo de un procedimiento que encuentra un punto fijo de x = g(x)
1
proc punto_fijo(real func g, real &xinicial, real eps, entero maxiter, real &x, lgico
&convergencia)
!
! Este procedimiento encuentra una aproximacin a la solucin del problema x = g(x)
! con el mtodo iterativo de punto fijo.
! Descripcin de parmetros:
! g Funcin externa que evala a la funcin g(x) .
! xinicial Estimacin inicial.
! eps Mximo error permisible. Cuando el valor absoluto de la diferencia de las
! dos ltimas iteraciones es menor que eps, se considera haber llegado a la
! solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el punto fijo buscado.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
20
x = g(xinicial) ! clculo de una nueva iteracin
si ABS(x - xinicial) < eps entonces regresa ! se checa la convergencia
xinicial = x ! preparacin de la siguiente iteracin
}
convergencia = FALSO
regresa
fin
2.2 Aceleracin de la convergencia
El mtodo de punto fijo cuando converge, generalmente lo hace en forma muy lenta. Para
acelerar su convergencia se pueden aplicar varias tcnicas, una de las ms usadas es la
aceleracin de Aitken: las dos primeras iteraciones x y x se calculan con el mtodo de punto
(1) (2)
fijo mientras que la tercera se obtiene aplicando la frmula:

Las iteraciones x y x se calculan nuevamente con punto fijo y x se determina con la
(4) (5) (6)
frmula de Aitken pero aplicada a x , x y x . Es de esperarse que al aplicar la aceleracin de
(3) (4) (5)
Aitken cada tres iteraciones, el problema converja en un menor nmero de iteraciones.
Este tcnica de Aitken puede aplicarse a cualquier proceso iterativo donde los errores decrezcan
proporcionalmente, no slo a la iteracin de punto fijo.
Ejemplo
Obtenga un punto fijo aproximado de g(x) = 1 + 2/x. Inicie con x = 1.5 y termine cuando el
(0)
error absoluto de las ltimas dos iteraciones sea menor que 1X10 . Considere un nmero
-4
mximo de iteraciones igual a 20.
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 2.33333 0.83333
2 1.85714 0.47619
3 2.03030 0.17316
21
4 1.98507 0.04523
5 2.00752 0.02244
6 2.00000 0.00744
7 1.99996 0.00011
8 2.00002 0.00006
Un pseudocdigo de un procedimiento que encuentra un punto fijo de g(x) con punto fijo y
aceleracin de Aitken es:
proc Aitken(real func g, real &xinicial, real eps, entero maxiter, real &x, lgico &convergencia)
!
! Este procedimiento encuentra una aproximacin a la solucin del problema x = g(x)
! empleando el mtodo iterativo de punto fijo con aceleracin de Aitken.
! Descripcin de parmetros:
! g Funcin externa que evala a la funcin g(x) .
! xinicial Estimacin inicial.
! eps Mximo error permisible. Cuando el valor absoluto de la diferencia de las
! dos ltimas iteraciones es menor que eps, se considera haber llegado a la
! solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el punto fijo buscado.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter
real x1, x2
convergencia=VERDADERO
x1 = g(xinicial) ! clculo de las dos primeras iteraciones x1 y x2 con punto fijo
si ABS(x1 - xinicial) < eps entonces regresa
x2 = g(x1)
si ABS(x2 - x1) < eps entonces regresa
ejecuta iter = 3, maxiter
{
!
! se aplica la aceleracin de Aitken cada tres iteraciones
!
si MOD(iter, 3) = 0 entonces
22
x = xinicial- (xinicial - x1)82 / (x2 - 2*x1+ xinicial) ! Aitken
otro
x= g(x2) ! punto fijo
si ABS(x - x2) < eps entonces regresa ! se checa la convergencia
xinicial = x1 ! preparacin de la siguiente iteracin
x1 = x2
x2 = x
}
convergencia = FALSO
regresa
fin
2.3 Mtodo de Newton-Raphson

Si f(x) es un funcin continua y diferenciable n veces en un intervalo y si f existe en ese
(n+1)
0
mismo intervalo , entonces el valor de la funcin f(x) alrededor de un punto x est dado por

0 0 0 0 0 0 0 0 0
f(x) = f(x ) + fN( x )(x - x ) + fNN(x )(x - x ) /2! + fNNN(x )(x - x ) /3! + ....... + f (x ) (x - x ) /n! +
2 3 (n) n
n
R
donde
n 0
R = f ((x)) (x - x ) /(n +1)!
(n+1) n+1
0
Aplicando este resultado, conocido como teorema de Taylor, a un punto base x = x y a x =
(k)
x
(k+1)
f(x ) = f(x ) + fN( x )(x - x ) + fNN(x )(x - x ) /2! + fNNN(x )(x - x ) /3! + ....... +
(k+1) (k) (k) (k+1) (k) (k) (k+1) (k) 2 (k) (k+1) (k) 3
n
f (x )(x - x ) /n! + R
(n) (k) (k+1) (k) n
A continuacin se harn dos suposiciones:
1.- x . x , por lo que es razonable pensar que f(x ) .0
(k+1) (k+1)
2.- x y x son valores cercanos, por lo tanto (x - x ) .0 para j = 2, 3, 4,....
(k+1) (k) (k+1) (k) j
las cuales simplifican a la ltima ecuacin:
0. f(x ) + fN( x )(x - x )
(k) (k) (k+1) (k)
y entonces se despeja a x :
(k+1)
x = x - f(x )/fN( x )
(k+1) (k) (k) (k)
23
Esta ltima ecuacin es el mtodo de Newton-Raphson.
Desde el punto de vista geomtrico; x es la interseccin del eje horizontal x con la recta
(k+1)
tangente a f(x) en (x , f( x )).
(k) (k)
Ejemplo
Encuentre una raz aproximada de f(x) = 3x + sen(x) - e = 0. Tome como estimacin inicial x
x (0)
= 0 y un criterio de convergencia *x - x * < 1X10 .
(k+1) (k) -4
f(x) = 3x + sen(x) - e
x
fN(x) = 3 + cos(x) - e
x
Iteracin k x *x - x *
(k) (k) (k-1)
0 0.00000
1 0.33333 0.33333
2 0.36017 0.02684
3 0.36042 0.00025
4 0.36042 2.24843X10
-8
24
Newton Raphson casi siempre converge rpidamente, sin embargo para que funcione en forma
adecuada se requiere de una estimacin inicial cercana a la raz.
Una propuesta del pseudocdigo de un procedimiento que encuentra una raz aproximada de una
funcin f(x) = 0 con Newton Raphson es:
proc newton(real func f, real func f_prima, real &xinicial, real eps, entero maxiter, real &x,
lgico &convergencia)
!
! Este procedimiento encuentra una aproximacin a una raz de f(x)=0 con el mtodo iterativo
! de Newton-Raphson.
! Descripcin de parmetros:
! f Funcin externa que evala a la funcin f(x) .
! f_prima Funcin externa que evala a la derivada de f(x).
! xinicial Estimacin inicial.
! eps Mximo error permisible. Cuando el valor absoluto de la diferencia de las
! dos ltimas iteraciones es menor que eps, se considera haber llegado a la
! solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es una raz de f(x).
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
x = xinicial - f(xinicial)/f_prima(xinicial) ! clculo de una nueva iteracin
si ABS(x - xinicial) < eps entonces regresa ! se checa la convergencia
xinicial = x ! preparacin de la siguiente iteracin
}
convergencia = FALSO
regresa
fin
2.4 Mtodo de la secante
Newton Raphson es un mtodo muy empleado por su simplicidad y rapidez, pero tiene el
inconveniente de requerir la derivada de f(x). Esta situacin puede ser muy problemtica si la
funcin es difcil de derivar. Una forma de evitar la derivacin es sustituir en la ecuacin de
Newton Raphson
25
x = x - f(x )/fN( x )
(k+1) (k) (k) (k)
fN( x ) por la frmula de diferencias finitas
(k)
quedando entonces
x = x - f(x ) [x - x ] / [f(x ) - f(x )]
(k+1) (k) (k) (k) (k-1) (k) (k-1)
que define el mtodo de la secante. El nombre de este algoritmo se debe a que la interseccin de

la recta secante que pasa por los puntos (x , f(x )) , (x , f(x )) con el eje horizontal
(k-1) (k-1) (k) (k)
produce la nueva aproximacin x .
(k+1)
Ejemplo
Repita el ejemplo anterior empleando el mtodo de la secante con x = 1.5 y x = 0.8.
(0) (1)
f(x) = 3x + sen(x) - e
x
26
Iteracin k x *x - x *
(k) (k) (k-1)
0 1.50000
1 0.80000 0.70000
2 -4.23482 5.03482
3 0.44708 4.68189
4 0.36549 0.08159
5 0.36025 0.00523
6 0.36042 0.00017
7 0.36042 3.06666X10
-7
Este mtodo es un miembro importante de una familia conocida como mtodos de dos puntos,
llamada as porque incluye algoritmos que requieren de dos estimaciones iniciales.
El precio que se paga por evitar la derivacin de f(x) es una convergencia ms lenta. Esto es,
secante consumir ms iteraciones que Newton Raphson para un mismo problema.
A continuacin, el pseudocdigo de un procedimiento que encuentra un cero aproximado de f(x)
= 0 con el mtodo de la secante:
proc secante(real func f, real &x0, real &x1, real eps, entero maxiter, real &x, lgico
&convergencia)
!
! Este procedimiento encuentra una aproximacin a una raz de f(x)=0 con el mtodo iterativo
! de la secante.
! Descripcin de parmetros:
! f Funcin externa que evala a la funcin f(x) .
! x0 Primera estimacin inicial.
! x1 Segunda estimacin inicial.
! eps Mximo error permisible. Cuando el valor absoluto de la diferencia de las
! dos ltimas iteraciones es menor que eps, se considera haber llegado a la
! solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es una raz de f(x).
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
27
entero iter
real f0, f1
convergencia=VERDADERO
f0 = f(x0)
ejecuta iter = 2, maxiter
{
f1 = f(x1)
x = x1 - f1*(x1 - x0)/(f1 - f0) ! clculo de una nueva iteracin
si ABS(x - x1) < eps entonces regresa ! se checa la convergencia
x0 = x1 ! preparacin de la siguiente iteracin
x1 = x
f0 = f1
}
convergencia = FALSO
regresa
fin
2.5 Mtodo de la biseccin
Mediante bisecciones sucesivas busca una raz contenida en un intervalo [a, b]. Desde luego,
para que esta bsqueda funcione, el intervalo original deber contener un nmero impar de
races. La condicin que garantiza tal situacin es:
f(a) * f(b) # 0
Si lo anterior no se cumple, entonces o no existe raz alguna o existen un nmero par de races y
en ambos caso no es factible emplear el mtodo de la biseccin. La grfica mostrada a
continuacin puede ser de utilidad para apreciar mejor esta situacin.
28
Una vez aceptado un intervalo [a, b] tal que f(a) * f(b) # 0, entonces se calcula la primera
iteracin x con
(1)
x = (a + b) / 2
(1)
generndose dos nuevos intervalos: [a, x ] y [x , b]. Entonces se desecha el intervalo que no
(1) (1)
contiene la raz y el intervalo aceptado nuevamente es dividido en dos con la frmula
x = (a + b) / 2
(2)
suponiendo que los valores de a y b son actualizados en cada iteracin de tal forma que siempre
sean los extremos del intervalo que contiene a la raz. El proceso se puede generalizar fcilmente
para cualquier iteracin:
x = (a + b) / 2
(k)
y termina cuando se cumpla alguno de los criterios de convergencia usuales. La ltima frmula
es mtodo de la biseccin.
Ejemplo
Calcule una raz aproximada de f(x) = x + 4x -10 = 0 con el mtodo de la biseccin en el
3 2
29
intervalo [1, 2]. Considere un criterio de convergencia *f(x )* < 1X10 y un nmero mximo de
(k) -4
iteraciones igual a 20.
Primeramente, se checa que en [1, 2] exista un nmero impar de races:
f(1) = f(a) = 1 + 4(1) - 10 = -5
3 2
f(2) = f(b) = 2 + 4(2) - 10 = 14
3 2
como f(a)*f(b) = -5(14) <0 , es aplicable el mtodo de la biseccin en este intervalo.
La primera iteracin es:
x = (1 +2) / 2 = 1.50000
(1)
y para averiguar en cual de los intervalos [1, 1.5] y [1.5, 2] est la raz, se evala f(x) en x
(1)
f(x ) = 1.50000 + 4(1.50000) - 10 = 2.37500
(1) 3 2
Como f(a)*f(x ) = f(1)*f(1.50000) = -5(2.37500) < 0, la raz se encuentra en [1, 1.5] y por lo
(1)
tanto a = 1 y b = 1.5.
Iteracin k x *f(x )*
(k) (k)
1 1.50000 2.37500
2 1.25000 1.79688
3 1.37500 0.16211
4 1.31250 0.84839
5 1.34375 0.35098
6 1.35938 0.09641
7 1.36719 0.03236
8 1.36328 0.03215
9 1.36523 0.00007

La convergencia del mtodo de biseccin es lenta pero casi nunca falla. Cuando todos los dems
mtodos fracasan, la opcin obligada es emplear biseccin.
El siguiente es el pseudocdigo de un procedimiento que encuentra una raz aproximada de f(x)
30
= 0 con el mtodo de biseccin.
proc biseccion(real func f, real &a, real &b, real eps, entero maxiter, real &x, entero &error)
!
! Este procedimiento encuentra una aproximacin a una raz de f(x)=0 con el mtodo iterativo
! de la biseccin.
! Descripcin de parmetros:
! f Funcin externa que evala a la funcin f(x) .
! a Lmite inferior de un intervalo que contiene un nmero impar de races de
! f(x).
! b Lmite superior de un intervalo que contiene un nmero impar de races de
! f(x).
! eps Mxima magnitud posible de f(x). Cuando el valor absoluto de f evaluada
! en la ltima iteracin x es menor que eps, se considera haber llegado a la
! solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en error se devuelve el valor 0, entonces x
! tambin es una raz de f(x).
! error Bandera cuyo valor indica el tipo de situacin detectada:
! error = 0 sin error, se alcanz la convergencia
! error = 1 no se alcanz la convergencia
! error = 2 f(a)*f(b)>0 y entonces en el intervalo [a,b] no existe un
! nmero impar de races.
!
entero iter
real fa, fb, fx
error = 2
fa = f(a)
fb = f(b)
si fa*fb > 0.0 entonces regresa
error = 0
ejecuta iter = 1, maxiter
{
x = (a + b)/2 ! clculo de una nueva iteracin
fx = f(x)
si ABS(fx) < eps entonces regresa ! se checa la convergencia
si fa*fx # 0.0 entonces ! preparacin de la siguiente iteracin
b = x
otro
a = x
fa = fx
}
error = 1
31
regresa
fin
2.6 Orden de convergencia
El orden de convergencia de un mtodo iterativo se define como sigue:
n+1 n
Si *e * tiende a K**e * cuando n tiende a infinito , se dice que
p
el mtodo es de orden p.
Punto fijo exhibe convergencia lineal (orden de convergencia p = 1):
n+1 n
*e * = *gN()** e *
Newton Raphson exhibe convergencia cuadrtica (orden de convergencia p = 2) para races
simples:
n+1 n
*e * = gNN()* e * / 2 donde g(x) = x - f(x ) / fN(x )
2 (n) (n) (n)
Secante, orden de convergencia p:
p = (1 + %5) / 2 . 1.62
Biseccin, convergencia lineal (orden de convergencia p = 1) :
n+1 n
*e * = 0.5* e *
32
33
3. Solucin de sistemas de ecuaciones lineales
El sistema de n ecuaciones con n incgnitas
11 1 12 2 13 3 1n n 1
a x + a x + a x + .............. + a x = b
21 1 22 2 23 3 2n n 2
a x + a x + a x + .............. + a x = b
31 1 32 2 33 3 3n n 3
a x + a x + a x + .............. + a x = b
. . .
. . .
. . .
n1 1 n2 2 n3 3 nn n n
a x + a x + a x + .............. + a x = b
se puede escribir en forma matricial como Ax = b , donde A es la matriz de coeficientes,
x es el vector de incgnitas y b el vector de trminos del lado derecho
Existen dos tipos de mtodos para resolver el problema Ax = b; los exactos y los iterativos. Los
mtodos exactos son llamados as porque, en ausencia de errores de redondeo, obtienen la
solucin analtica o exacta y estn basados en la eliminacin de Gauss o en la factorizacin LU.
Los mtodos del segundo tipo encuentran una solucin aproximada mediante procesos iterativos.
34
Para sistemas con matrices de coeficientes densas y relativamente pequeas, se prefieren los
mtodos exactos. En el caso de sistemas con matrices de coeficientes de orden grande y poco
densas, son recomendados los mtodos iterativos.
3.1 Eliminacin de Gauss
Es un proceso que convierte a la matriz de coeficientes A de nxn en una matriz triangular
superior mediante la aplicacin sistemtica de transformaciones elementales de rengln. Una
vez obtenida la matriz triangular superior se aplica un procedimiento conocido como sustitucin
hacia atrs para obtener el vector solucin x.
Las transformaciones elementales de rengln son:
1.- La fila i de una matriz puede ser multiplicada por un constante 0
i i
R 6R
2.- A la fila i de un matriz le puede ser sumada otra fila j de la misma matriz multiplicada por
una constante
j i i
R + R 6R
3.- Las filas i y j de una matriz pueden ser intercambiadas
i j
R : R
La eliminacin de Gauss consta en n-1 pasos de eliminacin y cada uno de ellos consiste en:
1.- Seleccionar un pivote: en el i-simo paso de eliminacin se escoge como pivote al i-simo
elemento de la diagonal principal de A, estrategia conocida como pivoteo natural.
2.- Colocar ceros debajo del pivote en la misma columna.
Ejemplo
Resolver el sistema
1 2 3
x - x + x = -4
1 2 3
5x - 4x + 3x = -12
1 2 3
2x + x + x = 11
con eliminacin de Gauss y sustitucin hacia atrs. Use una estrategia de pivoteo natural.
En primer lugar, se forma una matriz agregando una columna a la matriz de coeficientes. La
columna aadida es el vector de trminos del lado derecho y la matriz as formada se conoce
35
como matriz aumentada del sistema:
1.00000 -1.00000 1.00000 - 4.00000
5.00000 -4.00000 3.00000 -12.00000
2.00000 1.00000 1.00000 11.00000

Primer paso de eliminacin:
11
El pivote es el primer elemento de la diagonal principal de la matriz de coeficientes, a =
1.00000. Ahora se trata de colocar ceros debajo del pivote en la primera columna; las
transformaciones de rengln requeridas para tal efecto son:
1 2 2
-5R + R 6 R
1 3 3
-2R + R 6 R
La fila del pivote es multiplicada por el negativo de una cantidad conocida como multiplicador y
es el elemento que se quiere convertir en cero dividido entre el pivote.
Aplicando esta transformaciones a la matriz aumentada, el resultado es:
1.00000 -1.00000 1.00000 -4.00000
0.00000 1.00000 -2.00000 8.00000
0.00000 3.00000 -1.00000 19.00000
Segundo paso de eliminacin:
22
El pivote es ahora a = 1.00000 y el multiplicador es m =3.00000/1.00000 = 3.00000. Por lo
tanto la transformacin elemental requerida es:
2 3 3
-3R + R = R
y la matriz aumentada se convierte en:
1.00000 -1.00000 1.00000 -4.00000
0.00000 1.00000 -2.00000 8.00000
0.00000 0.00000 5.00000 -5.00000
Con estos dos pasos termina la eliminacin de Gauss y la parte correspondiente a la matriz de
coeficientes es una matriz triangular superior.
La ltima matriz aumentada define un sistema cuya solucin es equivalente a la del sistema
original:
1 2 3
1.00000x - 1.00000x + 1.00000x = -4.00000
36
2 3
1.00000x - 2.00000x = 8.00000
3
5.00000x = -5.00000
Esta solucin x se puede encontrar fcilmente:
3
x = -5.00000 / 5.00000 = -1.00000
2 3
x = (8.00000 + 2.00000x ) / 1.00000 = (8.00000+2.00000(-1.00000)) / 1.00000 = 6.00000
1 2 3
x = (-4.00000 + 1.00000x -1.00000x ) / 1.00000
1
x = (-4.0000 + 1.00000(6.00000) - 1.00000(-1.0000)) / 1.00000 = 3.00000
Este proceso es la sustitucin hacia atrs, conocido as porque se obtienen los valores de las
n 1
incgnitas comenzando con la ltima x y terminando con la primera x . La siguientes frmulas
describen la sustitucin hacia atrs y en ellas la letra a denota a los elementos de la matriz

aumentada:
El ltimo ejercicio muestra que para poder calcular los multiplicadores en cada paso de
eliminacin, el pivote necesariamente debe ser distinto de cero. Por lo tanto, si en el i-simo paso
ii
de eliminacin a es cero, se debe intercambiar la fila i con alguna otra colocada debajo de ella
de tal forma que se lleve a la posicin del pivote un nmero distinto de cero. Si no es posible
colocar un pivote diferente de cero, entonces el sistema lineal no tiene solucin nica.
Otra posible situacin en la cual no existe solucin nica es aquella en la cual despus del ltimo
nn
paso de eliminacin el elemento a es igual a cero.
Con eliminacin de Gauss tambin es factible calcular el determinante de la matriz de
coeficientes:
37
ii
donde ncf es el nmero de cambios de filas efectuados en la eliminacin y s representa los
elementos de la diagonal principal de la matriz triangular superior resultado de la eliminacin.
Por lo tanto, el determinante de la matriz de coeficientes del ltimo ejemplo es:
det(A) = (-1) [(1.00000)(1.00000)(5.00000)] = 5.00000
0
Es posible contar el nmero de operaciones necesarias para resolver un sistema lineal con
eliminacin de Gauss y sustitucin hacia atrs:
Multiplicaciones o divisiones: n /3 + n - n/3
3 2
Sumas o restas: n /3 + n /2 - 5n/6
3 2
En anlisis numrico se emplea la notacin O(n ) la cual indica que el nmero de operaciones es
3
de orden n . La conclusin final es: la eliminacin gaussiana con sustitucin hacia atrs es un
3
proceso muy costoso en trminos de operaciones aritmticas.
A continuacin, un pseudocdigo de un procedimiento que resuelve el sistema Ax = b con
eliminacin gaussiana y sustitucin hacia atrs. Pivoteo natural es empleado.
proc eliminacion_gauss(entero n, real &A[n, n+1], real &x[n], lgico &solucion_unica)
!
! Este procedimiento resuelve un sistema lineal de ecuaciones con eliminacin gaussiana y
! sustitucin hacia atrs. Se emplea una estrategia de pivoteo natural.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! A Matriz aumentada del sistema, de n filas y n+1 columnas.
! x Si en solucion_unica se devuelve el valor VERDADERO, entonces x
! es la solucin nica. De n elementos.
! solucion_unica Bandera que indica la existencia de una solucin nica:
! solucion_unica=VERDADERO el sistema tiene solucin nica.
! solucion_unica= FALSO la matriz de coeficientes es singular
! y no hay solucin nica.
!
entero i, p, k, j
real auxiliar, multiplicador, suma
solucion_unica = FALSO
! Eliminacin de Gauss con pivoteo natural
ejecuta i = 1, n-1
{
ejecuta p = i, n ! seleccin del pivote
si ABS(A[p, i]) $ 1X10 entonces salida
-10
si p > n entonces regresa
si p i entonces ! intercambio de las filas p e i, en caso necesario
38
ejecuta k = 1, n+1
auxiliar = A[p, k]
A[p, k] = A[i, k]
A[i, k] = auxiliar
ejecuta j = i+1, n ! colocacin de ceros debajo del pivote
multiplicador = A[j, i]/A[i, i]
ejecuta k = i, n+1
A[j, k] = A[j, k] - multiplicador*A[i, k]
}
si ABS(A[n, n]) < 1X10 entonces regresa
-10
solucion_unica = VERDADERO
! sustitucin hacia atrs
x[n] = A[n, n+1]/A[n, n]
ejecuta i = n-1, 1, -1
{
suma = 0.0
ejecuta j = i+1, n
suma = suma + A[i, j]*x[j]
x[i] = (A[i, n+1] - suma)/A[i, i]
}
regresa
fin
3.2 Pivoteo mximo de columna
Si los clculo involucrados en la eliminacin gaussiana se efectuaran en una computadora o en
una calculadora con longitud de palabra infinita, los resultados obtenidos seran exactos. Pero
como lo anterior no es posible y las computadoras solo pueden representar y operar un nmero
finito de dgitos, necesariamente los resultados sern aproximados debido a los inevitables errores
de redondeo.
Una forma de minimizar los errores de redondeo en la eliminacin de Gauss es emplear
precisiones ms altas, es decir, usar un mayor nmero de dgitos en los clculos. Otra manera es
emplear alguna tcnica de pivoteo. De todas las estrategias de pivoteo la ms simple y
frecuentemente muy efectiva, es el pivoteo parcial o pivoteo mximo de columna: en cada paso
de eliminacin siempre se escoge como pivote al elemento de mayor valor absoluto entre los
colocados en y abajo de la diagonal principal:
Pivoteo mximo de columna
En el i-simo paso de eliminacin, se determina un valor p$i tal que:
pi ki
*a * = mx *a * para i = 1,2,....,n-1 pasos de eliminacin
i#k#n
Ejemplo
Resuelva el sistema
39
1 2 3
x + 3x -2x = 7
1 2 3
4x - x + 3x = 10
1 2 3
-5x + 2x + 3x = 7
empleando eliminacin de Gauss con pivoteo mximo de columna.
La matriz aumentada del sistema es:
1.00000 3.00000 -2.00000 7.00000
4.00000 -1.00000 3.00000 10.00000
-5.00000 2.00000 3.00000 7.00000
Primer paso de eliminacin:
El pivote se escoge como el elemento con el mayor valor absoluto entre los elementos de la
31
primera columna desde la fila 1 hasta la 3, por lo tanto el pivote es a = -5.00000. Como el
pivote est en la fila 3, es necesario intercambiar la fila 1 con la 3 para colocar en el primer
rengln al -5.00000.
1 3
R : R
-5.00000 2.00000 3.00000 7.00000
4.00000 -1.00000 3.00000 10.00000
1.00000 3.00000 -2.00000 7.00000
Los multiplicadores son ahora 4.00000/-5.00000 y 1.00000/-5.00000 y las transformaciones
11
elementales que colocan ceros debajo de a son:
1 2 2
-(4.00000/-5.00000)R + R 6R
1 3 3
-(1.00000/-5.00000)R + R 6R
La matriz aumentada queda al final de este primer paso de eliminacin de esta manera:
-5.00000 2.00000 3.00000 7.00000
0.00000 0.60000 5.40000 15.60000
0.00000 3.40000 -1.40000 8.40000
Segundo paso de eliminacin:
22 23 23 22
Aqu los posibles pivotes son a = 0.60000 y a = 3.40000. Como *a * > *a *, entonces el
23
pivote es a = 3.40000 y por lo tanto se requiere intercambiar las filas 2 y 3:
2 3
R :R
-5.00000 2.00000 3.00000 7.00000
0.00000 3.40000 - 1.40000 8.40000
0.00000 0.60000 5.40000 15.60000
40
El multiplicador es 0.60000/3.40000 y la transformacin que coloca un cero debajo del pivote es:
2 3 3
-(0.60000/3.40000) R + R 6 R
Entonces la matriz aumentada al final queda as:
-5.00000 2.00000 3.00000 7.00000
0.00000 3.40000 - 1.40000 8.40000
0.00000 0.00000 5.64706 14.11765
La sustitucin hacia atrs genera el vector solucin x = [1.50000, 3.50000, 2.50000] .
T
Pseudocdigo de un procedimiento que resuelve un sistema lineal, con eliminacin de Gauss y
pivoteo mximo de columna:
proc eliminacion_gauss_pm(entero n, real &A[n, n+1], real &x[n], lgico &solucion_unica)
!
! Este procedimiento resuelve un sistema lineal de ecuaciones con eliminacin gaussiana y
! sustitucin hacia atrs. Se emplea una estrategia de pivoteo mximo de columna.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! A Matriz aumentada del sistema, de n filas y n+1 columnas.
! x Si en solucion_unica se devuelve el valor VERDADERO, entonces x
! es la solucin nica. De n elementos.
! solucion_unica Bandera que indica la existencia de una solucin nica:
! solucion_unica=VERDADERO el sistema tiene solucin nica.
! solucion_unica= FALSO la matriz de coeficientes es singular
! y no hay solucin nica.
!
entero i, p, k, j
real auxiliar, multiplicador, suma
solucion_unica = FALSO
! Eliminacin de Gauss con pivoteo mximo de columna
ejecuta i = 1, n-1
{
p = i
ejecuta j = i+1, n ! seleccin del pivote
si ABS(A[j, i]) > ABS(A[p, i]) entonces p = j
si ABS(A[p, i]) < 1X10 entonces regresa
-10
si p i entonces ! intercambio de las filas p e i, en caso necesario
ejecuta k = 1, n+1
auxiliar = A[p, k]
A[p, k] = A[i, k]
A[i, k] = auxiliar
ejecuta j = i+1, n ! colocacin de ceros debajo del pivote
multiplicador = A[j, i]/A[i, i]
ejecuta k = i, n+1
41
A[j, k] = A[j, k] - multiplicador*A[i, k]
}
si ABS(A[n, n]) < 1X10 entonces regresa
-10
solucion_unica = VERDADERO
! sustitucin hacia atrs
x[n] = A[n, n+1]/A[n, n]
ejecuta i = n-1, 1, -1
{
suma = 0.0
ejecuta j = i+1, n
suma = suma + A[i, j]*x[j]
x[i] = (A[i, n+1] - suma)/A[i, i]
}
regresa
fin
3.3 Descomposicin LU
Dada una matriz A de nxn , es posible encontrar las matrices L y U tales que:
A = LU
Las matrices L y U son tambin de nxn. L es triangular inferior y U es triangular superior.
Para mostrar los detalles de la descomposicin LU, considere una matriz A de 4x4:
A = L U
Para poder realizar la descomposicin es necesario asignar valores arbitrarios a una de los
diagonales, ya sea la de L o la de U. Si los elementos de la diagonal principal de U se hacen
iguales a uno, se trata de la descomposicin de Crout, como es el caso mostrado arriba. Si los
elementos de la diagonal principal de L se toman iguales a uno, entonces es la descomposicin
de Doolittle.
Multiplicando los renglones de L por la primera columna de U:
11 11
l (1) = a
21 21
l (1) = a
31 31
l (1) = a
42
41 41
l (1) = a
Multiplicando el primer rengln de L por las columnas de U:
11 11
l (1) = a
11 12 12 12 12 11
l u = a y por lo tanto u = a / l
11 13 13 13 13 11
l u = a y por lo tanto u = a / l
11 14 14 14 14 11
l u = a y por lo tanto u = a / l
Multiplicando los renglones de L por la segunda columna de U:
11 12 12
l u = a
21 12 22 22 22 22 21 12
l u + l (1) = a y por lo tanto l = a - l u
31 12 32 32 32 32 31 12
l u + l (1) = a y por lo tanto l = a - l u
41 12 42 42 42 42 41 12
l u + l (1) = a y por lo tanto l = a - l u
Multiplicando el segundo rengln de L por las columnas de U:
21 21
l (1) = a
21 12 22 22
l u + l (1) = a
21 13 22 23 23 23 23 21 13 22
l u + l u = a y por lo tanto u = ( a - l u ) / l
21 14 22 24 24 24 24 21 14 22
l u + l u = a y por lo tanto u = ( a - l u ) / l
Multiplicando los renglones de L por la tercera columna de U:
11 13 13
l u = a
21 13 22 23 23
l u + l u = a
31 13 32 23 33 33 33 33 31 13 32 23
l u + l u + l (1) = a y por lo tanto l = a - l u - l u
41 13 42 23 43 43 43 43 41 13 42 23
l u + l u + l (1) = a y por lo tanto l = a - l u - l u
Multiplicando el tercer rengln de L por las columnas de U:
31 31
l (1) = a
43
31 12 32 32
l u + l (1) = a
31 13 32 23 33 33
l u + l u + l (1) = a
31 14 32 24 33 34 34 34 34 31 14 32 24 33
l u + l u + l u = a y por lo tanto u = ( a - l u - l u ) / l
Multiplicando los renglones de L por la cuarta columna de U:
11 14 14
l u = a
21 14 22 24 24
l u + l u = a
31 14 32 24 33 34 34
l u + l u + l u = a
41 14 42 24 43 34 44 44 44 44 41 14 42 24 43 34
l u + l u + l u + l (1) = a y por lo tanto l = a - l u - l u - l u
Entonces, este procedimiento basado en las propiedades del producto de matrices, permite
encontrar a los elementos desconocidos de L y U. Las siguientes ecuaciones representan a dicho
procedimiento:
Una vez obtenida la descomposicin LU de la matriz de coeficientes A, es posible resolver el
44
sistema Ax = b: como A = LU, el sistema original se puede escribir como (LU)x = b y si se
define un vector z como z = Ux, entonces ahora queda el sistema Lz = b el cual se puede resolver
mediante sustitucin hacia adelante. Conocido z, entonces se resuelve Ux = z con sustitucin
hacia atrs encontrndose as al vector x.
Ejemplo
Resolver el sistema
1 2 3
3x - x + 2x = 12
1 2 3
x + 2x + 3x = 11
1 2 3
2x - 2x - x = 2
con descomposicin LU.
11 11
l = a = 3.00000
21 21 12 12 11
l = a = 1.00000 u = a / l = -1.00000/3.00000 = -0.33333
31 31 13 13 11
l = a = 2.00000 u = a / l = 2.00000/3.00000 = 0.66667
3 -1 2 3.00000 0 0 1 -0.33333 0.66667
22 23
1 2 3 = 1.00000 l 0 * 0 1 u
32
2 -2 -1 2.00000 l 3 3 0 0 1
l
22 22 21 12
l = a - l u = 2.00000 - (1.00000)(-0.33333) = 2.33333
32 32 31 12
l = a - l u = -2.00000 - (2.00000)(-0.33333) = -1.33333
23 23 21 13 22
u = ( a - l u ) / l = ( 3.00000 -(1.00000)(0.66667)) / 2.33333 = 1.00000
3 -1 2
1 2 3 =
2 -2 -1
3.00000 0 0 1 -0.33333 0.66667
1.00000 2.33333 0 * 0 1 1.00000
2.00000 -1.33333 3 3 0 0 1
l
33 33 31 13 32 23
l = a - l u - l u = -1.00000 - (2.00000)(0.66667) - (-1.33333)(1.00000) = -1.00000
Entonces, la descomposicin LU es:
3 -1 2
1 2 3 =
45
2 -2 -1
3.00000 0 0 1 -0.33333 0.66667
1.00000 2.33333 0 * 0 1 1.00000
2.00000 -1.33333 0 1
-1.00000 0
Lz = b es el sistema:
1
3.00000z 12.00000
1 2
1.00000z + 2.33333z 11.00000
1 1 3
2.00000z - 1.33333z -1.00000z = 2.00000
el cual se resuelve con sustitucin hacia adelante. Este algoritmo es llamado as porque la primera
1 n
incgnita que se determina es z y la ltima z .
1
z = 12.00000 / 3.00000 = 4.00000
2 1
z = (11.00000 - z ) / 2.33333 = (11.00000 - 4.00000) / 2.33333 = 3.00000
3 1 2
z = (2.00000 - 2z + 1.33333z ) / (-1.00000)
3
z = ( 2.00000 - 2.00000(4.00000) + 1.33333(3.00000)) / (-1.00000) = 2.000000
Por ltimo, es necesario resolver el sistema Ux = z mediante sustitucin hacia atrs:
1 2 3
1.00000x - 0.33333x + 0.66667x = 4.00000
2 3
1.00000x + 1.00000x = 3.00000
3
1.00000x = 2.00000
3
x = 2.00000 / 1.00000 = 2.00000
2 3
x = (3.00000 - x ) / 1.00000 = (3.00000 - 2.00000) / 1.00000 = 1.00000
1 2 3
x =( 4.00000 + 0.33333x - 0.66667x ) / 1.00000
1
x = (4.00000 + 0.33333(1.00000) - 0.66667(2.00000)) / 1.00000 = 3.00000
La sustitucin hacia adelante que permite resolver a Lz = b se puede resumir con las frmulas:
46
El proceso de sustitucin hacia atrs empleado en la solucin de Ux = z se describe mediante:
Si se conoce la descomposicin LU de A, la solucin de Ax = b implica solamente resolver Lz =
b y Ux = z. El trabajo computacional asociado con cualquiera de estas soluciones es de O(n /2)
2
multiplicaciones o divisiones. Esta es la razn por la que se prefiere la descomposicin LU para
resolver varios sistemas lineales con la misma matriz de coeficientes. La descomposicin LU
junto con la solucin de Lz = b y de Ux = z requieren un total de O(n /3) multiplicaciones o
3
divisiones.
En el algoritmo de la reduccin de Crout, los elementos de la diagonal principal de L deben ser
ii
distintos de cero. Si en algn momento, se detecta que l = 0 entonces es obligado un intercambio
ii
de filas. Ms especficamente; si l =0, se debe intercambiar la fila i con alguna de las filas
colocadas debajo de ella, cuidando que el intercambio solo afecte a los elementos de la parte
triangular inferior. El mismo intercambio de filas deber realizarse tambin en A y en b.
ii
Si no es posible encontrar un l 0 , entonces la matriz A es singular y el sistema Ax = b no tiene
solucin nica.
Despus de los cambios de renglones, al terminar la descomposicin LU la igualdad A = LU
sigue siendo vlida, L sigue siendo triangular inferior y U triangular superior pero A ahora es la
matriz original afectada por los cambios de filas.
Es factible implementar un pivoteo mximo de columna en la descomposicin de Crout. En este
ii
caso, se busca colocar en la posicin l al elemento de mayor valor absoluto entre los colocados
en y debajo de la diagonal principal de L. El intercambio de filas deber afectar solamente a la
47
parte triangular inferior de L y tambin deber ser aplicado a la matriz A y al vector b.
A continuacin, el pseudocdigo de procedimientos que resuelven sistemas lineales con
descomposicin LU:
proc LU(entero n, real &A[n, n], real &L[n, n], real &U[n, n],entero &info_cambiosf[n], lgico
&exito)
!
! Factorizacin A = LU mediante reduccin de Crout.
! Descripcin de parmetros:
! n Orden de las matrices cuadradas A, L y U.
! A Matriz por factorizar. Como resultado de la factorizacin, en el regreso
! A puede tener algunas filas intercambiadas.
! L Matriz triangular inferior.
! U Matriz triangular superior.
! info_cambiosf Vector que contiene informacin sobre los cambios de filas efectuados
! durante la factorizacin.
! exito Bandera cuyo valor indica el tipo de situacin detectada durante el
! proceso:
! exito = VERDADERO factorizacin exitosa, A = LU
! exito = FALSO no fue posible la factorizacin o A es
! singular.
!
entero i, j, k, p
real auxiliar, suma
ejecuta i = 1,n
info_cambiosf[i] = i ! cuando info_cambiosf[i] = i, no se ha intercambiado la fila i
ejecuta i = 1,n
U[i, i] = 1.0 ! se asigna el valor 1.0 a los elementos de la diagonal principal de U
exito = FALSO
ejecuta i = 1,n ! bsqueda de un L[1, 1] diferente de cero
si ABS(A[i,1]) $ 1X10 entonces salir
-10
si i > n entonces regresa
si i 1 entonces
{
ejecuta j = 1,n ! intercambio de las filas 1 e i
auxiliar = A[1,j]
A[1, j] = A[i, j]
A[i, j] = auxiliar
ejecuta j = 1, n
auxiliar = info_cambiosf[1]
info_cambiosf[1] = info_cambiosf[i]
info_cambiosf[i] = auxiliar
}
ejecuta i = 1,n ! clculo de la primera columna de L
L[i,1] = A[i,1]
ejecuta j = 2,n ! clculo de los elementos restantes de la primera fila de U
48
U[1, j] = A[1, j] / L[1,1]
ejecuta k = 2,n-1
{
ejecuta p = k,n ! bsqueda de un L[i, i] distinto de cero
suma = 0.0
ejecuta j = 1,k-1
suma = suma + L[p, j]*U[j, k]
auxiliar = A[p, k] - suma
si ABS(auxiliar) $ 1X10 entonces salir
-10
si p > n entonces regresar
si p k entonces
{
ejecuta j = 1,n
auxiliar = A[k, j] ! intercambio de las filas k y p en A
A[k, j] = A[p, j]
A[p, j] = auxiliar
ejecuta j = 1,k-1 ! intercambio de las filas k y p en L
auxiliar = L[k, j]
L[k, j] = L[p, j]
L[p, j] =auxiliar
ejecuta j = 1,n
auxiliar = info_cambiosf[k] ! intercambio de los
info_cambiosf[k] = info_cambiosf[p] ! elementos con ndices k y p
info_cambiosf[p] = auxiliar ! en info_cambiosf
}
ejecuta i = k,n
suma = 0.0
ejecuta j = 1,k-1 ! clculo de columna k de L
suma = suma + L[i, j]*U[j, k]
L[i, k ] = A[i,k] - suma
ejecuta i = k+1,n ! clculo de los elementos restantes de la fila k de U
suma = 0.0
ejecuta j = 1,k-1
suma = suma + L[k, j]*U[j, i]
U[k, i] = (A[k, i] - suma)/L[k, k]
}
suma = 0.0
ejecuta j = 1,n-1 ! clculo del ltimo elemento de la diagonal principal de L
suma = suma + L[n, j]*U[j, n]
L[n, n] = A[n, n] - suma
si ABS(L[n, n]) < 1X10 entonces regresa
-10
exito = VERDADERO
regresa
fin
proc solve_lu(entero n, real L[n, n], real U[n, n], entero info_cambiosf[n], real b[n], real
49
&x[n], lgico &solucion_unica)
!
! Dada la factorizacin A = LU, este procedimiento determina el vector solucin x de Ax = b.
! Descripcin de parmetros:
! n Orden de las matrices cuadradas L y U. Tambin es el nmero de
! incgnitas.
! L Matriz triangular inferior.
! U Matriz triangular superior.
! info_cambiosf Vector que contiene informacin sobre los cambios de filas efectuados
! durante la factorizacin A = LU.
! b Vector de trminos del lado derecho del sistema lineal.
! x Vector solucin.
! solucion_unica Bandera cuyo valor indica la existencia de la solucin nica:
! solucion_unica = VERDADERO x es la solucin nica
! solucion_unica = FALSO el sistema no tiene solucin nica.
!
entero i, j, auxiliar
real z[n], suma
!
! Solucin de Lz = b
!
solucion_unica = FALSO
si ABS(L[1, 1]) < 1X10 entonces regresa
-10
z[1] = b[info_cambiosf[1]]/L[1, 1] ! sustitucin hacia adelante
ejecuta i = 2, n
si ABS(L[i, i]) < 1X10 entonces regresa
-10
suma = 0.0
ejecuta j = 1, i-1
suma = suma + L[i, j]*z[j]
z[i] = (b[info_cambiosf[i]] - suma)/L[i, i]
!
! Solucin de Ux = z
!
si ABS(U[n, n]) < 1X10 entonces regresa
-10
x[n] = z[n]/U[n, n] ! sustitucin hacia atrs
ejecuta i = n-1, 1, -1
si ABS(U[i, i]) < 1X10 entonces regresa
-10
suma = 0.0
ejecuta j = i+1, n
suma = suma + U[i, j]*x[j]
x[i] = (z[i] - suma)/U[i, i]
solucion_unica = VERDADERO
regresa
fin
La matriz inversa, A , de una matriz A de n filas y n columnas se puede calcular mediante la
-1
50
solucin de n sistemas lineales, ya que la i-sima columna de la matriz inversa es la solucin del
i i
sistema A x = e , en el cual el vector columna e es la i-sima columna de la matriz identidad I.
Como los n sistemas lineales comparten la misma matriz de coeficientes A, es conveniente
descomponer A como el producto LU y emplear a ste en la solucin de todos los sistemas.
3.4 Solucin de sistemas tridiagonales
Un caso especial y muy importante ocurre cuando en el sistema lineal Ax = b, la matriz de
coeficientes A es triadiagonal. Una matriz cuadrada es tridiagonal si sus elementos distintos de
cero se concentran en tres diagonales: la principal y las colocadas arriba y abajo de ella:

Los algoritmos de factorizacin se simplifican considerablemente cuando son aplicados a una
matriz tridiagonal. En la descomposicin LU de una matriz de este tipo, se tienen (3n-2)
elementos diferentes de cero en A y si
entonces se tendrn 2n-1 valores desconocidos en L y n-1 en U, lo que da un total de 3n-2
incgnitas. Ntese que la diagonal principal de U se considera formada de n unos (reduccin de
Crout).
Aplicando las propiedades de la multiplicacin matricial, es posible plantear las siguientes
ecuaciones:
11 11
a = l
51
12 12 11
u = a / l
i,i-1 i,i-1
a = l para i = 2,3,...,n
i,i i,i-1 i-1,i ii
a = l u + l para i = 2,3,...,n
i,i+1 ii i,i+1
a = l u para i = 2,3,...,n-1
De la tercera ecuacin se pueden encontrar los elementos de la subdiagonal de L, de la cuarta se
calculan los elementos restantes de la diagonal de L y con la quinta se completa la superdiagonal
de U.
El procedimiento para resolver el sistema Ax = b con A triadiagonal consiste en encontrar la
descomposicin LU de A con las frmulas arriba descritas , aplicar entonces sustitucin hacia
adelante para resolver Lz = b y por ltimo emplear sustitucin hacia atrs para resolver Ux = z.
El sistema tridiagonal Ax = b tiene solucin nica si se cumplen las condiciones indicadas en el
terorema:
ij i,i-1 i,i+1
Supngase que A = {a } es tridiagonal con a a 0 para cada
11 12 ii i,i-1 i,i+1
i = 2,3,...,n-1. Si |a | > |a |, |a | $ |a | + |a | para
nn n,n-1
cada i = 2,3,...,n-1, y |a | > |a |, entonces el sistema Ax = b
tiene solucin nica, A es no singular y los elementos de la
diagonal principal de L en A = LU, calculados mediante reduccin
de Crout, son todos distintos de cero.
Ejemplo
Resuelva el sistema
1 2
3x + x = -1
1 2 3
2x + 4x + x = 7
2 3
2x + 5x = 9
mediante descomposicin LU especfica para un sistema tridiagonal.
11 11
l = a = 3
12 12 11
u = a / l = 1/3 = .33333
21 21 32 32
l = a = 2 l = a = 2
22 22 21 12
l = a - l u = 4 - 2*.33333 = 3.33334
23 23 22
u = a / l = 1/3.33334 = 0.30000
33 33 32 23
l = a - l u = 5 - 2*.30000 = 4.40000
52

El sistema Lz = b queda entonces
1
3z = -1
1 2
2z + 3.33334z = 7
2 3
2z + 4.40000z = 9
cuya solucin es z =[ -.33333, 2.30000, 1.00000] . Para calcular la solucin x se resuelve ahora el
T
sistema Ux = z:
1 2
x + .33333x = -.33333
2 3
x + .30000x = 2.30000
3
x = 1.00000
Por lo tanto la solucin del sistema es x = [-0.99999, 2.00000, 1.00000] .
T
La descomposicin LU para matrices triadiagonales junto con las sustituciones hacia adelante y
hacia atrs requieren solamente de (5n-4) multiplicaciones o divisiones y (3n-3) adiciones o
sustracciones.
Con el objeto de almacenar en memoria solamente las tres diagonales y el vector de trminos del
lado derecho, se recomienda ahora escribir el sistema lineal en trminos de vectores:
1 1 1 2 1
b x + c x = d
2 1 2 2 2 3 2
a x + b x + c x = d
3 2 3 3 3 4 3
a x + b x + c x = d
. . . = .
. . . = .
n-1 n-2 n-1 n-1 n-1 n n-1
a x + b x + c x = d
n n-1 n n n
a x + b x = d
La factorizacin LU queda entonces de la siguiente forma:


53



El procedimiento mostrado a continuacin resuelve un sistema tridiagonal expresado en trminos
de los vectores a, b, c y d. El algoritmo supone satisfechas las condiciones que garantizan la
solucin nica del sistema.
proc tridiagonal(entero n, real a[n], real b[n], real c[n], real d[n], real &x[n])
!
! Este procedimiento resuelve un sistema de ecuaciones tridiagonales mediante factorizacin
! LU.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! a Vector que almacena a la subdiagonal del sistema, de n elementos. El
primer elemento de este vector, a[1], es igual a cero.
! b Vector que almacena a la diagonal del sistema, de n elementos.
! c Vector que almacena a la superdiagonal del sistema, de n elementos.
! El ltimo elemento de este vector, c[n], es igual a cero.
! x Vector solucin, de n elementos.
!
entero i
real v[n], r[n], w[n], z[n]
r[1] = b[1]
w[1] = c[1]/r[1]
ejecuta i = 2, n-1
{
v[i] = a[i]
r[i] = b[i] - v[i]*w[i-1] ! i-sima fila de L
w[i] = c[i]/r[i] ! (i+1)-sima columna de U
}
v[n]=a[n] ! n-sima fila de L
r[n] = b[n] - v[n]*w[n-1]
! solucin de Lz = b
z[1] = d[1]/r[1]
ejecuta i = 2, n
z[i] = (d[i] - v[i]*z[i-1])/r[i]
! solucin de Ux = z
x[n] = z[n]
ejecuta i = n-1, 1, -1
54
x[i] = z[i] - w[i]*x[i+1]
regresa
fin
3.5 Mtodos iterativos: Jacobi y Gauss Seidel
Dado el sistema lineal
11 1 12 2 13 3 1n n 1
a x + a x + a x + .............. + a x = b
21 1 22 2 23 3 2n n 2
a x + a x + a x + .............. + a x = b
31 1 32 2 33 3 3n n 3
a x + a x + a x + .............. + a x = b
. . .
. . .
. . .
n1 1 n2 2 n3 3 nn n n
a x + a x + a x + .............. + a x = b
1 2 3
es factible despejar a x de la primera ecuacin, a x de la segunda ecuacin, a x de la tercera y
as sucesivamente:
1 1 12 2 13 3 1n n 11
x = ( b - a x - a x - .............. - a x ) / a
2 2 21 1 23 3 2n n 22
x = ( b - a x - a x - .............. - a x ) / a
3 3 31 1 32 2 3n n 33
x = ( b - a x - a x - .............. - a x ) / a
. . . .
. . . .
. . . .
. . . .
n n n1 1 n2 2 n,n-1 n-1 nn
x = ( b - a x - a x - .............. - a x ) / a
Entonces se parte de una estimacin inicial de la solucin, x , la cual se sustituye en las ltimas
(0)
ecuaciones para producir un nueva estimacin, x :
(1)
1 1 12 2 13 3 1n n 11
x = ( b - a x - a x - .............. - a x ) / a
(1) (0) (0) (0)
2 2 21 1 23 3 2n n 22
x = ( b - a x - a x - .............. - a x ) / a
(1) (0) (0) (0)
3 3 31 1 32 2 3n n 33
x = ( b - a x - a x - .............. - a x ) / a
(1) (0) (0) (0)
. . . .
. . . .
. . . .
. . . .
n n n1 1 n2 2 n,n-1 n-1 nn
x = ( b - a x - a x - .............. - a x ) / a
(0) (0) (0) (0)
55
El vector x se sustituye en esas mismas ecuaciones para obtener ahora a x . Este procedimiento
(1) (2)
se repite entonces para calcular las estimaciones x , x , x , .... . Lo anterior se puede generalizar
(3) (4) (5)
mediante las ecuaciones:
1 1 12 2 13 3 1n n 11
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k) (k) (k)
2 2 21 1 23 3 2n n 22
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k) (k) (k)
3 3 31 1 32 2 3n n 33
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k) (k) (k)
. . . .
. . . .
. . . .
. . . .
n n n1 1 n2 2 n,n-1 n-1 nn
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k) (k) (k)
las cuales se pueden escribir en una forma ms compacta:

Estas ecuaciones definen al mtodo de Jacobi o de los desplazamientos simultneos.
El proceso termina cuando se cumple alguno de estos criterios de convergencia:
1.- 2x - x 2 <
(k+1) (k)
2.- 2x - x 2 / 2x 2 <
(k+1) (k) (k+1)
La tolerancia es fijada antes de iniciar los clculos. En ambos criterios, 2v2, define la norma de
un vector v. La norma de un vector se calcula mediante cualquiera de esta dos definiciones:
2 4 1 2 3 n
Las normas 2v2 y 2v2 del vector v = [v , v , v , ..., v ] estn
T
definidas por
n
y
2 i 4 i
2v2 =( 3 v ) 2v2 = mx *v *
2
i=1
i#i#n
2
A 2v2 se le conoce como norma euclidiana del vector v.
La distancia entre dos vectores u y v es la norma de la diferencia u - v.
Ejemplo
Encuentre una solucin aproximada del sistema
1 2
10x - x = 9
56
1 2 3
-x + 10x - 2x = 7
2 3
- 2x +10x = 6
2
con el mtodo de Jacobi. Inicie con x = [0, 0, 0] y considere a 2x - x 2 < 1X10 como
(0) T (k+1) (k) -4
criterio de convergencia.
Al aplicar el mtodo de Jacobi se generan las ecuaciones:
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(k+1) (k)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(k+1) (k) (k)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(k+1) (k)
que aplicadas a la estimacin inicial x permiten calcular la nueva iteracin x
(0) (1)
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(1) (0)
1
x = (9.00000 + 1.00000(0.00000) ) / 10.00000 = 0.900000
(1)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(1) (0) (0)
2
x = (7.00000 + 1.00000(0.00000) + 2.00000(0.00000 )) / 10.00000 = 0.70000
(1)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(1) (0)
3
x = (6.00000 + 2.00000(0.00000 )) / 10.00000 = 0.60000
(1)
Con x = [0.90000, 0.70000, 0.60000] se checa la convergencia del mtodo:
(1) T
2
2x - x 2 = %((0.90000 - 0.00000) + (0.70000 - 0.00000) + (0.60000 - 0.00000) )
(1) (0) 2 2 2
2
2x - x 2 = 1.28841
(1) (0)
2
Como la distancia entre las dos ltimas iteraciones, 2x - x 2 , no es menor que 1X10 ser
(1) (0) -4
necesario calcular al menos una iteracin ms.
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(2) (1)
1
x = (9.00000 + 1.00000(0.70000) ) / 10.00000 = 0.970000
(2)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(2) (1) (1)
2
x = (7.00000 + 1.00000(0.90000) + 2.00000(0.60000 )) / 10.00000 = 0.91000
(2)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(2) (1)
57
3
x = (6.00000 + 2.00000(0.70000 )) / 10.00000 = 0.74000
(2)
2
2x - x 2 = %((0.97000 - 0.90000) + (0.91000 - 0.70000) + (0.74000 - 0.60000) )
(2) (1) 2 2 2
2
2x - x 2 = 0.26192
(2) (1)
1 2 3 2
Iteracin k x x x 2x - x 2
(k) (k) (k) (k) (k-1)
0 0.00000 0.00000 0.00000
1 0.90000 0.70000 0.60000 1.28841
2 0.97000 0.91000 0.74000 0.26192
3 0.99100 0.94500 0.78200 0.05857
4 0.99450 0.95550 0.78900 0.01310
5 0.99555 0.95725 0.79110 0.00293
6 0.99573 0.95778 0.79145 0.00065
7 0.99578 0.95786 0.79156 0.00015
8 0.99579 0.95789 0.79157 0.00003
El siguiente es el pseudocdigo de un procedimiento que resuelve al sistema Ax = b con el
mtodo de Jacobi:
proc jacobi(entero n, real A[n, n], real b[n], real &xinicial[n], real eps, entero maxiter,
real &x[n], lgico &convergencia)
!
! Este procedimiento encuentra una solucin aproximada x del sistema lineal
! Ax = b con el mtodo iterativo de Jacobi.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! A Matriz de coeficientes del sistema.
! b Vector de trminos del lado derecho del sistema.
! xinicial Vector de estimaciones iniciales.
! eps Mximo error permisible. Cuando la norma euclidiana de la diferencia
! entre las dos ltimas aproximaciones es menor que eps, se considera
! haber llegado a solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el vector solucin de Ax=b.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
58
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter, i, j
real suma, norma2
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
ejecuta i = 1, n ! clculo de la nueva aproximacin x
{
suma = 0.0
ejecuta j = 1, n
si ij entonces suma = suma + A[i, j]*xinicial[j]
x[i] = (b[i] - suma) / A[i, i]
}
suma = 0.0
ejecuta i =1, n
suma = suma + (x[i] - xinicial[i])82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia
ejecuta i = 1, n ! preparacin de la siguiente iteracin
xinicial[i] = x[i]
}
convergencia = FALSO
regresa
fin
Una forma de acelerar la convergencia del mtodo de Jacobi pudiera ser utilizar una estrategia de
i
desplazamientos sucesivos: una vez calculada x , se sustituye inmediatamente en la expresin
(k+1)
i+1
para calcular x . Las ecuaciones por emplear ahora son:
(k+1)
1 1 12 2 13 3 1n n 11
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k) (k) (k)
2 2 21 1 23 3 2n n 22
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k+1) (k) (k)
3 3 31 1 32 2 3n n 33
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k+1) (k+1) (k)
. . . .
. . . .
. . . .
. . . .
n n n1 1 n2 2 n,n-1 n-1 nn
x = ( b - a x - a x - .............. - a x ) / a
(k+1) (k+1) (k+1) (k+1)
las cuales se pueden representar en una forma ms condensada:
59
Esta estrategia define al mtodo de Gauss Seidel o de los desplazamientos sucesivos.
Ejemplo
Resolver el sistema lineal del ejemplo anterior empleando Gauss Seidel. Considere el mismo
vector inicial y tambin idntico criterio de convergencia.
Las ecuaciones del mtodo de Gauss Seidel son:
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(k+1) (k)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(k+1) (k+1) (k)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(k+1) (k+1)
Comenzando con x = [0, 0, 0] , entonces
(0) T
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(1) (0)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(1) (1) (0)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(1) (1)
1
x = (9.00000 + 1.00000(0.00000)) / 10.00000 = 0.90000
(1)
2
x = (7.00000 + 1.00000(0.90000) + 2.00000(0.00000)) / 10.00000 = 0.79000
(1)
3
x = (6.00000 + 2.00000(0.79000)) / 10.00000 = 0.75800
(1)
Con x = [0.90000, 0.79000, 0.75800] se checa la convergencia del mtodo:
(1) T
2
2x - x 2 = %((0.90000 - 0.00000) + (0.79000 - 0.00000) + (0.75800 - 0.00000) )
(1) (0) 2 2 2
2
2x - x 2 = 1.41727
(1) (0)
Como = 1X10 , se requiere de al menos de una iteracin adicional:
-4
1 2
x = (9.00000 + 1.00000x ) / 10.00000
(2) (1)
2 1 3
x = (7.00000 + 1.00000x + 2.00000x ) / 10.00000
(2) (2) (1)
3 2
x = (6.00000 + 2.00000x ) / 10.00000
(2) (2)
60
1
x = (9.00000 + 1.00000(0.79000)) / 10.00000 = 0.97900
(2)
2
x = (7.00000 + 1.00000(0.97900) + 2.00000(0.75800)) / 10.00000 = 0.94950
(2)
3
x = (6.00000 + 2.00000(0.94950)) / 10.00000 = 0.78990
(2)
2
2x - x 2 = %((0.97900 - 0.90000) + (0.94950 - 0.79000) + (0.78990 - 0.75800) )
(2) (1) 2 2 2
2
2x - x 2 = 0.18083
(2) (1)
1 2 3 2
Iteracin k x x x 2x - x 2
(k) (k) (k) (k) (k-1)
0 0.00000 0.00000 0.00000
1 0.90000 0.79000 0.75800 1.41727
2 0.97900 0.94950 0.78990 0.18083
3 0.99495 0.95748 0.79150 0.01790
4 0.99575 0.95787 0.79157 0.00090
5 0.99579 0.95789 0.79158 0.00004
En general, Gauss Seidel es ms rpido que Jacobi.
Ahora, un procedimiento para resolver un sistema Ax = b con el mtodo de Gauss Seidel:
proc gauss_seidel(entero n, real A[n, n], real b[n], real &xinicial[n], real eps, entero maxiter,
real &x[n], lgico &convergencia)
!
! Este procedimiento encuentra una solucin aproximada x del sistema lineal
! Ax = b con el mtodo iterativo de Gauss Seidel.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! A Matriz de coeficientes del sistema.
! b Vector de trminos del lado derecho del sistema.
! xinicial Vector de estimaciones iniciales.
! eps Mximo error permisible. Cuando la norma euclidiana de la diferencia
! entre las dos ltimas aproximaciones es menor que eps, se considera
! haber llegado a solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el vector solucin de Ax=b.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
61
entero iter, i, j
real suma, norma2
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
ejecuta i = 1, n ! clculo de la nueva aproximacin x
{
suma = 0.0
ejecuta j = 1, i - 1
suma = suma + A[i, j]*x[j]
ejecuta j = i + 1, n
suma = suma + A[i, j]*xinicial[j]
x[i] = (b[i] - suma) / A[i, i]
}
suma = 0.0
ejecuta i =1, n
suma = suma + (x[i] - xinicial[i])82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia
ejecuta i = 1, n ! preparacin de la siguiente iteracin
xinicial[i] = x[i]
}
convergencia = FALSO
regresa
fin
La condicin suficiente pero no necesaria que garantiza la convergencia tanto de Jacobi como de
Gauss Seidel para cualquier vector inicial x es que la matriz de coeficientes del sistema sea
(o)
estrictamente diagonal dominante. A continuacin, la definicin de una matriz estrictamente
diagonal dominante.
Una matriz A de nxn es estrictamente diagonal dominante si y slo
si


n
ii ij
*a * > 3 *a * ,i = 1, 2, ...., n
j=1
ji

En base a esta definicin, la matriz de coeficientes de los dos ltimos ejemplos es estrictamente
diagonal dominante ya que
*10* > *-1* + *0*
*10* > *-1* + *-2*
*10* > *0* + *-2*
62
Esto asegura la convergencia de ambos mtodos para cualquier estimacin inicial x .
(0)
63
4. Solucin de sistemas de ecuaciones no lineales
1 2 3 n
Se trata de encontrar un vector x = [x , x , x , ..., x ] = 0 que satisfaga las igualdades
T
1 1 2 3 n
f (x , x , x , ..., x ) = 0
2 1 2 3 n
f (x , x , x , ..., x ) = 0
3 1 2 3 n
f (x , x , x , ..., x ) = 0
. . .
. . .
. . .
n 1 2 3 n
f (x , x , x , ..., x ) = 0

Estas ecuaciones tambin se pueden representar en una forma ms compacta:
i
f (x) = 0 , para i = 1, 2, 3, ..., n
4.1 Mtodo de punto fijo multivariable
i
El sistema f (x) = 0, i = 1,2,3, ..., n es transformado en el conjunto de ecuaciones
1 1
x = g (x)
2 2
x = g (x)
3 3
x = g (x)
. .
. .
. .
n n
x = g (x)
mediante la aplicacin de operaciones algebraicamente vlidas. A cada una de esta ecuaciones se
les aplica el mtodo iterativo de punto fijo:
1 1
x = g (x )
(k+1) (k)
2 2
x = g (x )
(k+1) (k)
3 3
x = g (x )
(k+1) (k)
. .
. .
. .
n n
x = g (x )
(k+1) (k)
64
1 2 3 n
Se comienza con una estimacin inicial x , la cual es sustituida en las ecuaciones g , g , g , ..., g
(0)
resultando una nueva aproximacin x . Estas funciones son evaluadas en x para generar x .
(1) (1) (2)
Este procedimiento es repetido para calcular las aproximaciones x , x , x ,.... . En el momento
(3) (4) (5)
en que se cumpla alguno de los criterios de convergencia usuales, se termina el proceso iterativo.
Ejemplo
Encuentre una solucin aproximada del sistema
1 1 2 1 1 2
f (x , x ) = x - 10x + x + 8 = 0
2 2
2 1 2 1 2 1 2
f (x , x ) = x x + x - 10x + 8 = 0
2
con el mtodo de punto fijo. Inicie con x = [0, 0] y considere el criterio de convergencia 2x
(0) T (k+1)
2
- x 2 < 1X10 .
(k) -3
1 2
Una posible manera de aislar las variables x y x sera:
1 1 2
x = ( 8 + x + x ) / 10
2 2
2 1 2 1
x = ( 8 + x x + x ) / 10
2
Aplicando la iteracin de punto fijo a estos despejes:
1 1 2
x = ( 8 + [x ] + [x ] ) / 10
(k+1) (k) 2 (k) (2)
2 1 2 1
x = ( 8 + x [x ] + x ) / 10
(k+1) (k) (k) 2 (k)
Con x = [0, 0] y las ecuaciones anteriores , entonces x es:
(0) T (1)
1 1 2
x = ( 8 + [x ] + [x ] ) / 10 = (8.00000 + 0.00000 + 0.00000 ) / 10.00000 = 0.80000
(1) (0) 2 (0) 2 2 2
2 1 2 1
x = ( 8 + x [x ] + x ) / 10 = ( 8.00000 + (0.00000)(0.00000 ) + 0.00000 ) / 10.00000
(1) (0) (k) 2 (0) 2
2
x = 0.80000
(1)
2
2x - x 2 = %((0.80000 - 0.00000) + (0.80000 - 0.00000) ) = 1.13137
(1) (0) 2 2
Como la distancia entre x y x es mayor o igual que 1X10 , se requiere por lo menos de una
(1) (0) -3
iteracin ms:
1 1 2
x = ( 8 + [x ] + [x ] ) / 10 = (8.00000 + 0.80000 + 0.80000 ) / 10.00000 = 0.92800
(2) (1) 2 (1) 2 2 2
2 1 2 1
x = ( 8 + x [x ] + x ) / 10 = ( 8.00000 + (0.80000)(0.80000 ) + 0.80000 ) / 10.00000
(2) (1) (1) 2 (1) 2
2
x = 0.93120
(2)
65
2
2x - x 2 = %((0.92800 - 0.80000) + (0.93120 - 0.80000) ) = 0.18330
(2) (1) 2 2
1 2
Iteracin k x x
(k) (k)
2
2x - x 2
(k) (k-1)
0 0.00000 0.00000
1 0.80000 0.80000 1.13137
2 0.92800 0.93120 0.18330
3 0.97283 0.97327 0.06148
4 0.98937 0.98944 0.02312
5 0.99578 0.99579 0.00903
6 0.99832 0.99832 0.00358
7 0.99933 0.99933 0.00143
8 0.99973 0.99973 0.00057
El mtodo iterativo de punto fijo multivariable converge, cuando lo hace, casi siempre de una
forma lenta. Para tratar de acelerar su convergencia, frecuentemente se intenta aplicar un
estrategia de desplazamientos sucesivos, similar a la aplicada en el mtodo de Gauss Seidel.
Ejemplo
Aplicar desplazamientos sucesivos al ejemplo anterior.
En este caso, las ecuaciones del mtodo iterativo de punto fijo quedaran:
1 1 2
x = ( 8 + [x ] + [x ] ) / 10
(k+1) (k) 2 (k) 2
2 1 2 1
x = ( 8 + x [x ] + x ) / 10
(k+1) (k+1) (k) 2 (k+1)
2 1
En el clculo de x se sustituye inmediatamente el valor recin calculado x . Con x = [0,
(k+1) (k+1) (0)
0] , entonces x es:
T (1)
1 1 2
x = ( 8 + [x ] + [x ] ) / 10 = (8.00000 + 0.00000 + 0.00000 ) / 10.00000 = 0.80000
(1) (0) 2 (k) 2 2 2
2 1 2 1
x = ( 8 + x [x ] + x ) / 10 = ( 8.00000 + (0.80000)(0.00000 ) + 0.80000 ) / 10.00000
(1) (1) (0) 2 (1) 2
2
x = 0.88000
(1)
2
2x - x 2 = %((0.80000 - 0.00000) + (0.88000 - 0.00000) ) = 1.18929
(1) (0) 2 2
Ya que la distancia entre x y x es mayor o igual que 1X10 , se requiere al menos de una
(1) (0) -3
66
iteracin adicional
1 1 2
x = ( 8 + [x ] + [x ] ) / 10 = (8.00000 + 0.80000 + 0.88000 ) / 10.00000 = 0.94144
(2) (1) 2 (1) 2 2 2
2 1 2 1
x = ( 8 + x [x ] + x ) / 10 = ( 8.00000 + (0.94144)(0.88000 ) + 0.94144 ) / 10.00000
(2) (2) (1) 2 (2) 2
2
x = 0.96705
(2)
2
2x - x 2 = %((0.94144 - 0.80000) + (0.96705 - 0.88000) ) = 0.16608
(2) (1) 2 2
1 2
Iteracin k x x
(k) (k)
2
2x - x 2
(k) (k-1)
0 0.00000 0.00000
1 0.80000 0.88000 1.18929
2 0.94144 0.96705 0.16608
3 0.98215 0.99006 0.04676
4 0.99448 0.99693 0.01412
5 0.99829 0.99905 0.00435
6 0.99947 0.99970 0.00135
7 0.99983 0.99991 0.00042
En general; el mtodo de punto fijo multivariable con desplazamientos sucesivos, conocido
tambin como Gauss Seidel no lineal, converge ms rpido que el mismo mtodo pero con
desplazamientos simultneos (Jacobi no lineal).
Ahora, el pseudocdigo de un procedimiento que resuelve en forma aproximada un sistema de
ecuaciones no lineales descrito como x = g(x):
proc punto_fijo_n(entero n, proc g, real &xinicial[n], real eps, entero maxiter, real &x[n],
lgico &convergencia)
!
! Este procedimiento encuentra una solucin aproximada x del sistema no lineal
! descrito como x = g(x), con el mtodo iterativo de punto fijo multivariable.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! g Procedimiento que calcula una nueva aproximacin x = g(xinicial, x)
! proc g(entero n, real xinicial[n], real &x[n])
! n Nmero de ecuaciones y de incgnitas.
! xinicial Vector de incgnitas en la iteracin inicial.
! x Vector de incgnitas en la nueva iteracin.
! xinicial Vector de estimaciones iniciales.
67
! eps Mximo error permisible. Cuando la norma euclidiana de la diferencia
! entre las dos ltimas aproximaciones es menor que eps, se considera
! haber llegado a solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es un punto fijo de g(x).
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter, i
real suma, norma2
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
llama g(n, xinicial, x) ! clculo de la nueva aproximacin x
suma = 0.0
ejecuta i =1, n
suma = suma + (x[i] - xinicial[i])82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia
ejecuta i = 1, n ! preparacin de la siguiente iteracin
xinicial[i] = x[i]
}
convergencia = FALSO
regresa
fin
4.2 Mtodo de Newton Raphson multivariable
Para deducir las ecuaciones de Newton Raphson multivariable, considere el caso particular de dos
variables y dos ecuaciones (n=2):
1 1 2
f (x , x ) = 0
2 1 2
f (x , x ) = 0
1 2
Si todas las n-simas derivadas parciales de f(x , x ) son continuas en una regin cerrada y si las
(n+1)-simas derivadas parciales existen en la regin abierta, se tiene:
68
n
donde R es:
1 2 1 2 1
aplicando este resultado tanto a f como a f en el punto base (x , x ) y con incrementos h =
(k) (k)
1 1 1 2 2 2 2
x - x en la direccin x y h = x - x en la direccin x :
(k+1) (k) (k+1) (k)
donde las derivadas parciales son evaluadas es el punto base x .
(k)
1 1 2 2 1 2
Si suponemos que x . x es razonable tambin suponer que f (x , x ) .0 y f (x , x )
(k+1) (k+1) (k) (k+1) (k)
1 1 2 2
.0. Si adems x .x , entonces (x - x ) .0 y (x - x ) .0 para j = 2,3,4, ... .
(k+1) (k) (k+1) (k) j (k+1) (k) j
Despus de estas suposiciones las ecuaciones anteriores se simplifican considerablemente:
1 1 1 2 2 2
Como x - x = h y x - x = h , entonces
(k+1) (k) (k+1) (k)
69
1
Esta ltimas ecuaciones definen un sistema de dos ecuaciones lineales con dos incgnitas (h y
2
h ). Resuelto este, la nueva aproximacin x se calcula mediante:
(k+1)
1 1 1
x = x + h
(k+1) (k)
2 2 2
x = x + h
(k+1) (k)
Las frmulas obtenidas arriba se pueden generalizar fcilmente para el caso de n variables:
J(x ) h = - f(x )
(k) (k)
Esta ltima ecuacin es la del mtodo de Newton Raphson multivariable. En ella, J es la matriz
Jacobiana del sistema de ecuaciones y se define por:
1 2 3 n 1 2 3 n
mientras que h = [h , h , h , ..., h ] y f = [f , f , f , ..., f ] .
T T
Por lo tanto, en cada iteracin de Newton Raphson multivariable ser necesario resolver un
sistema lineal de n ecuaciones y n incgnitas. Si la matriz jacobiana es singular, entonces el
sistema J(x ) h = - f(x ) no tiene solucin nica y por lo tanto Newton Raphson falla en la
(k) (k)
bsqueda de una raz x.
Ejemplo
Encuentre una raz aproximada del sistema
1 1 2 1 2
f (x , x ) = x + x - 4 = 0
2 2
2 1 2 1 2
f (x , x ) = x x - 1 = 0
mediante la aplicacin de Newton Raphson multivariable con x = [2, 0] . Considere el criterio
(0) T
70
2
de convergencia 2x - x 2 < 1X10 .
(k+1) (k) -4
1 2 1 2 1 2
f(x ) = [f (x ), f (x )] = [[x ] + [x ] - 4, x x - 1]
(0) (0) (0) T (0) 2 (0) 2 (0) (0) T
f(x ) = [2.00000 + 0.00000 - 4.00000, 2.00000(0.00000) - 1.00000] = [0.00000, -1.00000]
(0) 2 2 T T

Por lo tanto, el sistema lineal J(x ) h = - f(x ) por resolver en esta iteracin es:
(0) (0)
1 2
4.00000h + 0.00000h = 0.00000
1 2
0.00000h + 2.00000h = 1.00000
cuya solucin es h = [0.00000, 0.50000] . La nueva aproximacin x se obtiene con:
T (1)
1 1 1
x = x + h = 2.00000 + 0.00000 = 2.00000
(1) (0)
2 2 2
x = x + h = 0.00000 + 0.50000 = 0.50000
(1) (0)
2 2
2x - x 2 = 2h2 = %(0.00000 + 0.50000 ) = 0.50000
(1) (0) 2 2
Dado que todava no se cumple con el criterio de convergencia, ser necesario calcular al menos
una iteracin adicional.
1 2 2
Iteracin k x x 2x - x 2
(k) k) (k) (k-1)
0 2.00000 0.00000
1 2.00000 0.50000 0.50000
2 1.93333 0.51667 0.06872
3 1.93185 0.51764 0.00177
4 1.93185 0.51764 1.50229X10
-6
En el caso multivariable, Newton Raphson tambin presenta convergencia cuadrtica, es decir, su
orden de convergencia es 2. Sin embargo, se requiere partir de una estimacin inicial cercana a la
raz, para que el mtodo funcione adecuadamente.
71
El siguiente es el pseudocdigo de un procedimiento que resuelve en forma aproximada un
sistema de n ecuaciones no lineales con Newton Raphson multivariable:
proc newton_n(entero n, proc funs, proc jacobiana, real &xinicial[n], real eps, entero maxiter,
real &x[n],lgico &convergencia)
!
! Este procedimiento encuentra una solucin aproximada x del sistema no lineal
! f (x) = 0, con el mtodo de Newton Raphson multivariable.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! funs Procedimiento que calcula las funciones f (x) = 0
! proc funs(entero n, real x[n], real &f[n])
! n Nmero de ecuaciones y de incgnitas.
! x Vector de variables x.
! f Vector de funciones f.
! jacobiana Procedimiento que calcula los elementos de la matriz jacobiana del
! sistema de ecuaciones
! proc jacobiana(entero n, real x[n], real &J[n, n])
! n Nmero de ecuaciones y de incgnitas.
! x Vector de variables x.
! J Matriz jacobiana del sistema. J[i, j] = df[i] / dx[j] evaluada
! en x.
! xinicial Vector de estimaciones iniciales.
! eps Mximo error permisible. Cuando la norma euclidiana de la diferencia
! entre las dos ltimas aproximaciones es menor que eps, se considera
! haber llegado a solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el vector solucin de f (x) = 0.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter, i, j
real f[n], J[n, n], A[n, n+1], h[n], suma, norma2
lgico solucion_unica
convergencia=VERDADERO
ejecuta iter = 1, maxiter
{
llama funs(n, xinicial, f) ! clculo de las funciones f evaluadas en xinicial
llama jacobiana(n, xinicial, J) ! clculo de la matriz jacobiana J evaluada en xinicial
ejecuta i = 1, n ! formacin de la matriz aumentada A del sistema lineal
{
ejecuta j = 1, n
A[i, j] = jacobiana[i, j]
A[i, n+1] = -f[i]
}
72
llama eliminacion_gauss(n, A, h, solucion_unica) ! solucin del sistema lineal
si no solucion_unica entonces
{
escribe El sistema lineal en la iteracin, iter, no tiene solucin nica
convergencia = FALSO
regresa
}
ejecuta i = 1, n
x[i] = xinicial[i] + h[i] ! clculo de la nueva aproximacin x
suma = 0.0
ejecuta i =1, n
suma = suma + h[i]82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia
ejecuta i = 1, n ! preparacin de la siguiente iteracin
xinicial[i] = x[i]
}
convergencia = FALSO
regresa
fin
El esfuerzo requerido para determinar analticamente las n derivadas parciales de la matriz
2
jacobiana puede llegar a ser considerable y frustrante, particularmente para n grande y/o
ecuaciones complejas. En ese caso, se aconseja calcular las derivadas en forma aproximada
empleando frmulas de diferencias finitas. Una de la ms usadas es:
j j
donde x es una cantidad pequea en valor absoluto, usualmente x = % (psilon) |x | , y e es un
(k)
vector cuyo nico elemento distinto de cero es un uno colocado en la j-sima coordenada.
4.3 Mtodo de Broyden
Un notorio inconveniente del mtodo de Newton Raphson multivariable es que en cada iteracin
se requiere resolver un sistema lineal de nxn, lo cual implica un esfuerzo computacional de O(n ).
3
Una generalizacin del mtodo de la secante aplicada a sistemas no lineales, conocida como el
mtodo el Broyden, solo requiere de n evaluaciones funcionales por iteracin y reduce el nmero
de clculos aritmticos a O(n ). Broyden pertenece a la familia de mtodos conocida como
2
actualizacin de la secante del mnimo cambio. El aporte de este mtodo es que la inversa de la
matriz jacobiana ahora es actualizada en cada iteracin mediante la frmula de inversin de
Sherman y Morrison:
73
donde A es la matriz jacobiana, y = f(x ) - f(x ) y s = x - x . Esta frmula solo incluye
(k) (k) (k-1) (k) (k) (k-1)
multiplicaciones matriciales y ,por lo tanto, demanda no ms de O(n ) clculos aritmticos.
2
La principal desventaja del mtodo de Broyden es que su convergencia es superlineal y ya no
cuadrtica como en Newton Raphson. Una convergencia superlineal implica que:

donde p es la solucin de f(x) = 0. Sin embargo, una reduccin en el orden de convergencia de dos
a superlineal es aceptable; ya que se compensa por la reduccin en el nmero de clculos
requeridos por iteracin.
Ejemplo
Encuentre una raz aproximada del sistema
1 1 2 1 2
f (x , x ) = x + x - 4 = 0
2 2
1 1 2 1 2
f (x , x ) = x x - 1 = 0
con el mtodo de Broyden. Tome como estimacin inicial a x = [2, 0] y considere un criterio de
(0) T
2
convergencia 2x - x 2 < 1X10
(k+1) (k) -4
1 2 1 2 1 2
v = f(x ) = [f (x ), f (x )] = [[x ] + [x ] - 4, x x - 1]
(0) (0) (0) T (0) 2 (0) 2 (0) (0) T
v = [2.00000 + 0.00000 - 4.00000, 2.00000(0.00000) - 1.00000] = [0.00000, -1.00000]
2 2 T T

74
Ahora se invierte la matriz J(x )
(0)
y se calcula la primera iteracin:
x = x + s = [2.00000, 0.00000] + [0.00000, 0.500000] = [2.00000, 0.50000]
(1) (0) T T T
2
2s2 = p(0.00000 + 0.50000 ) = 0.50000
2 2
La inversin de la matriz jacobiana se lleva a cabo solamente en la primera iteracin. En las
subsecuentes iteraciones, sta se aproximar mediante la frmula de Sherman y Morrison.
Para determinar la segunda iteracin, se copia el vector v en w:
w = [0.00000, -1.00000]
T
y se calculan los vectores v, y y z
1 2 1 2 1 2
v = f(x ) = [f (x ), f (x )] = [[x ] + [x ] - 4, x x - 1]
(1) (1) (1) T (1) 2 (1) 2 (1) (1) T
v = [2.00000 + 0.50000 - 4.00000, 2.00000(0.50000) - 1.00000] = [0.25000, 0.00000]
2 2 T T
y = v - w = [0.25000, 0.00000] - [0.00000, -1.00000] = [0.25000, 1.00000]
T T T
Se procede a calcular la nueva matriz A, con la frmula de Sherman y Morrison:
75
En los clculos anteriores; la frmula de Sherman y Morrison se expres en trminos de los
vectores y, z y w y de la matriz C.
Con la nueva A, se procede a calcular x
(2)
x =x = [2.00000, 0.50000] + [-0.06250, 0.00000] = [1.93750, 0.50000]
(1) (2) T T T
2
2s2 = p((-0.06250) + 0.00000 ) = 0.06250
2 2
2
El procedimiento continua hasta que se satisfaga el criterio 2x - x 2 < 1 X10
(k+1) (k) -4
La siguientes es una tabla con todas las iteraciones requeridas en este ejercicio:
1 2
Iteracin k x x
(k) (k)
2
2x - x 2
(k) (k-1)
0 2.00000 0.00000
1 2.00000 0.50000 0.50000
76
2 1.93750 0.50000 0.06250
3 1.93443 0.51639 0.01668
4 1.93184 0.51763 0.00286
5 1.93185 0.51764 0.00001
A continuacin, un algoritmo en pseudocdigo, del mtodo de Broyden.
proc broyden(entero n, proc funs, proc jacobiana, real &xinicial[n], real eps, entero maxiter,
real &x[n],lgico &convergencia)
!
! Este procedimiento encuentra una solucin aproximada x del sistema no lineal
! f (x) = 0, con el mtodo de Broyden.
! Descripcin de parmetros:
! n Nmero de ecuaciones y de incgnitas.
! funs Procedimiento que calcula las funciones f (x) = 0
! proc funs(entero n, real x[n], real &f[n])
! n Nmero de ecuaciones y de incgnitas.
! x Vector de variables x.
! f Vector de funciones f.
! jacobiana Procedimiento que calcula los elementos de la matriz jacobiana del
! sistema de ecuaciones
! proc jacobiana(entero n, real x[n], real &J[n, n])
! n Nmero de ecuaciones y de incgnitas.
! x Vector de variables x.
! J Matriz jacobiana del sistema. J[i, j] = df[i] / dx[j] evaluada
! en x.
! xinicial Vector de estimaciones iniciales.
! eps Mximo error permisible. Cuando la norma euclidiana de la diferencia
! entre las dos ltimas aproximaciones es menor que eps, se considera
! haber llegado a solucin.
! maxiter Nmero mximo de iteraciones.
! x ltima iteracin calculada. Si en convergencia se devuelve el valor
! VERDADERO, entonces x tambin es el vector solucin de f (x) = 0.
! convergencia Bandera cuyo valor indica si hubo convergencia:
! convergencia=VERDADERO se alcanz la convergencia
! convergencia=FALSO no se alcanz la convergencia.
!
entero iter, i, j, informacion_cambiosf[n]
real f[n], J[n, n], L[n, n], U[n, n], b[n], columna_inversa[n]
real A[n, n], s[n], w[n], y[n], z[n], suma, norma2, p, s_mas_z[n], matriz[n, n], c[n, n]
77
real func multiplicacion_vector_transpuesto_vector
lgico solucion_unica, exito_LU
convergencia=VERDADERO
llama funs(n, xinicial, f) ! clculo de las funciones f evaluadas en xinicial
llama jacobiana(n, xinicial,J) ! clculo de la matriz jacobiana J evaluada en xinicial
!
! inversin de la matriz jacobiana
!
llama LU(n, J, L, U, informacion_cambiosf, exito_LU)
si no exito_LU entonces
{
escribe La matriz jacobiana evaluada en xinicial es singular o no es posible la
factorizacin LU
convergencia = FALSO
regresa
}
ejecuta i = 1,n
{
ejecuta j = 1, n
{
si i = j entonces ! b es la i-sima columna de la matriz identidad
b[j] = 1.0
otro
b[j] = 0.0
}
llama solve_lu(n, L, U, informacion_cambiosf, b, columna_inversa, solucion_unica)
ejecuta j = 1, n
A[j, i] = columna_inversa[j] ! i-sima columna de la inversa de la jacobiana
}
llama multiplicacion_matriz_vector(n, -A, f, s)
ejecuta i = 1, n
x[i] = xinicial[i] + s[i] ! clculo de una nueva iteracin
suma = 0.0
ejecuta i = 1, n
suma = suma +s[i]82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia en la primera iteracin
ejecuta iter = 2, maxiter
{
ejecuta i = 1, n
w[i] = f[i] ! copia f en w
llama funs(n, x, f)
ejecuta i = 1, n
78
y[i] = f[i] - w[i]
llama multiplicacion_matriz_vector(n, -A, y, z)
p = multiplicacion_vector_transpuesto_vector(n, -s, z)
llama identidad(n, Ident) ! Ident es la matriz identidad de orden n
ejecuta i = 1, n
s_mas_z[i] = s[i] + z[i]
llama multiplicacion_vector_vector_transpuesto(n, s_mas_z, s, matriz)
llama suma_matrices(n, n, p*Ident, matriz, c)
llama multiplicacion_matrices(n, n, n, c, A, matriz)
ejecuta i = 1, n
ejecuta j = 1, n
A[i, j] = matriz[i, j] /p
llama multiplicacion_matriz_vector(n, -A, f, s)
ejecuta i = 1, n
x[i] = x[i] + s[i]
suma = 0.0
ejecuta i = 1, n
suma = suma + s[i]82
norma2 = SQRT(suma)
si norma2 < eps entonces regresa ! se checa la convergencia
}
convergencia = FALSO
regresa
fin
proc multiplicacion_matriz_vector(integer n, real A[n, n], real b[n], real &r[n])
!
! Este procedimiento calcula el producto de una matriz A por un vector b.
! Descripcin de parmetros:
! n Nmero de filas y de columnas de A; nmero de elementos de b; nmero
! de elementos de r.
! A Matriz
! b Vector
! r Vector, producto A*b
!
entero i, j
ejecuta i = 1, n
{
r[i] = 0.0
ejecuta j = 1, n
r[i] = r[i] + A[i, j]*b[j]
}
regresa
79
fin
func multiplicacion_vector_transpuesto_vector(integer n, real b[ n], real c[n])
!
! Esta funcin calcula el producto traspuesto(b) por el vector c.
! Descripcin de parmetros:
! n Nmero de elementos de b y c.
! b Vector.
! c Vector.
! El resultado es el escalar r.
!
entero i
real r
r = 0.0
ejecuta i = 1, n
r = r + b[i]*c[i]
regresa r
fin
proc multiplicacion_vector_vector_transpuesto(integer n, real b[ n], real c[n], real &r[n, n])
!
! Este procedimiento calcula el producto del vector b por transpuesto(c).
! Descripcin de parmetros:
! n Nmero de elementos de b y c; nmero de filas y de columnas de r.
! b Vector.
! c Vector.
! r Matriz, producto b*transpuesto(c).
!
entero i, j
ejecuta i = 1, n
{
ejecuta j = 1, n
r[i, j] = b[i]*c[j]
}
regresa
fin
proc identidad(entero n, real &I[n, n])
!
! Este procedimiento genera la matriz identidad de orden n.
! Descripcin de parmetros:
! n Nmero de filas y de columnas de I.
! I Matriz identidad.
80
!
entero k, j
ejecuta k = 1, n
{
ejecuta j = 1, n
I[k, j] = 0.0
}
ejecuta k = 1, n
I[k, k] = 1.0
regresa
fin
proc multiplicacion_matrices(integer m, integer n, integer p, real A[m, n], real B[n, p], real &C[m,
p])
!
! Este procedimiento calcula el producto matricial C=A por B.
! Descripcin de parmetros:
! m Nmero de filas de A.
! n Nmero de columnas de B.
! p Nmero de columnas de A y nmero de filas de B
! C Matriz C = A*B.
!
entero i, j, k
ejecuta i = 1, m
{
ejecuta j = 1, p
{
C[i, j] = 0.0
ejecuta k = 1, n
C[i, j] = C[i, j] + A[i, k]*B[k,j]
}
}
regresa
fin
81
5. Optimizacin
1 2 n
Dada una funcin f(x) de n variables x , x , ..., x , se trata de encontrar un vector x tal que f(x )
* *
sea un mnimo local de f(x). Para encontrar un mximo local, se determina el mnimo de -f(x), es
decir, max f(x) = min -f(x).
5.1 Bsqueda unidimensional con seccin dorada
Sea una funcin de una variable f(x) continua y unimodal en [a, b]. Una funcin es unimodal en un
intervalo si en ste tiene un slo extremo. El proceso de encontrar un extremo de una funcin f(x)
en un intervalo dado sin emplear derivadas, se conoce como bsqueda unidimensional.
Considrese el problema de encontrar el mnimo de una funcin unimodal en el intervalo [a, b]. Es
posible definir dos puntos intermedios, p = a + r(b - a) y q = b - r(b - a), tales como los mostrados
en el siguiente diagrama:
1
<------------------------ L ----------------------->
|----------------|--------------------|-----------------|
a p q b
1 1
<---- rL ----> <---- rL ---->
donde r es una razn por determinar. Las distancias entre a y p y entre q y b son las mismas e
1
iguales a rL .Entonces se elimina la regin que contiene los valores ms altos de f(x); esa regin
puede ser [a, p] o [q, b]. Supngase que la regin eliminada es [a, p]:
1
<------------------------ L ------------------------>
|----------------|--------------------|-----------------|
a p q b
1 1
<---- rL ----> <---- rL ---->
1
<--- r(1 - r)L --->

|--------------------------------------|
a b
82
1 2
<--------- (1- r)L = L ---------->

1 1 1 1
El segmento que une los puntos p y q tiene una longitud r(1 - r)L y es igual a L - rL - rL
1 1 1 1 1 1 1
r(1 - r)L = L - rL - rL = L -2rL = L (1 - 2r)
r(1 - r) = 1 - 2r
r - r = 1 - 2r
2
r -3r + 1 = 0
2
Resolviendo la ltima ecuacin, se encuentra que:
r = (3 %((-3) - 4(1)(1))) / ((2)(1)) = (3 %5) / 2
2
Dado que |r| < 1, la nica solucin posible es r = (3 - %5) / 2 = .3819660112501..... . Esta razn r se
conoce como seccin dorada y tiene propiedades matemticas muy interesantes, conocidas ya por
los antiguos griegos.
Como se elimin la regin [a, p], es conveniente actualizar los lmites del intervalo de bsqueda,
de tal forma que el nuevo valor de a ser p, es decir, a = p. Se calculan los nuevos puntos p y q
2 2 2
colocados en el nuevo intervalo cuya longitud es L con las frmulas p = a + rL y q = b - rL . Si el
valor de r es el determinado arriba, entonces uno de los nuevos puntos p y q coinciden con alguno
de los p y q anteriores. Se continua con la eliminacin de regiones, los valores de los lmites a y b
1
se actualizan continuamente y la bsqueda finaliza hasta que # b - a# / L # mximo error permitido
o hasta completar un nmero dado de experimentos o iteraciones.
Ejemplo
Minimizar f(x) = (x - 1)(x - 2)(x -3) en [1, 3] con bsqueda unidimensional con seccin dorada.
1
Tome como criterio de finalizacin a # b - a# / L # .02.
a = 1, b = 3
r = (3 - %5) / 2 = .38197....
1
L = b - a = 3 - 1 = 2

Primer experimento
1 1
p = a + rL = 1 + .38917(2) = 1.76393 q = b - rL = 3 - .38197(2) = 2.23607
fp = f(p) = (1.76393 - 1)(1.76393 - 2)(1.76393 - 3) = .22291
83
fq = f(q) = (2.23607 - 1)(2.23607 - 2)(2.23607 - 3) = -.22291
1
La condicin # b -a # / L = *3 - 1 * / 2 > .02 , es verdadera y por lo tanto se requieren ms
iteraciones.
Si fp # fq es verdadera, implica que la regin por eliminar es la de la derecha. En caso contrario, se
elimina la regin colocada a la izquierda.
fp # fq, .22291 # -.22291 tiene un valor falso. Por lo tanto se elimina la regin de la izquierda y se
actualiza el lmite a:
a = p = 1.76393
Segundo experimento
p = q = 2.23607 q = b - r( b - a) = 3 - .38917(3 - 1.76393) = 2.52786
fp = f(p) = f(2.23607) = -.22291
fq = f(q) = f(2.52786) = (2.52786 - 1)(2.52786 -2)(2.52786 - 3) = -.38078
1
*b -a* / L = *3 - 1.76393* / 2 = .61804 > .02 , tiene un valor verdadero
fp # fq
-.22291 # -.38078 es falsa. Entonces se elimina la regin de la izquierda nuevamente:
Tercer experimento
a = p = 2.23607
p = q = 2.52786 q = b - r(b - a) = 3 - .38197(3- 2.23607) = 2.70820
fp = f(p) = -.38708
fq = f(q) = f(2.70820) = -.35300
1
*b - a* / L = *3 - 2.23607* / 2 = .38197 > .02, condicin verdadera
fp # fq
-.38708 # -.35300 es verdadera. Ahora, la regin eliminada es la de la derecha y se actualiza el
lmite b:
84
Cuarto experimento
b = q = 2.70820
q = p = 2.52786 p = a + r(b - a) = 2.23607 + .38197(2.70820 - 2.23607) = 2.41641
fp = f(p) = f(2.41641) = -.34420
fq = f(q) = -.38078
1
*b - a* / L = *2.70820 - 2.23607* / 2 = .23607 > .02 , la condicin sigue siendo verdadera.

La siguiente tabla muestra un resumen de los subsecuentes experimentos.
1
Experimento a p q b *b - a*/L
1 1.00000 1.76393 2.23607 3.00000 1.00000
2 1.76393 2.23607 2.52786 3.00000 0.61803
3 2.23607 2.52786 2.70820 3.00000 0.38197
4 2.23607 2.41641 2.52786 2.70820 0.23607
5 2.41641 2.52786 2.59675 2.70820 0.14590
6 2.52786 2.59675 2.63932 2.70820 0.09017
7 2.52786 2.57044 2.59675 2.63932 0.05573
8 2.52786 2.55418 2.57044 2.59675 0.03444
9 2.55418 2.50744 2.58049 2.59675 0.02129
10 2.57044 2.58049 2.58670 2.59675 0.01316
Al final, se evala la expresin f(p) # f(q); en caso verdadero el mnimo aproximado est en x = p,
*
en el caso contrario, el mnimo est en x = q. En consecuencia, x = 2.58049. Vale la pena
* *
recalcar que despus de la primera iteracin, solo se requiere de una evaluacin funcional por
experimento.
A continuacin, un algoritmo completo para la minimizacin de una funcin empleando bsqueda
unidimensional con seccin dorada.
85
proc seccion_dorada(real func f, real &a, real &b, real error_max, entero max_exp, real &xmin)
!
! Este procedimiento encuentra una aproximacin al valor de xmin, donde la funcin tiene un
! mnimo. Se emplea bsqueda unidimensional con seccin dorada.
! Descripcin de parmetros:
! f Funcin externa que evala a la funcin f(x) .
! a Lmite inferior del intervalo de bsqueda. En el regreso, devuelve el
! ltimo valor calculado para el lmite inferior.
! b Lmite superior del intervalo de bsqueda. En el regreso, devuelve el
! ltimo valor calculado para el lmite superior.
! error_max Mximo error relativo permisible.
! max_exp Mximo nmero de experimentos.
! xmin Valor de la variable independiente donde existe un mnimo aproximado de
! f(x). Si el cociente de la longitud del ltimo intervalo entre la longitud del !
intervalo original es menor que error_max o el nmero de experimentos
! calculados es igual a max_nexp, se termina el proceso de bsqueda.
!.
entero nexp
real r, p, q, fp, fq, L
r =(3.0-SQRT(5.0))/2.0 ! seccin dorada
nexp = 1
p = a + r*(b - a)
q = b- r*(b - a)
fp = f(p)
fq = f(q)
L = ABS(b -a) ! longitud del intervalo original
mientras ABS(b - a) / L > error_max y nexp < max_exp
{
si fp #fq entonces ! eliminacin de regiones
b = q
q = p
p = a + r*(b -a)
fq = fp
fp = f(p)
otro
a = p
p = q
q = b - r*(b - a)
fp = fq
fq = f(q)
nexp = nexp +1
}
si f(p) <= f(q) entonces ! clculo del resultado final
86
xmin = p
otro
xmin = q
regresa
fin

5.2 Optimizacin sin restricciones de funciones de varias variables
Existen dos clases de mtodos para minimizar funciones f(x) de n variables: los que se caracterizan
por emplear una direccin de bsqueda basada en el clculo de derivadas parciales (mtodos
indirectos) y aquellos en los cuales su direccin de bsqueda se obtiene solamente con
evaluaciones funcionales (mtodos directos).
Los mtodos indirectos tienen la forma general:
x = x + d
(k+1) (k) (k) (k)
en la cual una nueva aproximacin x se determina a partir de la estimacin anterior, x , y una
(k+1) (k)
direccin de bsqueda, d . El parmetro es un escalar cuyo valor indica que tanto se avanza
(k) (k)
en la direccin d .
(k)
Se dice que un algoritmo de optimizacin posee una propiedad de descenso si f(x ) < f(x ).
(k+1) (k)
Una posible direccin de bsqueda es el negativo del vector gradiente de f(x), d = - Lf(x ) = -
(k) (k)
grad(f(x )). Obviamente, esta direccin garantiza la propiedad de descenso. El mtodo as
(k)
construido se conoce como el del descenso ms brusco (steepest descent) o mtodo de Cauchy:
x = x - Lf(x )
(k+1) (k) (k) (k)
El escalar se determina mediante una bsqueda unidimensional para una funcin definida
(k)
por:
() = f(x - Lf(x ))
(k) (k)
Conocidos los vectores x y Lf(x ) , es una funcin solamente de la variable . Se trata de
(k) (k)
encontrar el valor de que minimiza a . Para aplicar una tcnica de bsqueda unidimensional, tal
como seccin dorada, se requiere de un intervalo que contenga al mnimo de () y para
encontrarlo se ejecuta un procedimiento conocido como enmarcado (bracketing). Uno de estos
procedimientos es el mtodo de Swann, en el cual los valores de se generan con:
j+1 j
= + 2 , para j = 0, 1, 2, ...
j

0
donde es un valor inicial arbitrariamente seleccionado y es un incremento o tamao de paso,
0 0 0
fijado de antemano. El primer paso es la comparacin de ( ), ( + **) y ( - **). Si
87
0 0 0
( - **) $ ( ) $ ( + **)
0
entonces , debido a la suposicin de unimodalidad de , el mnimo debe estar a la derecha de y
delta por lo tanto es positivo. Si
0 0 0
( - **) $ ( ) # ( + **)
0 0
implica que el mnimo est entre - ** y + *, lo cual finaliza el proceso de enmarcado. El
caso restante:
0 0 0
( - **) # ( ) $ ( + **)
j
indica que realmente no es unimodal. Entonces se procede a calcular valores hasta que se
encuentre un intervalo que contenga al mnimo de .
El proceso de enmarcado ms la bsqueda unidimensional conforman un procedimiento conocido
como bsqueda a travs de una direccin (line search).
Un criterio de convergencia usado frecuentemente en la optimizacin de funciones multivariables
1 2
es 2x - x 2 < o 2Lf(x )2 < .
(k+1) (k) k+1)
Ejemplo
1 2 1 2
Minimizar la funcin f(x) = x + x - 4x x con el mtodo del descenso ms brusco. Inicie con x
4 4 (0)
= [.6, .7] y tome como criterio de convergencia a 2x - x 2 < .001 o 2Lf(x )2 < .0001.
T (k+1) (k) k+1)
() = f(x - Lf(x ))
(0) (0)
0
Ahora, el procedimiento de enmarcado comenzando con = 0. Tome ** = .05.
0
( ) = f([.6, .7] - 0[-1.93600, -1.02800] ) = f([.6, .7] ) = .6 + .7 -4(.6)(.7) = -1.31030
T T T 4 4
88
0
( + **) = f(.05) = f([.6, .7] -.05[-1.93600, -1.02800] ) = f([.69680, .75140] ) = -1.53979
T T T
0
( - **) = f(-.05) = f([.6, .7] -(-.05)[-1.93600, -1.02800] ) = -1.06441
T T
0 0 0
Como ( - **) $ ( ) $ ( + **) , -1.06411 $ -1.31030 $ -1.53979, entonces = .05.
0
( ) = -1.31030
1 0 0 0
= + 2 = + = 0 + .05 = .05; ( ) = (.05) = -1.53979
0
2 1 1 1
= + 2 = +2 =.05 + .10 = .15; ( ) = (.15) = -1.88137
1
3 2 2 1
= + 2 = +4 =.15 + .20 = .35; ( ) = (.35) = -1.49020
2
3
Al llegar a , la funcin aument su valor, por lo tanto el mnimo de debe estar en el intervalo
1 3
[ , ] = [.05, .35]. Con esta conclusin termina el proceso de enmarcado y ahora comienza la
1
bsqueda unidimensional con a = .05 y b = .35. Terminar la bsqueda cuando *b -a* / L < .05.
r = .38197
1
L = .35 - .05 = .30
Primer experimento
p = a + r*(b - a) = .05 + .38197(.35 - .05) = .16459
q = b - r*(b - a) = .35 - .38197(.35 - .05) = .23541
fp = (p) = (.16459) = -1.91097
fq = (q) = (.23541) =-1.94830
1
*b - a* / L = *.35 - 05* / .30 = 1 > .05, lo que obliga a realizar ms experimentos

fp # fq, -1.91097 < -1.94830, es una condicin falsa y entonces se elimina la regin [a, p].
Segundo experimento
a = p = 0.16459 p = q = .23541
q = b - a*(b - a) = .35 - .38197(.35 - .16459) = .27918
fp = fq = -1.94830
89
fq = (q) = (.27918) = -1.86178
1
b - a* / L = *.35 - .16459 * / .30 = .61803 > .05
La condicin fp < fq, -1.94830 < -1.86178 es ahora verdadera y entonces la regin eliminada es [q,
b].
Tercer experimento
b = q = .27918 q = p = .23541
p = a + r*(b - a) = .16459 +.38197(.27918 - .16459) = .20836
fq = fp = -1.94830

fp = (p) = (.20836) = -1.95707
1
*b - a* / L = *.27918 - .16459* / .30 = .38197 > .05
fp < fq, -1.95707 < -1.94830, la condicin es verdadera
Cuarto experimento
b = q = .23541 q = p = .20836
p = a + r*(b - a) = .16459 + .38197(.23541 - .16459) = .19164
fq = fp = -1.95707
fp = (p) = (.19164) = -1.44761

1
*b - a* / L = *.23541 - .16459* / .30 = .23607 > .05
La siguiente es una tabla con los experimentos restantes
1
Experimento a p q b *b - a*/L
1 .05000 .16459 .23541 .35000 1.00000
2 .16459 .23541 .27918 .35000 .61803
3 .16459 .20836 .23541 .27918 .38197
4 .16459 .19164 .20836 .23541 .23607
90
5 .19164 .20836 .21869 .23541 .14590
6 .20836 .21869 .22508 .23541 .09017
7 .20836 .21475 .21869 .22508 .05573
8 .20836 .21231 .21475 .21869 .03444
El mnimo, despus de ocho experimentos, se encuentra en = .21475.
*
Para terminar la primera iteracin, el clculo de x y la verificacin de la convergencia:
(1)
2
2x - x 2 = %((1.01576 - .6) + (.92076 - .7) ) = .47073
(1) (0) 2 2
2 1 2 2 1 2
2Lf(x )2 = 2[4(x ) - 4x , 4 (x ) - 4x ] 2
(1) (1) 3 (1) (1) 3 (1) T

2 2 2
2Lf(x )2 =2[4(1.01576) - 4(.92076), 4(.92076) - 4(1.01576)] 2 = 2[.50908, -.94056]2
(1) 3 3 T
2
2Lf(x )2 = %(.50908 + (-.94056) ) = 1.06949
(1) 2 2
2 2
Ya que la condicin 2x - x 2 < .001 o 2Lf(x )2 < .0001 tiene un valor global falso, ser
(1) (0) (1)
necesario continuar con el clculo de ms iteraciones.
Los siguientes son algoritmos en pseudocdigo para el proceso de enmarcado y el mtodo del
descenso ms brusco.
proc enmarcado_funcion(func real f, real xinicial, real &delta, real amax, real &a, real &b,
entero &error)
!
! Este procedimiento encuentra un intervalo que contiene el mnimo de una funcin
! unimodal. Se emplea el algoritmo de Swann.
! Descripcin de parmetros:
! f Funcin externa que evala a la funcin f(x).
! xinicial Valor inicial para la bsqueda de los lmites del intervalo.
! delta Tamao de paso para la variable independiente usado en la frmula de
! Swann.
! amax Mximo valor permitido para el lmite inferior a.
! a Lmite inferior del intervalo que contiene un mnimo de la funcin f.
! b Lmite superior del intervalo que contiene un mnimo de la funcin f.
91
! error Bandera que indica el tipo de error detectado en los clculos:
! error = 0 sin error
! error = 1 la funcin no es unimodal en [x0 - ABS(delta), x0 +
! ABS(delta)
! error = 2 El ltimo valor calculado del lmite inferior es mayor que
! amax.
!
real x0, fx0, fizq, fder, x1, x2, fx1, fx2
entero j
!
! Se determina el signo correcto de delta
!
error = 0
x0 = xinicial
fx0 = f(x0)
fizq = f(x0 - ABS(delta))
fder = f(x0 + ABS(delta))
si fizq $fx0 y fx0 $ fder entonces
delta = ABS(delta) ! el signo de delta es positivo
otro si fizq $fx0 y fx0 # fder entoces
a = x0 - ABS(delta) ! el mnimo est entre x0 - ABS(delta) y x0 + ABS(delta)
b = x0 + ABS(delta)
regresa
otro
error = 1 ! f no es unimodal
regresa
j = 0
x1 = x0 + (28j)*delta
fx1=fder
mientras(x0 <= amax) ! clculo de los lmites del intervalo
{
j = j + 1
x2 = x0 + (28j)*delta
fx2 = f(x2)
si fx2 >= fx1 entonces
{
a = x0
b = x2
regresa
}
x0 = x1
x1 = x2
fx1 = fx2
92
}
error = 2
regresa
fin
proc descenso_mas_brusco(entero n, real &x[n], real tolerancia1, real tolerancia2, entero maxiter,
proc gradiente, func phi, entero &codigo_error)
!
! Clculo aproximado de un mnimo local de una funcin multivariable f(x) con el mtodo del
! descenso ms brusco.
! Descripcin de parmetros:
! n Nmero de variables.
! x Vector, de longitud n, que en la llamada contiene una estimacin inicial
! del punto donde se encuentra un mnimo local. En el regreso, devuelve
! la ltima iteracin calculada.
! tolerancia1,
! tolerancia2 Si la norma euclidiana de la diferencia entre las ltimas dos iteraciones es
! menor que tolerancia1 o si la norma euclidiana del vector gradiente de f(x)
! evaluado en la ltima iteracin es menor que tolerancia2, se considera
! haber llegado a un mnimo local de f(x).
! maxiter Nmero mximo de iteraciones.
! gradiente Procedimiento que calcula el gradiente de la funcin objetivo f(x)
! evaluado en el vector x:
! proc gradiente (entero n, real x[n], real nabla[n])
! n Nmero de variables.
! x Vector de variables. De longitud n.
! nabla Vector gradiente de la funcin objetivo f(x) evaluado en x.
! phi Funcin que evala a phi(lamda) = f(x0 + lamda*d), donde f es la funcin
! objetivo f(x)
! func phi(real lamda)
! lamda Escalar que es la variable independiente de phi
! Los vectores x0 y d son variables globales y ambos de longitud n.
! codigo_error Bandera cuyo valor indica el tipo de situacin encontrada:
! codigo_error = 0 Sin error
! codigo_error = 1 No se alcanz la convergencia despus de maxiter
! iteraciones.
! codigo_error = 2 Error en la bsqueda a travs de una direccin.
!
entero i, iter, error_enmarcado
real x0[n], nabla[n], d[n], a, b, lamda_min, suma, norma_x, norma_gradiente
global x0, d ! Se declaran a los vectores x0 y d como globales
codigo_error = 0
ejecuta i = 1, n
93
x0[i] = x[i]
ejecuta iter = 1, maxiter
{
llama gradiente(n, x0 ,nabla) ! evaluacin del vector gradiente
!
! bsqueda a travs de una direccin
!
ejecuta i = 1,n ! d es el vector que representa a la direccin de bsqueda
d[i] = - nabla[i]
llama enmarcado_funcion(phi, 0.0, .05,10.0, a, b, error_enmarcado)
si error_enmarcado 0 entonces
codigo_error = 2
regresa
llama seccion_dorada(phi, a, b, .05, 20, lamda_min)
suma = 0.0
ejecuta i = 1, n
{
x[i] =x0[i] + alfa*d[i] ! clculo de la nueva iteracin x
suma = suma + (x[i] - x0[i])82
}
norma_x= SQRT(suma)
llama gradiente(n, x ,nabla) ! evaluacin del vector gradiente en el vector x
suma = 0.0
ejecuta i = 1, n
suma = suma + nabla[i]82
norma_gradiente = SQRT(suma)
!
! se checa la convergencia
!
si norma_x < tolerancia1 o norma_gradiente < tolerancia2 entonces regresa
ejecuta i = 1, n
x0[i] = x[i] ! se prepara una nueva iteracin
}
codigo_error = 1 ! sin convergencia
regresa
fin
La siguiente es una tabla con el resumen de todas las iteraciones las iteraciones realizadas:
1 2
Iteracin k x x
* (k) (2
2 2
2x - x 2 2Lf(x )2
(k) (k-1) (k)
1 0.21475 1.01576 0.92076 0.47072 1.06939
94
2 0.06885 0.98071 0.98551 0.07362 0.19357
3 0.12082 1.00114 0.99689 0.02339 0.04924
4 0.06443 0.99946 0.99958 0.00317 0.00562
5 0.11687 1.00002 0.99991 0.00066 0.00128

1 2 1 2
Una grfica de contornos para la funcin f(x) = x + x - 4x x confirma que un mnimo local se
4 4
encuentra en x = [1, 1].
95
Frecuentemente el mtodo del descenso ms brusco se aproxima al mnimo lentamente y con un
patrn en zigzag.
Una aplicacin interesante del mtodo del descenso ms brusco es la solucin de sistemas de
ecuaciones no lineales f(x) = 0, cuando no se conoce una estimacin inicial x cercana a la
(0)
solucin. En este caso, la funcin multivariable por minimizar es:
ya que el mnimo de G(x) coincide con la solucin de f(x) = 0. Por ejemplo, para resolver el
sistema:
1 1 1 2 1 1
f (x) = f (x , x ) = x + x - 4 = 0
2 2
2 2 1 2 1 2
f (x) = f (x , x ) = x x - 1 = 0
1 1 1 2
se minimiza G(x) = (x + x - 4) + (x x - 1) . Si x = [.2, .3] , el descenso ms brusco con los
2 2 2 2 (0) T
criterios de convergencia 2x - x 2 < .001 o 2Lf(x )2 < .0001 da los resultados:
(k+1) (k) k+1)
1 2
Iteracin k x x
* (k) (2
2 2
2x - x 2 2Lf(x )2
(k) (k-1) (k)
1 0.24969 1.11386 1.55344 1.55121 .89594
2 0.74149 0.57491 1.94184 0.66432 1.14722
3 0.02902 0.55503 1.91513 0.03330 0.22020
4 0.16459 0.52420 1.93417 0.03624 0.16208
5 0.03024 0.52157 1.93003 0.00490 0.02507
6 0.12477 0.51913 1.93200 0.00313 0.02497
7 0.03222 0.51862 1.93137 0.00080 0.00662
Si ahora la direccin de bsqueda d se escoge como:
(k)
d = - [H(x )] Lf(x )
(k) (k) -1 (k)
entonces un nuevo algoritmo es formado:
x = x - [H(x )] Lf(x )
(k+1) (k) * (k) -1 (k)
96
el cual es conocido como mtodo de Newton o de Gauss Newton. De hecho, es Newton Raphson
multivariable formulado para resolver el sistema de ecuaciones Lf(x) = 0, incluida una bsqueda a
travs de una direccin para garantizar la propiedad de descenso. La matriz H(x), de n x n, es
llamada matriz hessiana de la funcin f(x) y se define por:
Si f(x) es continua, entonces la matriz hessiana H(x) es simtrica y nica.
Como la inversin de una matriz es un procedimiento altamente costoso desde el punto de vista
computacional, se prefiere calcular la direccin de bsqueda d con:
(k)
d = - [H(x )] Lf(x )
(k) (k) -1 (k)
[H(x )] d = - [H(x )][H(x )] Lf(x )
(k) (k) (k) (k) -1 (k)
[H(x )] d = - Lf(x )
(k) (k) (k)
que implica resolver un sistema lineal de n x n en cada iteracin. Una vez conocida la direccin de
bsqueda d , se aplica una bsqueda a travs de una direccin para calcular la nueva estimacin
(k)
x = x - [H(x )] Lf(x ) = x + d .
(k+1) (k) * (k) -1 (k) (k) * (k)

Ejemplo
1 2 1 2
Minimizar f(x) = x + x - 4 x x con el mtodo de Newton. Tome como estimacin inicial a x
4 4 (0)
2 2
= [.9, .9] y considere el criterio de convergencia 2x - x 2 < .001 o 2Lf(x )2 < .0001.
T (k+1) (k) (k+1)
k = 0
97
Lf(x ) = [4(.9) -4(.9), 4(.9) -4(.9)] = [-.68400, -.68400]
(0) 3 3 T T
La direccin de bsqueda d es determinada al resolver el sistema lineal [H(x )] d = - Lf(x ):
(k) (k) (k) (k)
0
El proceso de enmarcado arroja como resultado a = .35 y b =1.55 Se emplearon = 0 y ** = .05.
1
La bsqueda unidimensional con seccin dorada en este intervalo y un criterio de paro *b - a* / L
< .05 determina que = .83390, por lo tanto, la nueva iteracin x es:
* (1)
x = x + d = [.9, .9] + .83390 [.11958, .11958] = [.99972, .99972]
(k+1) (0) * (k) T T T
2
2x - x 2 = %((.99972 - .9) + (.99972 - .9) ) = .14102
(1) (0) 2 2
2 1 2 2 1 2
2Lf(x )2 = 2[4(x ) - 4x , 4 (x ) - 4x ] 2
(1) (1) 3 (1) (1) 3 (1) T

2 2 2
2Lf(x )2 =2[4(.99972) - 4(.99972), 4(.99972) - 4(.99972)] 2 = 2[-.00224, -.00224]2
(1) 3 3 T
2
2Lf(x )2 = %(-.00224) + (-.00224) = .00318
(1) 2 2
Las iteraciones restantes son mostradas en la siguiente tabla:
98
1 2
Iteracin k x x
* (k) (2
2 2
2x - x 2 2Lf(x )2
(k) (k-1) (k)
1 0.83390 0.99972 0.99972 0.14102 0.00318
2 0.99922 1.00000 1.00000 0.00040 0.00000
A continuacin, un procedimiento en pseudocdigo para el algoritmo de Gauss Newton
proc gauss_newton(entero n, real &x[n], real tolerancia1, real tolerancia2, entero maxiter, proc
gradiente, proc hessiana, func phi, entero &codigo_error)
!
! Clculo aproximado de un mnimo local de una funcin multivariable f(x) con el mtodo de
! Gauss Newton.
! Descripcin de parmetros:
! n Nmero de variables.
! x Vector, de longitud n, que en la llamada contiene una estimacin inicial
! del punto donde se encuentra un mnimo local. En el regreso, devuelve
! la ltima iteracin calculada.
! tolerancia1,
! tolerancia2 Si la norma euclidiana de la diferencia entre las ltimas dos iteraciones es
! menor que tolerancia1 o si la norma euclidiana del vector gradiente de f(x)
! evaluado en la ltima iteracin es menor que tolerancia2, se considera
! haber llegado a un mnimo local de f(x).
! maxiter Nmero mximo de iteraciones.
! gradiente Procedimiento que calcula el gradiente de la funcin objetivo f(x)
! evaluado en el vector x:
! proc gradiente (entero n, real x[n], real nabla[n])
! n Nmero de variables.
! x Vector de variables. De longitud n.
! nabla Vector gradiente de la funcin objetivo f(x) evaluado en x.
! hessiana Procedimiento que calcula la matriz hessiana de la funcin objetivo f(x)
! evaluada en el vector x:
! proc hessiana (entero n, real x[n], real H[n, n])
! n Nmero de variables.
! x Vector de variables. De longitud n.
! H Matriz hessiana de la funcin objetivo f(x) evaluada en x.
! phi Funcin que evala a phi(lamda) = f(x0 + lamda*d), donde f es la funcin
! objetivo f(x)
! func phi(real lamda)
! lamda Escalar que es la variable independiente de phi
! Los vectores x0 y d son variables globales y ambos de longitud n.
! codigo_error Bandera cuyo valor indica el tipo de situacin encontrada:
99
! codigo_error = 0 Sin error
! codigo_error = 1 No se alcanz la convergencia despus de maxiter
! iteraciones.
! codigo_error = 2 Error en la bsqueda a travs de una direccin.
!
entero i, j, iter, error_enmarcado
real x0[n], nabla[n], d[n], a, b, lamda_min, suma, norma_x, norma_gradiente
real H[n, n], A_aumentada[n, n + 1]
lgico solucion_unica
global x0, d ! Se declaran a los vectores x0 y d como globales
codigo_error = 0
ejecuta i = 1, n
x0[i] = x[i]
ejecuta iter = 1, maxiter
{
llama gradiente(n, x0 ,nabla) ! evaluacin del vector gradiente
!
! bsqueda a travs de una direccin
!
llama hessiana(n, x0, H) ! clculo de la matriz hessiana
ejecuta i = 1, n
{
ejecuta j = 1, n
A_aumentada[i, j] = H[i, j]
A_aumentada[i, n +1] = - nabla[i]
}
!
! d es el vector que representa a la direccin de bsqueda
!
llama eliminacion_gauss(n, A_aumentada, d, solucion_unica)
llama enmarcado_funcion(phi, 0.0, .05,10.0, a, b, error_enmarcado)
si error_enmarcado 0 entonces
codigo_error = 2
regresa
llama seccion_dorada(phi, a, b, .05, 20, lamda_min)
suma = 0.0
ejecuta i = 1, n
{
x[i] =x0[i] + alfa*d[i] ! clculo de la nueva iteracin x
suma = suma + (x[i] - x0[i])82
}
norma_x= SQRT(suma)
llama gradiente(n, x ,nabla) ! evaluacin del vector gradiente en el vector x
100
suma = 0.0
ejecuta i = 1, n
suma = suma + nabla[i]82
norma_gradiente = SQRT(suma)
!
! se checa la convergencia
!
si norma_x < tolerancia1 o norma_gradiente < tolerancia2 entonces regresa
ejecuta i = 1, n
x0[i] = x[i] ! se prepara una nueva iteracin
}
codigo_error = 1 ! sin convergencia
regresa
fin
101
6. Aproximacin e interpolacin
La aproximacin es una tcnica que se emplea para:
1) Reemplazar una funcin f(x) difcil de evaluar, derivar o integrar; por otra funcin g(x) ms
simple de manipular.
2) Manejar funciones cuya nica informacin disponible sobre ellas es un conjunto finito de
puntos (puntos base):
0 0
x f(x )
1 1
x f(x )
2 2
x f(x )
. .
. .
. .
n n
x f(x )
Las funciones utilizadas en aproximacin frecuentemente pertenecen a uno de los siguientes tipos:
n 0 1 2 n
1) polinomiales: g(x) = P (x) = a + a x + a x + ... + a x
2 n
0 0 1 1 2 2 n n
2) exponenciales: g(x) = a exp(b x) + a exp(b x) + a exp(b x) + ... + a exp(b x)
0 1 2 n 0 1 2 m n m
3) racionales: g(x) = ( a + a x + a x + ... + a x ) / ( b + b x + b x + ... + b x ) = P (x) / P (x)
2 n 2 m
0 1 2 n 1 2
4) series de Fourier: g(x) = a + a cos(x) + a cos(2x) + ... a cos(nx) + b sen(x) + b sen(2x) + ... +
n
b sen(nx).
Los polinomios y sus derivadas presentan la ventaja de ser funciones continuas sobre toda la recta
real. Adems, el teorema de aproximacin de Weierstrass garantiza la existencia de un polinomio
que aproxima a f(x) tan cerca como se requiera:
Si f est definida y es continua en [a, b), dado > 0, existe un
polinomio P, definido en [a, b], con la propiedad de que |f(x) -
P(x)| < para toda x 0 [a, b].
0 1 2 n
Si x , x , x , ..., x son (n + 1) nmeros diferentes y f(x) es una funcin cuyos valores estn dados
en esos puntos, entonces existe un nico polinomio P de grado a lo ms n, con la propiedad de que
k n k
f(x ) = P (x ) para k = 0, 1, 2, ..., n. Un polinomio construido con este criterio se conoce como
i i
polinomio interpolante. Por ejemplo, en la figura siguiente se hace pasar por los puntos (x , f(x )), i
3
= 0, 1, 2, 3, un polinomio interpolante de grado a lo ms tres, P (x).


102







En esta grfica se observa una dificultad inherente a la interpolacin polinomial: el error cometido
al aproximar a f(x) por un polinomio interpolante no se distribuye uniformemente en el intervalo
0 n
[x , x ].
Hay que tomar en cuenta que los polinomios de grado alto presentan un comportamiento altamente
oscilatorio ,el cual los descalifica como funciones interpolantes. Por esta situacin, se recomienda
utilizar polinomios interpolantes de grado menor o igual a tres.
6.1 Interpolacin de Lagrange

Dados los puntos base:
0 0
x f(x )
1 1
x f(x )
2 2
x f(x )
. .
. .
. .
n n
x f(x )
i n
con los valores distintos de x , i = 1, 2, 3, ...,n. Si el polinomio interpolante P (x) se escribe de la
103
forma:
n 0 1 3 n 1 0 3 n 2 2
P (x) = A (x - x ) (x - x ) (x - x ) ... (x - x ) + A (x - x ) (x - x ) (x - x ) ... (x - x ) +
2 0 3 n n 0 3 n-1 1 1
A (x - x ) (x - x ) (x - x ) ... (x - x ) + ... + A (x - x ) (x - x ) (x - x ) ... (x - x )
n i i
Al aplicar el criterio del polinomio interpolante, P (x ) = f(x ), para i = 0, 1, 2, ..., n
n 0 0 0 0 1 0 2 0 3 0 n
P (x ) = f(x ) = A (x - x ) (x - x ) (x - x ) ... (x - x )
n 1 1 1 1 0 1 2 1 3 1 n
P (x ) = f(x ) = A (x - x ) (x - x ) (x - x ) ... (x - x )
n 2 2 2 2 0 2 1 2 3 2 n
P (x ) = f(x ) = A (x - x ) (x - x ) (x - x ) ... (x - x )
. .
. .
. .
n n n n n 0 n 1 n 2 n n-1
P (x ) = f(x ) = A (x - x ) (x - x ) (x - x ) ... (x - x )
Por lo tanto
0 0 0 1 0 2 0 3 0 n
A = f(x ) / (x - x ) (x - x ) (x - x ) ... (x - x )
1 1 1 0 1 2 1 3 1 n
A = f(x ) / (x - x ) (x - x ) (x - x ) ... (x - x )
2 2 2 0 2 1 2 3 2 n
A = f(x ) / (x - x ) (x - x ) (x - x ) ... (x - x )
. .
. .
. .
n n n 0 n 1 n 2 n n-1
A = f(x ) / (x - x ) (x - x ) (x - x ) ... (x - x )
Entonces el polinomio interpolante queda como:
n 0 1 3 n 0 1 0 2 0 3 0 n 2
P (x) = f(x ) (x - x ) (x - x ) (x - x ) ... (x - x ) / (x - x ) (x - x ) (x - x ) ... (x - x ) +
1 0 3 n 1 0 1 2 1 3 1 n 2
f(x ) (x - x ) (x - x ) (x - x ) ... (x - x ) / (x - x ) (x - x ) (x - x ) ... (x - x ) +
2 0 3 n 2 0 2 1 2 3 2 n 1
f(x ) (x - x ) (x - x ) (x - x ) ... (x - x ) / (x - x ) (x - x ) (x - x ) ... (x - x ) + ... +
n 0 3 n-1 n 0 n 1 n 2 n n-1 1
f(x ) (x - x ) (x - x ) (x - x ) ... (x - x ) / (x - x ) (x - x ) (x - x ) ... (x - x )
En una notacin ms compacta

104
Esta frmula es conocida como la forma de Lagrange del polinomio interpolante.
Ejemplo
Use la frmula de Lagrange para encontrar el polinomio interpolante que pasa por los puntos
i i
i x f(x )
0 0 -5
1 1 1
2 3 25
Como son tres puntos, entonces el grado del polinomio interpolante es a lo ms dos:
2 0 1 2 0 1 0 2 1 0 2 1 0 1 2
P (x) = f(x ) (x - x ) (x - x ) / (x - x ) (x - x ) + f(x ) (x - x ) (x - x ) / (x - x ) (x - x ) +
2 0 1 2 0 2 1
f(x ) (x - x ) (x - x ) / (x - x ) (x - x )
2
P (x) = -5*(x - 1) (x - 3) / (0 - 1) (0 - 3) + 1*(x - 0) (x - 3) / (1 - 0) (1 - 3) +
25* (x - 0) (x - 1) / (3 - 0) (3 - 1) = -5*(x - 4x +3) / 3 + (x -3x) / (-2) + 25*(x - x) / 6
2 2 2
2
P (x) = 2x +4x - 5
2
Ejemplo
Aproxime el valor de f(10) mediante polinomios de Lagrange de
a) grado 1
b) grado 2
c) grado 3
i i
i x f(x )
0 3 1.0986
1 5 1.6094
2 8 2.0794
3 12 2.4849
4 15 2.7081
5 21 3.0445
6 30 3.4012
7 35 3.5553
105
a) Para un grado n=1, se requiere escoger dos puntos. La seleccin obvia es:
i i
i x f(x )
0 8 2.0794
1 12 2.4849

Por facilidad, se vuelven a numerar los datos a partir del subndice cero, entonces la frmula de
Lagrange queda:
1 0 1 0 1 1 0 1 0
P (x) = f(x ) (x - x ) / (x - x ) + f(x ) (x - x ) / (x - x )
que al ser evaluada en x = 10 da el resultado
1
f(10) P (10) = 2.0794 * (10 - 12) /(8 - 12) + 2.4849 * (10 - 8) / (12 - 8) = 2.2822
b) Con n = 2, las opciones ms viables son los intervalo [5, 12] y [8, 15] . En casos como ste el
criterio empleado es seleccionar aquel intervalo [a, b] que contenga el argumento de la
interpolacin lo ms cerca posible de (a + b) / 2. Para este inciso, hay un empate en este criterio y
por lo tanto cualquiera de las opciones es adecuada. Si se toma [5, 12] y se numeran los puntos a
partir del subndice cero:
i i
i x f(x )
0 5 1.6094
1 8 2.0794
2 12 2.4849
2 0 1 2 0 1 0 2 1 0 2 1 0 1 2
P (x) = f(x ) (x - x ) (x - x ) / (x - x ) (x - x ) + f(x ) (x - x ) (x - x ) / (x - x ) (x - x ) +
2 0 1 2 0 2 1
f(x ) (x - x ) (x - x ) / (x - x ) (x - x )
2
f(10) P (10) = 1.6094 * (10 - 8) (10 - 12) / (5 - 8) (5 - 12) +
2.0794 * (10 - 5) (10 - 12) / (8 -5) (8 - 12) +
2.4849 * (10 - 5) (10 - 8) / (12 -5) (12 - 8) = 2.3137
c) Si el polinomio interpolante es de tercer grado, la seleccin ms conveniente de los cuatro
puntos requeridos es:
i i
i x f(x )
106
0 5 1.6094
1 8 2.0794
2 12 2.4849
3 15 2.7081
3 0 1 2 3 0 1 0 2 0 3
P (x) = f(x ) (x - x ) (x - x ) (x - x ) / (x - x ) (x - x ) (x - x ) +
1 0 2 3 1 0 1 2 1 3
f(x ) (x - x ) (x - x ) (x - x ) / (x - x ) (x - x ) (x - x ) +
2 0 1 3 2 0 2 1 2 3
f(x ) (x - x ) (x - x ) (x - x ) / (x - x ) (x - x ) (x - x ) +
3 0 1 2 3 0 3 1 3 2
f(x ) (x - x ) (x - x ) (x - x ) / (x - x ) (x - x ) (x - x )
3
f(10) P (10) = 2.3057
A continuacin, un pseudocdigo de una funcin que evala un polinomio de Lagrange.
func lagrange(entero np, real x[np], real fx[np], real xint)
!
! Esta funcin evala un polinomio de Lagrange que pasa por los puntos (x, fx), en x = xint
! Descripcin de parmetros:
! np Nmero de puntos
! x Vector de valores de la variable independiente. Deben de ser nmeros
! diferentes
! fx Vector de valores de la variable dependiente f(x)
! xint Argumento de la interpolacin.
!
entero i, j
real fxint, producto
fxint = 0.0
ejecuta i = 1, np
{
producto = 1.0
ejecuta j = 1, np
si i j entonces producto = producto * (xint - x[j]) / (x[i] - x[j])
fxint = fxint + fx[i] * producto
}
regresa fxint ! el polinomio de Lagrange evaluado en x = xint es devuelto en fxint
fin
El siguiente teorema proporciona una manera de estimar, en el mejor de los casos como una cota
mxima, el error cometido al aproximar f(x) mediante un polinomio interpolante calculado con la
frmula de Lagrange.
107
0 1 2 n
Si x , x , x , ..., x son distintos en el intervalo [a, b] y si
f0C [a, b], entonces, para cada x en [a, b], existe un nmero
n+1
n 0 1
(x) en (a, b) tal que f(x) = P (x) + f ((x)) (x - x ) (x - x )
(n+1)
n
... (x - x ) / (n +1 )!.
6.2 Interpolacin mediante splines
0 1 2 n i
Considere los puntos a = x < x < x < ... < x = b y sus correspondientes valores funcionales f(x ) ,
0 1 2 n-1
i = 0, 1, 2, ..., n. Es posible trazar las funciones S , S , S , ..., S conocidas como splines cbicos
interpolantes. La idea es trazar curvas distintas para cada par de nodos y que siguen a la funcin
f(x) de manera muy cercana, como si fueran trazadas con una plantilla de curvas. Las funciones
splines (trazadores) son ejemplos de un tipo interpolacin conocida como interpolacin
0 1 2
segmentaria. Por ejemplo, la siguiente grfica muestra los splines S , S y S que corresponden a
i i
los nodos (x , f(x )) , i = 0, 1, 2, 3.
0 1 2 n
Un spline cbico interpolante de f relativo a la particin a = x < x < x < ... < x = b es una
funcin S que satisface:
j j+1
1.- En cada subintervalo [x , x ], j = 0, 1, 2, ..., n-1, S coincide con el polinomio cbico
j j j j j j j j
S(x) = S (x) = a + b (x - x ) + c (x - x ) + d (x - x )
2 3
0 1 2 n
2.- S interpola a f en x , x , x , ..., x
3.- S es continua en [a, b]
4.- S' es continua en [a, b]
5.- S'' es continua en [a, b]
108
La funcin S est compuesta de n polinomios cbicos diferentes, cada uno con cuatro coeficientes,
lo que da un total de 4n incgnitas. La interpolacin provee n + 1 ecuaciones y la continuidad del
spline y de sus dos primeras derivadas aporta 3(n -1 ) ecuaciones, lo que da un total de n +1 + 3(n
- 1) = n + 1 + 3n - 3 = 4n - 2 ecuaciones. Por lo tanto, para resolver el problema de interpolacin
con splines es necesario fijar 4n - ( 4n - 2) = 2 condiciones ms. Como estas condiciones
generalmente se especifican en el primero y ltimo nodos, se conocen como condiciones frontera.
Las condiciones frontera ms comunes son: no anudadas (not-knot) , sujetas (clamped) o naturales
(natural o free).
j
El criterio de polinomio interpolante aplicado a cada funcin S da como resultado:
j j j j j j j j j j j
S (x ) = f(x ) = a + b ( x - x ) + c ( x - x ) + d ( x - x ) = a , j = 0, 1, 2, ..., n - 1
2 3
j j+1 j+1 j+1
La continuidad entre splines consecutivos implica que S (x ) = S ( x )
j j j+1 j j j+1 j j j+1 j j+1 j+1 j+1 j+1 j+1 j+1 j+1 j+1
a + b ( x - x ) + c ( x - x ) + d ( x - x ) = a + b ( x - x ) + c ( x - x ) + d (
2 3 2
j+1 j+1
x - x )
3
j j j j j j j j+1 j j+1 j
a + b h + c h + d h = a , j = 0, 1, 2, ..., n - 2 con h = x - x
2 3
n n
Si adems definimos a = f(x ), entonces
j j j j j j j j+1
a + b h + c h + d h = a , j = 0, 1, 2, ..., n - 1
2 3
j j+1 j+1 j+1
Tambin es requerida la continuidad de la derivada del spline, S '(x ) = S '( x )
j j j+1 j j j+1 j j+1 j+1 j+1 j+1 j j+1 j+1 j+1
b + 2c ( x - x ) + 3d ( x - x ) = b + 2c ( x - x ) + 3d ( x - x ) = b
2 2
j j j j j j+1
b + 2c h + 3d h = b , j = 0, 1, 2, ..., n - 2
2
n n
Si b = S'(x ), la ltima ecuacin se extiende a
j j j j j j+1
b + 2c h + 3d h = b , j = 0, 1, 2, ..., n - 1
2
j j+1 j+1 j+1 n
Finalmente, la continuidad de segunda derivada del spline indica que S ''(x ) = S ''( x ) y si c
n
= S''(x ) / 2, entonces
j j j+1 j j j+1 j+1 j+1 j+1 j+1 j+1
2c + 6d ( x - x ) = 2c ( x - x ) + 6d ( x - x ) = 2c
j j j j+1
2c + 6d h =2 c , j = 0, 1, 2, ..., n - 2
j
Despejando d de esta ltima ecuacin:
j j+1 j j j+1 j j
d = ( 2c - 2c ) / 6h = ( c - c ) / 3h (1)
109
j+1 j j j j j j j j+1 j j j j j
Recordando que a = a + b h + c h + d h y b = b + 2c h + 3d h
2 3 2
j+1 j j j j j j+1 j j j j j j j j+1 j j
a = a + b h + c h + [ ( c - c ) / 3h ] h = a + b h + [( 3c + c - c ) / 3] h 2
3 2
j+1 j j j j j+1 j
a = a + b h + [( 2c + c ) / 3] h (2)
2
j+1 j j j j+1 j j j j j+1 j j
b = b + 2c h + 3 [ ( c - c ) / 3h ] h = b + ( c + c ) h (3)
2
j
Por ltimo, resolviendo (2) para b :
j j+1 j j j j+1 j
b = ( a - a ) / h - ( 2c + c ) h / 3 (4)
Sustituyendo (4) en (3):
j+1 j+1 j j j j+1 j j+1 j j
b = ( a - a ) / h - ( 2c + c ) h / 3 + ( c + c ) h
j+1 j+2 j+1 j+1 j+1 j+2 j+1
De (4) se deduce que b = ( a - a ) / h - ( 2c + c ) h / 3 y por lo tanto
j+2 j+1 j+1 j+1 j+2 j+1 j+1 j j j j+1 j j+1 j j
( a - a ) / h - ( 2c + c ) h / 3 = ( a - a ) / h - ( 2c + c ) h / 3 + ( c + c ) h
Disminuyendo una unidad a los subndices de la ltima expresin:
j+1 j j j j+1 j j j-1 j-1 j-1 j j-1 j j-1 j-1
( a - a ) / h - ( 2c + c ) h / 3 = ( a - a ) / h - ( 2c + c ) h / 3 + ( c + c ) h
Agrupando y reduciendo trminos se llega a la ecuacin final que muestra la relacin entre los
j j
coeficientes a y c :
j-1 j-1 j-1 j j j j+1 j+1 j j j j-1 j-1
h c + 2 ( h + h ) c + h c = 3 ( a - a ) / h - 3 ( a - a ) / h , j = 1, 2, 3,..., n -1 (5)
Para la distintas condiciones en la frontera se tiene:
1 n-1 0 1 n-2 n-1
1) Condiciones no anudadas: S''' continua en x = x y en x = x y por lo tanto d = d y d = d .
Entonces (5) para j = 2, 3, 4, ..., n-2 junto con:
0 1 0 1 1 1 0 1 2 2 1 1 1 0 0
( 3h + 2h + h / h ) c + (h - h / h ) c = 3 ( a - a ) / h - 3 ( a - a ) / h
2 2
n-2 n-1 n-2 n-2 n-1 n-2 n-1 n-2 n-1 n n-1 n-1 n-1 n-2 n-2
( h - h / h ) c + ( 3h + 2h + h / h ) c = 3 ( a - a ) / h - 3 ( a - a ) / h
2 2
1 2 3 n-1 j
forman un sistema tridiagonal con incgnitas c , c , c , ..., c . Como h es por definicin positiva,
la matriz de coeficientes de este sistema es estrictamente diagonal dominante y, por lo tano,
0 n
siempre tendr solucin nica. Los coeficientes c y c se determinan con:
0 0 1 1 0 2 1
c = ( 1 + h / h ) c - h c / h
110
n n-1 n-2 n-2 n-1 n-2 n-1
c = - h c / h + ( 1 + h / h ) c
2) Condiciones sujetas: f '(a) y f '(b) son conocidas y la ecuacin (5) para j= 1, 2, 3, ..., n-1 junto
con:
0 0 0 1 1 0 0
2h c + h c = 3 ( a - a ) / h - 3f '(a)
n-1 n-1 n-1 n n n-1 n-1
h c + 2 h c = 3f '(b) - 3 ( a - a ) / h
0 1 2 n
producen un sistema tridiagonal con incgnitas c , c , c , ..., c . Los coeficientes asociados con las
condiciones de frontera sujetas forman una matriz estrictamente diagonal dominante, por lo tanto,
siempre habr una solucin nica.
El siguiente teorema trata del error cometido por aproximar f(x) por splines cbicos sujetos:
Sea f continua, con cuatro derivadas continuas, en el intervalo
[a, b] y S el spline cbico sujeto de f relativo a los puntos
0 1 2 n-1 n
a = x < x < x < ... < x < x = b
entonces
mx | f(x) - S(x) | # (5 / 384) h mx | f (x) |
4 (4)
x0[a,b] x0[a,b]
+1 i
donde h = mx ( x - x )
0#i#n-1
0 n
3) Condiciones frontera libres: S''(a) = S''(b) = 0 y c = c = 0. Combinando estas dos ecuaciones
0 1 2 n
junto con (5) para j = 1, 2, 3, ..., n-1 se obtiene un sistema tridiagonal con c , c , c , ..., c como
incgnitas. La matriz de coeficientes de este sistema es estrictamente diagonal dominante, y por lo
tanto, siempre habr una solucin nica.
Ejemplo
Construya un spline cbico de frontera libre que corresponde a los puntos:
i i
i x f(x )
0 3 1.0986
1 5 1.6094
2 8 2.0794
3 12 2.4849
111
4 15 2.7081
Para n = 4, el sistema de ecuaciones lineales tridiagonales es:
0
c + 0 = 0
0 0 1 0 1 1 2 2 1 1 1 0 0
h c + 2 ( h + h ) c + h c = 3 ( a - a ) / h - 3 ( a - a ) / h
1 1 2 1 2 2 3 3 2 2 2 1 1
h c + 2 ( h + h ) c + h c = 3 ( a - a ) / h - 3 ( a - a ) / h


2 2 3 2 3 3 4 4 3 3 3 2 2
h c + 2 ( h + h ) c + h c = 3 ( a - a ) / h - 3 ( a - a ) / h
4
0 c = 0
Los valores de h y a se determinan con:
j j+1 j j j
h = x - x a = f(x )
0 1 0 0 0
h = x - x = 5 - 3 = 2 a = f(x ) = 1.0986
1 2 1 1 1
h = x - x = 8 - 5 = 3 a = f(x ) = 1.6094
2 3 2 2 2
h = x - x = 12 - 8= 4 a = f(x ) = 2.0794
3 4 3 3 3
h = x - x = 15 - 12 = 3 a = f(x ) = 2.4849
4 4
a = f(x ) = 2.7081
El sistema tridiagonal final queda como:
0
c + 0 = 0
0 1 2
2 c + 10 c + 3 c = -.29620
1 2 3
3 c + 14 c + 4 c = -.16588
2 3 4
4 c + 14 c + 3 c = -.08093
4
0 + c = 0
0 1 2 3 4
y su solucin es c = 0, c = -.02827, c = -.00451, c = -.00449 y c = 0. Los coeficientes restantes
se calculan de la siguiente manera:
112
0 1 0 0 0 1 0 0 1 0 0
b = ( a - a ) / h - ( 2c + c ) h / 3 = .27425 d = ( c - c ) / (3h ) = -.00471
1 2 1 1 1 2 1 1 2 1 1
b = ( a - a ) / h - ( 2c + c ) h / 3 = .21771 d = ( c - c ) / (3h ) = .00264
2 3 2 2 2 3 2 2 3 2 2
b = ( a - a ) / h - ( 2c + c ) h / 3 = .11938 d = ( c - c ) / (3h ) = 1.22088X10
-6
3 4 3 3 3 4 3 3 4 3 3
b = ( a - a ) / h - ( 2c + c ) h / 3 = .08339 d = ( c - c ) / (3h ) = .00050
Finalmente, los splines cbicos son:
0 0 0 0 0 0 0 0
S (x) = a + b ( x - x ) + c ( x - x ) + d ( x - x )
2 3
= 1.0986 + .27425 ( x -3) - .00471 (x - 3)
3
1 1 1 1 1 1 1 1
S (x) = a + b ( x - x ) + c ( x - x ) + d ( x - x )
2 3
= 1.6094 +.21771 (x - 5 ) - .02827 ( x - 5 ) + .00264 ( x - 5 )
2 3
2 2 2 2 2 2 2 2
S (x) = a + b ( x - x ) + c ( x - x ) + d ( x - x )
2 3
= 2.0794 +.11938 (x - 8 ) - .00451 ( x - 8 ) + 1.22088X10 ( x - 8 )
2 -6 3
3 3 3 3 3 3 3 3
S (x) = a + b ( x - x ) + c ( x - x ) + d ( x - x )
2 3
= 2.4849 +.08338 (x - 12 ) - .00449 ( x - 12 ) + .00050 ( x - 12 )
2 3
2 2 3
Por ejemplo; para interpolar en x = 10, se usa S ( x) porque est definido en [ x , x ] = [8, 12]
2
f(10) S (10) = 2.0794 +.11938 (10 - 8 ) - .00451 ( 10 - 8 ) + 1.22088X10 (10 - 8 ) = 2.30015
2 -6 3
A continuacin, pseudocdigos de un procedimiento que determina los spines cbicos naturales
correspondientes a un conjunto de datos y de una funcin que evala dichos splines.
proc splines_naturales(entero np, real x[np], real fx[np], real &S[np - 1,4])
!
! Este procedimiento calcula los splines cbicos naturales correspondientes a los datos x y fx
! Descripcin de parmetros:
! np Nmero de puntos.
! x Vector de la variable independiente. Los valores de x deben ser tales que
! x[1] < x[2] < x[3] < ... < x[np].
! fx Vector de la variable dependiente.
! S Matriz que contiene los coeficientes de los splines cbicos naturales.
!
entero j
113
real a[np], c[np], sub_diagonal[np], diagonal[np], super_diagonal[np], h[np -1], ld[np]
ejecuta j = 1, np
a[j] = fx[j]
ejecuta j = 1, np -1
h[j] = x[j -1] - x[j]
!
! construccin del sistema tridiagonal correspondiente a los splines cbicos naturales
!
sub_diagonal[1] = 0.0
diagonal[1] = 1.0
super_diagonal[1] = 0.0
ejecuta j = 2, np -1
{
sub_diagonal[j] = h[j -1]
diagonal[j] = 2.0*(h[j -1] + h[j])
super_diagonal[j] = h[j]
}
sub_diagonal[np] = 0.0
diagonal[np] = 1.0
super_diagonal[np] = 0.0
ld[1] = 0.0
ejecuta j = 2, np - 1
ld[j] = 3.0*(a[j +1] - a[j])/h[j] - 3.0*(a[j] - a[j -1])/h[j -1]
ld[np] = 0.0
llama tridiagonal(np, sub_diagonal, diagonal, super_diagonal, ld, c) ! solucin del sistema
! tridiagonal
!
! clculo de los coeficientes de los splines cbicos naturales
!
ejecuta j = 1, np -1
{
S[j, 1] = a[j]
S[j, 2] = (a[j +1] - a[j])/h[j] - h[j]*(2.0*c[j] + c[j + 1]))/3.0
S[j, 3] = c[j]
S[j, 4] = (c[j + 1] - c[j])/(3.0*h[j])
}
regresa
fin
func evaluar_splines(entero np, real x[np], real S[np - 1, 4], real xint)
!
! Esta funcin evala un spline cbico natural en xint
! Descripcin de parmetros:
114
! x Vector de la variable independiente. Loa valores de x deben ser tales que
! x[1] < x[2] < x[3] < ... < x[np].
! S Matriz que contiene los coeficientes de los splines cbicos naturales. Esta matriz
! puede ser calculada con el procedimiento splines_naturales.
! xint Argumento en el que ser evaluado el spline.
!
real fxint
entero l, h, m
!
! Bsqueda binaria para encontrar los subndices consecutivos l y h tales que x[l] # xint # x[h]
!
si xint $ x[1] y xint # x[np] entonces
{
l = 1
h = np
mientras ((h - l) 1)
{
m = INT((l + h)/2)
si xint # x[m] entonces
h = m
otro
l = m
}
}
otro
{
si xint $ x[np] entonces
{
h = np
l = np -1
}
otro
{
l = 1
h =2
}
}
!
! evaluacin del spline S[l] con regla de Horner
!
fxint = ((S[l, 4] * (xint - x[l]) + S[l, 3])*(xint - x[l]) + S[l, 2]) *(xint - x[l]) + S[l, 1]
regresa fxint
fin
115
6.3 Interpolacin inversa
En este problema se invierten los papeles de x y f(x). Es posible considerar a f(x) ahora como la
variable independiente y a x como la variable dependiente.
n 0 0 1 1 2 2 n n
El polinomio P (f(x)) pasa ahora por los puntos (f(x ), x ) , (f(x ), x ), (f(x ), x ), ..., (f(x ), x ).
6.4 Aproximacin discreta de mnimos cuadrados
i i
Dado un conjunto de datos (x , f(x )) , i = 0, 1, 2, ..., n; es posible construir una funcin g(x) que
pase cerca de esos puntos tal como se muestra en la siguiente figura:
1
donde se ha empleado como funcin de aproximacin g(x) a un polinomio de primer grado, P (x).
Una forma de obtener una funcin de aproximacin g(x) es utilizar el criterio de mnimos
cuadrados, el cual consiste en calcular los parmetros de g(x) que minimizan a la funcin:
116

que es conocida como error de mnimos cuadrados. Si la funcin de aproximacin g(x) es un
n 0 1 2 n
polinomio de grado n, P = a + a x + a x + ... + a x , entonces el error de mnimos cuadrados es:
2 n
j
donde el nmero de puntos es M+1. Las condiciones necesarias para minimizar a E son: ME / Ma =
0, para j = 0, 1, 2, ..., n. Las ecuaciones que resultan de aplicar estas condiciones son:
Agrupando trminos esta ecuaciones quedan como:
117
Las expresiones obtenidas a partir del criterio de mnimos cuadrados son conocidas como
ecuaciones normales. Una forma ms compacta de escribir las ecuaciones normales es:

i
Las ecuaciones normales tienen solucin nica siempre y cuando los valores de x , i = 0, 1, 2, ...,M
sean distintos.
Ejercicio
Encuentre el polinomio de mnimos cuadrados de
a) grado 1
b) grado 2
correspondiente a los puntos indicados en la siguiente tabla.
i i
i x f(x )
0 4 102.56
1 4.2 113.18
2 4.5 130.11
3 4.7 142.05
118
4 5.1 167.53
5 5.5 195.14
6 5.9 224.87
7 6.3 256.73
8 6.8 299.50
9 7.1 326.72
a) La tabla consta de 10 puntos, M = 9.El grado del polinomio es n = 1 (recta de mnimos
cuadrados). Las ecuaciones normales por resolver son:
0 1
10 a + 54.10 a = 1958.39
0 1
54.1 a + 303.39 a = 11366.843
0 1
La solucin de este sistema es: a = -194.1382 y a = 72.0845. Por lo tanto, el polinomio de
1
mnimos cuadrados de grado 1 es P (x) = -194.1382 + 72.0845 x.
b) Para un polinomio de grado n= 2, las ecuaciones normales quedan:


119
0 1 2
10 a + 54.1 a + 303.39 a = 1958.39
0 1 2
54.1 a + 303.39 a + 1759.831 a = 11366.843
0 1 2
303.39 a + 1759.831 a + 10523.1207 a = 68006.6811
0 1 2
cuya solucin es a = 1.2356, a =-1.1435 y a = 6.6182. Entonces, el polinomio de mnimos
2
cuadrados de segundo es P (x) = 1.2356 -1.1435 x + 6.6182 x .
2
Las ecuaciones normales tienden a ser sistemas mal condicionados, es decir, cuando se resuelven
con eliminacin de Gauss o descomposicin LU, generan errores de redondeo considerables,
particularmente para valores de n>=5. Por esta razn, se recomienda hacer ajustes polinomiales de
mnimos cuadrados a lo ms de cuarto grado.
6.5 Regresin lineal mltiple
i
En el caso de ms de una variable independiente x , i = 0, 1, 2, ...,n; una posible funcin de
0 1 1 2 2 3 3 n n
aproximacin sera la llamada funcin multilineal : g(x) = a + a x + a x + a x + ... + a x . Para
el caso especial, n = 2, la funcin multilineal tambin se conoce como plano de mnimos
cuadrados.
0 1 2 n
El procedimiento para encontrar los coeficientes a , a , a , ..., a es idntico al empleado en la
aproximacin polinomial de mnimos cuadrados: se define el error de mnimos cuadrados
j
y se recurre a las condiciones necesarias para minimizar E: ME / Ma = 0 para j = 0, 1, 2, ..., n. Las
ecuaciones normales as obtenidas son:
120
i
Nuevamente, M+1 es el nmero de puntos, y los valores de la variable dependiente son y , i = 0, 1,
2, ..., M.
Ejemplo
0 1 1 2 2
Encuentre la ecuacin de mnimos cuadrados y = a + a x + a x que corresponde a los datos:
1i 2i i
i x x y
0 120 550 310
1 130 600 300
2 108 520 275
3 110 420 250
4 84 400 220
5 90 300 200
6 80 230 190
7 55 120 150
8 64 190 140
9 50 100 100
En este caso, las ecuaciones normales del plano de mnimos cuadrados son:
121
0 1 2
10 a + 891 a + 3430 a = 2135
0 1 2
891 a + 86241 a + 349120 a = 207290
0 1 2
343 a + 349120 a + 1472700 a = 844800
0 1 2
La solucin es a = 38.17728, a = 1.16367 y a = .20886. Por lo tanto, la ecuacin multilineal de
1 2
mnimos cuadrados es y = 3.18728 + 1.16367 x + .20886 x .
122
123
7. Derivacin e integracin numrica
n
Si f(x) es aproximada mediante un polinomio, f(x) P (x), una manera de estimar f '(x) es
n
mediante la aproximacin f '(x) P ' (x).
3
En la siguiente figura , se muestran las rectas tangentes a las curvas f(x) y P (x) en x = 0.7. Aqu
3 3
se aprecia claramente que, si bien P (x) coincide exactamente con f(x) en ese punto, P' (x) tiene
un valor muy diferente de f '(x).




De hecho, la derivacin de polinomios interpolantes tiende a producir errores de magnitud
considerable, por lo que se recomiendas emplear valores de x cercanos entre si para construir el
polinomio.

7.1 Derivacin con polinomios de Lagrange
0 1 2 n
Suponiendo que {x , x , x , ..., x } son (n + 1) nmeros distintos en algn intervalo I y que f0C [I]:
n+1
124
En este expresin aparecen ahora dos trminos de error. No obstante, la frmula que aproxima la
derivada de f(x) mediante la derivada del polinomio de Lagrange de grado n es:
Ejemplo
Encuentre una aproximacin a f(9) mediante un polinomio de Lagrange de
a) grado 1
b) grado 2

i i
i x f(x )
0 3 1.0986
1 5 1.6094
2 8 2.0794
3 12 2.4849
a) Para n=1, se toman los dos ltimos puntos de la tabla los cuales son numerados nuevamente:
125
i i
i x f(x )
0 8 2.0794
1 12 2.4849
b) La mejor opcin para n = 2, son los tres ltimos puntos de la tabla, los cuales al ser numerados
nuevamente a partir del subndice cero, quedan:

i i
i x f(x )
0 5 1.6094
1 8 2.0794
2 12 2.4849
126

7.2 Frmulas de (n + 1) puntos
1 0 2 1 3 2
Cuando los nodos de la tabla estn uniformemente espaciados, esto es: x - x = x - x = x - x = ....
n n-1 k
= x - x = h, y las derivadas son evaluadas solamente en alguno de los valores x , k = 0, 1, 2, ...,
n, entonces se obtienen frmulas sencillas a partir de la derivacin de polinomios interpolantes.
k
Como x = x con k = 0, 1, 2, ..., n, entonces

La ltima expresin se conoce como frmula de (n +1 ) puntos. Un caso especial muy frecuentes es
n = 2, entonces
127
0 1 2 1 0 2 1 1 0
Como los nodos x , x , y x estn uniformemente espaciados, entonces x - x = x - x = h y x = x
2 0
+ h, x = x + 2h, con h!0.
k 0
Si x = x

k 1
Si x = x
k 2
Si x = x
k 0
Ahora, se renumeran los nodos de tal forma que x sea siempre x :
128
0 0 0
est entre x y x + 2h

1 0 0
est entre x - h y x + h
2 0 0
est entre x - 2h y x
Las tres ltimas expresiones son conocidas como frmulas de tres puntos. En estas, el segundo
trmino aparece multiplicado por h y se dice entonces que el error es de orden O(h ). Mientras ms
2 2
grande sea el exponente de h en el trmino de error, la frmula ser ms exacta, siempre que |h| < 1.
Suponiendo que las segundas derivadas de f que aparecen en los trminos de error de las frmulas
de tres puntos tienen valores absolutos similares; se deduce que la segunda frmula de las tres
mostradas arriba, es la ms exacta, dado que su trmino de error sera alrededor de la mitad de los
otros dos.

Você também pode gostar