00001 #ifndef __HERMITE_FUNCTION_EXPANSION_H__
00002 #define __HERMITE_FUNCTION_EXPANSION_H__
00003
00004 #include "parametermap.h"
00005 #include "constants.h"
00006 #include "misc.h"
00007 #include "orthogfunc_expansion1d.h"
00008 #include <cmath>
00009
00010 double hermite_polynomial( int i, double x );
00011
00012 class CHermiteFunctionExpansion1d: public COrthogonalFuncExpansion1d {
00013 public:
00014
00015
00016 CHermiteFunctionExpansion1d(int _l=0, int _m=0, bool r=true, int N=1, double _xmin=0., double _xmax=1.0, double _xscale=5.0):
00017 COrthogonalFuncExpansion1d( _l, _m, r, N, _xmin, _xmax ), xscale(_xscale){}
00018 CHermiteFunctionExpansion1d(const CHermiteFunctionExpansion1d& h):
00019 COrthogonalFuncExpansion1d( h ), xscale(h.xscale){}
00020
00021
00022 ~CHermiteFunctionExpansion1d( void ){}
00023
00024
00025 bool Read(const parameterMap& m);
00026 bool Write(parameterMap& m);
00027
00028
00029 double orthogFunctionValue(double x, int i, int jderiv=0) const;
00030 double weightFunction(double x, int jderiv=0) const;
00031 double normalization(int j) const{return sqrt(PI)*Misc::cgc_factorial(j)*pow(2.0,j);}
00032 double xScale(void) const{return xscale;}
00033 double xShift(void) const{return 0.0;}
00034
00035
00036 void CopyState(const CHermiteFunctionExpansion1d& a)
00037 {COrthogonalFuncExpansion1d::CopyState(a);}
00038
00039
00040 double getLeftSupport(int i) const;
00041 double getRightSupport(int i) const;
00042
00043
00044 double xscale;
00045
00046 };
00047
00048 #endif