00001 #include "MTTensor.h"
00002 #include <iostream>
00003 #include <complex>
00004
00005 #include "Jacknife.h"
00006 #include "Bootstrap.h"
00007 #include "MTSampleGenerator.h"
00008 #include "ArraySampleGenerator.h"
00009 using namespace std;
00010 int main()
00011 {
00012 const complex<double> xx(0.0,0.0);
00013 const complex<double> xy(0.0555,0.0402);
00014 const complex<double> yx(-0.0736,-0.0695);
00015 const complex<double> yy(-0.0,-0.0);
00016 MTTensor TestData(xx,xy,yx,yy);
00017
00018 const double noiselevel = 0.1;
00019 TestData.SetErrors(abs(xx)*noiselevel,abs(xy)*noiselevel,abs(yx)*noiselevel,abs(yy)*noiselevel);
00020 const int nsamples = 1000;
00021 MTSampleGenerator Generator(&MTTensor::GetRhoxy,TestData);
00022 gplib::rvec array(nsamples);
00023
00024 std::generate_n(array.begin(),nsamples,Generator);
00025
00026 ArraySampleGenerator ArrGen(array);
00027 Jacknife<MTSampleGenerator> JackEst(nsamples,Generator);
00028 Bootstrap<ArraySampleGenerator> ArrayEst(nsamples,ArrGen);
00029 Bootstrap<MTSampleGenerator> BootEst(nsamples,Generator);
00030
00031 double jackmean, jackvar, bootmean, bootvar, arrmean, arrvar;
00032 JackEst.CalcErrors(jackmean,jackvar);
00033 BootEst.CalcErrors(bootmean,bootvar);
00034 ArrayEst.CalcErrors(arrmean,arrvar);
00035 cout << "Jm: " << jackmean << " Jv: " << jackvar << endl;
00036 cout <<" Bm: " << bootmean << " Bv: " << bootvar << std::endl;
00037 cout <<" Am: " << arrmean << " Av: " << arrvar << std::endl;
00038
00039 }