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:
- un punto inicial.
- 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.
#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;
}