Description
It's a regression to commons-math v2.0.
Our software uses LevenbergMarquardtOptimizer for surface fitting by sampled points. Our parameterization of the surface we are fitting may be unconstrained, for example it is enough to have only 4 variables to represent cylinder axis and origin (using euler angles and origin distance), but to simplify derivative computation we instead use 6 parameter representation (vector + point). To make sure that the we constrain our search to valid vectors and origins, we need to renormalize and update surface parameters on every step of optimization.
Please see this article for details of 3d surface fitting and parameter normalization:
http://nvlpubs.nist.gov/nistpubs/jres/103/6/j36sha.pdf
Attached surface_fitting_tests.zip package with 2 unit tests that reproduce this problem.
Contents of package:
1) simple - simple single file test that tests only in/out side effect of patched library
2) full - complex test that fits cylinder using sampled points (uses cylinder, fit, utils sources)
3) lib - contains commons-math3 jar libraries: v3.3 and v3.3A1 (patched). There are also library sources.
4) patch - contains SVN patch file
To reproduce:
Run SurfaceFitterFullTest.java and SurfaceFitterSimpleTest.java tests with commons-math3-3.3.jar OR commons-math3-3.3A1.jar libraries.