capítulo i

Upload: andres-felipe

Post on 08-Jan-2016

214 views

Category:

Documents


0 download

DESCRIPTION

Métodos numéricos

TRANSCRIPT

  • ISolucion de EcuacionesEn la solucion de muchos problemas aparece la necesidad de resolver ecuaciones de la forma

    f(x) = 0 donde f : R R.Estas soluciones se llaman los ceros de f o races de la ecuacion. Pocos de estos problemas tienen unasolucion simple dada por una formula como en el caso de las ecuaciones lineales y cuadraticas. Aun en elcaso de ecuaciones cubicas, para las cuales existen formulas para las soluciones, resulta mas facil hacerlonumericamente porque las formulas son complicadas e involucran races cuadradas y cubicas. Por lo tantoes importante disponer de metodos efectivos para resolver ecuaciones. Vamos a discutir tres metodos: debiseccion, de iteracion de punto fijo, y de Newton.

    I.1 Metodo de Biseccion

    El metodo de biseccion (o de Bolzano) se basa en el teorema del valor intermedio (TVI) o de Bolzano:

    si F C[a, b] y f(a)f(b) < 0 entonces existe x (a, b) tal que f(x) = 0La funcion puede tener mas de un cero en [a, b], pero al menos uno. Si c = (a + b)/2 es el punto medio

    de [a, b], entonces se tiene tres posibilidades exclusivas:

    a. f(c) = 0: entonces x = c es un cero

    b. f(a)f(c) < 0: entonces existe al menos un cero en [a, c]

    c. f(c)f(b) < 0: entonces existe al menos un cero en [c, b]

    Con base en esta observacion se describe el metodo de la biseccion: Dado un intervalo inicial [a0, b0] = [a, b]tal que f(a)f(b) < 0 y un valor > 0 especificando el maximo error de aproximacion deseado, se repite losiguiente en la n-esima iteracion, comenzando con n = 0 mientras que bn an > :

    1. cn = (an + bn)/2

    2. si

    a. f(cn) = 0: entonces x = cn es un cero y termine la iteracion

    b. f(an)f(cn) < 0: entonces [an+1, bn+1] = [an, cn] y continue con n+ 1

    c. f(cn)f(bn) < 0: entonces [an+1, bn+1] = [cn, bn] y continue con n+ 1

    Al final cn es una aproximacion a un cero de f en [a, b]. Note que en una iteracion, la mitad del intervaloque se descarta puede realmente contener ceros que no pueden ser detectados por el criterio del TVI. Loimportante es que el intervalo que se preserva contiene al menos un cero.

    Ejemplo. Usamos biseccion para determinar el menor cero positivo de f(x) = tanx x.

    1

  • 2 I. SOLUCION DE ECUACIONES

    Con ayuda de la funcion fplot de Matlab encontramos como primeraaproximacion que el cero esta en el intervalo [4.1, 4.6]. Podemos verificarque existe una unica raz en el intervalo examinando los valores de la funcionen los extremos del intervalo y verificando que f es monotona en el intervalo:f(4.1) = 2.676474 y f(4.6) = 4.260175, y f es creciente porque f (x) =sec2 x1 > 0 excepto en multiplos de pi, donde f (x) = 0 pero no es maximoni mnimo.

    La siguiente tabla muestra los resultados obtenidos con la funcion bisect,modificada para imprimir esta tabla. Las columnas marcadas a c b lis-tan los an, cn, bn y las marcadas s(a) s(c) s(b) listan los signos de f enan, cn, bn.

    >> f=@(x) (tan(x)-x);>> [c err yc ] = bisect(f, 4.1, 4.6, 1e-3);

    n+1 a s(a) c s(c) b s(b)

    1 4.100000 -1 4.350000 -1 4.600000 12 4.350000 -1 4.475000 -1 4.600000 13 4.475000 -1 4.537500 1 4.600000 14 4.475000 -1 4.506250 1 4.537500 15 4.475000 -1 4.490625 -1 4.506250 16 4.490625 -1 4.498437 1 4.506250 17 4.490625 -1 4.494531 1 4.498437 18 4.490625 -1 4.492578 -1 4.494531 19 4.492578 -1 4.493555 1 4.494531 110 4.492578 -1 4.493066 -1 4.493555 1

    c = 4.4931

    err = 9.7656e-04

    yc = -0.0069

    Convergencia

    Es claro que para cada n 1bn an = 12(bn1 an1)

    y por lo tanto

    bn an = b0 a02n =b a

    2n.

    Por lo tantolimn(bn an) = 0

    y de aqu que limn an = limn bn. El algoritmo garatiza que hay una raz r de f tal que para cadan 0, r [an, bn]. Por lo tanto

    |r cn| 12(bn an) =b a2n+1

    .

    Esto implica quelimn cn = r.

    Error

    El error es En = r cn. Entonces de acuerdo a lo anterior

    |En| b a2n+1 .

  • I.1. METODO DE BISECCION 3

    Dado > 0, para asegurar que |En| , n debe satisfacerb a2n+1

    .

    Con 0 = b a, entoncesn+ 1 log2(0/)

    Con

    NB =

    log20

    1 =

    log2

    02

    ,

    si n NB entonces |En| . (Note que como se ha usado n, si el algoritmo decide que c0 es un cero, o unasuficiente aproximacion, entonces termina con c0 como resultado y el numero de iteraciones es n = 0.)

    Ejemplo. Para la funcion e intervalo inicial del problema anterior queremos determinar el numero deiteraciones necesarias para = 103. Entonces, 0 = b a = 0.5 y

    NB =

    log20.5

    2 103

    = 8.

    La discrepancia con el ejemplo, en el que se listan 10 iteraciones, se debe primero a que all se lista comoprimera la iteracion 0 (antes de dividir por primera vez), y segundo a que el programa mide el error comob a en lugar de (b a)/2 como debera ser.

    Implementacion en Matlab

    La funcion Matlab bisect implementa el metodo de biseccion. Aqu se muestra con el cambio para producirla tabla del ejemplo en la seccion.

    function [c, err, yc] = bisect (f, a, b, delta)% Entrada - f es la funcion introducida como una cadena de caracteres f% - a y b son los extremos izquierdo y derecho% - delta es la tolerancia% Salida - c es el cero% - yc = f(c)% - err es el error estimado para cya = feval(f, a);yb = feval(f, b);if ya*yb > 0, return, endmax1 = 1 + round((log(b-a) - log(delta)) / log(2));fprintf(\n n a s(a) c s(c) b s(b) \n\n);for k = 1:max1c = (a + b) / 2;x = [k a sign(f(a)) c sign(f(c)) b sign(f(b))];fprintf(%2i %8.6f %2i %8.6f %2i %8.6f %2i \n, x);yc = feval(f, c);if yc == 0a = c;b = c;elseif yb*yc > 0b = c;yb = yc;elsea = c;ya = yc;endif b-a < delta, break, endendc = (a + b) / 2;x = [k+1 a sign(f(a)) c sign(f(c)) b sign(f(b))];fprintf(%2i %8.6f %2i %8.6f %2i %8.6f %2i \n, x);err = abs(b - a);yc = feval(f, c);

  • 4 I. SOLUCION DE ECUACIONES

    I.2 Metodo del Punto Fijo

    Aunque la forma general que nos interesa es f(x) = 0, el metodo de punto fijo resuelve ecuaciones de la forma

    x = g(x) donde g : R R.Si p es una solucion de esta ecuacion, es decir tal que p = g(p), entonces se dice que p es un punto fijo de g.Dado un p0 R, una iteracion de punto fijo es una iteracion de la forma

    pn+1 = g(pn) para n 0.Tal iteracion determina una sucesion {pn}n=0. Como ejemplo, sea

    g(x) =12

    (x+

    3x

    ).

    Entonces la iteracion de punto fijo esta dada por

    pn+1 =12

    (pn +

    3pn

    )y los primeros elementos de la sucesion con p0 = 2 son entonces

    p1 =12

    (2 +

    32

    )= 1.75

    p2 =12

    (1.75 +

    31.75

    )= 1.732143

    p3 =12

    (1.732143 +

    31.732143

    )= 1.732051

    p4 =12

    (1.732051 +

    31.732051

    )= 1.732051

    ...

    Esta sucesion converge, pero no es siempre el caso para cualquier g(x) como lo muestra el siguiente ejemploque incluye la anterior funcion (g3) y otras dos funciones que tienen los mismos puntos fijos.

    Ejemplo. Considere las funciones

    g1(x) = x+14

    (x2 3), g2(x) = 3x, g3(x) =

    12

    (x+

    3x

    ).

    Es facil verificar que cada una de las ecuaciones de punto fijo x = gi(x), i = 1, 2, 3, es equivalente a la ecuacionf(x) = 0 con f(x) = x2 3. As que cada una de las gi tiene puntos fijos en

    3. Los primeros elementos

    de las sucesiones para g1, g2, g3 con p0 = 2 son:

    n=012345

    2.0000000000000002.2500000000000002.7656250000000003.9277954101562507.034689606167376

    18.656404069947204

    2.0000000000000001.5000000000000002.0000000000000001.5000000000000002.0000000000000001.500000000000000

    2.0000000000000001.7500000000000001.7321428571428571.7320508100147271.7320508075688771.732050807568877

    Mientras que la iteracion de punto fijo de g3 converge a

    3, las de g1 y g2 no lo hacen (la de g1 divergea y la de g2 oscila entre los valores 2 y 1.5). La figura muestra el comportamiento de las tres iteraciones.

  • I.2. METODO DEL PUNTO FIJO 5

    g1 g2

    g3

    Iteracion de punto fijo para g1, g2 y g3.La lnea (en rojo) es la funcion y = x.

    En g3 del ejemplo anterior se puede reempazar 3 con cualquier a > 0 y entonces la iteracion de puntofijo, si converge, nos da un metodo para calcular races cuadradas usando multiplicaciones y divisiones. Lafuncion g1 es un caso particular de lo siguiente: p es una solucion de f(x) = 0 si y solo si p es un punto fijode

    g(x) = x+ cf(x)

    con c 6= 0. Aunque para g1 en el ejemplo no hay convegencia a

    3, una eleccion diferente de c puede cambiarla situacion (ver ejemplo mas tarde). Esto se puede incluso extender a

    g(x) = x+ (x)f(x)

    donde es una funcion con (x) 6= 0 para todo x.

    Existencia y Convergencia

    Nos interesa entonces estudiar bajo que condiciones existen puntos fijos y bajo que condiciones se tieneconvergencia. Primero, el siguiente lema garantiza que si la iteracion de punto fijo de g converge, lo hace aun punto fijo de g.

    Lema 1 Si g : R R es continua y si la sucesion de punto fijo {pn}n=0 de g converge a p, es decirlimp pn = p, entonces p es un punto fijo de g, es decir g(p) = p.

    Dem. Se tieneg(p) = g( lim

    n pn) = limn g(pn) = limn pn+1 = p,

    donde g y lim se pueden intercambiar debido a la continuidad de g.

    El siguiente teorema nos dice bajo que condiciones existe un punto fijo. Recuerde que C[a, b] denota elconjunto de funciones R R continuas en el intervalo [a, b].

  • 6 I. SOLUCION DE ECUACIONES

    Teorema 2 (Existencia del punto fijo) Supongamos que g C[a, b] y que g(x) [a, b] para todo x [a, b].Entonces g tiene un punto fijo en [a, b]. Si ademas g existe para todo x [a, b], y existe K R, 0 < K < 1,tal que |g(x)| K, entonces el punto fijo es unico.

    Prueba. Asumiendo la primera parte primero, si g(a) = a o g(b) = b entonces ya se tiene un punto fijo.Entonces asumiendo g(a) 6= a y g(b) 6= b esto implica que g(a) > a y g(b) < b. Definiendo f(x) = g(x) x,se tiene entonces f(a) > 0 y f(b) < 0 y por el teorema del valor intermedio existe c (a, b) tal que f(c) = 0.Es decir g(c) = c, as que c es un punto fijo de g. Si ademas |g(x)| K < 1 para todo x [a, b] y sip1, p2 [a, b], p1 6= p2, son puntos fijos, entonces por el teorema del valor medio para algun c (a, b)

    g(c) =g(p1) g(p2)p1 p2 =

    p1 p2p1 p2 = 1.

    lo cual es una contradiccion. Entonces el punto fijo es unico.

    Note que para la existencia realmente una condicion mas debil es suficiente: si g C[a, b] y g(a) a yg(b) b, entonces el mismo argumento de la prueba muestra que existe un punto fijo. El requerimiento deque g(x) [a, b] para todo x [a, b] se necesita para la iteracion de punto fijo de tal forma que la sucesionpermanezca en [a, b].

    El siguiente teorema describe condiciones suficientes para la convergencia de la iteracion de punto fijo.

    Teorema 3 (Convergencia al punto fijo) Supongamos que

    (i) g C[a, b],(ii) para todo x [a, b], g(x) [a, b], y

    (iii) g existe para todo x [a, b].Sea p [a, b] un punto fijo de g (existencia garantizada por (i-ii)). Entonces,

    (a) si existe K R, 0 K < 1, tal que |g(x)| K para todo x [a, b], entonces p es unico y la sucesionde punto fijo con p0 [a, b] converge a p; mas precisamente

    |pn p| Kn|p0 p|para n 0; y

    (b) si existe K R, K > 1, tal que |g(p)| K, entonces una sucesion de punto fijo de g presentadivergencia local en [a, b]: si q esta suficientemente cerca de p entonces |p g(q)| > |p q| (la distanciaa p aumenta con la iteracion de punto fijo).

    Prueba. Sea {pn}n=0 la sucesion de punto fijo. Primero asumimos las condiciones en (a). Por el teoremaanterior, p es el unico punto fijo de g en [a, b]. Para n 1, si se tiene que pn1 [a, b], entonces por elteorema del valor medio, existe c en el intervalo entre p y pn1 tal que

    |p pn| = |g(p) g(pn1)|= |g(c)(p pn1)|= |g(c)| |p pn1| K|p pn1|.

    Como pn1 [a, b] y pn = g(pn1), entonces la condicion (ii) implica que pn [a, b]. As que podemos aplicarel argumento anterior iterativamente (induccion): primero obviamente

    |p p0| K0|p p0| = |p p0|

  • I.2. METODO DEL PUNTO FIJO 7

    y entonces

    |p p1| K|p p0||p p2| K|p p1| K(K|p p0|) = K2|p p0|

    ...|p pn1| Kn1|p p0||p pn| K|p pn1| K(Kn1|p p0|) = Kn|p p0|.

    Como K < 1 se tienelimnK

    n = 0

    y0 lim

    n |pn p| limnKn|p p0| = 0

    Por lo tantolimn |p pn| = 0

    ylimn pn = p.

    Es decir, la sucesion de punto fijo {pn}n=0 converge a p.Ahora asumimos las condiciones en (b). Supongamos q esta suficientemente cerca de p de tal forma que

    |g(x)| > 1 para todo x entre p y q (esto es posible porque |g(p)| > 1 implica que |g(p)| > 1 + para algun > 0). Entonces, para algun c entre p y q,

    |p g(q)| = |g(p) g(q)| = |g(c)(p q)| = |g(c)||p q| > |p q|.

    En el caso (b), en el cual |g(p)| > K > 1, no puede decirse simplemente que nunca hay convergencia.Puede haber convergencia no asintotica, es decir que para algun n se tenga pn = p, como muestra la figura.Por supuesto esto requiere una funcion y una eleccion de p0 muy especiales. Es cierto por otra parte que nopuede haber convergencia asintotica al punto fijo p (pero puede haber convergencia asintotica a otro puntofijo).

    2

    pp0

    1

    3

    45

    Covergencia no asintotica a un punto fijop con |g(p)| > 1. El punto (pi, g(pi)) estaindicado con el numero i + 1. El quintoes (p4, g(p4)) = (p, p), cuando se llega alpunto fijo.

    Ejemplo. Sea g(x) = 2x. Queremos verificar que las condiciones para existencia y convergencia al puntofijo se dan en el intervalo [0, 1]:

    (i) g es una exponencial la cual sabemos que es continua en R y en [0, 1] en particular.

    (ii) 2x es decreciente (g(x) < 0) y g(0) = 1 y g(1) = 1/2 entonces g(x) [0, 1] para todo x [0, 1].

  • 8 I. SOLUCION DE ECUACIONES

    (iii) g(x) existe para todo x [0, 1] y esta dada por g(x) = 2x ln 2.

    (iv) Para acotar |g(x)| en [0, 1] determinamos el maximo y el mnimo de g(x) en [0, 1]. Como ya sabemosque 2x es monotona entonces g(x) tambien lo es y por lo tanto el max y el min estan en los extremosdel intervalo: g(0) = ln 2 y g(1) = ln 2/2. As que |g(x)| ln 2 = 0.693147 para todo x [0, 1].

    Podemos concluir que existe un unico punto fijo de g(x) en [0, 1] y que la iteracion de punto fijo con p0 [0, 1]converge a ese punto fijo. La iteracion es, para n 1,

    pn = 2pn1 .

    Con p0 = 0.5, en Matlab obtenemos (con tolerancia .5 104 para que las cifras obtenidas con format shortsean significativas, y maximo numero de iteraciones 20 lo cual resulta suficiente):

    >> [p, k, err, P] = fixpt(f,0.5,0.5e-4,20)p = 0.6412k = 13err = 2.8178e-05P = 0.5000

    0.70710.61250.65400.63550.64370.64010.64170.64100.64130.64110.64120.6412

    Ejemplo. Veamos que podemos rescatar la idea de la funcion g1 del primer ejemplo si escogemos unaconstante c apropiada en

    g(x) = x+ c(x2 3).

    Se tiene que

    g(x) = 1 + 2cx.

    As que podemos tratar de escoger c de tal forma que la condicion (a) del teorema se satisfaga. En particularconviene tener g(

    3) cerca de cero (para tener un intervalo alrededor donde |g(x)| K < 1 para algunK. Es

    decir c cerca de 1/23. Escojamos c = 1/4 y entonces g(x) = 1x/2. Sabemos que 3 [3/2, 2]. Ahoraveamos que constante K en |g(x)| < K podemos garantizar en este intervalo. g(x) es monotona decreciente(porque g(x) = 1/2), as que es suficiente investigar los valores extremos: g(3/2) = 1 (3/2)/2 = 1/4 yg(2) = 1 2/2 = 0. As que |g(x)| K en [3/2, 2] con K = 1/4. Conclumos que escogiendo cualquier p0en [3/2, 2], la secuencia de punto fijo de

    g4(x) = x 14(x2 3)

    converge a su punto fijo en [3/2, 2] (el cual es

    3). Por otra parte, observamos que para la funcion originalg1, por ejemplo con p0 = 1, la secuencia de punto fijo converge, pero al punto fijo

    3:

  • I.2. METODO DEL PUNTO FIJO 9

    n=0123456789

    -1.000000000000000-1.500000000000000-1.687500000000000-1.725585937500000-1.731174230575562-1.731933176423340-1.732035044524380-1.732048695659237-1.732050524625521-1.732050769661635

    Esto es consistente cong1(

    3) = 1 +

    x

    2|x=3 = 0.1339..

    Finalmente observamos que la variacion

    g5(x) = x+12

    (x2 3)

    presenta convergencia oscilatoria a 3:

    n=012345678910

    -1.000000000000000-2.000000000000000-1.500000000000000-1.875000000000000-1.617187500000000-1.809539794921875-1.672322660218924-1.773991120278074-1.700468872865346-1.754671679073376-1.715235328402286

    En este ultimo casog5(

    3) = 1 + x |x=3 = .0.732050..

    Error

    El error absoluto En es la diferencia entre el puto fijo y la aproximacion pn:

    En = p pn.

    Queremos estudiar como se puede garantizar que |En| donde > 0 es un dato especificado. El teoremaanterior, en el caso de convergencia, da la cota

    |En| Kn|p p0|.

    La constante K se determina analizando g. Pero puesto que no conocemos p, realmente no conocemos |pp0|.As que debemos encontrar una cota superior conocida 0 para |p p0|. Como p0, p [a, b] entonces

    |p p0| b a,

    pero una cota posiblemente un poco mejor (es decir, menor) es

    |p p0| max{p0 a, b p0}

  • 10 I. SOLUCION DE ECUACIONES

    (donde max{x, y} denota el maximo entre x y y), porque si p [a, p0] entonces |p p0| |p0 a|, y sip [p0, b] entonces |pp0| bp0 (como no sabemos donde esta p entonces debemos usa el maximo de estasdos posibilidades). Aun otra cota que puede ser mejor se puede obtener de la siguiente manera: se tiene que(usando la desigualdad triangular y que |p1 p| K|p0 p|)

    |p p0| |p p1|+ |p1 p0| K|p p0|+ |p1 p0|y por lo tanto

    (1K)|p p0| |p1 p0|y

    |p p0| 11K |p1 p0|.Dependiendo de los valores de K y |p1p0| esta ultima puede ser una mejor cota para |pp0|. En conclusion

    |En| Kn0donde

    0 = min{

    max{p0 a, b p0}, 11K |p1 p0|}.

    (Note por que en este caso se usa min: ambas cotas son siempre validas, entonces la mejor es la menor deellas.) Si se desea determinar una aproximacion pn tal que |En| para un dado > 0 pequeno entonces elnumero de iteraciones se debe tener que

    Kn0 y por lo tanto

    Kn 0

    Tomando logaritmos se obtienen logK log

    0Dividiendo por lnK se tiene que (note que K < 1 implica lnK < 0 y por lo tanto la desigualdad se invierte)

    n log(/0)logK

    =log(0/)log(1/K)

    (invirtiendo arriba y abajo para tener el cociente de dos numeros positivos; se debe tener 0 > porque delo contrario no hay nada que hacer.) Entonces, puesto que debe ser entero, n se escoge como el menor enteromayor o igual al cociente de la derecha. Finalmente obtenemos que si (usando la notacion dxe para el menorentero mayor o igual a x)

    NPF =

    log(0/)log(1/K)

    ,

    entonces para todo n NPF , |En| . Esto nos dice como calcular el numero de iteraciones necesarias npara que lograr |En| .

    Por otra parte, en una implementacion del metodo de punto fijo es deseable tener un criterio paraterminacion que no requiera el conocimiento de K. Como tampoco se conoce p, entonces con frecuencia sehace uso de la condicion

    |pn+1 pn| aun cuando esto no necesarimente implica un cota para el error real |pn p|. Si examina la funcion fixpt(mas adelante) notara que controla tanto este como el error relativo

    |pn+1 pn||pn+1| .

  • I.2. METODO DEL PUNTO FIJO 11

    Ejemplo. Continuando con g(x) = 2x, queremos determinar el numero de iteraciones necesarias paragarantizar error menor o igual a = 106. Aqu tenemos a = 0, b = 1, p0 = 0.5 y entonces

    max(1 0.5, 0.5 0) = 0.5Por otra parte p1 = 0.7071 y K = 0.693147,

    |p1 p0|1K = 0.6749

    y entonces0 = min(0.5, 0.6749) = 0.5

    Reemplazando en la cota del error tenemos

    0.5(0.693147)n 106.Despejando n se obtiene

    n log(2 106)

    log 0.693147= 35.8032

    As que son suficientes 36 iteraciones para garantizar error 106.

    Implementacion Matlab

    En la librera de funciones provista con el texto [Mathews,Fink], la funcion que implementa el metodo depunto fijo se llama fixpt y se muestra abajo. La descripcion de todos los parametros de entrada y salida dela funcion se encuentran como comentarios despues de la primera lnea de la funcion. Y se pueden ver en laventana de comandos con el comando help fixpt. Como se haba mencionado antes, como el punto fijoes desconocido, se usa mas bien el error |pk pk1| para decidir si se detiene la iteracion. Ademas tambiense examina el error relativo |pk pk1|

    |pk|Para evitar division por cero, se divide por abs(P(k))+eps donde eps es un numero muy pequeno predefinidoen Matlab. La iteracion se interrumpe cuando se alcance la tolerancia especificada por el parametro tol ocuando se alcance el numero de maximo max1 de iteraciones especificadas.

    function [p, k, err, P] = fixpt (g, p0, tol, max1)% Entrada - g es la funcion iteracion% - p0 es el supuesto inicial para el punto fijo% - tol es la tolerancia% - max1 es el numero maximo de iteraciones% Salida - p es la aproximacion del punto fijo% - k es el numero de iteraciones realizadas% - err es el error en la aproximacion% - P contiene la secuencia {pn}P(1) = p0;for k = 2:max1P(k) = feval(g, P(k-1));err = abs(P(k) - P(k-1));relerr = err / (abs(P(k)) + eps);p = P(k);if (err < tol) | (relerr < tol), break; endendif k == max1disp(maximum number of iterations exceeded)endP = P;

    Note que k=2 en la primera iteracion, y entonces realmente el valor k regresado es el numero de iteracionesmas 1.

  • 12 I. SOLUCION DE ECUACIONES

    Problema. Emplear el metodo de punto fijo para determinar los ceros o races de la ecuacion f(x) = 0donde

    f(x) = 2(1 x)ex 1.Solucion. Primero analizamos las posibles posiciones de los ceros, si existen. Pusto que

    f(0) = 0, limx+ = , y limx = 1,

    se tiene al menos un cero en (, 0) y al menos un cero en (0,+). Podemos analizar la derivada

    f (x) = 2ex + 2(1 x)ex = 2xex

    para obtener mas informacion: f (x) = 0 para x = 0, f (x) > 0para x < 0 y f (x) < 0 para x > 0. As que f es creciente en(, 0) y decreciente en (0,+), y por lo tanto f tiene exacta-mente un cero en cada uno de esos intervalos, los que denotamospor c1, c2 respectivamente. El comportamiento se puede observaren la grafica. All se puede ver que c1 [2,1] y c2 [0.5, 1] (y sise quiere se puede verificar calculando f(2) = 0.1880, f(1) =0.4715 y f(0.5) = 0.6487, f(1) = 1).

    Una ecuacion de punto fijo equivalente se puede obtener despejando x en f(x) = 0. Se ven dos formasdirectas de hacerlo: despejando x en (1 x) y despejando x en ex. Los resultados son x = g1(x) y x = g2(x)donde

    g1(x) = 1 12ex, g2(x) = ln 2(1 x).

    Se observa que g1 esta definida para todo x, pero g2 solo este.finida para x < 1. La figura mustra las graficasde g1 y g2. Tambien se observa que los dos ceros aparecen como puntos fijos de g1 y de g2, pero es evidente

    Funciones g1 y g2respectivamente. La lnea en cada caso es y = x.

    que en cada gi solo uno de los puntos fijos exhibe convergencia (g1(c1) > 1, 0 < g1(c2) < 1, 0 < g2(c1) < 1, yg2(c2) > 1). Para verificar el comportamiento encontramos las derivadas

    g1(x) =12ex, g2(x) =

    11 x.

    Para x 0, g1(x) es decreciente con limx g1(x) = 0; por lo tanto |g1(x)| |g1(0)| = 1/2. Por lo tanto g1puede ser usada para aproximar c2 con p0 = 0. Para x 0, g2(x) es creciente con limx g2(x) = 0; por lotanto |g2(x)| |g2(0)| = 1. As que se tiene |g2(x)| < 1 para x < 0 y solo |g2(x)| = 1 para x = 0. Por estono se aplica estrictamente el teorema que garantiza la convergencia. Sin embargo, se observa que la primeraiteracion comenzando con p0 = 0 producira p1 < 0 y all ya se puede garantizar.

  • I.2. METODO DEL PUNTO FIJO 13

    Las graficas en el problema anterior fueron obtenida con los comandos

    >> f=@(x) 2*(1-x)*exp(x)-1>> figure>> hold on>> fplot(f,[-3,1])>> grid on>> g1=@(x)1-0.5*exp(-x)>> figure>> hold on>> fplot(g1,[-2.5 2])>> fplot(x,[-2.5 2],r)>> g2=@(x) -log(2*(2-x))>> grid on>> figure>> hold on>> fplot(g2,[-2.5 0.99])>> fplot(x,[-2.5 0.99],r)>> grid on

    Las funciones tambien se pueden definir con el comando inline: por ejemplo,

    f=inline(2*(1-x)*exp(x)-1);

    Finalmente se determinan aproximaciones a los puntos fijos usando la funcion fixpt con p0=0, tol=106

    (seleccionado arbitrariamente ya que no esta especificado), y max1=20 (que resulta suficiente para la toleranciaespecificada):

    >> [p1 k1 err1 P1] = fixpt(g1,0,1e-6,20)p1 = 7.6804e-01k1 = 12err1 = 4.8112e-07P1 = 0

    5.0000e-016.9673e-017.5090e-017.6403e-017.6711e-017.6782e-017.6799e-017.6803e-017.6804e-017.6804e-017.6804e-01

    >> [p2 k2 err2 P2] = fixpt(g2,0,1e-6,20)p2 = -1.6783e+00k2 = 17err2 = 9.1531e-07P2 = 0-6.9315e-01-1.2197e+00-1.4905e+00-1.6056e+00-1.6508e+00-1.6680e+00-1.6745e+00-1.6769e+00-1.6778e+00-1.6781e+00-1.6783e+00-1.6783e+00-1.6783e+00-1.6783e+00-1.6783e+00-1.6783e+00

  • 14 I. SOLUCION DE ECUACIONES

    I.3 Metodo de Newton

    Motivacion como metodo de punto fijo. La ecuacion f(x) = 0 se puede transformar en un problemade punto fijo x = g(x) definiendo

    g(x) = x+ (x)f(x)

    donde : R R es una funcion tal que (p) 6= 0 si f(p) = 0 (si no para todo tal p, al menos para los pque sean de inteeres. Como escoger ? Para convergencia, |g(p)| < 1 y cuanto mas cercano a cero mejor.Tenemos que

    g(x) = 1 + (x)f(x) + (x)f (x)

    y usando f(p) = 0 se obtieneg(p) = 1 + (p)f (p).

    Se observa que la eleccion (x) = 1/f (x) implica g(p) = 0. As que obtenemos la funcion de punto fijo

    g(x) = x f(x)f (x)

    ,

    y la iteracion de punto fijo, para n 0,

    pn+1 = pn f(pn)f (pn)

    .

    Motivacion geometrica.

    n

    ppp

    f(p )

    n+1 n

    La figura muestra el grafico de la funcion f con la recta tangente en el punto(pn, f(pn)), la cual se usa para aproximar el cero de fN

    f(pn) 0pn pn+1 = f

    (pn).

    De dondepn+1 = pn f(pn)

    f (pn).

    Motivacion con aproximacion de Taylor. La aproximacion de Taylor de primer orden para f alrededorde x es

    f(y) = f(x) + f (x)(y x) + 12f (y)(y x)2

    para algun y entre x y y. Para |y x| pequeno de tal forma que 12f (y)(y x)2 0 (aproximadamente 0)se tiene la aproximacion f(y) de f(y):

    f(y) f(y) = f(x) + f (x)(y x).Entonces una aproximacion p del cero p de f se puede obtener haciendo y = p y f(p) = 0. Es decir

    0 = f(p) = f(x) + f (x)(p x),y de aqu

    p = x f(x)f (x)

    .

    Lo que da origen a la iteration

    pn+1 = pn f(pn)f (pn)

    como un metodo para obtener una aproximacion para p.

  • I.3. METODO DE NEWTON 15

    Ejemplo. Queremos aproximar la raz de f(x) = 0 para f(x) = xex (la cual podemos ver esta en x = 0).Tenemos que f (x) = ex xex = (1 x)ex, y entonces

    g(x) = x f(x)f (x)

    = x xex

    (1 x)ex = xx

    1 x =x(1 x) x

    1 x =x21 x.

    La iteracion de Newton es entonces

    pn+1 =p2n

    1 pn .Se obtiene la secuencia

    p0 = 0.50000000

    p1 = f(p0) =0.5000000021 0.50000000 = 0.50000000

    p2 = f(p1) =(0.50000000)21 (0.50000000) = 0.16666667

    p3 = f(p2) =(0.16666667)21 (0.16666667) = 0.02380952

    p4 = f(p3) =(0.02380952)21 (0.02380952) = 0.00055370

    p5 = f(p4) =(0.00055370)21 (0.00055370) = 0.00000030

    p6 = f(p5) =(0.00000030)21 (0.00000030) = 0.000000000

    Orden de Convergencia

    Puesto que el metodo de Newton es un metodo de punto fijo, el analisis de este da la cota

    |p pn| K|p pn1|donde K es una cota superior de |g(x)| en el intervalo de interes. Como g(p) = 0 entonces K 0 a medidaque la sucesion se acerca a p. Resulta que suficientemente cerca de p un analisis mas refinado es posible: unacota de la forma

    |p pn| A |p pn1|2es valida suficientemente cerca del cero p de f .

    Supongamos que la sucesion {pn}n=0 converge a p y sea En = p pn el error para cada n 0. Se diceque la sucesion {pn}n=0 converge a P con orden de convergencia R, donde R > 0 es una constante, si

    limn

    |p pn+1||p pn|R = limn

    |En+1||En|R = A

    donde A > 0 es una constante.

    Teorema 4 Supongamos que f C2[a, b] y que existe p [a, b] tal que f(p) = 0. Si f (p) 6= 0 entoncesexiste un > 0 tal que la sucesion {pn}n=0 definida por la iteracion de Newton, para n 0,

    pn+1 = pn f(pn)f (pn)

    ,

    con p0 I donde I = [p , p+ ], converge a p. Ademas, el orden de convergencia es 2 y

    limn

    |p pn+1||pn p|2 =

    f (p)2f (p) .

  • 16 I. SOLUCION DE ECUACIONES

    Prueba. Regresado a la justificacion a partir del metodo de punto fijo. Tenemos

    g(x) = x f(x)f (x)

    y

    g(x) = 1 (f(x))2 f f (x)

    (f (x))2.

    Puesto que f(p) = 0 y f (p) 6= 0, entonces g(p) = 0. Por lo tanto existe > 0 tal que |g(x)| < 1 para x Idonde I = [p , p+ ]. Por lo tanto si p0 I entonces la secuencia de punto fijo {pn}n=0 converge a p.

    Ahora consideramos el orden de convergencia. Usando la aproximacion de Taylor, con n entre x y pn,

    f(x) = f(pn) + (x pn)f (pn) + (x pn)2 f()2

    .

    Con x = p y despejando p se tiene

    p = pn f(pn)f (pn)

    pn+1

    (p pn)2

    2 f(n)f (pn)

    = pn+1 (p pn)2

    2 f(n)f (pn)

    y entonces

    p pn+1 = (p pn)2 f(n)f (pn)

    .

    y|p pn+1||p pn|2 =

    f (n)f (pn) .

    Ahora, cuando n entonces, como ya se concluyo, pn p y por lo tanto n p. De aqu que

    limn

    |p pn+1||p pn|2 =

    f (p)2f (p) .

    Error

    Veamos que implicacion tiene la convergencia cuadratica sobre el error; en particular, cuantas iteraciones senecesitan para lograr cierto error . Sea

    A =maxxI |f (x)|minxI |f (x)|

    ,

    y se escoge > suficientemente pequeno tal que A|p p0| < 1. Como antes p0 I. Entonces

    |p pn| A |p pn1|2

    yA|p pn| (A |p pn1|)2.

    Repitiendo este argumento iterativamente (induccion) se obtiene

    A|p pn| (A |p pn1|)2 (A |p pn2|)4 (A |p pn3|)8 (A |p p0|)2n .

  • I.3. METODO DE NEWTON 17

    y despejando se obtiene que

    |p pn| 1A

    (A |p p0|)2n

    Sea 0 tal que |p p0| 0 (puede ser 0 = b a, la longitud del intervalo inicial) y supongamos queremos|p pn| . Entonces se debe tener

    1A

    (A 0)2n ,

    y de aqu

    n log2(

    log(A)log(A0)

    )= log2

    (log(1/A)

    log(1/A0)

    ).

    Finalmente, con

    NNR =

    log2

    (log(1/A)

    log(1/A0)

    ),

    se tiene que para n NNR, |En| .

    Comparemos los valores obtenidos NPF y NNR. Tomamos 0 = 1, K = 1/2, A = 1/2. En la siguientetabla y figura k = 10k. Con estos valores se tiene

    NFP = dlog2(1/k)e = dk log2 10e d3.32 keNNR = dlog2 log2(2/k)e = dlog2(k log2 10 + 1)e dlog2 k + 1.75e

    En palabras, mientras que el numero de iteraciones es logartmico en el inverso del error para la convergencialineal del metodo de punto fijo, el numero de iteraciones es doble logartmico en el inverso del error para laconvergencia cuadratica del metodo de Newton. Alternativamente, estos numeros son lineales y logartmicosen el nmero de cifras significativas deseadas.

    k PF NR1 4 32 7 33 10 44 14 45 17 56 20 57 24 58 27 59 30 5

    10 34 611 37 612 40 613 44 614 47 615 50 6

    El error especificado k es 10k. Las otras dos colum-nas, PF y NR, y curvas en la figura, muestran losnumeros de iteraciones NPF y NNR requeridos paraacotar el error con k.

    Es claro el efecto significativo de la convergencia cuadratica en el numero de iteraciones requeridas.

    Multiplicidad de la Raz

    El analisis anterior no es valido si f (p) = 0. Esto sucede cuando p es una raz multiple. La raz x = p es deorden M si

    f(p) = 0, f (p) = 0, f (p) = 0, . . . f (M1)(p) = 0, f (M)(p) 6= 0.

  • 18 I. SOLUCION DE ECUACIONES

    si f es suficientemente diferenciable, esto es equivalente a la existencia de una funcion h continua y conh(p) 6= 0, tal que

    f(x) = (x p)Mh(x).Esto se deriva de la aproximacion de Taylor, donde (x) esta entre x y p,

    f(x) = f(p) + f (p)(x p) + f(p)2

    (x p)2 + + f(M1)(p)

    (M 1)! (x p)M1 +

    f (M)(p)M !

    (x p)M + f(M+1)((x))(M + 1)!

    (x p)M+1

    =f (M)(p)M !

    (x p)M + f(M+1)((x))(M + 1)!

    (x p)M+1

    = (x p)M(f (M)(p)M !

    +f (M+1)((x))

    (M + 1)!(x p)

    )= (x p)M h(x)

    Ejemplo. Verifiquemos que la funcion f(x) = ex 1 + x tiene un cero en x = 0 de orden 2:

    f(0) = 0; f (0) = ex + 1 |x=0 = 0; f (0) = ex|x=0 = 1.

    Alternativamente, la expansion de Taylor de ex es

    ex = 1 x+ 12x2 1

    6x3 +

    y

    ex 1 + x = 12x2 1

    6x3 + = x2

    (12 1

    6x+

    ).

    La multiplicidad de un cero tiene un efecto importante sobre la rapidez de la convergencia. Mas precisa-mente, la convergencia cuadratica se pierde como se puede ver en el siguiente ejemplo.

    Ejemplo. Consideramos las funciones f1(x) = ex + x y f2(x) = (ex + x)2, las cuales tienen el mismo ceropero con multiplicidades 1 y 2 respectivamente. A continuacion esta el resultado de resolver estas ecuacionescon la funcion newton en Matlab.

    >> f1= @(x) exp(x)+x>> df1 = @(x) exp(x)+1>> f2 = @(x) (exp(x)+x)^2>> df2 = @(x) 2*(exp(x)+x)*(exp(x)+1)>> [p1, err1, k1, y1]=newton(f1,df1,0,1e-8,1e-20,100)p1 = -0.567143290409784err1 = 2.886579864025407e-15k1 = 5y1 = 1.110223024625157e-16>> [p2, err2, k2, y2]=newton(f2,df2,0,1e-8,1e-20,100)p2 = -0.567143285057670err2 = 5.352114418322174e-09k2 = 27y2 = 7.035066142827077e-17

    Y las sucesiones correspondientes son

  • I.3. METODO DE NEWTON 190

    -0.500000000000000-0.566311003197218-0.567143165034862-0.567143290409781-0.567143290409784

    Las funciones f1 y f2 con el mismo cerode multiplicidad uno y dos.

    0-0.250000000000000-0.398639686946376-0.480194115423827-0.522966807453253-0.544876120719794-0.555964542595883-0.561542572005131-0.564340088372214-0.565740977843932-0.566441956135348-0.566792578761598-0.566967923456313-0.567055604150499-0.567099446584479-0.567121368323212-0.567132329323018-0.567137809855531-0.567140550129940-0.567141920269182-0.567142605339313-0.567142947874506-0.567143119142134-0.567143204775956-0.567143247592869-0.567143269001326-0.567143279705555-0.567143285057670

    Se observa que la convergencia en el caso de un cero es doble es muy lenta (lineal).

    A continuacion analizamos la iteracion de Newton para el caso de una raz multiple en p. Sea

    f(x) = (x p)Mh(x)

    con h(p) 6= 0 y h(x) continua en x = p. Tenemos la iteracion de punto fijo (Newton)

    pn+1 = g(pn) donde g(x) = x f(x)f (x)

    .

    Con la expresion arriba para f(x) se tiene

    f (x) = M(x p)M1h(x) + (x p)Mh(x) = (x p)M1(Mh(x) + (x p)h(x))

    y entonces

    g(x) = x (x p)Mh(x)

    (x p)M1(Mh(x) + (x p)h(x)) = x(x p)h(x)

    Mh(x) + (x p)h(x) .

    As que realmente no hay division por cero. Ahora para analizar la convergencia de la iteracion de punto fijodebemos calcular g(p):

    g(x) = 1 h(x)Mh(x) + (x p)h(x)

    (x p)h(x)(Mh(x) + (x p)h(x)) h(x)(Mh(x) + h(x) + (x p)h(x))

    (Mh(x) + (x p)h(x))2

  • 20 I. SOLUCION DE ECUACIONES

    y de aqu

    g(p) = 1 1M.

    As que la covergencia es lineal con constante

    K = 1 1M

    =M 1M

    .

    De esto se observan dos posibles modificaciones del metodo de Newton para manejar races multiples:

    (i) En los calculos anteriores se observa que si g se cambia a

    g(x) = xM f(x)f (x)

    entoncesg(p) = 1M 1

    M= 0

    y se recupera la convergencia cuadratica. La iteracion de punto fijo con la nueva funcion g(x) se llamala formula de iteracion acelerada de Newton.

    (ii) Se observa que la funcion

    u(x) =f(x)f (x)

    =(x p)h(x)

    Mh(x) + (x p)h(x)tiene una raz simple en x = p. Entonces con

    g(x) = x u(x)u(x)

    la correspondiente iteracion de punto fijo converge a p cuadraticamente. Esto se conoce como el metodode Newton modificado.

    Implementacion en Matlab

    La siguiente es la implementacion en Matlab provista con el texto [MF]. Las variables y son las toleranciasen la aproximacion del cero y de la funcion en el cero. Usualmente debe ser mas pequena para que laterminacion sea por la aproximacion del cero.

    function [p0, err, k, y] = newton (f, df, p0, delta, epsilon, max1)% Entrada - f es la funcion objetivo introducida como cadena de caracteres f% - df es la derivada de f introducida como cadena de caracteres df% - p0 es la aproximacion inicial a cero de f% - delta es la tolerancia para p0% - epsilon es la tolerancia para los valores de la funcion y% - max1 es el numero maximo de iteraciones% Salida - p0 es la aproximacion de Newton hacia cero% - err es el error estimado para p0% - k es el numero de iteraciones% - y es el valor de la funcion f(p0)for k = 1:max1p1 = p0 - feval(f, p0) / feval(df, p0);err = abs(p1 - p0);relerr = 2 * err / (abs(p1) + delta);p0 = p1;y = feval(f, p0);if (err < delta) | (relerr < delta) | (abs(y) < epsilon), break, endend