24 #ifndef _PARAMETRIZEDFUNCTION_HPP_ 25 #define _PARAMETRIZEDFUNCTION_HPP_ 32 #include "boost/numeric/ublas/vector.hpp" 33 #include "boost/numeric/ublas/matrix.hpp" 34 #include "boost/numeric/ublas/io.hpp" 35 #include "boost/numeric/ublas/matrix_proxy.hpp" 46 template<
typename value_type>
51 virtual value_type
operator()(
double x,
const ublas::vector<double>& p)
const = 0;
52 virtual ublas::vector<value_type>
dp(
double x,
const ublas::vector<double>& p)
const = 0;
53 virtual ublas::matrix<value_type>
dp2(
double x,
const ublas::vector<double>& p)
const = 0;
60 template<
typename value_type>
66 typedef std::vector<Datum>
Data;
77 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
78 result +=
norm(std::complex<double>(f_(it->x,p) - it->y));
82 ublas::vector<double>
dp(
const ublas::vector<double>& p)
const 86 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
88 std::complex<double> diffconj =
conj(std::complex<double>(f_(it->x,p) - it->y));
89 result += 2 * real(diffconj*f_.dp(it->x,p));
94 ublas::matrix<double>
dp2(
const ublas::vector<double>& p)
const 98 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
100 std::complex<double> diffconj =
conj(std::complex<double>(f_(it->x, p) - it->y));
101 ublas::vector<value_type>
dp = f_.dp(it->x,p);
102 ublas::matrix<value_type>
dp2 = f_.dp2(it->x,p);
103 result += 2 * real(diffconj*dp2 + outer_prod(
conj(dp),dp));
118 #endif // _PARAMETRIZEDFUNCTION_HPP_
ublas::vector< double > dp(const ublas::vector< double > &p) const
double operator()(const ublas::vector< double > &p) const
ublas::matrix< double > dp2(const ublas::vector< double > &p) const
virtual value_type operator()(double x, const ublas::vector< double > &p) const =0
virtual ublas::vector< value_type > dp(double x, const ublas::vector< double > &p) const =0
virtual unsigned int parameterCount() const =0
int parameterCount() const
std::vector< Datum > Data
data::SampleDatum< double, value_type > Datum
ErrorFunction(const ParametrizedFunction< value_type > &f, const Data &data)
virtual ublas::matrix< value_type > dp2(double x, const ublas::vector< double > &p) const =0
KernelTraitsBase< Kernel >::space_type::abscissa_type x
const ParametrizedFunction< value_type > & f_
virtual ~ParametrizedFunction()