142 lines
6.9 KiB
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 © 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> > <a href="index.html">.</a> > sim1.m</div>
|
||
|
|
||
|
<!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td>
|
||
|
<td align="right"><a href="index.html">Index for . <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,:)>0) ;
|
||
|
0016 iyp = find(lead_lag_incidence(1,:)>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 < 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> © 2003</address>
|
||
|
</body>
|
||
|
</html>
|