SciPy

scipy.optimize.nnls

scipy.optimize.nnls(A, b, maxiter=None)[source]

Solve argmin_x || Ax - b ||_2 for x>=0. This is a wrapper for a FORTRAN non-negative least squares solver.

Parameters:
A : ndarray

Matrix A as shown above.

b : ndarray

Right-hand side vector.

maxiter: int, optional

Maximum number of iterations, optional. Default is 3 * A.shape[1].

Returns:
x : ndarray

Solution vector.

rnorm : float

The residual, || Ax-b ||_2.

Notes

The FORTRAN code was published in the book below. The algorithm is an active set method. It solves the KKT (Karush-Kuhn-Tucker) conditions for the non-negative least squares problem.

References

Lawson C., Hanson R.J., (1987) Solving Least Squares Problems, SIAM