2 votos

Matlab: Modelo de Solow Convergencia del capital

Actualmente estoy intentando crear un bucle while que itere la evolución del stock de capital hasta que converja en el n-ésimo dígito. Como todavía soy bastante nuevo en Matlab me encuentro con muchos problemas. Estaría muy agradecido por cualquier tipo de ayuda.

Aquí está mi código:

% Model parameters
alpha = 1/3;    %  
s     = 0.2;    % Investment rate
delta = 0.2;    % Depreciation rate
n     = 0.02;   % Growth of labor force
g     = 0.01;   % technological progress

eps  = 1;
k(1,1) = 0.5;
i=0;

while  eps >= 1.0e-5        
    t = t+1;
    k(1,t) = (1/((1+n)*(1+g)))*((s*k(1,t-1)^alpha+(1-delta)*k(1,t-1)));
     z = k(1,t);       
    z1 = k(1,t+1);
         kdif = z1-z ;
          eps = max(abs(kdif));
    i = i + 1;
  if i >= 300
    break;
  end
end

2 votos

Tengo varias observaciones sobre su código. En primer lugar, escriba para simplificar $k(1)=0.5$ y dentro de la fórmula del bucle while sustituir $k(1,t-1)$ por $k(t-1)$ que debe asignarse a la variable $k(t)$ y no a $k(1,t)$ . Además, sustituya $z=k(1,t)$ por $k(t).$ . Además, debe establecer el periodo de tiempo para $t=1$ antes del bucle while. Finalmente, $z1=k(1,t+1)$ no tiene sentido, este valor sigue sin calcularse. Por lo tanto, sustitúyalo por $z1=k(k-1)$ . Entonces reescribe $kdif$ a $kdif=z-z1$ . Después de estas correcciones, usted debe obtener después de $55$ iteraciones el valor $0.8097$ . Espero que esto ayude.

0 votos

@HolgerI.Meinhardt por favor publique las respuestas como respuestas - tenga en cuenta que las respuestas pueden ser en forma de pistas si cree que la pregunta del usuario es lo suficientemente simple como para que desde una perspectiva didáctica sea mejor proporcionar una pista en lugar de una respuesta directa

1 votos

Por último, elimina el iterador $i$ en todas partes no tiene sentido, ya has $t$ . Por lo tanto, dentro de la construcción if, utiliza si $ t>=300$ en su lugar.

4voto

user23117 Puntos 1292

Dado que se me instó a presentar una respuesta por razones didácticas con las que estoy totalmente de acuerdo, proporcionaré el conjunto completo de correcciones para evitar cualquier ambigüedad.

% Model parameters
alpha = 1/3;    %  
s     = 0.2;    % Investment rate
delta = 0.2;    % Depreciation rate
n     = 0.02;   % Growth of labor force
g     = 0.01;   % technological progress
eps  = 1;
k(1) = 0.5;
t=1;

while  eps >= 1.0e-5        
    t = t+1;
    k(t) = (1/((1+n)*(1+g)))*((s*k(t-1)^alpha+(1-delta)*k(t-1)));
    z = k(t);         
    z1 = k(t-1);
    kdif = z-z1 ;
    eps = max(abs(kdif));
   if t >= 300
     break;
   end
 end

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X