scipy.optimize.nnls#
- scipy.optimize.nnls(A, b, maxiter=None)[source]#
Solve
argmin_x || Ax - b ||_2forx>=0. This is a wrapper for a FORTRAN non-negative least squares solver.- Parameters
- Andarray
Matrix
Aas shown above.- bndarray
Right-hand side vector.
- maxiter: int, optional
Maximum number of iterations, optional. Default is
3 * A.shape[1].
- Returns
- xndarray
Solution vector.
- rnormfloat
The residual,
|| Ax-b ||_2.
See also
lsq_linearLinear least squares with bounds on the variables
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
Examples
>>> from scipy.optimize import nnls ... >>> A = np.array([[1, 0], [1, 0], [0, 1]]) >>> b = np.array([2, 1, 1]) >>> nnls(A, b) (array([1.5, 1. ]), 0.7071067811865475)
>>> b = np.array([-1, -1, -1]) >>> nnls(A, b) (array([0., 0.]), 1.7320508075688772)