% Simple demonstration of using the control algorithm to stablize the fixed
% point in the logistic map. See the readme file for an overview of the
% demos available in this directory.
% m = 1 (length of time-delayed sequence)
% n = 1 (length of the control sequence)
% d = 0 (delay time before control perturbations reach system output).
% neighbors = 20 (number of the nearest neighbors used for the surface
% approximation
% niter=300 Number of points to keep for global approximation
% This demo requires the folowing subroutines:
% contr.m - nonlinear controller
% idseq.m - identification sequence builder
% ctrseq.m - control sequence builder
% logsim.m - the logistic map
% linint.m - nearest neighbor tangential plane approximation
% delaysig2.m - an extended version of delaysig.m
% Copyright (c) 1998 The University of Texas at Austin
clear all;
clf;
% Dimensionality of the system
m=1;
d=0;
n=1;
neighbors=20;
niter=300;
u=[0]; %Initial perturbation
for i=1:500
y=logsim(u); %iterate the logistic map with the addition of the
%perturbation (u)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Initially we iterate the logistic map without perturbations
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Next we apply random perturbations and collect the responces (mode=0)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if( i > 100 & i < 301 )
u=contr(y, Inf, 0, 0, [.05], niter, m, n, d, neighbors);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Second stage is the adaptive approach to the steady state with
%control activated but random perturbations still added, (mode=2)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if(i > 300 & i < 401)
u=contr(y, Inf, 0, 2, [0.015], niter, m, n, d, neighbors);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Control is finally activated to reach the goal unstable state (mode=1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if(i > 400)
u=contr(y, Inf,0,1,[.01], niter, m, n, d, neighbors);
end
%The rest is just for display
xs(i)=y;
us(i)=u;
ind=(1:i);
subplot(2,1,1), plot(ind,xs(ind)),title 'y', axis([1 500 0 1]);
subplot(2,1,2), plot(ind,us(ind)),title 'u', axis([1 500 -0.1 0.1]);
drawnow
end
subplot(2,1,1), plot(1:i,xs(:)),title 'y';
subplot(2,1,2), plot(1:i,us(:)),title 'u';