用minpack进行参数优化,C++接口如下:
int lmdif_Ex(void (*fcn)(pAnyStru,integer* m,integer* n,doublereal* x,doublereal* fvec,doublereal* iflag),
pAnyStru pStruPoint,integer * m,integer * n,doublereal * x,doublereal * fvec,
doublereal *ftol,doublereal * xtol,doublereal * gtol,
integer *maxfev, doublereal *epsfcn, doublereal *diag,
integer *mode,doublereal * factor,integer * nprint,
integer *info,integer * nfev,doublereal * fjac,
integer * ldfjac,integer * ipvt,
doublereal * qtf,
doublereal *wa1, doublereal *wa2,doublereal * wa3,doublereal * wa4);
首先需要提供一个计算目标函数的子函数,该子函数必须定义为以下形式:
fcn(int *m, int *n, double *x, double *fvec, int *iflag)
其中:
*m = 输入函数数目
*n = 变量数目, n不大于m
x 长度为n的数组,包含参数的初值估计值,返回时更新为重新估计的值
fvec 长度为m的输出数组,