Métodos Abiertos, Iteración Simple de Punto Fijo Matlab

[Recuerda que en este Blog los enlaces para la descarga del código se encuentran al final del artículo.]

Métodos Abiertos.

Como se había comentado en esta entrada anteriormente, los métodos de intervalos son aquellos que requieren de dos valores de X que definan un intervalo, en el cual, en algún punto se encuentra la raíz de la ecuación, estos métodos aprovechaban el hecho de que las funciones regularmente cambian de signo en las vecindades de una raíz. Por el contrario, los métodos abiertos necesitan únicamente un valor de X o dos aunque en este caso no necesariamente entre los dos valores se debe encontrar la raíz, por lo que se ha dicho anteriormente, se puede notar que estos métodos pueden en ocasiones divergir de la raíz a medida que lo cálculos van progresando.

Iteración Simple de Punto Fijo.

Como se mencionó mas arriba, los métodos abiertos utilizan formulas para aproximar la raíz de una función, este es el caso de la iteración de punto fijo con la cual, teniendo la función f(x)=0 se puede reescribir de tal forma que se obtenga la X al lado izquierdo de la ecuación x=g(x) esto puede ser logrado mediante una manipulación algebraica o simplemente añadiendo X a ambos lados de la ecuación, un ejemplo de este ultimo caso (el que usaremos en adelante) es:

Sea:

punto fijo

Como queremos hallar una raíz, entonces igualaríamos a 0 (cero) la función, de esta forma obtendríamos:

punto fijo

Según lo ultimo que habíamos dicho, solo bastaría con añadir X a ambos lados de la igualdad, de esta forma obtenemos:

punto fijo

Entonces ya conseguimos la forma que buscábamos como g(x) igualando el termino de la derecha:

punto fijo

De esta manera hemos llegado a la forma que buscábamos:

punto fijo

La ventaja de estas ecuaciones transformadas es que permiten calcular un nuevo valor de X a partir de uno más antiguo, por lo tanto dado un valor inicial, una aproximación de Xi, la ecuación transformada puede ser usada para calcular un nuevo valor de X(i+1) en su forma iterativa, tal que:

punto fijo

Hasta converger a la raíz buscada.

CÓDIGO EN MATLAB

Inicialmente, como hemos hecho hasta ahora con lo demás métodos, por lo menos con lo métodos de intervalo es hacer un análisis previo de la gráfica; así se tendrá una mejor apreciación del comportamiento de la gráfica y con base a esto se podrá ofrecer una mejor estimación para ayudar a la convergencia del método estudiado.

Aclarado lo anterior, procedemos a crear un función con el nombre ptofijo() la cual recibirá como único parámetro una función que dependa de alguna variable simbólica previamente establecida, y creando inmediatamente, un corto código, que nos permita visualizar la gráfica en cierto intervalo:

punto fijo

Posteriormente, luego de haber representado gráficamente la ecuación, como es propio del método de PUNTO FIJO se sumará la variable simbólica a la función ingresada como Y y se almacenará en una nueva función llamada G así, únicamente bastara con escribir G=Y+X y se pide el ingreso de la estimación de ‘r’:

punto fijo

Después realizado el procedimiento anterior, solo queda explotar la propiedad, y comenzar con la iteraciones, definiendo un umbral de error bastante pequeño, en este caso del 0.0000000001%  después, dentro del WHILE, calculamos siempre el nuevo valor para la variable ‘r’ a partir de la evaluación de la nueva función G(X) y al final calculando el nuevo error aproximado por cada iteración, hasta que este, llegue al umbral y nos retorne el valor de la raíz:

punto fijo

La forma correcta de usar esta función es la siguiente; se declara una variable simbólica X, luego se crea una función Y(X) y se invoca la función ptofijo() pasándole como argumento de entrada la propia función Y(X), después de elegir los limites para ver la representación gráfica, se procede a introducir la estimación de la raíz, para que se inicien las iteraciones y al final obtener en nuestra command window el resultado de la aproximación de la raíz, como se ilustra en la siguiente imagen, donde la función será e^(-x)-x con una estimación de R=o (cero):

punto fijo

Como sabemos, de ejemplos anteriores, el resultado de la raíz de esta ecuación de 0.567143291 que es casi la aproximación a la que hemos llegado.

El programa usado en esta entrada lo puedes encontrar en este enlace, si tienes alguna duda acerca del programa puedes dejar un comentario.

Tomarse el tiempo para comentar, es una forma de agradecer el tiempo del autor para realizar este documento. Saludos

Julio.

8 comentarios en “Métodos Abiertos, Iteración Simple de Punto Fijo Matlab

  1. No funciono me sale
    >> ptofijo
    Elija limite superior para visualizar la grafica: 5
    Elija limite inferior para visualizar la grafica: 3
    ??? Input argument “y” is undefined.

    Error in ==> ptofijo at 11
    h=subs(y,t); %se valuan todos los puntos del vector tiempo y se almacenan en h

    Me gusta

    • Hola Erick, sucedió a la hora de llamar la función, como es una función propiamente hay que pasarle argumentos, en este caso solo la llamaste como ‘ptofijo’ pero lo correcto es como aparece en el ejemplo final, es decir, definir una variable simbólica y luego lo que aparece como ” ‘y’ is undefined ” es que Y debe ser una ecuación y=f(x) y ese es el argumento que se le pasa a ptofijo…

      syms x
      y=exp(-x)-x;
      raiz=ptofijo(y)

      Gracias por comentar Erick.

      Me gusta

  2. Quiero agregar, si tienen la versión 2013 de Matlab, a partir de estas versiones Matlab está retornando expresiones simbólicas, en otra palabras no devuelve valores numéricos como esperamos, lo cual podemos solucionar usando la función double( ) para forzar a que todo se convierta a un valor de tipo decimal.

    ejemplo:

    syms x
    y=exp(-x)-x;
    raiz=double(ptofijo(y))

    y el resultado de la variable ‘raíz’ aparecerá en formato decimal.

    Me gusta

    • Hola Fernanda, gracias por comentar!
      Si quieres ver los resultados que va lanzando el algoritmo por cada iteración o intento de cálculo, lo puedes hacer fácilmente incluyendo una función como disp() o fprintf() dentro del ciclo, para uqe vayas imprimiendo los valores a medida que el programa va iterando.

      Me gusta

  3. ola me sale este error
    >> syms x
    >> y= exp(x)-x

    y =

    exp(x) – x

    >> ptofijo (y)
    Elija limite superior para visualizar la grafica: 0
    Elija limite inferior para visualizar la grafica: 2
    Ingrese el estemado de la raiz: 0
    Conversion to logical from sym is not possible.

    Error in ptofijo (line 19)
    while abs(error)>0.000001 %se establece un umbral de error del 1e-10

    Me gusta

    • Hola @Jair, gracias por comentar, este ‘error’ se debe a que ingresaste “y = exp(x)-x” y en realidad debe ser “y = exp(-x)-x”, esa advertencia aparece cuando el algoritmo no es capaz de encontrar una raíz (si viste la gráfica de la función que ingresaste, esta nunca cruza por cero) entonces el error comienza a crecer y se pierde el control.
      Esto se puede mejorar si pones una condición de parada cuando veas que el error aumenta en vez de disminuir (eso nos indica un problema en la función).

      Saludos.

      Julio.

      Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s