% METODO COWEB PARA DETECCION DE PUNTOS FIJOS EN FUNCIONES
% VER 1.0
% AUTOR: EDGAR BERNAL FLORES
% 16022009
%email: tecualoya@hotmail.com
function [orbita puntosorbita]=Coweb(funcion,x0,itera,a,b)
% ENTRADA: X0->Es un punto de inicio en donde comenzaremos a realizar las iteraciones para llegar al punto fijo
% Nitera-> es el numero de iteraciones a realizar dentro del intervalo X1 y X2 comenzando en X0
% funcion-> esla funcion a evaluar y en la cual se obtienen los puntos fijos
% X1 y X2 -> son los limites en los cuales podemos realizar la graficacion y las orbitas de la funcion
%
% SALIDA : orbita-> es la secuencia de valores antes de llegar a un punto fijo
% puntosfijos-> son los valores de donde se encuetran los puntos fijos de la funcion
%
% NOTA: CONSIDERAMOS LAs SIGUIENTEs ECUACIONES:
% PARA PODER ONTENER LOS PUTNOS FIJOS -> f(x)-x=0
% PARA CALCULAR LAS ORBITAS X0,F'(X0)=X1,F''(X1),....
close all
clc
% GRAFICAMOS LA FUNCION A EVALUAR Y LA FUNCION IDENTIDAD
a
b
xi=@(x)x;
% fplot(funcion,[a b]);
fplot(@(x)[funcion(x),xi(x)],[a,b]);
axis('normal');
xlim([a b]);
ylim([a b]);
xlabel('X')
ylabel('F(X)')
title('Analisis Coweb')
grid
hold on
% fplot(x,[a,b]);
x0
%CALCUALOMOS LOS PUNTOS FIHOS DE NUESTRO SISTEMA
% puntosfijos=solve(funcion.-xi);
% puntosfijos
% ObNTENEMOS LA ORBITA DE NUESTRO PUNTO DE INICIO
for i1=2:(itera+1)
if (i1==2)
orbita(i1)=x0;
elseif(i1==3)
orbita(i1)=funcion(x0);
else
orbita(i1)=funcion(orbita(i1-1));
end
end
orbita
cont=1;
% CALCULAMOS LOS PUNTOS DE LA ORBITA
for i2=2:(length(orbita)-1)
if(i2==2)
puntosorbita(cont,:)=[orbita(i2) orbita(i2-1)];
puntosorbita((cont+1),:)=[orbita(i2) orbita(i2)];
puntosorbita((cont+2),:)=[orbita(i2+1) orbita(i2)];
cont=cont+3;
else
puntosorbita((cont),:)=[orbita(i2) orbita(i2)];
puntosorbita((cont+1),:)=[orbita(i2+1) orbita(i2)];
cont=cont+2;
end
end
puntosorbita
%ETIQUETAMOS LAS ORBITAS Y SUS PUNTOS
%etieuta para el punto de inicio
text(x0,0,['x0 \leftarrow', num2str(x0)] ,'HorizontalAlignment','left','FontSize',8);
%etiqueta para el punto fijo de la orbita
text(orbita(length(orbita)),orbita(length(orbita)),['P.F. \leftarrow', num2str(orbita(length(orbita)))] ,'HorizontalAlignment','left','FontSize',8);
% TOMAMOS LOS PUNTOS DE LA ORBITA CREADOS ANTERIORMENTES Y LOS GRAFICAMOS
plot(puntosorbita(:,1),puntosorbita(:,2));