00001 #define __cplusplus__
00002 #ifndef __LAPLACEMIX__
00003 #define __LAPLACEMIX__
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 <IID_Mixture.hpp>
00014 #include <Laplace.hpp>
00015
00016 using namespace std;
00017
00027 class Laplace_Mix : public IID_Mixture{
00028
00030 vector< Laplace *> Laplacians;
00031
00032 public :
00033
00035 Laplace_Mix();
00036
00038 Laplace_Mix(uint k, uint dim);
00039
00041 Laplace_Mix(uint k, vector< Laplace *> const & lapl );
00042
00044 ~Laplace_Mix();
00045
00046
00048 void DeleteAll();
00049
00050
00052 uint Get_D();
00053
00054 uint Degrees_Of_Freedom();
00055
00056
00057 void Init(Spatial_Data *spatd);
00058
00060 void Simulate(uint N, Data *dat);
00061
00063 double Density(vector<double> const & X, uint k);
00064
00065
00066
00068 void Update_Laplacians(Spatial_Data *spatd, vector<double> const & tik);
00069
00070
00071
00072
00074
00076
00077
00078
00080 void EM_E(Spatial_Data *spatd, vector<double> & tik);
00082 void EM_M(Spatial_Data *spatd, vector<double> const & tik);
00083
00084
00086 void NEM_E(Spatial_Data *spatd, vector<double> const & beta, vector<double> & tik);
00088 void NEM_M(Spatial_Data *spatd, vector<double> const & tik);
00089
00090 void Info();
00091
00092 };
00093
00094 #endif