NAME:
mysvdfit
PURPOSE:
Perform a general least squares fit with optional error estimates.
DESCRIPTION:
This version uses SVD. A user-supplied function or a built-in
polynomial is fit to the data.
CATEGORY:
Function fitting
CALLING SEQUENCE:
Result = SVDFIT(X, Y, M)
INPUTS:
X: A vector representing the independent variable. If this an array,
the columns are taken to be the precomputed independant vectors
and no actual function is computed here.
Y: Dependent variable vector. This vector should be same length
as X.
M: The number of coefficients in the fitting function. For
polynomials, M is equal to the degree of the polynomial + 1.
OPTIONAL INPUTS:
Weight: A vector of weights for Y(i). This vector should be the same
length as X and Y.
If this parameter is ommitted, 1 is assumed. The error for
each term is weighted by Weight(i) when computing the fit.
Frequently, Weight(i) = 1./Sigma(i) where Sigma is the
measurement error or standard deviation of Y(i).
Funct: A string that contains the name of an optional user-supplied
basis function with M coefficients. If omitted, polynomials
are used.
The function is called:
R = FUNCT(X,M)
where X is an N element vector, and the function value is an
(N, M) array of the N inputs, evaluated with the M basis
functions. M is analogous to the degree of the polynomial +1
if the basis function is polynomials. For example, see the
function COSINES, in the IDL User Library, which returns a
basis function of:
R(i,j) = cos(j*x(i)).
For more examples, see Numerical Recipes, page 519.
The basis function for polynomials, is R(i,j) = x(i)^j.
OUTPUTS:
SVDFIT returns a vector of M coefficients.
OPTIONAL OUTPUT PARAMETERS:
NOTE: In order for an optional keyword output parameter
to be returned, it must be defined before calling SVDFIT.
The value or structure doesn't matter. For example:
YF = 1 ;Define output variable yf.
C = SVDFIT(X, Y, M, YFIT = YF) ;Do SVD, fitted Y vector is now
;returned in variable YF.
YFIT: Vector of calculated Y's.
CHISQ: Sum of squared errors multiplied by weights if weights
are specified.
COVAR: Covariance matrix of the coefficients.
VARIANCE: Sigma squared in estimate of each coeff(M).
SINGULAR: The number of singular values returned. This value should
be 0. If not, the basis functions do not accurately
characterize the data.
COMMON BLOCKS:
None.
SIDE EFFECTS:
None.
MODIFICATION HISTORY:
Adapted from SVDFIT, from the book Numerical Recipes, Press,
et. al., Page 518.
minor error corrected April, 1992 (J.Murthy)
93/10/12, Marc W. Buie, Lowell Observatory. Added option to make this
work similar to "regress".
97/03/20, MWB, Changed to use SVDC and SVSOL and everything is now in
double precision.
2005/02/02, MWB, Changed thresh from 10^-9 to 2x10^-12
2005/06/21, MWB, added error trap keyword
2009/07/14, MWB, fixed a bug in the original covar calculation
2013/09/14, AMZ, fixed a bug for using default polynomials.