Rutinas Matlab y Algoritmos de Bisección

APENDICE “A”: Trayectoria de las variables hacia el estado estacionario.

function [yt,ct,it,kt,m]=
seriestk(k0,c0,a,d,b,tita,n,sigma,tauk,taui,z);

kt=zeros(n,1);

ct=zeros(n,1);

kt(1)=k0;

ct(1)=c0;

n2=n;

for i=1:(n-1)

kt(i+1)= (kt(i)^a + (1-d)*kt(i) - ct(i))/(1+z)*(1+sigma);

ct(i+1) = ct(i)*(b*((1-tauk)*a*kt(i+1)^(a-1) + (1+taui)*(1-d))/(1+taui)*(1+z)*(1+sigma))^(1/tita);

dc=ct(i+1)-ct(i);

dk=kt(i+1)-kt(i);

if
(dc/dk)<0;

n2=i;

break

end

end

m=[n2 dk];

kt= kt(1:n2);

ct= ct(1:n2);

yt=kt.^a;

it = yt - ct;

Algoritmo de Bisección

function [yt,ct,it,kt,n2]=
series2tk(k0,a,d,b,tita,n,sigma,tauk,taui,z);

% Se procede a formar un algoritmo mediante el método de bisección para
encontrar el nivel de c0 óptimo (z es la tasa de crecimiento poblaciomal)%

kee= (a*(1-tauk)/((1+z)*(1+sigma)*(1+taui)/b-(1+d)*(1 + taui)))^(1/(1-a));

c1 = k0^a + (1-d)*k0 -kee;

c2=k0^a - d*k0;

ci=(c1>0)*c1;

cs=(c2>0)*c2;

if cs<ci;

cc=ci;

ci=cs;

cs=cc;

end;

dc=1;

while (1);

c0 = (ci+cs)/2;

[yt,ct,it,kt,m]= seriestk(k0,c0,a,d,b,tita,n,sigma,tauk,taui,z);

if
m(1)==n

break;

elseif
dc<1.e-14

disp('Convergencia
no alcanzada'
)

disp('n máximo:')

disp(m(1))

break;

elseif
(sign(m(2))<=0);

cs=c0;

else

ci=c0;

end

dc = cs - ci;

end

n2 = m(1);

%Modelo de
Crecimiento Neoclásico%

%Diferentes Estados Estacionarios para Parámetros Diferentes%

a=0.3;

d=0.06;

b=0.95;

taui=0.1;

tauk0=0.05;

tauk1=0.1;

tauk2=0.2;

z=0.03;

sigma=0.01;

tita=0.2;

k0=1;

n=45;

%----Modelos Alternativos-----%

[yt1,ct1,it1,kt1,n1]= series2tk(k0,a,d,b,tita,n,sigma,tauk0,taui,z);

[yt2,ct2,it2,kt2,n2]= series2tk(k0,a,d,b,tita,n,sigma,tauk1,taui,z);

[yt3,ct3,it3,kt3,n3]= series2tk(k0,a,d,b,tita,n,sigma,tauk2,taui,z);

t1= 1:n1;

t2= 1:n2;

t3= 1:n3;

%Gráfico%

%Fases%

kee=(a*(1-tauk)/((1+taui)*(1+z)*(1+sigma)/b - (1+taui)*(1+d)))^(1/(1-a))

cee=kee^a -d*kee;

k=linspace(0,1.3*kee,100)';

c1=k.^a + (1-d).*k - kee;

c2=k.^a - d.*k;

figure(1)

plot(kt1,ct1,'*-',kt2,ct2,'d-',kt3,ct3,'o-',k,c1,k,c2);

axis([0 (1.3*kee) 0 (1.3*cee)])

title('Diagrama de
Fases'
);

xlabel('Capital');

ylabel('Consumo');

legend('tauk0 =
0.05'
,'tauk
= 0.1'
,'tauk2
= 0.2'
);

%Gráfico para las variables reales

figure(2)

plot(t1,yt1,'*-',t2,yt2,'d-',t3,yt3,'o-')

title('Ingreso');

xlabel('tiempo');

legend('tauk0 =
0.05'
,'tauk1
= 0.1'
,'tauk2
= 0.2'
);

figure(3)

plot(t1,ct1,'*-',t2,ct2,'d-',t3,ct3,'o-')

title('Consumo');

xlabel('tiempo');

legend('tauk0 =
0.05'
,'tauk1
= 0.1'
,'tauk2
= 0.2'
);

figure(4)

plot(t1,it1,'*-',t2,it2,'d-',t3,it3,'o-')

title('Inversión');

xlabel('tiempo');

legend('tauk0 =
0.05'
,'tauk1
= 0.1'
,'tauk2
= 0.2'
);

figure(5)

plot(t1,kt1,'*-',t2,kt2,'d-',t3,kt3,'o-')

title('Capital');

xlabel('tiempo');

legend('tauk0 =
0.05'
,'tauk1
= 0.1'
,'tauk2
= 0.2'
);

Para obtener la trayectoria de las variables cuando varía el impuesto a la
inversión, se utilizaron los mismos programas con las correspondientes
modificaciones.

APÉNDICE B: Variables en equilibrio.

%Valores en Estado Estacionario%

function keess =
ss(tauc,tauk,taul,taui,n,d,a,b,tita,sigma);

%---Parámetros Calibrados---%

