>  Docs Center  >  Libraries  >  Markwardt  >  QUINTERP
Libraries

QUINTERP

QUINTERP

Name


  QUINTERP

Author


  Craig B. Markwardt, NASA/GSFC Code 662, Greenbelt, MD 20770
  craigm@lheamail.gsfc.nasa.gov
  UPDATED VERSIONs can be found on my WEB PAGE:
      http://cow.physics.wisc.edu/~craigm/idl/idl.html

Purpose


  Quintic spline interpolation from tabulated first and second derivatives

Major Topics


  Interpolation, Hermite Interpolation

Calling Sequence


  QINTERP, XTAB, YTAB, YPTAB, YPPTAB, $
      XINT, YINT, YPINT=, YPPINT=, MISSING=

Description



  QUINTERP performs quintic spline interpolation of a function.
  This routine is a natural extension of CUBETERP, in that it meant
  for interpolation where the tabulated function has known values,
  first derivatives *and* second derivatives at each point. Given
  that there are six known values for each interpolation interval,
  the resulting interpolation function is a quintic polynomial (one
  of a class of Hermite interpolating splines).
  The user provides a tabulated set of data, whose (X,Y) positions
  are (XTAB, YTAB), and whose first and second derivatives are YPTAB
  and YPPTAB. The user also provides a set of desired "X" abcissae
  for which interpolants are requested. The interpolated spline
  values are returned in YINT. The interpolated curve will smoothly
  pass through the control points, and have the requested
  derivatives at those points.
  Note that the user must provide both derivatives (they are not
  optional). If you don't have one or more derivatives, then you
  should use the IDL spline functions SPL_INIT/SPL_INTERP, or the
  functions CUBETERP, QUADTERP or LINTERP instead. Unlike CUBETERP,
  if the requested point is outside of the tabulated range, the
  function is not extrapolated. Instead the value provided by the
  MISSING keyword is returned for those points.
  The user may also optionally request the first and second
  derivatives of the function with the YPINT and YPPINT keywords.

Inputs



  XTAB - tabulated X values. Must be sorted in increasing order.
  YTAB - tabulated Y values.
  YPTAB - tabulated first derivatives ( = dY/dX ). Not optional
  YPPTAB - tabulated second derivatives ( = d(YPTAB)/dX ). Not optional.
  XINT - X values of desired interpolants.

Outputs



  YINT - Y values of desired interpolants.

Optional Keywords



  YPINT - upon return, the slope (first derivative) at the
          interpolated positions.
  YPPINT - upon return, the second derivative at the interpolated
            positions.
  MISSING - a value to report for "missing" data. This function
            does not perform extrapolation; any requested point
            outside the range [MIN(XTAB),MAX(XTAB)] is considered
            missing.
            Default: 0

Example



  ;; Set up some fake data, a sinusoid
  xtab = dindgen(101)/100d * 2d*!dpi ; 100 points from 0 -> 2*!dpi
  ytab = sin(xtab) ;; values
  yptab = cos(xtab) ;; 1st deriv
  ypptab = -sin(xtab) ;; 2nd deriv
  ;; Interpolate to a finer grid
  xint = dindgen(1001)/1000 * 2d*!dpi ;; 1000 points from 0->2*!dpi
  quinterp, xtab, ytab, yptab, ypptab, xint, yint, ypint=ypint, yppint=yppint
  ;; Plot it
  plot, xint, yint
  oplot, xtab, ytab, psym=1, symsize=2
  for i = 0, n_elements(xtab)-1 do $ ;; Also plot slopes
    oplot, xtab(i)+[-0.5,0.5], ytab(i)+[-0.5,0.5]*yptab(i)
 

Modification History


  Written and documented, CM, 08 Oct 2008



© 2024 NV5 Geospatial Solutions, Inc. |  Legal
   Contact Us