NonNegativeLeastSquares
edu.rit.numeric

Class NonNegativeLeastSquares



  • public class NonNegativeLeastSquaresextends Object
    Class 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 TypeField and Description
      double[][]a
      The MxN-element A matrix for the least squares problem.
      double[]b
      The M-element b vector for the least squares problem.
      int[]index
      The N-element index vector.
      intM
      The number of rows, typically the number of input data points, in the least squares problem.
      intN
      The number of columns, typically the number of output parameters, in the least squares problem.
      doublenormsqr
      The squared Euclidean norm of the residual vector, ||Ax - b||2.
      intnsetp
      The number of elements in the set P; that is, the number of positive values (inactive constraints).
      double[]x
      The 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.
    • 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:
        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).

SCaVis 1.8 © jWork.org