The levmar package
The Levenberg-Marquardt algorithm is an iterative technique that finds a local minimum of a function that is expressed as the sum of squares of nonlinear functions. It has become a standard technique for nonlinear least-squares problems and can be thought of as a combination of steepest descent and the Gauss-Newton method. When the current solution is far from the correct one, the algorithm behaves like a steepest descent method: slow, but guaranteed to converge. When the current solution is close to the correct solution, it becomes a Gauss-Newton method.
Optional box- and linear constraints can be given. Both single and double precision floating point types are supported.
The actual algorithm is implemented in a C library which is bundled with bindings-levmar which this package depends on. See: http://www.ics.forth.gr/~lourakis/levmar/.
This library consists of two layers:
LevMar.Intermediate: A medium-level layer that wraps the low-level functions from bindings-levmar to provide a more Haskell friendly interface.
LevMar: A high-level layer that uses type-level programming to add extra type safety.
Each layer also has special curve-fitting variants:
LevMar.Intermediate.Fitting
LevMar.Fitting
Each layer also has special variants that automatically compute the jacobian using automatic differentiation using Conal Elliott's vector-space library:
LevMar.Intermediate.AD
LevMar.Intermediate.Fitting.AD
LevMar.AD
LevMar.Fitting.AD
Note however that this feature is still very experimental!
All modules are self-contained; i.e. each module re-exports all the things you need to work with it.
For an example how to use this library see Demo.hs which is included in this package. Demo.hs is a Haskell translation of lmdemo.c from the C levmar library.
A note regarding the license:
This library depends on bindings-levmar which is bundled together with a C library which falls under the GPL. Please be aware of this when distributing programs linked with this library. For details see the description and license of bindings-levmar.
Properties
| Versions | 0.1, 0.2, 0.2.1, 0.3, 1.0, 1.1, 1.1.0.1, 1.2, 1.2.0.1, 1.2.1, 1.2.1.1, 1.2.1.2, 1.2.1.3 |
|---|---|
| Dependencies | base (≥3 & <4.2), bindings-levmar (≥0.1.1.1 & <0.2), MemoTrie (≥0.4.5 & <0.5), vector-space (≥0.5.7 & <0.6) |
| License | BSD3 |
| Copyright | (c) 2009 Roel van Dijk & Bas van Dijk |
| Author | Roel van Dijk & Bas van Dijk |
| Maintainer | vandijk.roel@gmail.com, v.dijk.bas@gmail.com |
| Stability | experimental |
| Category | Numerical, Math |
| Source repository | darcs get http://code.haskell.org/levmar |
| Upload date | Wed Sep 16 14:33:28 UTC 2009 |
| Uploaded by | BasVanDijk |
| Built on | ghc-6.10 |
| Build failure | ghc-6.12 (log), ghc-7.0 (log), ghc-7.4 (log) |
Modules
Downloads
- levmar-0.2.1.tar.gz (Cabal source package)
- package description (included in the package)