mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
cleaning
This commit is contained in:
parent
d880e6f774
commit
a736378331
@ -5,12 +5,13 @@ class HybridNonLinearSolverNumericalDiff
|
|||||||
public:
|
public:
|
||||||
HybridNonLinearSolverNumericalDiff(const FunctorType &_functor)
|
HybridNonLinearSolverNumericalDiff(const FunctorType &_functor)
|
||||||
: functor(_functor) {}
|
: functor(_functor) {}
|
||||||
|
|
||||||
int solve(
|
int solve(
|
||||||
Matrix< Scalar, Dynamic, 1 > &x,
|
Matrix< Scalar, Dynamic, 1 > &x,
|
||||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||||
|
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||||
Scalar tol = ei_sqrt(epsilon<Scalar>())
|
Scalar tol = ei_sqrt(epsilon<Scalar>())
|
||||||
);
|
);
|
||||||
|
|
||||||
int solve(
|
int solve(
|
||||||
Matrix< Scalar, Dynamic, 1 > &x,
|
Matrix< Scalar, Dynamic, 1 > &x,
|
||||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||||
@ -39,17 +40,17 @@ template<typename FunctorType, typename Scalar>
|
|||||||
int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
int HybridNonLinearSolverNumericalDiff<FunctorType,Scalar>::solve(
|
||||||
Matrix< Scalar, Dynamic, 1 > &x,
|
Matrix< Scalar, Dynamic, 1 > &x,
|
||||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||||
|
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||||
Scalar tol
|
Scalar tol
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const int n = x.size();
|
const int n = x.size();
|
||||||
int info, nfev=0;
|
int info, nfev=0;
|
||||||
Matrix< Scalar, Dynamic, Dynamic > fjac;
|
|
||||||
Matrix< Scalar, Dynamic, 1> R, qtf, diag;
|
Matrix< Scalar, Dynamic, 1> R, qtf, diag;
|
||||||
|
|
||||||
/* check the input parameters for errors. */
|
/* check the input parameters for errors. */
|
||||||
if (n <= 0 || tol < 0.) {
|
if (n <= 0 || tol < 0.) {
|
||||||
printf("solve bad args : n,tol,...");
|
printf("HybridNonLinearSolver::solve() bad args : n,tol,...");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
|
|
||||||
template<typename FunctorType, typename Scalar>
|
template<typename FunctorType, typename Scalar>
|
||||||
class HybridNonLinearSolver
|
class HybridNonLinearSolver
|
||||||
{
|
{
|
||||||
@ -7,19 +6,16 @@ public:
|
|||||||
HybridNonLinearSolver(const FunctorType &_functor)
|
HybridNonLinearSolver(const FunctorType &_functor)
|
||||||
: functor(_functor) {}
|
: functor(_functor) {}
|
||||||
|
|
||||||
|
|
||||||
int solve(
|
int solve(
|
||||||
Matrix< Scalar, Dynamic, 1 > &x,
|
Matrix< Scalar, Dynamic, 1 > &x,
|
||||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||||
Scalar tol = ei_sqrt(epsilon<Scalar>())
|
Scalar tol = ei_sqrt(epsilon<Scalar>())
|
||||||
);
|
);
|
||||||
|
|
||||||
int solve(
|
int solve(
|
||||||
Matrix< Scalar, Dynamic, 1 > &x,
|
Matrix< Scalar, Dynamic, 1 > &x,
|
||||||
Matrix< Scalar, Dynamic, 1 > &fvec,
|
Matrix< Scalar, Dynamic, 1 > &fvec,
|
||||||
int &nfev,
|
int &nfev, int &njev,
|
||||||
int &njev,
|
|
||||||
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
Matrix< Scalar, Dynamic, Dynamic > &fjac,
|
||||||
Matrix< Scalar, Dynamic, 1 > &R,
|
Matrix< Scalar, Dynamic, 1 > &R,
|
||||||
Matrix< Scalar, Dynamic, 1 > &qtf,
|
Matrix< Scalar, Dynamic, 1 > &qtf,
|
||||||
@ -51,7 +47,7 @@ int HybridNonLinearSolver<FunctorType,Scalar>::solve(
|
|||||||
|
|
||||||
/* check the input parameters for errors. */
|
/* check the input parameters for errors. */
|
||||||
if (n <= 0 || tol < 0.) {
|
if (n <= 0 || tol < 0.) {
|
||||||
printf("ei_hybrd1 bad args : n,tol,...");
|
printf("HybridNonLinearSolver::solve() bad args : n,tol,...");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -351,6 +351,7 @@ void testHybrd1()
|
|||||||
{
|
{
|
||||||
int n=9, info;
|
int n=9, info;
|
||||||
VectorXd x(n), fvec(n);
|
VectorXd x(n), fvec(n);
|
||||||
|
MatrixXd fjac;
|
||||||
|
|
||||||
/* the following starting values provide a rough solution. */
|
/* the following starting values provide a rough solution. */
|
||||||
x.setConstant(n, -1.);
|
x.setConstant(n, -1.);
|
||||||
@ -358,7 +359,7 @@ void testHybrd1()
|
|||||||
// do the computation
|
// do the computation
|
||||||
hybrd_functor functor;
|
hybrd_functor functor;
|
||||||
HybridNonLinearSolverNumericalDiff <hybrd_functor,double> solver(functor);
|
HybridNonLinearSolverNumericalDiff <hybrd_functor,double> solver(functor);
|
||||||
info = solver.solve(x, fvec);
|
info = solver.solve(x, fvec, fjac);
|
||||||
|
|
||||||
// check return value
|
// check return value
|
||||||
VERIFY( 1 == info);
|
VERIFY( 1 == info);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user