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-bf33cf982152time-shift
parent
366ee2212c
commit
c5cf610fdf
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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
|
number_of_calls = number_of_calls + 1;
|
||||||
if isempty(number_of_calls)
|
|
||||||
number_of_calls = 1;
|
|
||||||
else
|
|
||||||
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
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue