aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/src/NonLinear/lmstr.h
diff options
context:
space:
mode:
Diffstat (limited to 'unsupported/Eigen/src/NonLinear/lmstr.h')
-rw-r--r--unsupported/Eigen/src/NonLinear/lmstr.h25
1 files changed, 11 insertions, 14 deletions
diff --git a/unsupported/Eigen/src/NonLinear/lmstr.h b/unsupported/Eigen/src/NonLinear/lmstr.h
index ecc16ad0e..6db4c220d 100644
--- a/unsupported/Eigen/src/NonLinear/lmstr.h
+++ b/unsupported/Eigen/src/NonLinear/lmstr.h
@@ -8,18 +8,13 @@ public:
int minimize(
Matrix< Scalar, Dynamic, 1 > &x,
- Matrix< Scalar, Dynamic, 1 > &fvec,
const Scalar tol = ei_sqrt(epsilon<Scalar>())
);
int minimize(
Matrix< Scalar, Dynamic, 1 > &x,
- Matrix< Scalar, Dynamic, 1 > &fvec,
int &nfev,
int &njev,
- Matrix< Scalar, Dynamic, Dynamic > &fjac,
- VectorXi &ipvt,
- Matrix< Scalar, Dynamic, 1 > &qtf,
Matrix< Scalar, Dynamic, 1 > &diag,
const int mode=1,
const Scalar factor = 100.,
@@ -30,6 +25,10 @@ public:
const int nprint=0
);
+ Matrix< Scalar, Dynamic, 1 > fvec;
+ Matrix< Scalar, Dynamic, Dynamic > fjac;
+ VectorXi ipvt;
+ Matrix< Scalar, Dynamic, 1 > qtf;
private:
const FunctorType &functor;
};
@@ -38,11 +37,11 @@ private:
template<typename FunctorType, typename Scalar>
int LevenbergMarquardtOptimumStorage<FunctorType,Scalar>::minimize(
Matrix< Scalar, Dynamic, 1 > &x,
- Matrix< Scalar, Dynamic, 1 > &fvec,
const Scalar tol
)
{
- const int n = x.size(), m=fvec.size();
+ const int n = x.size();
+ const int m = functor.nbOfFunctions();
int info, nfev=0, njev=0;
Matrix< Scalar, Dynamic, Dynamic > fjac(m, n);
Matrix< Scalar, Dynamic, 1> diag, qtf;
@@ -55,9 +54,9 @@ int LevenbergMarquardtOptimumStorage<FunctorType,Scalar>::minimize(
}
info = minimize(
- x, fvec,
+ x,
nfev, njev,
- fjac, ipvt, qtf, diag,
+ diag,
1,
100.,
(n+1)*100,
@@ -69,12 +68,8 @@ int LevenbergMarquardtOptimumStorage<FunctorType,Scalar>::minimize(
template<typename FunctorType, typename Scalar>
int LevenbergMarquardtOptimumStorage<FunctorType,Scalar>::minimize(
Matrix< Scalar, Dynamic, 1 > &x,
- Matrix< Scalar, Dynamic, 1 > &fvec,
int &nfev,
int &njev,
- Matrix< Scalar, Dynamic, Dynamic > &fjac,
- VectorXi &ipvt,
- Matrix< Scalar, Dynamic, 1 > &qtf,
Matrix< Scalar, Dynamic, 1 > &diag,
const int mode,
const Scalar factor,
@@ -85,9 +80,11 @@ int LevenbergMarquardtOptimumStorage<FunctorType,Scalar>::minimize(
const int nprint
)
{
- const int m = fvec.size(), n = x.size();
+ const int n = x.size();
+ const int m = functor.nbOfFunctions();
Matrix< Scalar, Dynamic, 1 > wa1(n), wa2(n), wa3(n), wa4(m);
+ fvec.resize(m);
ipvt.resize(n);
fjac.resize(m, n);
diag.resize(n);