diff options
-rw-r--r-- | unsupported/Eigen/NumericalDiff | 4 | ||||
-rw-r--r-- | unsupported/Eigen/src/NumericalDiff/NumericalDiff.h | 36 |
2 files changed, 31 insertions, 9 deletions
diff --git a/unsupported/Eigen/NumericalDiff b/unsupported/Eigen/NumericalDiff index 82a070d93..16e9f629a 100644 --- a/unsupported/Eigen/NumericalDiff +++ b/unsupported/Eigen/NumericalDiff @@ -42,12 +42,10 @@ namespace Eigen { */ //@{ -} - #include "src/NumericalDiff/NumericalDiff.h" -namespace Eigen { //@} } + #endif // EIGEN_NUMERICALDIFF_MODULE diff --git a/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h b/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h index dcd435864..f4af94327 100644 --- a/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h +++ b/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h @@ -25,16 +25,42 @@ #ifndef EIGEN_NUMERICAL_DIFF_H #define EIGEN_NUMERICAL_DIFF_H -namespace Eigen -{ - enum NumericalDiffMode { Forward, Central }; -template<typename Functor, NumericalDiffMode mode=Forward> class NumericalDiff : public Functor +/** + * \brief asdf + * + * This class allows you to add a method df() to your functor, which will + * use numerical differentiation to compute an approximate of the + * derivative for the functor. Of course, if you have an analytical form + * for the derivative, you should rather implement df() using it. + * + * More information on + * http://en.wikipedia.org/wiki/Numerical_differentiation + * + * Currently only "Forward" and "Central" scheme are implemented. Those + * are basic methods, and there exist some more elaborated way of + * computing such approximates. They are implemented using both + * proprietary and free software, and usually requires linking to an + * external library. It is very easy for you to write a functor + * using such software, and the purpose is quite orthogonal to what we + * want to achieve with Eigen. + * + * This is why we will not provide wrappers for every great numerical + * differenciation software that exist, but should rather stick with those + * basic ones, that still are useful for testing. + * + * Also, the module "Non linear optimization" needs this in order to + * provide full features compatibility with the original (c)minpack + * package. + * + */ +template<typename Functor, NumericalDiffMode mode=Forward> +class NumericalDiff : public Functor { public: typedef typename Functor::Scalar Scalar; @@ -119,6 +145,4 @@ private: Scalar epsfcn; }; -} // namespace - #endif // EIGEN_NUMERICAL_DIFF_H |