R: Nonnegative Least Squares

nnls {limSolve} | R Documentation

## Nonnegative Least Squares

### Description

Solves the following inverse problem:

\min(||Ax-b||^2)

subject to

x>=0

Uses subroutine nnls (FORTRAN) from Linpack

### Usage

    nnls(A, B, tol = sqrt(.Machine$double.eps), verbose = TRUE)

### Arguments

`A` | numeric matrix containing the coefficients of the equality constraints Ax~=B; if the columns of `A` have a `names` attribute, the names will be used to label the output.
`B` | numeric vector containing the right-hand side of the equality constraints.
`tol` | tolerance (for singular value decomposition and for the "equality" constraints).
`verbose` | logical to print `nnls` error messages.

### Value

a list containing:

`X` | vector containing the solution of the nonnegative least squares problem.
`residualNorm` | scalar, the sum of absolute values of residuals of violated inequalities (i.e. sumof x[<0]); should be zero or very small if the problem is feasible.
`solutionNorm` | scalar, the value of the quadratic function at the solution, i.e. the value of \min(||Ax-b||^2).
`IsError` | logical, `TRUE` if an error occurred.
`type` | the string "nnls", such that how the solution was obtained can be traced.
`numiter` | the number of iterations.

### Author(s)

Karline Soetaert <karline.soetaert@nioz.nl>

### References

Lawson C.L.and Hanson R.J. 1974. Solving Least Squares Problems, Prentice-Hall

Lawson C.L.and Hanson R.J. 1995. Solving Least Squares Problems. SIAM classics in applied mathematics, Philadelphia. (reprint of book)

### See Also

`ldei`, which includes equalities

### Examples

    A <- matrix(nrow = 2, ncol = 3, data = c(3, 2, 2, 4, 2, 1))
    B <- c(-4, 3)
    nnls(A, B)

[Package limSolve version 1.5.6 Index]