Class GaussNewtonOptimizer
java.lang.Object
org.hipparchus.optim.nonlinear.vector.leastsquares.GaussNewtonOptimizer
- All Implemented Interfaces:
LeastSquaresOptimizer
Gauss-Newton least-squares solver.
This class solve a least-square problem by solving the normal equations of the linearized problem at each iteration. Either LU decomposition or Cholesky decomposition can be used to solve the normal equations, or QR decomposition or SVD decomposition can be used to solve the linear system. Cholesky/LU decomposition is faster but QR decomposition is more robust for difficult problems, and SVD can compute a solution for rank-deficient problems.
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.hipparchus.optim.nonlinear.vector.leastsquares.LeastSquaresOptimizer
LeastSquaresOptimizer.Optimum
-
Constructor Summary
ConstructorDescriptionCreates a Gauss Newton optimizer.GaussNewtonOptimizer
(MatrixDecomposer decomposer, boolean formNormalEquations) Create a Gauss Newton optimizer that uses the given matrix decomposition algorithm to solve the normal equations. -
Method Summary
Modifier and TypeMethodDescriptionGet the matrix decomposition algorithm.boolean
Get if the normal equations are explicitly formed.Solve the non-linear least squares problem.toString()
withDecomposer
(MatrixDecomposer newDecomposer) Configure the matrix decomposition algorithm.withFormNormalEquations
(boolean newFormNormalEquations) Configure if the normal equations should be explicitly formed.
-
Constructor Details
-
GaussNewtonOptimizer
public GaussNewtonOptimizer()Creates a Gauss Newton optimizer.The default for the algorithm is to use QR decomposition and not form normal equations.
-
GaussNewtonOptimizer
Create a Gauss Newton optimizer that uses the given matrix decomposition algorithm to solve the normal equations.- Parameters:
decomposer
- the decomposition algorithm to use.formNormalEquations
- whether the normal equations should be explicitly formed. Iftrue
thendecomposer
is used to solve JTJx=JTr, otherwisedecomposer
is used to solve Jx=r. Ifdecomposer
can only solve square systems then this parameter should betrue
.
-
-
Method Details
-
getDecomposer
Get the matrix decomposition algorithm.- Returns:
- the decomposition algorithm.
-
withDecomposer
Configure the matrix decomposition algorithm.- Parameters:
newDecomposer
- the decomposition algorithm to use.- Returns:
- a new instance.
-
isFormNormalEquations
public boolean isFormNormalEquations()Get if the normal equations are explicitly formed.- Returns:
- if the normal equations should be explicitly formed. If
true
thendecomposer
is used to solve JTJx=JTr, otherwisedecomposer
is used to solve Jx=r.
-
withFormNormalEquations
Configure if the normal equations should be explicitly formed.- Parameters:
newFormNormalEquations
- whether the normal equations should be explicitly formed. Iftrue
thendecomposer
is used to solve JTJx=JTr, otherwisedecomposer
is used to solve Jx=r. Ifdecomposer
can only solve square systems then this parameter should betrue
.- Returns:
- a new instance.
-
optimize
Solve the non-linear least squares problem.- Specified by:
optimize
in interfaceLeastSquaresOptimizer
- Parameters:
lsp
- the problem definition, including model function and convergence criteria.- Returns:
- The optimum.
-
toString
-