mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-30 17:40:05 +08:00
move most of results vectors/matrices inside respective classes.
This commit is contained in:
parent
38fc6c8553
commit
6c1a9703b1
@ -8,17 +8,11 @@ public:
|
||||
|
||||
int solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
const Scalar tol = ei_sqrt(epsilon<Scalar>())
|
||||
);
|
||||
int solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
int &nfev,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
Matrix< Scalar, Dynamic, 1 > &R,
|
||||
Matrix< Scalar, Dynamic, 1 > &qtf,
|
||||
Matrix< Scalar, Dynamic, 1 > &diag,
|
||||
const int mode=1,
|
||||
int nb_of_subdiagonals = -1,
|
||||
@ -30,6 +24,10 @@ public:
|
||||
const int nprint=0
|
||||
);
|
||||
|
||||
Matrix< Scalar, Dynamic, 1 > fvec;
|
||||
Matrix< Scalar, Dynamic, Dynamic > fjac;
|
||||
Matrix< Scalar, Dynamic, 1 > R;
|
||||
Matrix< Scalar, Dynamic, 1 > qtf;
|
||||
private:
|
||||
const FunctorType &functor;
|
||||
};
|
||||
@ -39,14 +37,12 @@ private:
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
const Scalar tol
|
||||
)
|
||||
{
|
||||
const int n = x.size();
|
||||
int info, nfev=0;
|
||||
Matrix< Scalar, Dynamic, 1> R, qtf, diag;
|
||||
Matrix< Scalar, Dynamic, 1> diag;
|
||||
|
||||
/* check the input parameters for errors. */
|
||||
if (n <= 0 || tol < 0.) {
|
||||
@ -56,10 +52,9 @@ int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||
|
||||
diag.setConstant(n, 1.);
|
||||
info = solve(
|
||||
x, fvec,
|
||||
x,
|
||||
nfev,
|
||||
fjac,
|
||||
R, qtf, diag,
|
||||
diag,
|
||||
2,
|
||||
-1, -1,
|
||||
(n+1)*200,
|
||||
@ -73,11 +68,7 @@ int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
int &nfev,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
Matrix< Scalar, Dynamic, 1 > &R,
|
||||
Matrix< Scalar, Dynamic, 1 > &qtf,
|
||||
Matrix< Scalar, Dynamic, 1 > &diag,
|
||||
const int mode,
|
||||
int nb_of_subdiagonals,
|
||||
@ -95,10 +86,10 @@ int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||
|
||||
if (nb_of_subdiagonals<0) nb_of_subdiagonals = n-1;
|
||||
if (nb_of_superdiagonals<0) nb_of_superdiagonals = n-1;
|
||||
fvec.resize(n);
|
||||
qtf.resize(n);
|
||||
R.resize( (n*(n+1))/2);
|
||||
fjac.resize(n, n);
|
||||
fvec.resize(n);
|
||||
|
||||
/* Local variables */
|
||||
int i, j, l, iwa[1];
|
||||
|
@ -8,17 +8,11 @@ public:
|
||||
|
||||
int solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
const Scalar tol = ei_sqrt(epsilon<Scalar>())
|
||||
);
|
||||
int solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
int &nfev, int &njev,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
Matrix< Scalar, Dynamic, 1 > &R,
|
||||
Matrix< Scalar, Dynamic, 1 > &qtf,
|
||||
Matrix< Scalar, Dynamic, 1 > &diag,
|
||||
const int mode=1,
|
||||
const int maxfev = 1000,
|
||||
@ -27,6 +21,10 @@ public:
|
||||
const int nprint=0
|
||||
);
|
||||
|
||||
Matrix< Scalar, Dynamic, 1 > fvec;
|
||||
Matrix< Scalar, Dynamic, Dynamic > fjac;
|
||||
Matrix< Scalar, Dynamic, 1 > R;
|
||||
Matrix< Scalar, Dynamic, 1 > qtf;
|
||||
private:
|
||||
const FunctorType &functor;
|
||||
};
|
||||
@ -36,14 +34,12 @@ private:
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
const Scalar tol
|
||||
)
|
||||
{
|
||||
const int n = x.size();
|
||||
int info, nfev=0, njev=0;
|
||||
Matrix< Scalar, Dynamic, 1> R, qtf, diag;
|
||||
Matrix< Scalar, Dynamic, 1> diag;
|
||||
|
||||
/* check the input parameters for errors. */
|
||||
if (n <= 0 || tol < 0.) {
|
||||
@ -53,10 +49,9 @@ int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
||||
|
||||
diag.setConstant(n, 1.);
|
||||
info = solve(
|
||||
x, fvec,
|
||||
x,
|
||||
nfev, njev,
|
||||
fjac,
|
||||
R, qtf, diag,
|
||||
diag,
|
||||
2,
|
||||
(n+1)*100,
|
||||
100.,
|
||||
@ -70,12 +65,8 @@ int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
int &nfev,
|
||||
int &njev,
|
||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||
Matrix< Scalar, Dynamic, 1 > &R,
|
||||
Matrix< Scalar, Dynamic, 1 > &qtf,
|
||||
Matrix< Scalar, Dynamic, 1 > &diag,
|
||||
const int mode,
|
||||
const int maxfev,
|
||||
@ -91,6 +82,7 @@ int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
||||
qtf.resize(n);
|
||||
R.resize( (n*(n+1))/2);
|
||||
fjac.resize(n, n);
|
||||
fvec.resize(n);
|
||||
|
||||
/* Local variables */
|
||||
int i, j, l, iwa[1];
|
||||
|
@ -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 LevenbergMarquardt<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 LevenbergMarquardt<FunctorType,Scalar>::minimize(
|
||||
}
|
||||
|
||||
info = minimize(
|
||||
x, fvec,
|
||||
x,
|
||||
nfev, njev,
|
||||
fjac, ipvt, qtf, diag,
|
||||
diag,
|
||||
1,
|
||||
100.,
|
||||
(n+1)*100,
|
||||
@ -70,12 +69,8 @@ int LevenbergMarquardt<FunctorType,Scalar>::minimize(
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int LevenbergMarquardt<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,
|
||||
@ -86,9 +81,11 @@ int LevenbergMarquardt<FunctorType,Scalar>::minimize(
|
||||
const int nprint
|
||||
)
|
||||
{
|
||||
const int m = fvec.size(), n = x.size();
|
||||
Matrix< Scalar, Dynamic, 1 > wa1(n), wa2(n), wa3(n), wa4(m);
|
||||
const int n = x.size();
|
||||
const int m = functor.nbOfFunctions();
|
||||
Matrix< Scalar, Dynamic, 1 > wa1(n), wa2(n), wa3(n), wa4;
|
||||
|
||||
fvec.resize(m);
|
||||
ipvt.resize(n);
|
||||
fjac.resize(m, n);
|
||||
diag.resize(n);
|
||||
|
@ -8,17 +8,12 @@ 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,
|
||||
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 LevenbergMarquardtNumericalDiff<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;
|
||||
Matrix< Scalar, Dynamic, Dynamic > fjac(m, n);
|
||||
Matrix< Scalar, Dynamic, 1> diag, qtf;
|
||||
@ -55,9 +54,9 @@ int LevenbergMarquardtNumericalDiff<FunctorType,Scalar>::minimize(
|
||||
}
|
||||
|
||||
info = minimize(
|
||||
x, fvec,
|
||||
x,
|
||||
nfev,
|
||||
fjac, ipvt, qtf, diag,
|
||||
diag,
|
||||
1,
|
||||
100.,
|
||||
(n+1)*200,
|
||||
@ -69,11 +68,7 @@ int LevenbergMarquardtNumericalDiff<FunctorType,Scalar>::minimize(
|
||||
template<typename FunctorType, typename Scalar>
|
||||
int LevenbergMarquardtNumericalDiff<FunctorType,Scalar>::minimize(
|
||||
Matrix< Scalar, Dynamic, 1 > &x,
|
||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||
int &nfev,
|
||||
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 LevenbergMarquardtNumericalDiff<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);
|
||||
|
@ -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);
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user