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.