tauc=0.21; %imp al
consumo

taui=0.05; %imp a la
inversión

taul=0.25; %imp al
trabajo

tauk=0.1; %imp al
capital

n=0.03; %tasa de
crecimiento de la población

d=0.06; %tasa
depreciación

a=0.3; %Elasticidad
producto del factor capital

b=0.95; %tasa de
descuento social

tita=0.8;
%Elasticidad de la utiliada marginal con respecto al consumo

sigma=0.01; %Tasa de
crecimiento del producto

%--- Restantes Variables en Estado Estacionario ---%

keess=(((1+n)*(1 + sigma)*(1+taui)/b - (1-d)*(1+taui))/(a*(1-tauk)))^(1/(a-1));

yeess= keess^a;

ieess= keess*(d+n);

ceess= yeess - ieess;

reess= a*keess^(a-1);

weess= yeess - reess*keess;

geess= tauk*keess*reess + tauc*ceess + taul*weess + taui*ieess;

%--- Distribución de Recursos es Estado Estacionario ---%

retribalcap= (1-tauk)*reess*keess;

retribaltrab= (1-taul)*weess;

prestributar= geess/yeess;

tasaahorro= (yeess-ceess)/yeess;

%--- Salidas y Gráficos ---%

disp('------Valor de
las Variables en Estado Estacionario--------'
);

disp(' keess yeess
ieess ceess geess reess weess'
);

disp([keess yeess ieess ceess geess reess weess]);

disp('------Otros
Datos--------'
);

disp('retrib cap
retrib trab pres trib tasa ahorro'
);

disp([retribalcap retribaltrab prestributar tasaahorro]);

 

 

 

 

 

 

APÉNDICE “C”: Análisis Laffer.

%---Parámetros Calibrados---%

tauc=0.21; %imp al
consumo

tauk=0.05; %imp a la
inversión

taul=0.25; %imp al
trabajo

n=0.03; %tasa de
crecimiento de la población

d=0.06; %tasa
depreciación

a=0.3; %Elasticidad
producto del factor capital

b=0.95; %tasa de
descuento social

tita=0.8;
%Elasticidad de la utiliada marginal con respecto al consumo

sigma=0.01; %Tasa de
crecimiento del producto

%---Bucle para el Consumo y el Capital en Estado Estacionario para dif tasas
a la Inv---%

m=50;

taui= linspace(0.01,0.99,m)';
%vector con diferentes tasas
(equidistantes) para el capital

keess= zeros(m,1);

for i=1:m

keess(i,1)=(((1+n)*(1 + sigma)*(1+taui(i))/b - (1-d)*(1+taui(i)))/(a*(1-tauk)))^(1/(a-1));

ceess(i,1)=(((1+n)*(1 + sigma)*(1+taui(i))/b - (1-d)*(1+taui(i)))/(a*(1-tauk)))^(a/(a-1))
-d*(((1+n)*(1+taui(i))/b - (1-d)*(1+taui(i)))/(a*(1-tauk)))^(1/(a-1));

end

%--- Restantes Variables en Estado Estacionario ---%

yeess= keess.^a;

ieess= keess.*(d+n);

reess= a*keess.^(a-1);

weess= yeess - reess.*keess;

geess= tauk*keess.*reess + tauc*ceess + taul*weess + taui.*ieess;

%--- Distribución de Recursos es Estado Estacionario ---%

retribalcap= (1-tauk)*reess.*keess;

retribaltrab= (1-taul)*weess;

prestributar= geess./yeess;

tasaahorro= (yeess-ceess)./yeess;

%--- Salidas y Gráficos ---%

disp('------Valor de
las Variables en Estado Estacionario--------'
);

disp(' keess yeess
ieess ceess geess reess weess taui'
);

disp([keess yeess ieess ceess geess reess weess taui]);

figure(1)

plot(taui,[yeess ceess keess ieess geess])

legend(['y';'c';'k';'i';'g'])

title('Analisis tipo
Laffer de las Variables Percapita'
)

xlabel('taui')

 

 

 

 

figure(2)

subplot(2,1,1)

plot(taui,[weess reess])

legend(['w';'r'])

title('Analisis de
Precios de Factores'
)

xlabel('taui')

subplot(2,1,2)

plot(taui,[retribalcap retribaltrab])

title('Análisis
Distributivo'
)

xlabel('taui')

legend(['capital';'trabajo'])

figure (3)

plot(taui,[prestributar tasaahorro])

title('Otos Datos')

xlabel('taui')

legend(['prestrib';'tasaahorro'])

%--- Valores Máximos para las Variables en Estado Estacionario ---%

productomaximo=max(yeess);

gastomaximo=max(geess);

consumomaximo=max(ceess);

inversionmaxima=max(ieess);

capitalmaximo=max(keess);

disp('--- Valores
Máximos de las Variables para cada Alícuota ---'
)

disp(' yeess keess
ceess ieess geess'
)

disp([productomaximo capitalmaximo consumomaximo inversionmaxima gastomaximo])

Para el caso del impuesto al capital se utilizó el mismo bucle con las
respectivas modificaciones del caso.

Como citar este artículo: 

Federico "Rutinas Matlab y Algoritmos de Bisección" [en linea]
Dirección URL: https://www.zonaeconomica.com/fiscal/computacional/matlab (Consultado el 28 de Mar de 2024)



Temas de Economía: 

No te pierdas esto: