1- Rutina de calcul a arborelui cu bifurcatii pentru modelul microeconomic (MATLAB)
clear
Stabilizare=100;
N=1000;
a=0.2;b=0.8;c=100;alfa=0.46;beta=0.8; %1 > alfa, beta > 0
x_=0.2;
y_=0.12;
cc=0:1:110;
axis([cc(1) cc(size(cc,2)) 0 0.3]);title('','FontSize',18);hold on;
for k=1:size(cc,2)
c=cc(k);
for n=1:Stabilizare
x_=(1-alfa)*x_+a/(1+exp(-c*(x_-y_)));
y_=(1-beta)*y_+b/(1+exp(-c*(x_-y_)));
end
x(1)=x_;y(1)=y_;
for n=1:N
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
end
media(k)=mean(x(1:N));
imprastierea(k)=std(x(1:N));
plot(c,x,'ro','LineWidth',0.5,'MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',3)
end
figure;plot(1:1:size(media,2),media)
figure;plot(1:1:size(imprastierea,2),imprastierea)
2-Rutina de calcul seriei temporale pentru modelul microeconomic (MATLAB)
clear
N=1000;
a=0.16;b=0.9;c=105;alfa=0.46;beta=0.7; %1 > alfa, beta > 0
m=1; K=0; %fara control K=-0.1...
x(1)=0.02;
y(1)=0.12;
for n=1:m
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
end
for n=m+1:N
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
%control
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_1_N1=mean(x(1:N))
plot(1:1:size(x,2),x,'*')
%ATENTIE perioadele orbitelor "O" depind foarte mult de m si k (extrem de mult!) de ex k=0.1 si m=1 are O=4
3-Rutina de calcul a punctelor fixe pentru modelul microeconomic (MATLAB)
%rezolvarea unui sistem de ecuatii neliniare pentru punctele fixe modelul BehrensFeichtinger
clear
options=optimset('Display','iter'); % Option to display output
x0 =[0; 0]; % prima aproximare
options.TolFun=1e-12;options.TolX=1e-7;
x0 = [0.01182215476882; 0.04369975066333]; %dupa prima ghicire
options.TolFun=1e-20; options.TolX=1e-20; %scadem mult si tolerantele!
[x,fval] = fsolve(@functieBehrensFeichtinger,x0,options) % Call optimizer
%verificare
N=100;
a=0.16;b=0.9;c=105;alfa=0.46;beta=0.7; %1 > alfa, beta > 0
X(1)=x(1);
Y(1)=x(2);
for n=1:N
X(n+1)=(1-alfa)*X(n)+a/(1+exp(-c*(X(n)-Y(n))));
Y(n+1)=(1-beta)*Y(n)+b/(1+exp(-c*(X(n)-Y(n))));
end
plot(1:1:size(X,2),X,'*',1:1:size(Y,2),Y,'.')
4-Rutina de calcul a coef. Lyapunov, model map 2D (MATLAB)
clear
a=0.16;b=0.9;c=105;alfa=0.46;beta=0.7; %1 > alfa, beta > 0
x=0.02;y=0.12;y_p=0; %valorile initiale
N=10^4;
NN=50;dx=1/NN;dy=1/NN;
%-----------------------------------
for q=1:1:NN;
xx(q)=q*dx;
for qq=1:1:NN;
yy(qq)=qq*dy;
x=xx(q);y=yy(qq);
%-----------------------------------
lam=0;det=0;
for n=2:N
y0=y;x0=x; %vechile puncte
%noile puncte, functie de vechile puncte
fdx = 1-alfa+a/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y)); %calculul derivatelor cu punctele vechi pentru a calcula noul y_p
fdy = -a/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
gdx = b/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
gdy = 1-beta-b/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
y_p=(gdx + gdy*y_p)/(fdx + fdy*y_p); %merege si in functie de x si y deiarece pana aici x0==x si y0==y
x=(1-alfa)*x0+a/(1+exp(-c*(x0-y0)));
y=(1-beta)*y0+b/(1+exp(-c*(x0-y0)));
fdx = 1-alfa+a/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y)); %calculul derivatelor cu punctele noi pentru a calcula noul lam
fdy = -a/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
gdx = b/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
gdy = 1-beta-b/(1+exp(-c*(x-y)))^2*c*exp(-c*(x-y));
lam=lam+log(((fdx + fdy*y_p)^2+(gdx + gdy*y_p)^2)/(1+y_p^2));
det=det+fdx*gdy-fdy*gdx; %determinantul Jacobianului...
end
lambda1(q,qq)=lam/2/N; %cel mai mare coeficient Lyapunov
det=det/2/N;
lambda2(q,qq)=log(abs(det))-lambda1(q,qq); %al doilea coficint Lyapunov
end
end
[X,Y]=meshgrid(xx,yy);
surf(X,Y,lambda1)
5-Rutina de control a manifestării haotice prin controlul investitiilor, model (MATLAB)
clear
N1=100;N2=200;N3=400;N4=600;N5=700;N6=900;
a=0.16;b=0.9;c=105;alfa=0.46;beta=0.7; %alfa>0 si beta<1
m=1;
x(1)=0.01;
y(1)=0.12;
for n=1:m+1
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
end
K=0;m=1; %nu mai conteaza m
for n=m+1:N1
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_1_N1=mean(x(1:N1))
K=0.5;m=1;
for n=N1+1:N2
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_N1_N2=mean(x(N1:N2))
K=0;m=1; %nu mai conteaza m
for n=N2+1:N3
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_N2_N3=mean(x(N2:N3))
K=-0.1;m=2;
for n=N3+1:N4
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_N3_N4=mean(x(N3:N4))
K=0;m=2; %nu mai conteaza m
for n=N4+1:N5
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
m_N4_N5=mean(x(N4:N5))
%----------------------------------------------------------------
K=-0.5;m=1;
for n=N5+1:N5
x(n+1)=(1-alfa)*x(n)+a/(1+exp(-c*(x(n)-y(n))));
y(n+1)=(1-beta)*y(n)+b/(1+exp(-c*(x(n)-y(n))));
KK(n+1)=K;
F(n+1)=KK(n+1)*(y(n)-y(n-m));
y(n+1)=y(n+1)+F(n+1);
mm(n+1)=m;
end
%m_N5_N6=mean(x(N5:N6))
figure:plot(x(3:N5),'--','LineStyle','none','Marker','x');title('X')
figure:plot(F(3:N5),'--','LineStyle','none','Marker','x');title('X')
figure:plot(KK(3:N5),'--','LineStyle','none','Marker','x');title('X')
figure:plot(mm(3:N5),'--','LineStyle','n