Class interp_monotonic (o2scl)¶
-
template<class
vec_t
, classvec2_t
= vec_t>
classo2scl
::
interp_monotonic
: public o2scl::interp_base<vec_t, vec_t>¶ Monotonicity-preserving interpolation.
This class uses a method based on cubic Hermite interpolation, modifying the slopes to guarantee monotonicity. In the notation of Fritsch80, if
\[ \alpha_i^2+\beta_i^2 \geq 9 \]then \( \alpha \) and \( \beta \) are decreased by the factor \( \tau \) as described at the end of section 4.- Warning
This class is experimental. Integrals don’t work yet.
Based on [Fritsch80].
- Note
The results of the interpolation will only be monotonic in the regions where the original data set is also monotonic. Also, this interpolation routine does not enforce strict monotonicity, and the results of the interpolation will be flat where the data is also flat.
- Idea for Future:
Convert into fewer loops over the data
Public Types
-
typedef boost::numeric::ublas::vector<double>
ubvector
¶
Public Functions
-
interp_monotonic
()¶
-
~interp_monotonic
()¶
-
double
eval
(double x0) const¶ Give the value of the function \( y(x=x_0) \) .
-
double
deriv
(double x0) const¶ Give the value of the derivative \( y^{\prime}(x=x_0) \) .
-
double
deriv2
(double x0) const¶ Give the value of the second derivative \( y^{\prime \prime}(x=x_0) \).
-
double
integ
(double a, double b) const¶ Give the value of the integral \( \int_a^{b}y(x)~dx \) .
-
const char *
type
() const¶ Return the type,
"interp_monotonic"
.
Protected Attributes
Private Functions
-
interp_monotonic
(const interp_monotonic<vec_t, vec2_t>&)¶
-
interp_monotonic<vec_t, vec2_t> &
operator=
(const interp_monotonic<vec_t, vec2_t>&)¶