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.
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)