lmmin.h.html | mathcode2html |
Source file: lmmin.h | |
Converted: Tue Apr 17 2012 at 11:03:37 | |
This documentation file will not reflect any later changes in the source file. |
$$\phantom{******** If you see this on the webpage then the
browser could not locate *********}$$
$$\phantom{******** jsMath/easy/load.js or the variable root
is set wrong in this file *********}$$
$$\newcommand{\vector}[1]{\left[\begin{array}{c} #1 \end{array}\right]}$$
$$\newenvironment{matrix}{\left[\begin{array}{cccccccccc}} {\end{array}\right]}$$
$$\newcommand{\A}{{\cal A}}$$
$$\newcommand{\W}{{\cal W}}$$
#ifndef LMMIN_H #define LMMIN_H #ifdef __cplusplus extern "C" { #endif // parameters for calling the high-level interface lmfit // ( lmfit.c provides lm_initialize_control which sets default values ): typedef struct { double ftol; // relative error desired in the sum of squares. double xtol; // relative error between last two approximations. double gtol; // orthogonality desired between fvec and its derivs. double epsilon; // step used to calculate the jacobian. double stepbound; // initial bound to steps in the outer loop. double fnorm; // norm of the residue vector fvec. int maxcall; // maximum number of iterations. int nfev; // actual number of iterations. int info; // status of minimization. double** curvature; // #par x #par (ignored if NULL) } lm_control_type; // the subroutine that calculates fvec: typedef void (lm_evaluate_ftype) ( double* par, int m_dat, double* fvec, void *data, int *info ); // default implementation therof, provided by lm_eval.c: //void lm_evaluate_default ( // double* par, int m_dat, double* fvec, void *data, int *info ); // the subroutine that informs about fit progress: typedef void (lm_print_ftype) ( int n_par, double* par, int m_dat, double* fvec, void *data, int iflag, int iter, int nfev ); // default implementation therof, provided by lm_eval.c: //void lm_print_default ( // int n_par, double* par, int m_dat, double* fvec, void *data, // int iflag, int iter, int nfev ); // compact high-level interface: void lm_initialize_control( lm_control_type *control ); void lm_minimize ( int m_dat, int n_par, double* par, lm_evaluate_ftype *evaluate, lm_print_ftype *printout, void *data, lm_control_type *control ); double lm_enorm( int, double* ); // low-level interface for full control: void lm_lmdif( int m, int n, double* x, double* fvec, double ftol, double xtol, double gtol, int maxfev, double epsfcn, double* diag, int mode, double factor, int *info, int *nfev, double* fjac, double* jacjac, int* ipvt, double* qtf, double* wa1, double* wa2, double* wa3, double* wa4, lm_evaluate_ftype *evaluate, lm_print_ftype *printout, void *data ); #ifndef _LMDIF extern char *lm_infmsg[]; extern char *lm_shortmsg[]; #endif #ifdef __cplusplus } #endif #endif