miércoles, 2 de mayo de 2012

METODO PUNTO FIJO


                                                PUNTO FIJO

Un punto fijo de una función G, es un número P tal que G(P)=P. El problema de encontrar las soluciones de una ecuación  f(x)=0 y el de encontrar los puntos fijos de una función h(z) son equivalentes en el siguiente sentido: dado el problema de encontar las soluciones de una ecuación f(x)=0 , podemos definir una función G con un punto fijo P de muchas formas; por ejemplo, f(x)= x - G(x). En forma inversa, si la función G tiene un punto fijo en P , entonces la función definida por  f(x)= x - G(x) posee un cero en P. 


 
En conclusión el método de punto fijo requiere:
  1. un punto inicial.
  2. de la ecuación, se pone en función de si misma, y el valor obtenido se vuelve a sustituir hasta que cumpla la condición. 
 ejemplo del metodo por medio de programa en dev c++


 #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include <iomanip>
  
    using namespace std;

    float calculos(float xi, float val, float xa, float iter);

    int main()
{
  
    float xi, val, xa=100, raiz;
    int iter;
    cout<<"\t\t\tMETODO DE ITERACION DE PUNTO FIJO\n"<<endl;
    cout<<"PARA LA FUNCION: (e^-x)-x\n\n"<<endl;
    cout<<"Introduce xi: ";
    cin>>xi;
    cout<<"Introduce x verdadero: ";
    cin>>val;
    cout<<"Introduce numero de iteraciones: ";
    cin>>iter;
    cout<<endl;
    cout<<"\tXi+1"<<"\t\t\tEv"<<"\t\t\tEa"<<endl;
    raiz=calculos(xi,val,xa,iter);
    cout<<endl;
    cout<<"\nLa raiz es: "<<raiz<<"\n"<<endl;
    system("pause");

    return 0;
}

    float calculos(float xi, float val, float xa, float iter)
{
    float xr=xi, ev, ea;
    int num=0;
    do
    {
      cout<<endl;
      if(num!=0)
      {
      xr=exp(-xr);
      ea=fabs((xr-xa)/xr)*100;
      }
      ev=fabs((val-xr)/val)*100;
      cout<<num<<"\t"<<fixed<<setprecision(8)<<xr<<"\t\t"<<ev<<"%"<<"\t\t"<<ea<<"%"<<endl;
      num++;
      xa=xr;
    }
    while((fabs(xr)!=val)&&(num<=iter));
    return xr;
}

1 comentario: