Punto Fijo1

download Punto Fijo1

of 8

Transcript of Punto Fijo1

  • 8/17/2019 Punto Fijo1

    1/8

    Carrera: ING. INDUSTRIAL

    Asignatura: Métodos Computacionales

    Tema: Raíces – Iteración de Punto Fijo

    Clase: Laboratorio

    RAÍCES DE ECUACIONES NO LINEALES – ITERACIÓN DE PUNTO FIJO  

    INTRODUCCIÓN.

    Las soluciones de una ecuación no lineal escalar 0)(   = x f    , se llaman ceros o raíces de la

    función f . Existen una gran variedad de métodos o técnicas que permiten resolver el problema las

    cuales serán objeto de estudio durante el presente curso. En este momento nos referiremos

    específicamente a método conocido como Método Iterativo de Punto Fijo 1 .Si la ecuación por resolver es de la forma 0)(   = x f   y se puede escribir en la forma:

    )( xg x =   (1)

    entonces se puede desarrollar el esquema iterativo siguiente:

    ,...,2,1,0),(1   ==+ n xg x nn  (2)

    a partir de la información que se dispone de la función (posición de la raíz) debe proporcionarse

    una aproximación inicial,o

     x  al valor de la raíz. Siguiendo los pasos descriptos en [1, capítulo 3

    sección 3.1.4] la ecuación (1) se obtiene reordenando la ecuación 0)(   = x f    de modo a que

    aparezca el valor de x en el lado izquierdo. Por ejemplo, la ecuación

    0 / 1=−

     xe x  

    (3)

    Puede reordenarse para obtener x

    e x / 1

    =  (4)

    Siendo en este caso

     xe xg  / 1)(   =  (5)

    Referencia:

    [1] “Introducción a los Métodos Numéricos con Pascal” – L.V. Atkinson, P.J. Harley. Universty

    of Sheffield.

    1 Una denominación alternativa, que se encuentra frecuentemente en la literatura, es Método de

    Sustituciones Sucesisvas. No obstante, esta denominación nosotros la reservaremos para hacer referencia auna clase mas amplia de métodos iterativos de resolución de ecuaciones no lineales.

  • 8/17/2019 Punto Fijo1

    2/8

    Como es obvio la generación de la función g  no es única y existe una diversidad de posiblesfunciones g. Por ejemplo, tomando logaritmos a ambos lados llegamos a :

    )ln(

    1)(

     x xg   =

     

    (6)

    O sumando x a ambos lados de la ecuación se llega:

    2)(

     / 1  xe x

     xg  +=

     

    (7)

    En todos los casos la metodología de aplicación del método es la misma. El método avanza desde

    un valor propuestoo

     x  , lo cual permite hacer una primera estimación (corrección) del valor de la

    raíz

    )(1   o xg x   =   (8)

    luego

    )(12

     xg x   =   (9)

    y así sucesivamente.

    Como se verá más adelante una de las ventajas del método, o quizás la mas importante radica en

    su sencillez y en la flexibilidad para escoger la función )( xg . Entre las desventajas se encuentra

    el hecho que no siempre el método es convergente para una dada función )( xg   elegida

    arbitrariamente.

    Recordemos el enunciado de dos teoremas que aclaran este punto2.

    Teorema 1: Si )( xg  es continua en [a,b] y )( xg está en [a,b] para toda  x en el intervalo,entonces )( xg tiene un punto fijo en el intervalo [a,b]. Además, suponiendo que )( xg′  

    exista en el (a,b) y que satisfaga

    1)(  

  • 8/17/2019 Punto Fijo1

    3/8

    0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

    -2.0

    -1.8

    -1.6

    -1.4

    -1.2

    -1.0

    -0.8

    -0.6

    -0.4

    -0.2

    0.0

    0.2

    0.4

    0.6

    0.8

    1.0

    PUNTO FIJO

          Y

    X

     g(x) = exp(-2x) x

     g'(x) = -2 exp(-2x)

     

    Ejemplo mostrando la que la condición 1)(  

  • 8/17/2019 Punto Fijo1

    4/8

     

    Nos proponemos ahora encontrar utilizando la técnica de punto fijo la raíz más pequeña. De lagráfica vemos que la solución que buscamos se encuentra entre un valor de  x  = -1 y  x  = 0 .

    rescribiendo la ecuación no lineal en la forma )( xg x  =  tenemos:

    3

    2)(

    2−+

    ==

     xe x

     xg x  

    y evaluando su derivada )( xg′  

    3

    2)(

     xe x

     xg  +=′  

    podemos analizar su comportamiento en el intervalo que nos ocupa [-1,0]. Vemos que la función

    )( xg′  satisface la condición impuestas por los teoremas que vimos precedentemente. Luego la

    serie que se origina al aplicar el esquema Iterativo de Punto Fijo es convergente y converge a un

    único punto fijo que coincide con una de las raíces del problema original el cual buscamos

    resolver 0)(   = x f  .

  • 8/17/2019 Punto Fijo1

    5/8

    La ventana de comandos de MatLab que se muestra a continuación permite ver la secuencia deiteraciones que han sido necesarias a los fines de encontrar la raíz del ejemplo anterior. La

    función puntofijo.m  requiere como argumentos de entrada la función g,  el intervalo donde sesabe que se ubica la raíz, el punto de arranque o estimación inicial, la tolerancia admitida en el

    valor del punto fijo y un número máximo de iteraciones para prevenir un posible bucle infinito en

    el algoritmo.

    Mostrando lo enunciado precedentemente.

    Apliquemos ahora la función puntofijo.m a la ecuación no lineal dada por la ecuación 3 para lacual vimos tres posibles elecciones de la función )( xg  

    (I) x

    e xg / 1)(   =   (II)

    )ln(

    1)(

     x xg   =

     

  • 8/17/2019 Punto Fijo1

    6/8

    (III)2

    )( / 1  x

    e x xg

      +=

     

    Analicemos las tres gráficas precedentes a la vista del los teorema 1 y 2 que se enunciaron. En elcaso (I) la derivada de la función g es

     xe xg  / 1)(   =′ . El valor absoluto de g′  está acotado en todo

    el intervalo [0.5,5] pero sólo para valores de x mayores a aprox. 1.42 la 1)(  

  • 8/17/2019 Punto Fijo1

    7/8

     (caso III)

    Otro dato interesante de resaltar el que se sugiere la comparación de los errores obtenidos en loscasos donde la serie es convergente (caso I y III) , vemos que para un mismo número de

    iteraciones la secuencia III converge a un error mucho menor que en el caso I. Equivalentemente

    hablamos de que la serie III converge más rápidamente que la serie I. Note además que este hecho

    está relacionado con el valor de la derivada (caso III 0672.0)5.1(   =′g   < caso I8657.0)5.1(   =′g ).

    Actividades propuestas:

    1 – Analizar la función de Matlab puntofijo.m . Modifique el algoritmo de forma a

    verificar la siguiente definición:

    Sunpóngamos que xn, n=0,1,2,..., es una secuencia que converge hacia α  y sea

    α  ε     −=nn

     x  para cada n. Si existen las constantes c y p con

    c p

    n

    n

    n=

    +

    ∞→ε  

    ε   1lim  

    entonces se dice que la secuencia de iteraciones xn  converge hacia α  con orden p  yconstante asintótica c.

    2 – Genere diferentes iteraciones de punto fijo basadas en la función

    1)sin(2)( 2 −+=  x x x x f   

    que tiene una raíz en el intervalo [0,1]. Compruebe si hay convergencia aplicando el resultado

    del teorema 2 y verifique estas conclusiones programando y ejecutando los programas

    resultantes.

    3 – Modifique la función puntofijo.m  de forma tal de poder visualizar en la gráfica laconvergencia de la secuencia x0, x1, ... hacia el punto fijo.

  • 8/17/2019 Punto Fijo1

    8/8

    function puntofijo_g(f_name,a,b,x0,toler,itermax)

    % f_name : nombre del archivo m que define la funcion

    % a, b : extremos del intervalo inicial

    % x0 : estimacion inicial% toler : tolerancia

    % itermax : limite del numero de iteraciones

    format long

    npoints = 200;

    % limpia el area grafica

    clf, hold off

    % define las escalas del grafico

    dx = (b-a) / npoints;

    xp = a:dx:b;

    yp=feval(f_name,xp);

    ymax=max([yp,xp]);ymin=min([yp,xp]);dy=(ymax-ymin)/npoints;

    % grafica la funcion g(x)

    plot(xp,yp,'r') ; xlabel('x') ; ylabel('f(x)');

    % Identifica el metodo de resolucion

    title(' Metodo Iterativo de Punto Fijo '), hold on% grafica la funcion x [x=g(x)]

    plot(xp,xp,'b')

    fprintf('\n\n\Metodo Iterativo de Punto Fijo:\n');

    fprintf('Pulse Return al cabo de cada iteracion\n')

    fprintf('\n')

    fprintf(' Iter a b x f(x) error \n');

    def32 = 0;

    y1=ymin;

    % proceso iterativo

    iter=0;

    while 1

    iter = iter + 1;

    x1 = feval(f_name,x0);

    % control I

    if(x1 == NaN) breck, end

    % control II

    if(x1 < a | x1 > b)fprintf(' La estimacion de x fuera de los limites del

    intervalo.\n'); break

    end

    % control III

    if ( iter > itermax )

    fprintf(' Se excedio el limite de iteraciones.\n'); break

    end

    % evaluacion del error relativoerror = abs((x1-x0)/x1);

    % impresion de los resultados parciales

    fprintf('%3.0f %10.3f, %10.3f', iter, a, b);

    fprintf('%14.8f, %12.4e, %12.4e\n', x1, feval(f_name,x1),error);

    % almacena valores de los errores para ser utilizadosposteriormente

    if(iter == 1) error1= error; end

    if(iter == 2)

    error2 = error1;

    error1 = error;

    end

    if(iter > 2)

    def32 = 1;error3 = error2;

    error2 = error1;

    error1 = error;

    end

    % visualizacion de secuencia de aprox. al punto fijoplot([x0,x0],[y1,x1],':'); plot(x0,x1,'x')

    plot([x0,x1],[x1,x1],':');plot(x1,x1,'o')

    y1=x1;

    % solucion ?

    if (error < toler)

    fprintf(' Se satisface la tolerancia \n') ; break

    end

    pause

    % nueva estimacionx0=x1;

    end

    text(a+15*dx,ymax-15*dy, 'Solution final: ')

    text(a+55*dx,ymax-15*dy, num2str(x1))text(a+15*dx,ymax-30*dy, 'Iteration: ')

    text(a+45*dx,ymax-30*dy, num2str(iter))

    fprintf(' Resultado final: %12.6f \n',x1);

    % La sucecion originada converge hacia el punto fijo con% orden [p] y constante asintotica [c]

    if(def32 == 1)

    error1/error2;error2/error3;

    p = log(error1/error2)/log(error2/error3);

    c =error1/(error2^p);

    fprintf(' Orden de convergencia: %12.6f \n',p);

    fprintf(' Error asintotico: %12.6f \n',c);end