Note:this function usesoptional argumentsto define choices in the problem specification and in the details of the algorithm. If you wish to use default settings for all of the optional arguments, you need only read Sections 1 to 10 of this document. If, however, you wish to reset some or all of the settings please refer to Section 11 for a detailed description of the specification of the optional arguments produced by the function.
nag_2d_spline_fit_ts_scat (e02jdc) determines a smooth bivariate spline approximation to a set of
data points , for . Here, ‘smooth’ means
The approximation domain is the bounding box , where (respectively ) and (respectively ) denote the lowest and highest data values of the (respectively ).
The spline is computed by local approximations on a uniform triangulation of the bounding box. These approximations are extended to a smooth spline representation of the surface over the domain. The local approximation scheme is
by least squares polynomials (Davydov and Zeilfelder (2004)).
The two-stage approximation method employed by nag_2d_spline_fit_ts_scat (e02jdc) is derived from
the TSFIT package of O. Davydov and F. Zeilfelder.
for some and for some ; i.e., there are at least two distinct and values.
lsminp – IntegerInput
lsmaxp – IntegerInput
On entry: are control parameters for the local approximations.
Each local approximation is computed on a local domain containing one of the
triangles in the discretization of the bounding box. The size of each local domain will be adaptively chosen such that if it contains fewer than lsminp sample points it is expanded, else if it contains greater than lsmaxp sample points a thinning method is applied. lsmaxp mainly controls computational cost (in that working with a thinned set of points is cheaper and may be appropriate if the input data is densely distributed), while lsminp allows handling of different types of scattered data.
Setting , and therefore forcing either expansion or thinning, may be useful for computing initial coarse approximations. In general smaller values for these arguments reduces cost.
A calibration procedure (experimenting with a small subset of the data to be fitted and validating the results) may be needed to choose the most appropriate values for lsminp and lsmaxp.
nxcels – IntegerInput
nycels – IntegerInput
On entry: nxcels (respectively nycels) is the number of cells in the (respectively ) direction that will be used to create the triangulation of the bounding box of the domain of the function to be fitted.
Greater efficiency generally comes when nxcels and nycels are chosen to be of the same order of magnitude and are such that n is . Thus for a ‘square’ triangulation — when — the quantities and nxcels should be of the same order of magnitude. See also Section 9.
On exit: if NE_NOERROR on exit, coefs contains the computed spline coefficients.
iopts – IntegerCommunication Array
Note: the dimension, , of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument iopts in the previous call to nag_fit_opt_set (e02zkc).
Note: the dimension, , of this array is dictated by the requirements of associated functions that must have been previously called. This array MUST be the same array passed as argument opts in the previous call to nag_fit_opt_set (e02zkc).
Local approximation by polynomials of degree for data points has optimal
approximation order .
The approximation error for global smoothing is .
Whether maximal accuracy is achieved depends on the distribution of the input data and the choices of the algorithmic parameters. The
reference above contains
extensive numerical tests and further technical discussions of how best to configure the method.
8 Parallelism and Performance
nag_2d_spline_fit_ts_scat (e02jdc) is threaded by NAG for parallel execution in multithreaded implementations of the NAG Library.
nag_2d_spline_fit_ts_scat (e02jdc) makes calls to BLAS and/or LAPACK routines, which may be threaded within the vendor library used by this implementation. Consult the documentation for the vendor library for further information.
Please consult the Users' Note for your implementation for any additional implementation-specific information.
9 Further Comments
-linear complexity and memory usage can be attained for sufficiently dense input data if the triangulation parameters nxcels and nycels are chosen as recommended in their descriptions above. For sparse input data on such triangulations, if many expansion steps are required (see lsminp) the complexity may rise to be loglinear.
The Franke function
is widely used for testing surface-fitting methods. The example program randomly generates a number of points on this surface. From these a spline is computed and then evaluated at a vector of points and on a mesh.
Several optional arguments in nag_2d_spline_fit_ts_scat (e02jdc) control aspects of the algorithm, methodology used, logic or output. Their values are contained in the arrays iopts and opts; these must be initialized before calling nag_2d_spline_fit_ts_scat (e02jdc) by first calling nag_fit_opt_set (e02zkc) with optstr set to "Initialize = e02jdc".
Each optional argument has an associated default value; to set any of them to a non-default value, or to reset any of them to the default value, use nag_fit_opt_set (e02zkc). The current value of an optional argument can be queried using nag_fit_opt_get (e02zlc).
The remainder of this section can be skipped if you wish to use the default values for all optional arguments.
The following is a list of the optional arguments available. A full description of each optional argument is provided in Section 11.1.
When the bounding box is triangulated there are 8 equivalent configurations of the mesh. Setting will use the averaged value of the possible local polynomial approximations over each triangle in the mesh. This usually gives better results but at (about 8 times) higher computational cost.
Constraint: or .
Minimum Singular Value LPA
A tolerance measure for accepting or rejecting a local polynomial approximation (LPA) as reliable.
The solution of a local least squares problem solved on each triangle subdomain is accepted as reliable if the minimum singular value of the matrix (of Bernstein polynomial values) associated with the least squares problem satisfies .
In general the approximation power will be reduced as is reduced. (A small indicates that the local data has hidden redundancies which prevent it from carrying enough information for a good approximation to be made.) Setting very large may have the detrimental effect that only approximations of low degree are deemed reliable.
will have no effect if , and it will have little effect if the input data is ‘smooth’ (e.g., from a known function).
A calibration procedure (experimenting with a small subset of the data to be fitted and validating the results) may be needed to choose the most appropriate value for this parameter.
Polynomial Starting Degree
The degree to be used in the initial step of each local polynomial approximation.
At the initial step the method will attempt to fit with local polynomials of degree . If the approximation is deemed unreliable (according to ), the degree will be decremented by one and a new local approximation computed, ending with a constant approximation if no other is reliable.
is bounded from above by the maximum possible spline
The default value gives a good compromise between efficiency and accuracy. In general the best approximation can be obtained by