Class interp_akima (o2scl)

O2scl : Class List

template<class vec_t, class vec2_t = vec_t>
class o2scl::interp_akima : public o2scl::interp_base<vec_t, vec_t>

Akima spline interpolation (GSL)

See also the Interpolation section of the O2scl User’s guide.

This class uses natural boundary conditions, where the second derivative vanishes at each end point. Extrapolation effectively assumes that the second derivative is linear outside of the endpoints. Use interp_akima_peri for perodic boundary conditions.

Storage for Akima spline interpolation

ubvector b
ubvector c
ubvector d
ubvector um
inline void akima_calc(const vec_t &x_array, size_t size, ubvector &umx)

For initializing the interpolation.

inline interp_akima()

Create a base interpolation object with or without periodic boundary conditions.

inline virtual ~interp_akima()
inline virtual void set(size_t size, const vec_t &xa, const vec2_t &ya)

Initialize interpolation routine.

inline virtual double eval(double x0) const

Give the value of the function \( y(x=x_0) \) .

inline virtual double deriv(double x0) const

Give the value of the derivative \( y^{\prime}(x=x_0) \) .

inline virtual double deriv2(double x0) const

Give the value of the second derivative \( y^{\prime \prime}(x=x_0) \) .

inline virtual double integ(double aa, double bb) const

Give the value of the integral \( \int_a^{b}y(x)~dx \) .

inline virtual const char *type() const

Return the type, "interp_akima".

interp_akima(const interp_akima<vec_t, vec2_t>&)
interp_akima<vec_t, vec2_t> &operator=(const interp_akima<vec_t, vec2_t>&)

Public Types

typedef boost::numeric::ublas::vector<double> ubvector
typedef boost::numeric::ublas::vector_slice<ubvector> ubvector_slice
typedef boost::numeric::ublas::vector_range<ubvector> ubvector_range
typedef boost::numeric::ublas::slice slice
typedef boost::numeric::ublas::range range