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"
39namespace ublas = boost::numeric::ublas;
49template<
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;
63template<
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));
KernelTraitsBase< Kernel >::space_type::abscissa_type x
const ParametrizedFunction< value_type > & f_
data::SampleDatum< double, value_type > Datum
int parameterCount() const
ErrorFunction(const ParametrizedFunction< value_type > &f, const Data &data)
double operator()(const ublas::vector< double > &p) const
ublas::vector< double > dp(const ublas::vector< double > &p) const
ublas::matrix< double > dp2(const ublas::vector< double > &p) const
std::vector< Datum > Data
virtual value_type operator()(double x, const ublas::vector< double > &p) const =0
virtual ublas::matrix< value_type > dp2(double x, const ublas::vector< double > &p) const =0
virtual ~ParametrizedFunction()
virtual unsigned int parameterCount() const =0
virtual ublas::vector< value_type > dp(double x, const ublas::vector< double > &p) const =0