% PROGRAMA PARA ENCONTRAR LOS PUTNOS FIJOS DE UNA FUNCION
% VERSION 1.0
% AUTOR:EDGAR BERNAL FLORES
% 01032009
%email:tecualoya@hotmail.com
function[puntosfijos evaluacion tipos]=puntofijos(funcion,varsyms)
% ENTRADAS DEL PROGRAMA:
% FUNCION -> RECIBE UN ARREGLO DE MANEJADORES DE FUNCION
%
% SALIDAS:
% PUNTOSFIJOS -> DA COMO RESULTADO UN ARREGLO DE PUNTO FIJOS CORRESOPNDIETES A CADA FUNCION EVALUDA
% TIPO -> DA EL TIPO DE PUTNO FIJO QUE ES PARA LA FUNCION DE ACUERDO AL CRITERIO DE LA PRIMERA DERIVADA
%
% PORCEDIMIENTO:
%
% LOS PUNTOS FIJOS LOS CALCULAMOS DE ACUERDO A LA EXPRESION F(X)-X=0
% EL TIPO DE PUNTO FIJO ESTA DETERMINADO POR |F'(X0)|<=>1
% DEFINICION DE VARIABLES SIMBOLICAS PARA PODER ANALIXAR LAS FUNCIONES
close all
clc
syms(varsyms);
% CALCULAMOS LOS PUNTOS FIJOS PARA CADA ECUACION DEL ARREGLO DE FUNCIONES
for i2=1:length(funcion(:,1))
ecuacionpf=strcat(funcion(i2,:),'-x=0');
puntosfijos(i2,:)=double(solve(ecuacionpf));
[eval tipo]=criterioderivada(funcion(i2,:),puntosfijos(i2,:),varsyms);
tipos(i2,:)=tipo;
evaluacion(i2,:)=eval;
end
%GRAFICAMOS LAS FUNCIONES Y LOCALIZAMOS LOS PUTNOS FIJOS Y DESPLEGAMOS SU
%TIPO
grid
axis('normal');
xlabel('X')
ylabel('F(X)')
title('analisis de puntos fijos')
hold on
for i3=1:length(funcion(:,1))
ezplot(funcion(i2,:));
ezplot('x');
for i4=1:length(puntosfijos(i3,:))
if(tipo(i3,i4)<0)
text(puntosfijos(i4),puntosfijos(i4),['P.F. \leftarrow atractor (',num2str(puntosfijos(i4)),')'] ,'HorizontalAlignment','left','FontSize',8);
elseif(tipo(i3,i4)>0)
text(puntosfijos(i4),puntosfijos(i4),['P.F. \leftarrow repulsor (',num2str(puntosfijos(i4)),')'] ,'HorizontalAlignment','left','FontSize',8);
else
text(puntosfijos(i4),puntosfijos(i4),['P.F. \leftarrow neutro (',num2str(puntosfijos(i4)),')'] ,'HorizontalAlignment','left','FontSize',8);
end
end
end