using namespace std;
vector<double> model_function (const vector<double> x, const shared_ptr<void> modelInput, std::vector<double> ¶meter)
{
vector<double> model(x.size(), 0.);
for (size_t i=0; i<x.size(); ++i)
model[i] = parameter[0]*x[i]+parameter[1]+parameter[2]*cosm.
Omega_matter();
parameter[3] = parameter[0]+parameter[1]+parameter[2];
return model;
}
try {
const string dir_input = "../input/";
const string dir_output = "../output/";
const string file_data = "data.dat";
const string file_output_start = "model_starting_values.dat";
const string file_output_bestfit = "model_bestfit.dat";
shared_ptr<cbl::data::Data> ptr_data = make_shared<cbl::data::Data1D>(data);
const int nparameters = 4;
const vector<string> parNames = {"A", "B", "C", "D"};
double valA = 1., valB = 1., valC = 1.;
auto ptr_modelInput = make_shared<cbl::cosmology::Cosmology>(cosmology);
auto ptr_model = make_shared<cbl::statistics::Model1D>(model);
const vector<double> start = {valA, valB};
likelihood.parameters()->fix(2, valC);
likelihood.write_model(dir_output, file_output_start, start);
const double minA = -10., maxA = 10.;
const double minB = -10., maxB = 10.;
const vector<vector<double>> limits = { {minA, maxA} , {minB, maxB} };
likelihood.maximize(start, limits);
likelihood.write_model_at_bestfit(dir_output, file_output_bestfit);
const vector<shared_ptr<cbl::statistics::PriorDistribution>> prior_distributions = {prior_A, prior_B, prior_C};
const int nwalkers = 10;
const int chain_size = 5000;
posterior.initialize_chains(chain_size, nwalkers, 1.e-5, {valA, valB});
posterior.sample_stretch_move(2);
cout << endl;
for (size_t i=0; i<posterior.parameters()->nparameters(); ++i)
cout << setprecision(4) << "Posterior median of " << posterior.parameters()->name(i) << " = " << posterior.parameters()->bestfit_value(i) << endl;
const int burn_in = 0;
const int thin = 1;
posterior.show_results(burn_in, thin);
posterior.write_results("../output/", "chains_linear_relation", burn_in, thin);
posterior.write_model_from_chain("../output/", "model_from_chain.dat", {}, {}, burn_in, thin);
}
return 0;
}
int main()
main function to create the logo of the CosmoBolognaLib
double Omega_matter() const
get the private member Cosmology::m_Omega_matter
const char * what() const noexcept override
the error description
The class PriorDistribution.
@ _Constant_
Constant function.
@ _Uniform_
Identity function.
@ _Gaussian_Error_
Gaussian likelihood error.
@ _Derived_
derived parameter