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