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