diff --git a/matlab/lmmcp/dyn_lmmcp.m b/matlab/lmmcp/dyn_lmmcp.m deleted file mode 100644 index 78ed2b8aaf8331f332bc8321298688c446afaf57..0000000000000000000000000000000000000000 --- a/matlab/lmmcp/dyn_lmmcp.m +++ /dev/null @@ -1,78 +0,0 @@ -function [endo_simul,info] = dyn_lmmcp(M_,options,oo_) -% [endo_simul,info] = dyn_lmmcp(M_,options,oo_) - -% Copyright © 2014-2023 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see <https://www.gnu.org/licenses/>. - -[lb,ub,eq_index] = get_complementarity_conditions(M_); - -lead_lag_incidence = M_.lead_lag_incidence; - -ny = M_.endo_nbr; - -max_lag = M_.maximum_endo_lag; - -nyp = nnz(lead_lag_incidence(1,:)) ; -iyp = find(lead_lag_incidence(1,:)>0) ; -ny0 = nnz(lead_lag_incidence(2,:)) ; -iy0 = find(lead_lag_incidence(2,:)>0) ; -nyf = nnz(lead_lag_incidence(3,:)) ; -iyf = find(lead_lag_incidence(3,:)>0) ; - -nd = nyp+ny0+nyf; -nrc = nyf+1 ; -isp = 1:nyp ; -is = nyp+1:ny+nyp ; -isf = iyf+nyp ; -isf1 = nyp+ny+1:nyf+nyp+ny+1 ; -stop = 0 ; -iz = 1:ny+nyp+nyf; - -periods = options.periods; -steady_state = oo_.steady_state; -params = M_.params; -endo_simul = oo_.endo_simul; -exo_simul = oo_.exo_simul; -i_cols_1 = nonzeros(lead_lag_incidence(2:3,:)'); -i_cols_A1 = find(lead_lag_incidence(2:3,:)'); -i_cols_T = nonzeros(lead_lag_incidence(1:2,:)'); -i_cols_j = 1:nd; -i_upd = ny+(1:periods*ny); - -x = endo_simul(:); - -model_dynamic = str2func([M_.fname,'.dynamic']); -z = x(find(lead_lag_incidence')); -[~,A] = model_dynamic(z, exo_simul, params, steady_state,2); -nnzA = nnz(A); - -LB = repmat(lb,periods,1); -UB = repmat(ub,periods,1); - -Y0 = endo_simul(:,1); -YT = endo_simul(:,end); -x = endo_simul(:,2:end-1); -x = x(:); - -func_handle = @(x) dyn_lmmcp_func(x,model_dynamic, Y0, YT, exo_simul, ... - params, steady_state, periods, ny, ... - lead_lag_incidence, i_cols_A1, i_cols_1, ... - i_cols_T, i_cols_j,nnzA,eq_index); - -[x, info] = lmmcp(func_handle,x,LB,UB,options.lmmcp); - -endo_simul = [Y0 reshape(x,ny,periods) YT]; \ No newline at end of file diff --git a/matlab/lmmcp/dyn_lmmcp_func.m b/matlab/lmmcp/dyn_lmmcp_func.m deleted file mode 100644 index 88601755c49d7629b47e3401842811c96192115d..0000000000000000000000000000000000000000 --- a/matlab/lmmcp/dyn_lmmcp_func.m +++ /dev/null @@ -1,55 +0,0 @@ -function [F,A] = dyn_lmmcp_func(x, model_dynamic, Y0, YT, exo_simul, params, ... - steady_state, periods, ny, lead_lag_incidence, ... - i_cols_A1, i_cols_1, i_cols_T, i_cols_j, ... - nnzA,eq_index) - -% Copyright © 2014-2017 Dynare Team -% -% This file is part of Dynare. -% -% Dynare is free software: you can redistribute it and/or modify -% it under the terms of the GNU General Public License as published by -% the Free Software Foundation, either version 3 of the License, or -% (at your option) any later version. -% -% Dynare is distributed in the hope that it will be useful, -% but WITHOUT ANY WARRANTY; without even the implied warranty of -% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -% GNU General Public License for more details. -% -% You should have received a copy of the GNU General Public License -% along with Dynare. If not, see <https://www.gnu.org/licenses/>. - -Y = [Y0; x; YT]; - -F = zeros(periods*ny,1); -if nargout == 2 - A = sparse([],[],[],periods*ny,periods*ny,periods*nnzA); -end - -i_rows = 1:ny; -i_cols = find(lead_lag_incidence'); -i_cols_A = i_cols; - -for it = 2:(periods+1) - - [res,jacobian] = model_dynamic(Y(i_cols),exo_simul, params, ... - steady_state,it); - F(i_rows) = res(eq_index); - - if nargout == 2 - if it == 2 - A(i_rows,i_cols_A1) = jacobian(eq_index,i_cols_1); - elseif it == periods+1 - A(i_rows,i_cols_A(i_cols_T)) = jacobian(eq_index,i_cols_T); - else - A(i_rows,i_cols_A) = jacobian(eq_index,i_cols_j); - end - end - - i_rows = i_rows + ny; - i_cols = i_cols + ny; - if nargout == 2 && it > 2 - i_cols_A = i_cols_A + ny; - end -end