00001 #define __cplusplus__
00002 #ifndef __LAPDMRF__
00003 #define __LAPDMRF__
00004
00005 #include<iostream>
00006 #include<istream>
00007 #include<fstream>
00008 #include<string>
00009 #include<vector>
00010 #include<sstream>
00011 #include <cmath>
00012
00013 #include <DHMRF.hpp>
00014 #include <Spatial_Data.hpp>
00015 #include <Laplace.hpp>
00016
00017 using namespace std;
00018
00019
00028 class Laplace_DMRF : public DHMRF{
00029
00030 vector<Laplace *> Laplacians;
00031
00032
00033 public :
00034
00035
00037 Laplace_DMRF();
00039 Laplace_DMRF(vector<uint> subk, uint dim, Neighborhood_System *nhs );
00041 Laplace_DMRF(MRF *y, Conditional_MRF *z, vector<Laplace *> const & laplacians);
00043 ~Laplace_DMRF();
00044
00046 void DeleteAll();
00047
00048
00050 uint Get_D();
00051
00053 void Simulate(Data *dat, uint gibbs_sampler_nbiter);
00054
00056 void Simulate(Data *dat, double grad_tol);
00057
00058 uint Degrees_Of_Freedom();
00059
00061 virtual double Density(vector<double> const & X, uint k);
00063 virtual double Density(uint i, vector<double> const & xi, uint l);
00065 virtual double Density(uint i, vector<double> const & xi, vector<uint> const & z, uint l);
00066
00067
00069
00071
00072
00074 void Info();
00075
00077 void NREM_E(Spatial_Data *spatd, vector<double> & tip);
00079 void NREM_M(Spatial_Data *spatd, vector<double> const & tip);
00080
00081
00082 };
00083
00084
00085 #endif