diff options
author | Thomas Capricelli <orzel@freehackers.org> | 2009-08-25 16:08:09 +0200 |
---|---|---|
committer | Thomas Capricelli <orzel@freehackers.org> | 2009-08-25 16:08:09 +0200 |
commit | 6c1a9703b1c5f4cc64dbfc5f0396389e39d82183 (patch) | |
tree | 54534004af2e03ca47b18ec773a7ba465a113f15 /unsupported/Eigen/src/NonLinear/lmstr.h | |
parent | 38fc6c8553ff0b145e261d8e368a9020fb0e3078 (diff) |
move most of results vectors/matrices inside respective classes.
Diffstat (limited to 'unsupported/Eigen/src/NonLinear/lmstr.h')
-rw-r--r-- | unsupported/Eigen/src/NonLinear/lmstr.h | 25 |
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); |