reverse-shooting

Matlab scripts for reverse shooting
Log | Files | Refs | README

FindAlternativePath.m (1282B)


      1 % Find alternative path without shock
      2 
      3 function xsoln=FindAlternativePath(xguess,alpha,epsilon,beta,lambda,phi,dltabar,ubar,gamma,rho,nbar, Ncal, scal, ellcal, sigmacal, dltacal, ycal, zcal, T, tstep, type);
      4 
      5 
      6 
      7 options=optimset('Display','on', 'MaxFunEvals', 100000, 'MaxIter', 10000);
      8 xsoln=fminsearch(@SSRShock,xguess,options);
      9 
     10 
     11 
     12 
     13     function e=SSRShock(x0);
     14        dltaguess=x0(1);
     15        Nguess =x0(2);
     16        
     17 
     18 
     19        % Get solution
     20        ShowResults=0;
     21        [t,x,chat,hhat,gdpgrowth,shat,ellhat,dltahat, sigmahat]=solvetransition(dltabar,ubar,epsilon,beta,gamma,dltaguess,Nguess, alpha,lambda,phi,rho,nbar,T,tstep,ShowResults, type);
     22 
     23        % Recover the key variables
     24        s=x(:,1);
     25        ell=x(:,2);
     26        sigma=x(:,3);
     27        dlta=x(:,4);
     28        y=x(:,5);
     29        z=x(:,6);
     30        N=x(:,7);
     31 
     32        [minValue,closestIndex] = min(abs(dlta-dltacal));
     33 
     34        m(1)=3*(s(closestIndex)-scal)/scal;
     35        m(2)=3*(ell(closestIndex)-ellcal)/ellcal;
     36        m(3)=2*(sigma(closestIndex) -sigmacal)/sigmacal;
     37        m(4)=((dlta(closestIndex) -dltacal)/dltacal)/10;
     38        m(5)=(y(closestIndex) -ycal)/ycal;
     39        m(6)=(z(closestIndex) -zcal)/zcal;
     40        m(7)=((N(closestIndex) -Ncal)/Ncal)/3;
     41 
     42 
     43        m=m';  
     44        e=1000*m'*m;  % Sum of squared deviations
     45     end
     46 end
     47