NNLS
NNLS stands for nonnegative least squares, a form of constrained least squares optimization. The problem seeks a vector x in R^n that minimizes the squared Euclidean norm ||Ax - b||_2^2 subject to x >= 0, where A is an m-by-n matrix and b is in R^m. The objective is the standard L2 error, but the nonnegativity constraint yields a solution with nonnegative components, which is often desirable in interpretable modeling such as abundances or concentrations.
The problem was formalized with notable algorithms by Lawson and Hanson in 1974, introducing an active-set
Applications of NNLS span several fields. In spectroscopic analysis and chemometrics, it is used to estimate
Software implementations are widely available. In MATLAB, lsqnonneg implements NNLS; in Python, scipy.optimize.nnls provides a standard