Bayesian Filtering Library Generated from SVN r
|
00001 // $Id: nonlinearanalyticconditionalgaussian_ginac.h 29830 2009-01-14 15:10:41Z kgadeyne $ 00002 // Copyright (C) 2003 Klaas Gadeyne <first dot last at gmail dot com> 00003 // Wim Meeussen <wim dot meeussen at mech dot kuleuven dot ac dot be> 00004 // 00005 // This program is free software; you can redistribute it and/or modify 00006 // it under the terms of the GNU Lesser General Public License as published by 00007 // the Free Software Foundation; either version 2.1 of the License, or 00008 // (at your option) any later version. 00009 // 00010 // This program is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 // GNU Lesser General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public License 00016 // along with this program; if not, write to the Free Software 00017 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 // 00019 00020 #ifndef __NONLINEAR_SYSTEM_CONDITIONAL_GAUSSIAN_GINAC__ 00021 #define __NONLINEAR_SYSTEM_CONDITIONAL_GAUSSIAN_GINAC__ 00022 00023 #include "analyticconditionalgaussian_additivenoise.h" 00024 #include <ginac/ginac.h> 00025 #include <iostream> 00026 00027 namespace BFL 00028 { 00030 00048 class NonLinearAnalyticConditionalGaussian_Ginac : public AnalyticConditionalGaussianAdditiveNoise 00049 { 00050 public: 00052 00060 NonLinearAnalyticConditionalGaussian_Ginac( const GiNaC::matrix& func, 00061 const vector<GiNaC::symbol>& u, 00062 const vector<GiNaC::symbol>& x, 00063 const Gaussian& additiveNoise, 00064 const vector<GiNaC::symbol>& cond ); 00065 00067 00075 NonLinearAnalyticConditionalGaussian_Ginac( const GiNaC::matrix& func, 00076 const vector<GiNaC::symbol>& u, 00077 const vector<GiNaC::symbol>& x, 00078 const Gaussian& additiveNoise ); 00080 NonLinearAnalyticConditionalGaussian_Ginac( const NonLinearAnalyticConditionalGaussian_Ginac& g); 00081 00083 virtual ~NonLinearAnalyticConditionalGaussian_Ginac(); 00084 00086 friend std::ostream& operator<< (std::ostream& os, NonLinearAnalyticConditionalGaussian_Ginac& p); 00087 00089 GiNaC::matrix FunctionGet(); 00090 00092 vector<GiNaC::symbol> InputGet(); 00093 00095 vector<GiNaC::symbol> StateGet(); 00096 00098 vector<GiNaC::symbol> ConditionalGet(); 00099 00100 // redefinition of virtual functions 00101 virtual MatrixWrapper::ColumnVector ExpectedValueGet() const; 00102 virtual MatrixWrapper::SymmetricMatrix CovarianceGet() const; 00103 00104 // Redefinition of dfGet 00109 virtual MatrixWrapper::Matrix dfGet(unsigned int i) const; 00110 00111 00112 private: 00113 GiNaC::matrix func_sym; 00114 vector<GiNaC::symbol> cond_sym, u_sym, x_sym; 00115 unsigned int cond_size, u_size, x_size, func_size; 00116 vector<GiNaC::ex> dfunc_dcond, dfunc_dx; 00117 00118 00119 }; 00120 00121 } // End namespace 00122 00123 #endif // __NONLINEAR_SYSTEM_CONDITIONAL_GAUSSIAN_GINAC__