5224 Commits

Author SHA1 Message Date
Luc Maisonobe
cbc32459f8 Added a fast single-step method for fixed-step Runge-Kutta integrators.
JIRA: MATH-1119

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588769 13f79535-47bb-0310-9956-ffa450edef68
2014-04-20 14:29:42 +00:00
Luc Maisonobe
2985728c00 Javadoc.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588755 13f79535-47bb-0310-9956-ffa450edef68
2014-04-20 13:30:16 +00:00
Luc Maisonobe
931a67ff52 Math.nextUp is not available before Java 1.6.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588754 13f79535-47bb-0310-9956-ffa450edef68
2014-04-20 13:25:36 +00:00
Luc Maisonobe
7f162008a2 Added an order 6 fixed-step ODE integrator.
The integrator was designed by H. A. Luther in 1968. We have added a
corresponding step interpolator by solving the order conditions provided
by the rkcheck tool.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588753 13f79535-47bb-0310-9956-ffa450edef68
2014-04-20 13:25:11 +00:00
Phil Steitz
4b724bdc2e Removed deprecations of test(.) methods.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588601 13f79535-47bb-0310-9956-ffa450edef68
2014-04-19 01:27:33 +00:00
Phil Steitz
57247cd3dd Advertise the right exception.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588600 13f79535-47bb-0310-9956-ffa450edef68
2014-04-19 01:24:37 +00:00
Gilles Sadowski
7f31bc04bd MATH-1118
Fixed compatibility of "equals(Object)" with "hashCode()" ("Complex" will
behave as JDK's "Double"). Added new methods for testing floating-point
equality.
Thanks to Cyrille Artho for reporting the issue.


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588500 13f79535-47bb-0310-9956-ffa450edef68
2014-04-18 15:58:47 +00:00
Gilles Sadowski
baf9888f8f Typo.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1588182 13f79535-47bb-0310-9956-ffa450edef68
2014-04-17 09:14:24 +00:00
Gilles Sadowski
70101ee3ca MATH-1118
Equality of double values in accordance with the semantics of "java.lang.Double".


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1587548 13f79535-47bb-0310-9956-ffa450edef68
2014-04-15 12:22:31 +00:00
Gilles Sadowski
5b118e04de MATH-1116
Javadoc


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1587494 13f79535-47bb-0310-9956-ffa450edef68
2014-04-15 10:02:54 +00:00
Thomas Neidhart
1cca06f22c Replace tabs.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1582491 13f79535-47bb-0310-9956-ffa450edef68
2014-03-27 21:47:41 +00:00
Gilles Sadowski
c678ddefae Clearer statements.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1581393 13f79535-47bb-0310-9956-ffa450edef68
2014-03-25 16:05:36 +00:00
Gilles Sadowski
6d3f22348c Minimize number of array accesses.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1581391 13f79535-47bb-0310-9956-ffa450edef68
2014-03-25 16:00:36 +00:00
Gilles Sadowski
5c70086611 "final" keyword.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1581389 13f79535-47bb-0310-9956-ffa450edef68
2014-03-25 15:57:18 +00:00
Gilles Sadowski
4670a7fb9a Minimize number of array accesses.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1581383 13f79535-47bb-0310-9956-ffa450edef68
2014-03-25 15:51:25 +00:00
Gilles Sadowski
6ab8b14847 "final" keyword.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1581381 13f79535-47bb-0310-9956-ffa450edef68
2014-03-25 15:48:28 +00:00
Gilles Sadowski
1879cf1a3d Javadoc.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1579346 13f79535-47bb-0310-9956-ffa450edef68
2014-03-19 18:43:39 +00:00
Gilles Sadowski
7cafdb73f2 MATH-1111
Javadoc.


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1579343 13f79535-47bb-0310-9956-ffa450edef68
2014-03-19 18:33:13 +00:00
Luc Maisonobe
c5ae09d77e Improved brackting utility for univariate solvers.
Bracketing utility for univariate root solvers now returns a tighter
interval than before. It also allows choosing the search interval
expansion rate, supporting both linear and asymptotically exponential
rates.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1578428 13f79535-47bb-0310-9956-ffa450edef68
2014-03-17 15:14:07 +00:00
Luc Maisonobe
5929846a20 Fixed failing test.
As functions evaluations were not counted properly, which has been fixed
a few days ago, the multi-start test in fact did not performed all
expected restarts. This commit fixes this (by increasing the max
evaluations), and fixes the result checks accordingly.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573523 13f79535-47bb-0310-9956-ffa450edef68
2014-03-03 11:11:46 +00:00
Luc Maisonobe
3f0a000fef Prevent penalties to grow multiplicatively in CMAES.
Patch provided by Bruce A Johnson.

JIRA: MATH-1107

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573506 13f79535-47bb-0310-9956-ffa450edef68
2014-03-03 09:58:29 +00:00
Luc Maisonobe
007a701755 Add SVD to GaussNewtonOptimizer
Allow using the SVD decomposition which has excellent stability and can
provide a "solution" for singular problems.

Figured out why one of the least squares tests did not check two of the
states. There was only one equation for the two states. The test now
verifies the states satisfy the constraint.

Patch provided by Evan Ward.

JIRA: MATH-1104

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573351 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 19:54:43 +00:00
Gilles Sadowski
8068e84a33 MATH-1092
Javadoc.


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573341 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 19:38:47 +00:00
Gilles Sadowski
b95cfc9b57 MATH-1092
Added parameter in "LineSearch" and "NonLinearConjugateGradientOptimizer".


git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573316 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 14:54:37 +00:00
Luc Maisonobe
e2dc384d7b Fix switched iterations and evaluations
In LevenbergMarquardtOptimizer the number of iterations and evaluations
was switched in two of the return statements.

Patch provided by Evan Ward.

JIRA: MATH-1106

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573308 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 14:02:50 +00:00
Luc Maisonobe
a6f9630666 Fix checker seeing not old point
ConvergenceCheckers always saw previous.getPoint() to equal
current.getPoint() because the optimizers used the same array and did
not make a copy of the previous point. Fixed by using a new array for
each model evaluation and LSP.evaluate() now makes its own copy of the
state vector as well.

Path provided by Evan Ward.

JIRA: MATH-1103

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573307 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 14:02:21 +00:00
Thomas Neidhart
5a8eff6985 Fix typo.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1573271 13f79535-47bb-0310-9956-ffa450edef68
2014-03-02 08:31:30 +00:00
Gilles Sadowski
f0ae42aa93 MATH-1092
Extracted class "LineSearch" from "PowellOptimizer".
Made method "computeObjectiveValue" public in "MultivariateOptimizer".
Modified "PowellOptimizer" to use the now public class.
"NonLinearConjugateGradientOptimizer" uses the new "LineSearch".
Added constructors to set the line search tolerances and deprecated
obsolete contructors and inner classes ("BracketingStep" and
"LineSearchFunction".
Removed method "findUpperBound".



git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1572988 13f79535-47bb-0310-9956-ffa450edef68
2014-02-28 16:23:26 +00:00
Phil Steitz
ba70cfc5c9 Fixed comment.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1572341 13f79535-47bb-0310-9956-ffa450edef68
2014-02-26 23:24:21 +00:00
Phil Steitz
99189ff527 Added KolmogorovSmirnovTest, deprecated KolmogorovSmirnovDistributio. JIRA: MATH-437
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1572335 13f79535-47bb-0310-9956-ffa450edef68
2014-02-26 23:14:08 +00:00
Luc Maisonobe
eb66fe4a1f Improved test coverage.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571737 13f79535-47bb-0310-9956-ffa450edef68
2014-02-25 16:42:07 +00:00
Gilles Sadowski
d3470c37ab Typo.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571640 13f79535-47bb-0310-9956-ffa450edef68
2014-02-25 10:27:21 +00:00
Gilles Sadowski
1358d274db Fixed small inconsistency.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571639 13f79535-47bb-0310-9956-ffa450edef68
2014-02-25 10:26:55 +00:00
Luc Maisonobe
856e3cf007 Javadoc.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571627 13f79535-47bb-0310-9956-ffa450edef68
2014-02-25 09:21:32 +00:00
Luc Maisonobe
b122db9eda Make AbstractEvaluation public
Allow custom implementations of LeastSquaresProblem to use the default
methods for computing the covariance, rms, etc.

JIRA: MATH-1102

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571307 13f79535-47bb-0310-9956-ffa450edef68
2014-02-24 14:58:07 +00:00
Luc Maisonobe
9ac2b15e4a In LeastSquaresProblem.Evaluation removed the getValue() method.
- The residuals are the really the values of the objective function
  that is being minimized.
- Forcing the value to be a real vector and the residual computed
  through subtraction is an unnecessary constraint. For example
  Rotation.distance() will compute a better residual than
  subtracting the quaternion elements of two rotations.
- Method was not used by any optimizer.

JIRA: MATH-1102

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571306 13f79535-47bb-0310-9956-ffa450edef68
2014-02-24 14:57:44 +00:00
Luc Maisonobe
a573059d05 Moved OptimizationProblem interface to optim package.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571015 13f79535-47bb-0310-9956-ffa450edef68
2014-02-23 14:00:48 +00:00
Luc Maisonobe
dcdfd7ed9e Change private least square problem implementation to internal class.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1571014 13f79535-47bb-0310-9956-ffa450edef68
2014-02-23 14:00:20 +00:00
Luc Maisonobe
f299ecf330 Improved documentation of QR decomposition handling of singular matrix.
JIRA: MATH-1101

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570994 13f79535-47bb-0310-9956-ffa450edef68
2014-02-23 11:10:41 +00:00
Luc Maisonobe
927361d787 QR decomposition can compute pseudo-inverses for tall matrices.
Thanks to Sean Owen for the patch.

JIRA: MATH-1053

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570566 13f79535-47bb-0310-9956-ffa450edef68
2014-02-21 13:18:35 +00:00
Luc Maisonobe
ed7ac7cf74 Field vectors now implement the visitor pattern just like real vectors.
JIRA: MATH-820

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570536 13f79535-47bb-0310-9956-ffa450edef68
2014-02-21 11:26:09 +00:00
Luc Maisonobe
5ea537df99 Un-deprecated RealVector.sparseIterator.
The documentation now explicitly states that entries not iterated above
are the zero ones.

This is part of Apache Commons Math reconsidering support for sparse
linear algebra.

JIRA: MATH-875

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570510 13f79535-47bb-0310-9956-ffa450edef68
2014-02-21 10:16:52 +00:00
Luc Maisonobe
a9d0cc42fe Relaxed specification for function mapping on vectors.
JIRA: MATH-821

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570254 13f79535-47bb-0310-9956-ffa450edef68
2014-02-20 16:16:19 +00:00
Luc Maisonobe
1cd5a3229c Continue un-deprecation of sparse methods.
JIRA: MATH-870
JIRA: MATH-803

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570246 13f79535-47bb-0310-9956-ffa450edef68
2014-02-20 15:56:37 +00:00
Luc Maisonobe
4332119866 Added a test showing the limitation of sparse matrices implementation.
JIRA:MATH-870.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570209 13f79535-47bb-0310-9956-ffa450edef68
2014-02-20 14:52:13 +00:00
Luc Maisonobe
fe0f518f50 computeXxx renamed getXxx in the Evaluation interface (leastsquares).
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1570206 13f79535-47bb-0310-9956-ffa450edef68
2014-02-20 14:35:14 +00:00
Luc Maisonobe
d19b226c54 Make QR the default in GaussNewtonOptimizer
Theoretically QR offers the best blend of speed and numerical stability.
Empirically the QR implementation is slightly faster than the Cholesky
implementation.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569907 13f79535-47bb-0310-9956-ffa450edef68
2014-02-19 20:32:43 +00:00
Luc Maisonobe
3c1bf79202 Add Cholesky option to GaussNewtonOptimizer
Since the normal matrix is symmetric positive (semi-)definite, the
Cholesky decomposition is theoretically faster.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569906 13f79535-47bb-0310-9956-ffa450edef68
2014-02-19 20:32:20 +00:00
Luc Maisonobe
1a6879a002 Make QR in GaussNewton faster and more accurate
Re-factored the code in GaussNewtonOptimizer so that the decomposition
algorithm sees the Jacobian and residuals instead of the normal
equation. This lets the QR algorithm operate directly on the Jacobian
matrix, which is faster and less sensitive to numerical errors. As a
result, one test case that threw a singular matrix exception now passes
with the QR decomposition.

The refactoring also include a speed improvement when computing the
normal matrix for the LU decomposition. Since the normal matrix is
symmetric only half of is computed, which results in a factor of 2 speed
up in computing the normal matrix for problems with many more
measurements than states.

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569905 13f79535-47bb-0310-9956-ffa450edef68
2014-02-19 20:31:47 +00:00
Luc Maisonobe
499101c88c The sparse vector and matrix classes have been un-deprecated.
This is a reversal of a former decision, as we now think we should adopt
a generally accepted behavior which is ... to ignore the problems of
NaNs and infinities in sparse linear algebra entities.

JIRA: MATH-870 (which is therefore NOT fixed)

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@1569825 13f79535-47bb-0310-9956-ffa450edef68
2014-02-19 17:19:59 +00:00