50 if (
distance(__begin, __end) >= NUMBER_OF_PARAMETERS) {
55 V.resize(NUMBER_OF_PARAMETERS);
60 this->xmin = i->getX(); advance(i,
distance(__begin, __end) - 1);
61 this->xmax = i->getX();
63 for (i = __begin; i != __end; ++i) {
65 const double z = this->getX(i->getX());
67 for (
size_t n = 0; n <= N; ++n) {
68 h[n] = legendre(n, z);
71 for (
size_t row = 0; row <= N; ++row) {
73 V(row, row) += h[row] * h[row];
74 Y[row] += h[row] * i->getY();
76 for (
size_t col = 0; col != row; ++col) {
77 V(row, col) += h[row] * h[col];
82 for (
size_t row = 0; row <= N; ++row) {
83 for (
size_t col = 0; col != row; ++col) {
84 V(col, row) = V(row, col);
90 for (
size_t row = 0; row <= N; ++row) {
94 for (
size_t col = 0; col <= N; ++col) {
95 (*this)[row] += V(row, col) * Y[col];
100 throw JValueOutOfRange(
"JEstimator<JLegendre>::JEstimator(): Not enough data points.");