---
name: "curfit"
section: "3m"
platform: "linux"
package: "iraf"
version: "2.11.3-2"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/curfit"
---

# curfit(3m)

## NAME

curfit

## DESCRIPTION

subroutine curfit.f

source\
   Bevington, pages 237-239.

purpose\
   make least-squares fit to a non-linear function\
     with a linearization of the fitting function

usage \
   call curfit (x, y, sigmay, npts, nterms, mode, a, deltaa,\
     sigmaa, flamda, yfit, chisqr)

description of parameters\
   x      - array of data points for independent variable\
   y      - array of data points for dependent variable\
   sigmay - array of standard deviations for y data points\
   npts   - number of pairs of data points\
   nterms - number of parameters\
   mode   - determines method of weighting least-squares fit\
            \+1 (instrumental) weight(i) = 1./sigmay(i)\*\*2\
             0 (no weighting) weight(i) = 1.\
            \-1 (statistical)  weight(i) = 1./y(i)\
   a      - array of parameters\
   deltaa - array of increments for parameters a\
   sigmaa - array of standard deviations for parameters a\
   flamda - proportion of gradient search included\
   yfit   - array of calculated values of y\
   chisqr - reduced chi square for fit

subroutines and function subprograms required \
   functn (x, i, a)\
     evaluates the fitting function for the ith term\
   fchisq (y, sigmay, npts, nfree, mode, yfit) \
     evaluates reduced chi squared for fit to data\
   fderiv (x, i, a, deltaa, nterms, deriv)\
     evaluates the derivatives of the fitting function\
       for the ith term with respect to each parameter\
   matinv (array, nterms, det) \
     inverts symmetric two-dimension matrix of degree nterms\
       and calculates its determinant

comments\
   valid for nterms up to 10\
   set flamda = 0.001 at beginning of search
