GSL::Interp.new(T, n)
GSL::Interp.alloc(T, n)
GSL::Interp.alloc(T, x, y)
GSL::Interp.alloc(x, y)
These methods create an interpolation object of type T for n data-points.
The library provides six types, which are specifiled by an identifier of a constant or a string:
Interp::LINEAR or "linear"
Linear interpolation. This interpolation method does not require any additional memory.
Interp::POLYNOMIAL or "polynomial"
Polynomial interpolation. This method should only be used for interpolating small numbers of points because polynomial interpolation introduces large oscillations, even for well-behaved datasets. The number of terms in the interpolating polynomial is equal to the number of points.
Interp::CSPLINE or "cspline"
Cubic spline with natural boundary conditions.
Interp::CSPLINE_PERIODIC or "gsl_cspline_periodic" or "cspline_periodic"
Cubic spline with periodic boundary conditions
Interp::AKIMA or "akima"
Non-rounded Akima spline with natural boundary conditions. This method uses the non-rounded corner algorithm of Wodicka.
Interp::AKIMA_PERIODIC or "akima_periodic"
Non-rounded Akima spline with periodic boundary conditions. This method uses the non-rounded corner algorithm of Wodicka.
ex: For cubic spline for 10 points,
sp = Interp.new("cspline", 10)
GSL::Interp.bsearch(xa, x, index_lo, index_hi)
xa[i] <= x < x[i+1]
. The index is searched for in the range [index_lo,index_hi].GSL::Interp#init(xa, ya)
GSL::Interp
) does not save the data vectors xa, ya and only stores the static state computed from the data. The xa vector is always assumed to be strictly ordered; the behavior for other arrangements is not defined.GSL::Interp#name
GSL::Interp#min_size
GSL::Interp#accel
gsl_interp_accel
object, but it is hidden in Ruby/GSL. It is automatically allocated when a GSL::Interp
object is created, stored in it, and destroyed when the Interp
object is cleaned by the Ruby GC. This method is used to access to the Interp::Accel
object stored in self.GSL::Interp#find(xa, x)
GSL::Interp#accel_find(xa, x)
GSL::Interp::Accel#find(xa, x)
i
such that xa[i] <= x < xa[i+1]
.GSL::Interp#eval(xa, ya, x)
GSL::Interp#eval_e(xa, ya, x)
Numeric, Vector, Matrix
or an NArray
.GSL::Interp#eval_deriv(xa, ya, x)
GSL::Interp#eval_deriv_e(xa, ya, x)
GSL::Interp#eval_deriv2(xa, ya, x)
GSL::Interp#eval_deriv2_e(xa, ya, x)
GSL::Interp#eval_integ(xa, ya, a, b)
GSL::Interp#eval_integ_e(xa, ya, a, b)
GSL::Spline.new(T, n)
GSL::Spline.alloc(T, x, y)
GSL::Spline.new(x, y, T)
This creates a GSL::Spline
object of type T for n data-points. The type T is the same as GSL::Interp
class.
These two are equivalent.
GSL::Spline.alloc
and GSL::Spline#init
sp = GSL::Spline.alloc(T, n) sp.init(x, y) # x and y are vectors of length n
GSL::Spline.alloc
with two vectors
sp = GSL::Spline.alloc(T, x, y)
If T is not given, "cspline" is used.
GSL::Spline#init(xa, ya)
GSL::Spline
object self for the data (xa, ya) where xa and ya are Ruby arrays of equal sizes or GSL::Vector
.GSL::Spline#name
GSL::Spline#eval(x)
This returns the interpolated value for a given point x. The data x can be a Numeric, Vector, Matrix
or an NArray
.
NOTE: In a GSL-C program, a gsl_interp_accel
object is required to use the function gsl_spline_eval
. In Ruby/GSL, the gsl_interp_accel
is hidden, it is automatically allocated when a GSL::Spline
object is created, and also destroyed when the Spline
object is cleaned by the Ruby GC. The accel object can be accessed via the method GSL::Spline#accel
.
GSL::Spline#eval_deriv(x)
GSL::Spline#eval_deriv2(x)
GSL::Spline#eval_integ(a, b)
GSL::Spline#find(xa, x)
GSL::Spline#accel_find(xa, x)
i
such that xa[i] <= x < xa[i+1]
.See also the GSL manual and the examples in samples/