Fixing of the testModelSolution.cc
parent
724229a5c7
commit
f430e53e01
|
@ -15,48 +15,48 @@
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
* along with Dynare. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Test for ModelSolution
|
// Test for ModelSolution
|
||||||
// Uses fs2000k2.mod and its ..._dynamic.mexw32
|
// Uses fs2000k2.mod and its ..._dynamic.mexw32
|
||||||
|
|
||||||
#include "ModelSolution.hh"
|
#include "ModelSolution.hh"
|
||||||
|
|
||||||
int
|
int
|
||||||
main (int argc, char** argv)
|
main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
std::string modName("fs2000k2_dynamic.mexw32");
|
std::string modName("fs2000k2_dynamic.mexw32");
|
||||||
const int npar = 7; //(int)mxGetM(mxFldp);
|
const int npar = 7; //(int)mxGetM(mxFldp);
|
||||||
const size_t n_endo=15, n_exo=2;
|
const size_t n_endo=15, n_exo=2;
|
||||||
std::vector<size_t> zeta_fwrd_arg;
|
std::vector<size_t> zeta_fwrd_arg;
|
||||||
std::vector<size_t> zeta_back_arg;
|
std::vector<size_t> zeta_back_arg;
|
||||||
std::vector<size_t> zeta_mixed_arg;
|
std::vector<size_t> zeta_mixed_arg;
|
||||||
std::vector<size_t> zeta_static_arg;
|
std::vector<size_t> zeta_static_arg;
|
||||||
//std::vector<size_t>
|
//std::vector<size_t>
|
||||||
double qz_criterium=1.0e-9;
|
double qz_criterium=1.0+1.0e-9;
|
||||||
Vector steadyState(n_endo), deepParams(npar);
|
Vector steadyState(n_endo), deepParams(npar);
|
||||||
|
|
||||||
double dYSparams [] = { // 27 mxGetData(mxFldp);
|
double dYSparams [] = { // 27 mxGetData(mxFldp);
|
||||||
1.0110, 2.2582, 0.4477, 1.0000,
|
1.0110, 2.2582, 0.4477, 1.0000,
|
||||||
4.5959, 1.0212, 5.8012, 0.8494,
|
4.5959, 1.0212, 5.8012, 0.8494,
|
||||||
0.1872, 0.8604, 1.0030, 1.0080,
|
0.1872, 0.8604, 1.0030, 1.0080,
|
||||||
0.5808, 1.0030, 2.2093 //2.2582, 0.4477
|
0.5808, 1.0030, 2.2093 //2.2582, 0.4477
|
||||||
};
|
};
|
||||||
double vcov[] = { //(double *) mxGetData(mxFldp);
|
double vcov[] = { //(double *) mxGetData(mxFldp);
|
||||||
0.1960e-3, 0.0,
|
0.1960e-3, 0.0,
|
||||||
0.0, 0.0250e-3
|
0.0, 0.0250e-3
|
||||||
};
|
};
|
||||||
int nVCVpar = 2; //(int)mxGetN(mxFldp);
|
int nVCVpar = 2; //(int)mxGetN(mxFldp);
|
||||||
MatrixView vCovVW(vcov,nVCVpar,nVCVpar,nVCVpar);
|
MatrixView vCovVW(vcov,nVCVpar,nVCVpar,nVCVpar);
|
||||||
Matrix vCov (nVCVpar, nVCVpar);
|
Matrix vCov (nVCVpar, nVCVpar);
|
||||||
vCov = vCovVW;
|
vCov = vCovVW;
|
||||||
|
|
||||||
Matrix ll_incidence(3,n_endo); // leads and lags indices
|
Matrix ll_incidence(3,n_endo); // leads and lags indices
|
||||||
double inllincidence[]={
|
double inllincidence[]={
|
||||||
// 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0,
|
// 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0,
|
||||||
// 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
// 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
||||||
// 0, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22
|
// 0, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22
|
||||||
1, 5, 0,
|
1, 5, 0,
|
||||||
2, 6, 20,
|
2, 6, 20,
|
||||||
0, 7, 21,
|
0, 7, 21,
|
||||||
|
@ -72,57 +72,58 @@ main (int argc, char** argv)
|
||||||
4, 17, 0,
|
4, 17, 0,
|
||||||
0, 18, 0,
|
0, 18, 0,
|
||||||
0, 19, 22,
|
0, 19, 22,
|
||||||
};
|
};
|
||||||
MatrixView llincidence(inllincidence, 3, n_endo,3); // leads and lags indices
|
MatrixView llincidence(inllincidence, 3, n_endo,3); // leads and lags indices
|
||||||
ll_incidence= llincidence;
|
ll_incidence= llincidence;
|
||||||
|
|
||||||
double dparams[] = { 0.3300,
|
double dparams[] = { 0.3300,
|
||||||
0.9900,
|
0.9900,
|
||||||
0.0030,
|
0.0030,
|
||||||
1.0110,
|
1.0110,
|
||||||
0.7000,
|
0.7000,
|
||||||
0.7870,
|
0.7870,
|
||||||
0.0200};
|
0.0200};
|
||||||
|
|
||||||
VectorView modParamsVW (dparams, npar,1);
|
VectorView modParamsVW (dparams, npar,1);
|
||||||
deepParams=modParamsVW;
|
deepParams=modParamsVW;
|
||||||
VectorView steadyStateVW(dYSparams,n_endo,1);
|
VectorView steadyStateVW(dYSparams,n_endo,1);
|
||||||
steadyState=steadyStateVW;
|
steadyState=steadyStateVW;
|
||||||
//std::cout << "VectorView deepParamsVW: " << std::endl << modParamsVW << std::endl;
|
//std::cout << "VectorView deepParamsVW: " << std::endl << modParamsVW << std::endl;
|
||||||
std::cout << "Vector deepParams: " << std::endl << deepParams << std::endl;
|
std::cout << "Vector deepParams: " << std::endl << deepParams << std::endl;
|
||||||
std::cout << "Matrix vCov: " << std::endl << vCov << std::endl;
|
std::cout << "Matrix vCov: " << std::endl << vCov << std::endl;
|
||||||
std::cout << "MatrixVw llincidence: " << std::endl << llincidence << std::endl;
|
std::cout << "MatrixVw llincidence: " << std::endl << llincidence << std::endl;
|
||||||
std::cout << "Matrix ll_incidence: " << std::endl << ll_incidence << std::endl;
|
std::cout << "Matrix ll_incidence: " << std::endl << ll_incidence << std::endl;
|
||||||
std::cout << "Vector steadyState: " << std::endl << steadyState << std::endl;
|
std::cout << "Vector steadyState: " << std::endl << steadyState << std::endl;
|
||||||
|
|
||||||
//order_var = [ stat_var(:); pred_var(:); both_var(:); fwrd_var(:)];
|
// Set zeta vectors [0:(n-1)] from Matlab indices [1:n]
|
||||||
size_t statc[]={ 4, 5, 6, 8, 9, 10, 11, 12, 14};
|
//order_var = [ stat_var(:); pred_var(:); both_var(:); fwrd_var(:)];
|
||||||
size_t back[]={1,7,13};
|
size_t statc[]={ 4, 5, 6, 8, 9, 10, 11, 12, 14};
|
||||||
size_t both[]={2};
|
size_t back[]={1,7,13};
|
||||||
size_t fwd[]={ 3,15};
|
size_t both[]={2};
|
||||||
for (int i=0;i<9;++i)
|
size_t fwd[]={ 3,15};
|
||||||
zeta_static_arg.push_back(statc[i]);
|
for (int i=0;i<9;++i)
|
||||||
for (int i=0;i<3;++i)
|
zeta_static_arg.push_back(statc[i]-1);
|
||||||
zeta_back_arg.push_back(back[i]);
|
for (int i=0;i<3;++i)
|
||||||
for (int i=0;i<1;++i)
|
zeta_back_arg.push_back(back[i]-1);
|
||||||
zeta_mixed_arg.push_back(both[i]);
|
for (int i=0;i<1;++i)
|
||||||
for (int i=0;i<2;++i)
|
zeta_mixed_arg.push_back(both[i]-1);
|
||||||
zeta_fwrd_arg.push_back(fwd[i]);
|
for (int i=0;i<2;++i)
|
||||||
|
zeta_fwrd_arg.push_back(fwd[i]-1);
|
||||||
Matrix ghx(n_endo, zeta_back_arg.size() + zeta_mixed_arg.size());
|
|
||||||
Matrix ghu(n_endo,n_exo);
|
Matrix ghx(n_endo, zeta_back_arg.size() + zeta_mixed_arg.size());
|
||||||
|
Matrix ghu(n_endo,n_exo);
|
||||||
// exit(0);
|
|
||||||
ModelSolution modelSolution( modName, n_endo, n_exo
|
// exit(0);
|
||||||
, zeta_fwrd_arg, zeta_back_arg, zeta_mixed_arg, zeta_static_arg, ll_incidence, qz_criterium);
|
ModelSolution modelSolution( modName, n_endo, n_exo
|
||||||
|
, zeta_fwrd_arg, zeta_back_arg, zeta_mixed_arg, zeta_static_arg, ll_incidence, qz_criterium);
|
||||||
// exit(0);
|
|
||||||
|
// exit(0);
|
||||||
modelSolution.compute(steadyState, deepParams, ghx, ghu);
|
|
||||||
|
modelSolution.compute(steadyState, deepParams, ghx, ghu);
|
||||||
std::cout << "Matrix ghx: " << std::endl << ghx << std::endl;
|
|
||||||
std::cout << "Matrix ghu: " << std::endl << ghu << std::endl;
|
std::cout << "Matrix ghx: " << std::endl << ghx << std::endl;
|
||||||
|
std::cout << "Matrix ghu: " << std::endl << ghu << std::endl;
|
||||||
|
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue