public class NNLS
extends Object
Modifier and Type | Class and Description |
---|---|
static class |
NNLS.Workspace |
Constructor and Description |
---|
NNLS() |
Modifier and Type | Method and Description |
---|---|
static NNLS.Workspace |
createWorkspace(int n) |
static double[] |
solve(double[] ata,
double[] atb,
NNLS.Workspace ws)
Solve a least squares problem, possibly with nonnegativity constraints, by a modified
projected gradient method.
|
public static NNLS.Workspace createWorkspace(int n)
public static double[] solve(double[] ata, double[] atb, NNLS.Workspace ws)
We solve the problem
$$ min_x 1/2 x^T ata x^T - x^T atb $$where x is nonnegative.
The method used is similar to one described by Polyak (B. T. Polyak, The conjugate gradient method in extremal problems, Zh. Vychisl. Mat. Mat. Fiz. 9(4)(1969), pp. 94-112) for bound- constrained nonlinear programming. Polyak unconditionally uses a conjugate gradient direction, however, while this method only uses a conjugate gradient direction if the last iteration did not cause a previously-inactive constraint to become active.
ata
- (undocumented)atb
- (undocumented)ws
- (undocumented)