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.
Federico "Rutinas Matlab y Algoritmos de Bisección" [en linea]
Dirección URL: https://www.zonaeconomica.com/fiscal/computacional/matlab (Consultado el 24 de Dic de 2024)