24 #ifndef _PARAMETRIZEDFUNCTION_HPP_ 25 #define _PARAMETRIZEDFUNCTION_HPP_ 32 #include "boost/numeric/ublas/vector.hpp" 33 #if (BOOST_VERSION/100) >= 1064 34 #include "boost/serialization/array_wrapper.hpp" 36 #include "boost/numeric/ublas/matrix.hpp" 37 #include "boost/numeric/ublas/io.hpp" 38 #include "boost/numeric/ublas/matrix_proxy.hpp" 49 template<
typename value_type>
54 virtual value_type
operator()(
double x,
const ublas::vector<double>& p)
const = 0;
55 virtual ublas::vector<value_type>
dp(
double x,
const ublas::vector<double>& p)
const = 0;
56 virtual ublas::matrix<value_type>
dp2(
double x,
const ublas::vector<double>& p)
const = 0;
63 template<
typename value_type>
69 typedef std::vector<Datum>
Data;
80 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
81 result +=
norm(std::complex<double>(f_(it->x,p) - it->y));
85 ublas::vector<double>
dp(
const ublas::vector<double>& p)
const 89 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
91 std::complex<double> diffconj =
conj(std::complex<double>(f_(it->x,p) - it->y));
92 result += 2 * real(diffconj*f_.dp(it->x,p));
97 ublas::matrix<double>
dp2(
const ublas::vector<double>& p)
const 101 for (
typename Data::const_iterator it=
data_.begin(); it!=
data_.end(); ++it)
103 std::complex<double> diffconj =
conj(std::complex<double>(f_(it->x, p) - it->y));
104 ublas::vector<value_type>
dp = f_.dp(it->x,p);
105 ublas::matrix<value_type>
dp2 = f_.dp2(it->x,p);
106 result += 2 * real(diffconj*dp2 + outer_prod(
conj(dp),dp));
121 #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()