aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/src/NonLinear/lmstr.h
diff options
context:
space:
mode:
authorGravatar Thomas Capricelli <orzel@freehackers.org>2009-08-25 16:08:09 +0200
committerGravatar Thomas Capricelli <orzel@freehackers.org>2009-08-25 16:08:09 +0200
commit6c1a9703b1c5f4cc64dbfc5f0396389e39d82183 (patch)
tree54534004af2e03ca47b18ec773a7ba465a113f15 /unsupported/Eigen/src/NonLinear/lmstr.h
parent38fc6c8553ff0b145e261d8e368a9020fb0e3078 (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.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);