Previous: fitrg Up: ../plot79_f.html Next: fitsm
SUBROUTINE FITSF (LX, LY, X, Y, Z, NROWZ, MX, MY, NU, NV, U,
X V, W, NROWW, IERROR)
C$ (Smooth Surface Fitting)
C$ This subroutine fits a smooth surface of a single-valued
C$ bivariate function Z = Z(X,Y) to a set of input data points
C$ given at input grid points in an X-Y plane. It generates a
C$ set of output grid points by equally dividing the X and Y
C$ coordinates in each interval between a pair of input grid
C$ points, interpolates the Z value for the X and Y values of
C$ each output grid point, and generates a set of output
C$ points consisting of input data points and the interpolated
C$ points.
C$
C$ This subroutine generates a full surface of points. If a
C$ single point, or a single curve, is to be interpolated, use
C$ SUBROUTINE FITBV. The method is based on a piece-wise
C$ function composed of a set of bicubic polynomials in X and
C$ Y. Each polynomial is applicable to a rectangle of the
C$ input grid in the X-Y plane. Each polynomial is determined
C$ locally.
C$
C$ The input arguments are:
C$
C$ LX = Number of input grid points in the X coordinate
C$ (must be 2 or greater)
C$ LY = Number of input grid points in the Y coordinate
C$ (must be 2 or greater)
C$ X = Array of dimension LX storing the X coordinates
C$ of input grid points (in ascending or descending
C$ order)
C$ Y = Array of dimension LY storing the Y coordinates
C$ of input grid points (in ascending or descending
C$ order)
C$ Z = Doubly-dimensioned array of dimension (NROWZ,LY)
C$ storing the values of the function at input
C$ grid points
C$ NROWZ = Row dimension of Z(*,*). Must be .GE. LX.
C$ MX = Number of subintervals between each pair of
C$ input grid points in the X coordinate
C$ (must be 2 or greater)
C$ MY = Number of subintervals between each pair of
C$ input grid points in the Y coordinate
C$ (must be 2 or greater)
C$ NU = Number of output grid points in the X coordinate
C$ = (LX-1)*MX+1
C$ NV = Number of output grid points in the Y coordinate
C$ = (LY-1)*MY+1
C$ NROWW = Row dimension of W(*,*). Must be .GE. NU.
C$
C$ The output arguments are:
C$
C$ U = Array of dimension NU where the X coordinates of
C$ output points are to be displayed
C$ V = array of dimension NV where the Y coordinates of
C$ output points are to be displayed
C$ W = Doubly-dimensioned array of dimension (NROWW,NV)
C$ where the Z coordinates of output points are to
C$ be displayed
C$ IERROR = 0 (Normal return)
C$ .GT. 0 (Abnormal return. A message will be printed
C$ giving all the arguments, and nothing more
C$ will be done)
C$
C$ Some variables internally used are
C$ ZA = Divided difference of Z with respect to X
C$ ZB = Divided difference of Z with respect to Y
C$ ZAB = Second order divided difference of Z with
C$ respect to X and Y
C$ ZX = Partial derivative of Z with respect to X
C$ ZY = Partial derivative of Z with respect to Y
C$ ZXY = Second order partial derivative of Z with
C$ respect to X and Y
C$
C$ Author: Hiroshi Akima, "Bivariate Interpolation and Smooth
C$ Surface Fitting Based on Local Procedures",
C$ Algorithm 474, Comm. A.C.M. 17, 18-20 (1974).
C$
C$ (03-NOV-79)