Skip to content
Snippets Groups Projects
Commit c5cf610f authored by stepan's avatar stepan
Browse files

Removed persistent variable. Don't know if persistent variables are working as expected

with recursively called functions.



git-svn-id: https://www.dynare.org/svn/dynare/trunk@3354 ac1d8469-bf42-47a9-8791-bf33cf982152
parent 366ee221
No related branches found
No related tags found
No related merge requests found
...@@ -119,8 +119,7 @@ while (t<=sample_size) ...@@ -119,8 +119,7 @@ while (t<=sample_size)
info.iterations info.iterations
end end
if ~info.convergence if ~info.convergence
clear homotopic_steps; INFO = homotopic_steps(tdx,positive_var_indx,shocks,norme,.5,init,0);
INFO = homotopic_steps(tdx,positive_var_indx,shocks,norme,.5,init);
if verbose if verbose
norme norme
info info
...@@ -147,15 +146,14 @@ end ...@@ -147,15 +146,14 @@ end
function info = homotopic_steps(tdx,positive_var_indx,shocks,init_weight,step,init) function [info,number_of_calls] = homotopic_steps(tdx,positive_var_indx,shocks,init_weight,step,init,number_of_calls)
global oo_ global oo_
persistent number_of_calls
if isempty(number_of_calls)
number_of_calls = 1;
else
number_of_calls = number_of_calls + 1; number_of_calls = number_of_calls + 1;
end
max_number_of_calls = 50; max_number_of_calls = 50;
if number_of_calls>max_number_of_calls
info = NaN;
return
end
max_iter = 100; max_iter = 100;
weight = init_weight; weight = init_weight;
verbose = 0; verbose = 0;
...@@ -194,14 +192,10 @@ while iter<=max_iter && weight<=1 ...@@ -194,14 +192,10 @@ while iter<=max_iter && weight<=1
end end
if reduce_step if reduce_step
step=step/1.5; step=step/1.5;
info = homotopic_steps(tdx,positive_var_indx,shocks,old_weight,step,init); [info,number_of_calls] = homotopic_steps(tdx,positive_var_indx,shocks,old_weight,step,init,number_of_calls);
time = time+info.time; time = time+info.time;
return return
end end
if number_of_calls>max_number_of_calls
info = NaN;
return
end
if weight<1 && iter<max_iter if weight<1 && iter<max_iter
oo_.exo_simul(tdx,positive_var_indx) = shocks; oo_.exo_simul(tdx,positive_var_indx) = shocks;
if init if init
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment