edu.rit.numeric
Class NonNegativeLeastSquares
- java.lang.Object
-
- edu.rit.numeric.NonNegativeLeastSquares
-
public class NonNegativeLeastSquares extends java.lang.ObjectClass NonNegativeLeastSquares provides a method for solving a least squares minimization problem with nonnegativity constraints. The solve() method finds an approximate solution to the linear system of equations Ax = b, such that ||Ax - b||2 is minimized, and such that x >= 0. The inputs to and outputs from the solve() method are stored in the fields of an instance of class NonNegativeLeastSquares.The Java code is a translation of the Fortran subroutine NNLS from Charles L. Lawson and Richard J. Hanson, Solving Least Squares Problems (Society for Industrial and Applied Mathematics, 1995), page 161.
-
-
Field Summary
Fields Modifier and Type Field and Description double[][]aThe MxN-element A matrix for the least squares problem.double[]bThe M-element b vector for the least squares problem.int[]indexThe N-element index vector.intMThe number of rows, typically the number of input data points, in the least squares problem.intNThe number of columns, typically the number of output parameters, in the least squares problem.doublenormsqrThe squared Euclidean norm of the residual vector, ||Ax - b||2.intnsetpThe number of elements in the set P; that is, the number of positive values (inactive constraints).double[]xThe N-element x vector for the least squares problem.
-
Constructor Summary
Constructors Constructor and Description NonNegativeLeastSquares(int M, int N)Construct a new nonnegative least squares problem of the given size.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidsolve()Solve this least squares minimization problem with nonnegativity constraints.
-
-
-
Field Detail
-
M
public final int M
The number of rows, typically the number of input data points, in the least squares problem.
-
N
public final int N
The number of columns, typically the number of output parameters, in the least squares problem.
-
a
public final double[][] a
The MxN-element A matrix for the least squares problem. On input to the solve() method, a contains the matrix A. On output, a has been replaced with QA, where Q is an MxM-element orthogonal matrix generated during the solve() method's execution.
-
b
public final double[] b
The M-element b vector for the least squares problem. On input to the solve() method, b contains the vector b. On output, b has been replaced with Qb, where Q is an MxM-element orthogonal matrix generated during the solve() method's execution.
-
x
public final double[] x
The N-element x vector for the least squares problem. On output from the solve() method, x contains the solution vector x.
-
index
public final int[] index
The N-element index vector. On output from the solve() method: index[0] through index[nsetp-1] contain the indexes of the elements in x that are in set P, the set of positive values; that is, the elements that are not forced to be zero (inactive constraints). index[nsetp] through index[N-1] contain the indexes of the elements in x that are in set Z, the set of zero values; that is, the elements that are forced to be zero (active constraints).
-
nsetp
public int nsetp
The number of elements in the set P; that is, the number of positive values (inactive constraints). An output of the solve() method.
-
normsqr
public double normsqr
The squared Euclidean norm of the residual vector, ||Ax - b||2. An output of the solve() method.
-
-
Constructor Detail
-
NonNegativeLeastSquares
public NonNegativeLeastSquares(int M, int N)Construct a new nonnegative least squares problem of the given size. Fields M and N are set to the given values. The array fields a, b, x, and index are allocated with the proper sizes but are not filled in.- Parameters:
M- Number of rows (input data points) in the least squares problem.N- Number of columns (output parameters) in the least squares problem.- Throws:
java.lang.IllegalArgumentException- (unchecked exception) Thrown if M <= 0 or N <= 0.
-
-
Method Detail
-
solve
public void solve()
Solve this least squares minimization problem with nonnegativity constraints. The solve() method finds an approximate solution to the linear system of equations Ax = b, such that ||Ax - b||2 is minimized, and such that x >= 0. On input, the field a must be filled in with the matrix A and the field b must be filled in with the vector b for the problem to be solved. On output, the other fields are filled in with the solution as explained in the documentation for each field.- Throws:
TooManyIterationsException- (unchecked exception) Thrown if too many iterations occurred without finding a minimum (more than 3N iterations).
-
-
DMelt 3.0 © DataMelt by jWork.ORG