Jpp  15.0.1-rc.2-highQE
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JHermiteSpline.hh
Go to the documentation of this file.
1 #ifndef __JTOOLS__JHERMITESPLINE__
2 #define __JTOOLS__JHERMITESPLINE__
3 
4 #include <utility>
5 #include <cmath>
6 
7 #include "JMath/JZero.hh"
8 #include "JLang/JException.hh"
9 #include "JLang/JClass.hh"
10 #include "JTools/JFunctional.hh"
11 #include "JTools/JDistance.hh"
12 #include "JTools/JResult.hh"
13 #include "JTools/JMapCollection.hh"
14 
15 
16 /**
17  * \author mdejong
18  */
19 
20 namespace JTOOLS {}
21 namespace JPP { using namespace JTOOLS; }
22 
23 namespace JTOOLS {
24 
25  using JLANG::JNoValue;
29 
30 
31  /**
32  * Template base class spline interpolations.
33  *
34  * This class implements the JFunctional interface.
35  *
36  * Note that the data structure of the elements in the collection should have the additional methods:
37  * <pre>
38  * ordinate_type getU() const;
39  * void setU(ordinate_type u);
40  * </pre>
41  * to get and set the derivatives, respectively.
42  *
43  * Note that -by default- the compilation is for a monotonous interpolation.
44  */
45  template<class JElement_t, template<class, class> class JCollection_t, class JDistance_t>
47  public JCollection_t<JElement_t, JDistance_t>,
48  public virtual JFunctional<>
49  {
50  public:
51 
52  typedef JCollection_t<JElement_t, JDistance_t> collection_type;
53 
54  typedef typename collection_type::abscissa_type abscissa_type;
55  typedef typename collection_type::ordinate_type ordinate_type;
56  typedef typename collection_type::value_type value_type;
57  typedef typename collection_type::distance_type distance_type;
58 
59  typedef typename collection_type::const_iterator const_iterator;
60  typedef typename collection_type::const_reverse_iterator const_reverse_iterator;
61  typedef typename collection_type::iterator iterator;
62  typedef typename collection_type::reverse_iterator reverse_iterator;
63 
65 
66 
67  /**
68  * Determination of derivatives.
69  *
70  * \param monotone monotone
71  */
72  void compile(const bool monotone)
73  {
74  using namespace std;
75 
76  if (this->size() >= 2u) {
77 
78  {
79  iterator j = this->begin(), i = j++;
80 
81  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
82  }
83 
84  {
85  reverse_iterator j = this->rbegin(), i = j++;
86 
87  i->setU((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()));
88  }
89 
90  for (iterator k = this->begin(), i = k++, j = k++; k != this->end(); ++i, ++j, ++k) {
91  j->setU(0.5 * ((j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX()) +
92  (k->getY() - j->getY()) / this->getDistance(j->getX(), k->getX())));
93  }
94 
95  if (monotone) {
96 
97  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
98  if (i->getY() == j->getY()) {
99  j->setU(JMATH::zero);
100  }
101  }
102 
103  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
104 
105  const ordinate_type u = (j->getY() - i->getY()) / this->getDistance(i->getX(), j->getX());
106  const ordinate_type w = (i->getU()*i->getU() + j->getU()*j->getU());
107 
108  if (w > 9.0*u*u) {
109 
110  const ordinate_type v = 3.0*u/sqrt(w);
111 
112  i->setU(v*i->getU());
113  j->setU(v*j->getU());
114  }
115  }
116  }
117  }
118  }
119 
120 
121  protected:
122 
123  static abscissa_type h00 (abscissa_type t) { return (1.0 + 2*t) * (1.0 - t) * (1.0 - t); }
124  static abscissa_type h10 (abscissa_type t) { return t * (1.0 - t) * (1.0 - t); }
125  static abscissa_type h01 (abscissa_type t) { return t * t * (3.0 - 2*t); }
126  static abscissa_type h11 (abscissa_type t) { return t * t * (t - 1.0); }
127 
128  static abscissa_type h00p(abscissa_type t) { return 6 * t * (t - 1.0); }
129  static abscissa_type h10p(abscissa_type t) { return t * (3*t - 4.0) + 1.0; }
130  static abscissa_type h01p(abscissa_type t) { return 6 * t * (1.0 -t); }
131  static abscissa_type h11p(abscissa_type t) { return t * (3*t - 2.0); }
132 
133  static abscissa_type H00 (abscissa_type t) { return t * (t * t * (0.5*t - 1.0) + 1.0); }
134  static abscissa_type H10 (abscissa_type t) { return t * t * (t * (0.25*t - 2.0/3.0) + 0.5); }
135  static abscissa_type H01 (abscissa_type t) { return t * t * t * (1.0 - 0.5*t); }
136  static abscissa_type H11 (abscissa_type t) { return t * t * t * (0.25*t - 1.0/3.0); }
137 
138 
139  /**
140  * Default constructor.
141  */
143  {}
144 
145 
146  /**
147  * Determination of derivatives.
148  */
149  virtual void do_compile() override
150  {
151  compile(true);
152  }
153  };
154 
155 
156  /**
157  * Template definition for functional collection with spline interpolation.
158  */
159  template<class JElement_t,
160  template<class, class> class JCollection_t,
161  class JResult_t,
162  class JDistance_t>
164 
165 
166  /**
167  * Template specialisation for functional collection with spline interpolation.
168  */
169  template<class JElement_t, template<class, class> class JCollection_t, class JDistance_t>
170  class JHermiteSplineFunction<JElement_t,
171  JCollection_t,
172  typename JResultType<typename JElement_t::ordinate_type>::result_type,
173  JDistance_t> :
174  public JHermiteSplineCollection<JElement_t, JCollection_t, JDistance_t>,
175  public JFunction<typename JElement_t::abscissa_type,
176  typename JResultType<typename JElement_t::ordinate_type>::result_type>
177  {
178  public:
179 
181 
182  typedef typename collection_type::abscissa_type abscissa_type;
183  typedef typename collection_type::ordinate_type ordinate_type;
184  typedef typename collection_type::value_type value_type;
185  typedef typename collection_type::distance_type distance_type;
186 
187  typedef typename collection_type::const_iterator const_iterator;
188  typedef typename collection_type::const_reverse_iterator const_reverse_iterator;
189  typedef typename collection_type::iterator iterator;
190  typedef typename collection_type::reverse_iterator reverse_iterator;
191 
194 
198 
199 
200  /**
201  * Default constructor.
202  */
204  {}
205 
206 
207  /**
208  * Recursive interpolation method implementation.
209  *
210  * \param pX pointer to abscissa values
211  * \return function value
212  */
213  virtual result_type evaluate(const argument_type* pX) const override
214  {
215  if (this->size() <= 1u) {
216  return this->getExceptionHandler().action(JFunctionalException("JHermiteSplineFunction<>::evaluate() not enough data."));
217  }
218 
219  const argument_type x = *pX;
220 
221  const_iterator p = this->lower_bound(x);
222 
223  if ((p == this->begin() && this->getDistance(x, (p++)->getX()) > distance_type::precision) ||
224  (p == this->end() && this->getDistance((--p)->getX(), x) > distance_type::precision)) {
225 
226  return this->getExceptionHandler().action(JValueOutOfRange("JHermiteSplineFunction::evaluate() x out of range."));
227  }
228 
229  const_iterator q = p--;
230 
231  const double dx = this->getDistance(p->getX(), q->getX());
232  const double t = this->getDistance(p->getX(), x) / dx;
233 
234  return h00(t)*p->getY() + h10(t)*p->getU()*dx + h01(t)*q->getY() + h11(t)*q->getU()*dx;
235  }
236 
237  protected:
238 
239  using collection_type::h00;
240  using collection_type::h10;
241  using collection_type::h01;
242  using collection_type::h11;
243  };
244 
245 
246  /**
247  * Template specialisation for spline interpolation method with returning JResultDerivative data structure.
248  */
249  template<class JElement_t, template<class, class> class JCollection_t, class JDistance_t>
250  class JHermiteSplineFunction<JElement_t,
251  JCollection_t,
252  JResultDerivative<typename JResultType<typename JElement_t::ordinate_type>::result_type>,
253  JDistance_t> :
254  public JHermiteSplineCollection<JElement_t, JCollection_t, JDistance_t>,
255  public JFunction<typename JElement_t::abscissa_type,
256  JResultDerivative<typename JResultType<typename JElement_t::ordinate_type>::result_type> >
257  {
258  public:
259 
261 
262  typedef typename collection_type::abscissa_type abscissa_type;
263  typedef typename collection_type::ordinate_type ordinate_type;
264  typedef typename collection_type::value_type value_type;
265  typedef typename collection_type::distance_type distance_type;
266 
267  typedef typename collection_type::const_iterator const_iterator;
268  typedef typename collection_type::const_reverse_iterator const_reverse_iterator;
269  typedef typename collection_type::iterator iterator;
270  typedef typename collection_type::reverse_iterator reverse_iterator;
271 
274 
278 
279 
280  /**
281  * Default constructor.
282  */
284  {}
285 
286 
287  /**
288  * Recursive interpolation method implementation.
289  *
290  * \param pX pointer to abscissa values
291  * \return function value
292  */
293  virtual result_type evaluate(const argument_type* pX) const override
294  {
295  if (this->size() <= 1u) {
296  return this->getExceptionHandler().action(JFunctionalException("JHermiteSplineFunction<>::evaluate() not enough data."));
297  }
298 
299  const argument_type x = *pX;
300 
301  const_iterator p = this->lower_bound(x);
302 
303 
304  if ((p == this->begin() && this->getDistance(x, (p++)->getX()) > distance_type::precision) ||
305  (p == this->end() && this->getDistance((--p)->getX(), x) > distance_type::precision)) {
306 
307  return this->getExceptionHandler().action(JValueOutOfRange("JHermiteSplineFunction::evaluate() x out of range."));
308  }
309 
310  const_iterator q = p--;
311 
312  const double dx = this->getDistance(p->getX(), q->getX());
313  const double t = this->getDistance(p->getX(), x) / dx;
314 
315  result.f = h00 (t)*p->getY() + h10 (t)*p->getU()*dx + h01 (t)*q->getY() + h11 (t)*q->getU()*dx;
316  result.fp = h00p(t)*p->getY()/dx + h10p(t)*p->getU() + h01p(t)*q->getY()/dx + h11p(t)*q->getU();
317 
318  return result;
319  }
320 
321 
322  protected:
323 
324  using collection_type::h00;
325  using collection_type::h10;
326  using collection_type::h01;
327  using collection_type::h11;
328 
329  using collection_type::h00p;
330  using collection_type::h10p;
331  using collection_type::h01p;
332  using collection_type::h11p;
333 
334  private:
336  };
337 
338 
339  /**
340  * Template specialisation for spline interpolation method with returning JResultPDF data structure.
341  *
342  * Note that the data structure of the elements in the collection should have the additional methods:
343  * <pre>
344  * ordinate_type getIntegral() const;
345  * void setIntegral(ordinate_type v);
346  * </pre>
347  * to get and set the integral values, respectively.
348  */
349  template<class JElement_t, template<class, class> class JCollection_t, class JDistance_t>
350  class JHermiteSplineFunction<JElement_t,
351  JCollection_t,
352  JResultPDF<typename JResultType<typename JElement_t::ordinate_type>::result_type>,
353  JDistance_t> :
354  public JHermiteSplineCollection<JElement_t, JCollection_t, JDistance_t>,
355  public JFunction<typename JElement_t::abscissa_type,
356  JResultPDF<typename JResultType<typename JElement_t::ordinate_type>::result_type> >
357  {
358  public:
359 
361 
362  typedef typename collection_type::abscissa_type abscissa_type;
363  typedef typename collection_type::ordinate_type ordinate_type;
364  typedef typename collection_type::value_type value_type;
365  typedef typename collection_type::distance_type distance_type;
366 
367  typedef typename collection_type::const_iterator const_iterator;
368  typedef typename collection_type::const_reverse_iterator const_reverse_iterator;
369  typedef typename collection_type::iterator iterator;
370  typedef typename collection_type::reverse_iterator reverse_iterator;
371 
374 
378 
379 
380  /**
381  * Default constructor.
382  */
384  {}
385 
386 
387  /**
388  * Recursive interpolation method implementation.
389  *
390  * \param pX pointer to abscissa values
391  * \return function value
392  */
393  virtual result_type evaluate(const argument_type* pX) const override
394  {
395  if (this->size() <= 1u) {
396  return this->getExceptionHandler().action(JFunctionalException("JHermiteSplineFunction<>::evaluate() not enough data."));
397  }
398 
399  const argument_type x = *pX;
400 
401  const_iterator p = this->lower_bound(x);
402 
403  if (p == this->begin() && this->getDistance(x, (p++)->getX()) > distance_type::precision) {
404 
405  try {
406 
407  result = this->getExceptionHandler().action(JValueOutOfRange("JHermiteSplineFunction1D<>::operator() x < xmin."));
408 
409  // overwrite integral values
410 
411  result.v = 0;
412  result.V = this->rbegin()->getIntegral();
413 
414  } catch(const JValueOutOfRange& exception) {
415  throw exception;
416  }
417 
418  return result;
419 
420  } else if (p == this->end() && this->getDistance((--p)->getX(), x) > distance_type::precision) {
421 
422  try {
423 
424  result = this->getExceptionHandler().action(JValueOutOfRange("JHermiteSplineFunction1D<>::operator() x > xmax."));
425 
426  // overwrite integral values
427 
428  result.v = this->rbegin()->getIntegral();
429  result.V = this->rbegin()->getIntegral();
430 
431  } catch(const JValueOutOfRange& exception) {
432  throw exception;
433  }
434 
435  return result;
436  }
437 
438  const_iterator q = p--;
439 
440  const double dx = this->getDistance(p->getX(), q->getX());
441  const double t = this->getDistance(p->getX(), x) / dx;
442 
443  result.f = h00 (t)*p->getY() + h10 (t)*p->getU()*dx + h01 (t)*q->getY() + h11 (t)*q->getU()*dx;
444  result.fp = h00p(t)*p->getY()/dx + h10p(t)*p->getU() + h01p(t)*q->getY()/dx + h11p(t)*q->getU();
445  result.v = (p->getIntegral() +
446  (H00 (t)*p->getY() + H10 (t)*p->getU()*dx + H01 (t)*q->getY() + H11 (t)*q->getU()*dx)*dx);
447  result.V = this->rbegin()->getIntegral();
448 
449  return result;
450  }
451 
452 
453  protected:
454 
455  using collection_type::h00;
456  using collection_type::h10;
457  using collection_type::h01;
458  using collection_type::h11;
459 
460  using collection_type::h00p;
461  using collection_type::h10p;
462  using collection_type::h01p;
463  using collection_type::h11p;
464 
465  using collection_type::H00;
466  using collection_type::H10;
467  using collection_type::H01;
468  using collection_type::H11;
469 
470  /**
471  * Determination of derivatives.
472  */
473  virtual void do_compile() override
474  {
475  if (!this->empty()) {
476 
478 
479  this->begin()->setIntegral(JMATH::zero);
480 
481  for (iterator j = this->begin(), i = j++; j != this->end(); ++i, ++j) {
482 
483  const double dx = this->getDistance(i->getX(), j->getX());
484  const ordinate_type y = i->getY() + j->getY();
485  const ordinate_type z = i->getU() - j->getU();
486 
487  const ordinate_type v = dx * 0.50 * y;
488  const ordinate_type w = dx * 1.00 * z*dx/12.0;
489 
490  j->setIntegral(i->getIntegral() + v + w);
491  }
492  }
493  }
494 
495  private:
497  };
498 
499 
500  /**
501  * Template class for spline interpolation in 1D
502  *
503  * This class implements the JFunction1D interface.
504  */
505  template<class JElement_t,
506  template<class, class> class JCollection_t,
507  class JResult_t = typename JElement_t::ordinate_type,
510  public JHermiteSplineFunction<JElement_t, JCollection_t, JResult_t, JDistance_t>,
511  public JFunction1D<typename JElement_t::abscissa_type, JResult_t>
512  {
513  public:
514 
516 
521 
526 
528 
532 
533 
534  /**
535  * Default contructor.
536  */
538  {}
539  };
540 
541 
542  /**
543  * Functional map with spline interpolation.
544  */
545  template<class JKey_t,
546  class JValue_t,
547  template<class, class, class> class JMap_t,
548  class JResult_t,
549  class JDistance_t = JDistance<JKey_t> >
551  public JMap_t<JKey_t, JValue_t, JDistance_t>,
552  public JFunction<JKey_t, JResult_t>
553  {
554  public:
555 
556  typedef JMap_t<JKey_t, JValue_t, JDistance_t> collection_type;
558 
559  typedef typename collection_type::abscissa_type abscissa_type;
560  typedef typename collection_type::ordinate_type ordinate_type;
561  typedef typename collection_type::value_type value_type;
562  typedef typename collection_type::distance_type distance_type;
563 
564  typedef typename collection_type::const_iterator const_iterator;
565  typedef typename collection_type::const_reverse_iterator const_reverse_iterator;
566  typedef typename collection_type::iterator iterator;
567  typedef typename collection_type::reverse_iterator reverse_iterator;
568 
571  typedef typename function_type::JExceptionHandler exceptionhandler_type;
572 
577 
578 
579  /**
580  * Default constructor.
581  */
583  {}
584 
585 
586  /**
587  * Recursive interpolation method implementation.
588  *
589  * \param pX pointer to abscissa values
590  * \return function value
591  */
592  virtual result_type evaluate(const argument_type* pX) const override
593  {
594  const argument_type x = *pX;
595 
596  ++pX; // next argument value
597 
598  const_iterator p = this->begin();
599 
600  for (typename JHermiteSplineFunction1D_t::iterator q = buffer.begin(); q != buffer.end(); ++q, ++p) {
601  q->getY() = JFunction<argument_type, data_type>::getValue(p->getY(), pX);
602  }
603 
604  buffer.compile();
605 
606  return buffer(x);
607  }
608 
609 
610  private:
611  /**
612  * Function compilation.
613  */
614  virtual void do_compile() override
615  {
616  buffer.clear();
617 
618  for (iterator i = this->begin(); i != this->end(); ++i) {
619  buffer.put(i->getX(), data_type());
620  }
621  }
622 
623 
625  };
626 
627 
628  /**
629  * Conversion of data points to integral values.
630  *
631  * The integration includes the use of 2nd derivatives of the data points of the input spline interpolating function.
632  *
633  * \param input collection
634  * \param output mappable collection
635  * \return integral
636  */
637  template<class JElement_t,
638  template<class, class> class JCollection_t,
639  class JResult_t,
640  class JDistance_t>
641  inline typename JElement_t::ordinate_type
643  typename JMappable<JElement_t>::map_type& output)
644  {
645  typedef typename JElement_t::ordinate_type ordinate_type;
647 
648  ordinate_type V(JMATH::zero);
649 
650  if (input.getSize() > 1) {
651 
652  output.put(input.begin()->getX(), V);
653 
654  for (const_iterator j = input.begin(), i = j++; j != input.end(); ++i, ++j) {
655 
656  const double dx = input.getDistance(i->getX(), j->getX());
657  const ordinate_type y = i->getY() + j->getY();
658  const ordinate_type z = i->getU() - j->getU();
659 
660  const ordinate_type v = dx * 0.50 * y;
661  const ordinate_type w = dx * 1.00 * z*dx/12.0;
662 
663  V += v + w;
664 
665  output.put(j->getX(), V);
666  }
667  }
668 
669  return V;
670  }
671 
672 
673  /**
674  * Conversion of data points to integral values.
675  *
676  * The integration directly uses the integral values of the input spline interpolating function.
677  *
678  * \param input collection
679  * \param output mappable collection
680  * \return integral
681  */
682  template<class JElement_t,
683  template<class, class> class JCollection_t,
684  class JDistance_t>
685  inline typename JElement_t::ordinate_type
686  integrate(const JHermiteSplineFunction1D<JElement_t, JCollection_t, JResultPDF<typename JElement_t::ordinate_type>, JDistance_t>& input,
687  typename JMappable<JElement_t>::map_type& output)
688  {
689  typedef typename JElement_t::ordinate_type ordinate_type;
692 
693  if (input.getSize() > 1) {
694 
695  for (const_iterator i = input.begin(); i != input.end(); ++i) {
696  output.put(i->getX(), i->getIntegral());
697  }
698 
699  return input.rbegin()->getIntegral();
700  }
701 
702  return JMATH::zero;
703  }
704 }
705 
706 #endif
static abscissa_type h01p(abscissa_type t)
function_type::argument_type argument_type
JHermiteSplineFunction1D_t buffer
collection_type::value_type value_type
data_type w[N+1][M+1]
Definition: JPolint.hh:741
collection_type::value_type value_type
Exceptions.
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
collection_type::const_iterator const_iterator
void compile(const bool monotone)
Determination of derivatives.
collection_type::ordinate_type ordinate_type
static abscissa_type h00(abscissa_type t)
Exception for a functional operation.
Definition: JException.hh:126
collection_type::const_reverse_iterator const_reverse_iterator
JHermiteSplineFunction1D()
Default contructor.
Template class for distance evaluation.
Definition: JDistance.hh:24
This include file containes various data structures that can be used as specific return types for the...
functional_type::argument_type argument_type
Definition: JFunctional.hh:323
JHermiteSplineMap()
Default constructor.
virtual void do_compile() override
Function compilation.
JCollection_t< JElement_t, JDistance_t > collection_type
collection_type::value_type value_type
static abscissa_type H01(abscissa_type t)
Template interface definition for associative collection of elements.
virtual void do_compile() override
Function compilation.
Definition: JPolint.hh:734
static const JZero zero
Function object to assign zero value.
Definition: JZero.hh:105
static abscissa_type h11(abscissa_type t)
Definition of zero value for any class.
Template definition of function object interface in one dimension.
Definition: JFunctional.hh:317
collection_type::const_iterator const_iterator
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
JFunction1D< abscissa_type, JResult_t > function_type
JResultType< ordinate_type >::result_type data_type
Exception for missing value.
Definition: JException.hh:198
JMap_t< JKey_t, JValue_t, JDistance_t > collection_type
collection_type::abscissa_type abscissa_type
static result_type getValue(const JFunctional &function, const argument_type *pX)
Recursive function value evaluation.
Definition: JFunctional.hh:107
collection_type::reverse_iterator reverse_iterator
static abscissa_type h00p(abscissa_type t)
virtual void do_compile() override
Determination of derivatives.
static abscissa_type h11p(abscissa_type t)
collection_type::distance_type distance_type
virtual result_type evaluate(const argument_type *pX) const override
Recursive interpolation method implementation.
virtual result_type evaluate(const argument_type *pX) const override
Recursive interpolation method implementation.
collection_type::distance_type distance_type
collection_type::abscissa_type abscissa_type
static abscissa_type h10p(abscissa_type t)
function_type::result_type result_type
Data structure for result including value, first derivative and integrals of function.
Definition: JResult.hh:337
static abscissa_type H10(abscissa_type t)
Template definition of function object interface.
Definition: JFunctional.hh:32
return result
Definition: JPolint.hh:727
functional_type::result_type result_type
Definition: JFunctional.hh:324
Auxiliary class to evaluate result type.
Definition: JFunctional.hh:377
static abscissa_type h01(abscissa_type t)
collection_type::const_reverse_iterator const_reverse_iterator
void put(typename JClass< key_type >::argument_type key, typename JClass< mapped_type >::argument_type value)
Put pair-wise element (key,value) into collection.
collection_type::iterator iterator
Template class to define the corresponding JCollection for a given template JMap. ...
collection_type::abscissa_type abscissa_type
collection_type::reverse_iterator reverse_iterator
Template base class spline interpolations.
Data structure for result including value and first derivative of function.
Definition: JResult.hh:43
function_type::argument_type argument_type
virtual result_type evaluate(const argument_type *pX) const override
Recursive interpolation method implementation.
Exception handler for functional object.
Definition: JFunctional.hh:131
Template class for spline interpolation in 1D.
Template definition of function object interface in multidimensions.
Definition: JFunctional.hh:303
static abscissa_type H00(abscissa_type t)
function_type::JExceptionHandler exceptionhandler_type
collection_type::ordinate_type ordinate_type
functional_type::result_type result_type
Definition: JFunctional.hh:308
Functional map with spline interpolation.
collection_type::iterator iterator
const JExceptionHandler & getExceptionHandler() const
Get exception handler.
Definition: JFunctional.hh:277
Exception for division by zero.
Definition: JException.hh:270
JHermiteSplineCollection()
Default constructor.
collection_type::iterator iterator
collection_type::reverse_iterator reverse_iterator
JFunction< JKey_t, JResult_t > function_type
JHermiteSplineFunction1D< JSplineElement2D< argument_type, data_type >, JMapCollection< JMap_t >::template collection_type, result_type > JHermiteSplineFunction1D_t
int j
Definition: JPolint.hh:666
JHermiteSplineCollection< JElement_t, JCollection_t, JDistance_t > collection_type
collection_type::distance_type distance_type
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:162
Template definition for functional collection with spline interpolation.
functional_type::argument_type argument_type
Definition: JFunctional.hh:307
static abscissa_type H11(abscissa_type t)
collection_type::ordinate_type ordinate_type
data_type v[N+1][M+1]
Definition: JPolint.hh:740
double u[N+1]
Definition: JPolint.hh:739
static abscissa_type h10(abscissa_type t)
function_type::result_type result_type
collection_type::const_reverse_iterator const_reverse_iterator
JElement_t::ordinate_type integrate(const JCollection< JElement_t, JDistance_t > &input, typename JMappable< JElement_t >::map_type &output)
Conversion of data points to integral values.
Definition: JCollection.hh:813
collection_type::const_iterator const_iterator
function_type::JExceptionHandler exceptionhandler_type