dynare/matlab/doc/sim1.html

142 lines
6.9 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>Description of sim1</title>
<meta name="keywords" content="sim1">
<meta name="description" content="Copyright (C) 2001 Michel Juillard">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="m2html &copy; 2003 Guillaume Flandin">
<meta name="robots" content="index, follow">
<link type="text/css" rel="stylesheet" href="../m2html.css">
</head>
<body>
<a name="_top"></a>
<div><a href="../index.html">Home</a> &gt; <a href="index.html">.</a> &gt; sim1.m</div>
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png">&nbsp;Master index</a></td>
<td align="right"><a href="index.html">Index for .&nbsp;<img alt=">" border="0" src="../right.png"></a></td></tr></table>-->
<h1>sim1
</h1>
<h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>Copyright (C) 2001 Michel Juillard</strong></div>
<h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="box"><strong>function sim1 </strong></div>
<h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre class="comment"> Copyright (C) 2001 Michel Juillard</pre></div>
<!-- crossreference -->
<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
This function calls:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="bksup1.html" class="code" title="function d = bksup1(ny,jcf)">bksup1</a> Copyright (C) 2001 Michel Juillard</li></ul>
This function is called by:
<ul style="list-style-image:url(../matlabicon.gif)">
<li><a href="simul.html" class="code" title="function simul(dr)">simul</a> Copyright (C) 2001 Michel Juillard</li></ul>
<!-- crossreference -->
<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>
<div class="fragment"><pre>0001 <span class="comment">% Copyright (C) 2001 Michel Juillard</span>
0002 <span class="comment">%</span>
0003 <a name="_sub0" href="#_subfunctions" class="code">function sim1</a>
0004
0005 <span class="keyword">global</span> M_ options_ oo_
0006 <span class="keyword">global</span> iyp iyf ct_ M_ it_ c
0007
0008 lead_lag_incidence = M_.lead_lag_incidence;
0009
0010 ny = size(oo_.y_simul,1) ;
0011 nyp = nnz(lead_lag_incidence(1,:)) ;
0012 nyf = nnz(lead_lag_incidence(3,:)) ;
0013 nrs = ny+nyp+nyf+1 ;
0014 nrc = nyf+1 ;
0015 iyf = find(lead_lag_incidence(3,:)&gt;0) ;
0016 iyp = find(lead_lag_incidence(1,:)&gt;0) ;
0017 isp = [1:nyp] ;
0018 is = [nyp+1:ny+nyp] ;
0019 isf = iyf+nyp ;
0020 isf1 = [nyp+ny+1:nyf+nyp+ny+1] ;
0021 stop = 0 ;
0022 iz = [1:ny+nyp+nyf];
0023
0024 disp ([<span class="string">'-----------------------------------------------------'</span>]) ;
0025 disp ([<span class="string">'MODEL SIMULATION :'</span>]) ;
0026 fprintf(<span class="string">'\n'</span>) ;
0027
0028 it_init = 2 ;
0029
0030 h1 = clock ;
0031 <span class="keyword">for</span> iter = 1:options_.maxit
0032 h2 = clock ;
0033
0034 <span class="keyword">if</span> ct_ == 0
0035 c = zeros(ny*options_.periods,nrc) ;
0036 <span class="keyword">else</span>
0037 c = zeros(ny*(options_.periods+1),nrc) ;
0038 <span class="keyword">end</span>
0039
0040 it_ = it_init ;
0041 z = [oo_.y_simul(iyp,it_-1) ; oo_.y_simul(:,it_) ; oo_.y_simul(iyf,it_+1)] ;
0042 [d1,M_.jacobia] = feval([M_.fname <span class="string">'_dynamic'</span>],z,oo_.exo_simul);
0043 M_.jacobia = [M_.jacobia(:,iz) -d1] ;
0044 ic = [1:ny] ;
0045 icp = iyp ;
0046 c (ic,:) = M_.jacobia(:,is)\M_.jacobia(:,isf1) ;
0047 <span class="keyword">for</span> it_ = it_init+1:options_.periods+1
0048 z = [oo_.y_simul(iyp,it_-1) ; oo_.y_simul(:,it_) ; oo_.y_simul(iyf,it_+1)] ;
0049 [d1,M_.jacobia] = feval([M_.fname <span class="string">'_dynamic'</span>],z,oo_.exo_simul);
0050 M_.jacobia = [M_.jacobia(:,iz) -d1] ;
0051 M_.jacobia(:,[isf nrs]) = M_.jacobia(:,[isf nrs])-M_.jacobia(:,isp)*c(icp,:) ;
0052 ic = ic + ny ;
0053 icp = icp + ny ;
0054 c (ic,:) = M_.jacobia(:,is)\M_.jacobia(:,isf1) ;
0055 <span class="keyword">end</span>
0056
0057 <span class="keyword">if</span> ct_ == 1
0058 s = eye(ny) ;
0059 s(:,isf) = s(:,isf)+c(ic,1:nyf) ;
0060 ic = ic + ny ;
0061 c(ic,nrc) = s\c(:,nrc) ;
0062 c = <a href="bksup1.html" class="code" title="function d = bksup1(ny,jcf)">bksup1</a>(ny,nrc) ;
0063 c = reshape(c,ny,options_.periods+1) ;
0064 oo_.y_simul(:,it_init:options_.periods+2) = oo_.y_simul(:,it_init:options_.periods+2)+options_.slowc*c ;
0065 <span class="keyword">else</span>
0066 c = <a href="bksup1.html" class="code" title="function d = bksup1(ny,jcf)">bksup1</a>(ny,nrc) ;
0067 c = reshape(c,ny,options_.periods) ;
0068 oo_.y_simul(:,it_init:options_.periods+1) = oo_.y_simul(:,it_init:options_.periods+1)+options_.slowc*c ;
0069 <span class="keyword">end</span>
0070
0071 err = max(max(abs(c./options_.scalv')));
0072 disp([num2str(iter) <span class="string">' - err = '</span> num2str(err)]) ;
0073 disp([<span class="string">' Time of iteration :'</span> num2str(etime(clock,h2))]) ;
0074
0075 <span class="keyword">if</span> err &lt; options_.dynatol
0076 stop = 1 ;
0077 fprintf(<span class="string">'\n'</span>) ;
0078 disp([<span class="string">' Total time of simulation :'</span> num2str(etime(clock,h1))]) ;
0079 fprintf(<span class="string">'\n'</span>) ;
0080 disp([<span class="string">' Convergency obtained.'</span>]) ;
0081 fprintf(<span class="string">'\n'</span>) ;
0082 <span class="keyword">break</span>
0083 <span class="keyword">end</span>
0084 <span class="keyword">end</span>
0085
0086 <span class="keyword">if</span> ~ stop
0087 fprintf(<span class="string">'\n'</span>) ;
0088 disp([<span class="string">' Total time of simulation :'</span> num2str(etime(clock,h1))]) ;
0089 fprintf(<span class="string">'\n'</span>) ;
0090 disp([<span class="string">'WARNING : maximum number of iterations is reached (modify options_.maxit).'</span>]) ;
0091 fprintf(<span class="string">'\n'</span>) ;
0092 <span class="keyword">end</span>
0093 disp ([<span class="string">'-----------------------------------------------------'</span>]) ;
0094 <span class="keyword">return</span> ;
0095
0096 <span class="comment">% 08/24/01 MJ added start_simul</span></pre></div>
<hr><address>Generated on Fri 16-Jun-2006 09:09:06 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address>
</body>
</html>