UltraScan III
List of all members | Classes | Static Public Member Functions | Public Attributes
US_LM Class Reference

#include "us_lm.h"

Collaboration diagram for US_LM:
Collaboration graph
[legend]

Classes

class  LM_Control
 Class holding input controls for LM computations. More...
 
class  LM_CurveData
 Collection of LM Curve data. More...
 
class  LM_Status
 Collection of output status parameters from LM computations. More...
 

Static Public Member Functions

static QString lm_statmsg (LM_Status *, bool=false)
 Status message string for termination condition. More...
 
static void lm_printout_std (int n_par, double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev)
 Standard monitoring routine. More...
 
static double lm_rmsdnorm (int, const double *)
 RMSD Norm. More...
 
static double lm_enorm (int, const double *)
 Refined calculation of Eucledian norm, often used in printout routine. More...
 
static void lmmin (int n_par, double *par, int m_dat, const void *data, void(*evaluate)(double *par, int m_dat, const void *data, double *fvec, int *info), const LM_Control *control, LM_Status *status, void(*printout)(int n_par, double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev))
 The actual minimization. */. More...
 
static 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, int *ipvt, double *qtf, double *wa1, double *wa2, double *wa3, double *wa4, void(*evaluate)(double *par, int m_dat, const void *data, double *fvec, int *info), void(*printout)(int n_par, double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev), int printflags, const void *data)
 
static void lmcurve_evaluate (double *par, int m_dat, const void *data, double *fvec, int *)
 Evaluate functions. More...
 
static void lmcurve_fit (int n_par, double *par, int m_dat, const double *t, const double *y, double(*f)(double t, double *par), const LM_Control *control, LM_Status *status)
 LM Curve Fit. More...
 
static void lmcurve_fit_rmsd (int n_par, double *par, int m_dat, const double *t, const double *y, double(*f)(double t, double *par), const LM_Control *control, LM_Status *status)
 LM Curve Fit by RMSD. More...
 
static void lm_lmpar (int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double delta, double *par, double *x, double *sdiag, double *aux, double *xdi)
 
static void lm_qrfac (int m, int n, double *a, int pivot, int *ipvt, double *rdiag, double *acnorm, double *wa)
 
static void lm_qrsolv (int n, double *r, int ldr, int *ipvt, double *diag, double *qtb, double *x, double *sdiag, double *wa)
 

Public Attributes

const LM_Control lm_control_double
 Recommended control parameter settings. More...
 
const LM_Control lm_control_float
 controls in float format More...
 

Detailed Description

Class of static functions for Levenberg-Marquardt computations

Definition at line 27 of file us_lm.h.

Member Function Documentation

double US_LM::lm_enorm ( int  n,
const double *  x 
)
static

Refined calculation of Eucledian norm, often used in printout routine.

sum squares.

calculation of norm.

Definition at line 1315 of file us_lm.cpp.

void US_LM::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,
int *  ipvt,
double *  qtf,
double *  wa1,
double *  wa2,
double *  wa3,
double *  wa4,
void(*)(double *par, int m_dat, const void *data, double *fvec, int *info)  evaluate,
void(*)(int n_par, double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev)  printout,
int  printflags,
const void *  data 
)
static

Legacy low-level interface. Alternative to lm_minimize, allowing full control, and read-out of auxiliary arrays. For usage, see implementation of lmmin.

Definition at line 289 of file us_lm.cpp.

void US_LM::lm_lmpar ( int  n,
double *  r,
int  ldr,
int *  ipvt,
double *  diag,
double *  qtb,
double  delta,
double *  par,
double *  x,
double *  sdiag,
double *  aux,
double *  xdi 
)
static

evaluate the function at the current value of par.

if the function is small enough, accept the current value of par. Also test for the exceptional cases where parl is zero or the number of iterations has reached 10.

compute the Newton correction.

depending on the sign of the function, update parl or paru.

compute an improved estimate for par.

Definition at line 755 of file us_lm.cpp.

void US_LM::lm_printout_std ( int  n_par,
double *  par,
int  m_dat,
const void *  data,
const double *  fvec,
int  printflags,
int  iflag,
int  iter,
int  nfev 
)
static

Standard monitoring routine.

Definition at line 144 of file us_lm.cpp.

void US_LM::lm_qrfac ( int  m,
int  n,
double *  a,
int  pivot,
int *  ipvt,
double *  rdiag,
double *  acnorm,
double *  wa 
)
static

bring the column of largest norm into the pivot position.

compute the Householder transformation to reduce the j-th column of a to a multiple of the j-th unit vector.

apply the transformation to the remaining columns and update the norms.

Definition at line 987 of file us_lm.cpp.

void US_LM::lm_qrsolv ( int  n,
double *  r,
int  ldr,
int *  ipvt,
double *  diag,
double *  qtb,
double *  x,
double *  sdiag,
double *  wa 
)
static

determine a Givens rotation which eliminates the appropriate element in the current row of d.

compute the modified diagonal element of r and the modified element of ((q transpose)*b,0).

accumulate the tranformation in the row of s.

store the diagonal element of s and restore the corresponding diagonal element of r.

Definition at line 1135 of file us_lm.cpp.

double US_LM::lm_rmsdnorm ( int  n,
const double *  x 
)
static

RMSD Norm.

Definition at line 1301 of file us_lm.cpp.

QString US_LM::lm_statmsg ( US_LM::LM_Status status,
bool  longmsg = false 
)
static

Status message string for termination condition.

Definition at line 132 of file us_lm.cpp.

void US_LM::lmcurve_evaluate ( double *  par,
int  m_dat,
const void *  data,
double *  fvec,
int *   
)
static

Evaluate functions.

Definition at line 1386 of file us_lm.cpp.

void US_LM::lmcurve_fit ( int  n_par,
double *  par,
int  m_dat,
const double *  t,
const double *  y,
double(*)(double t, double *par)  f,
const LM_Control control,
LM_Status status 
)
static

LM Curve Fit.

Definition at line 1397 of file us_lm.cpp.

void US_LM::lmcurve_fit_rmsd ( int  n_par,
double *  par,
int  m_dat,
const double *  t,
const double *  y,
double(*)(double t, double *par)  f,
const LM_Control control,
LM_Status status 
)
static

LM Curve Fit by RMSD.

Definition at line 1408 of file us_lm.cpp.

void US_LM::lmmin ( int  n_par,
double *  par,
int  m_dat,
const void *  data,
void(*)(double *par, int m_dat, const void *data, double *fvec, int *info)  evaluate,
const LM_Control control,
LM_Status status,
void(*)(int n_par, double *par, int m_dat, const void *data, const double *fvec, int printflags, int iflag, int iter, int nfev)  printout 
)
static

The actual minimization. */.

Definition at line 195 of file us_lm.cpp.

Member Data Documentation

const LM_Control US_LM::lm_control_double

Recommended control parameter settings.

controls in double format

Definition at line 76 of file us_lm.h.

const LM_Control US_LM::lm_control_float

controls in float format

Definition at line 77 of file us_lm.h.


The documentation for this class was generated from the following files: