Version 0.1
[x, g, info] = bcls( A, b, bl, bu, x, c, damp, options )
or
[x, g, info] = bcls( Aprod, b, bl, bu, x, c, damp, options )
Solves the bound-constrained linear least-squares problem
minimize || ( A ) (b) ||
|| ( ) x - ( ) || + c'x s.t. bl <= x <= bu,
x || (damp I) (0) ||
where
A is an m x n dense or sparse matrix.
Aprod is a function with the prototype
[r] = Aprod( mode, ix, z )
where r = y + A(:,ix) * z(ix) if mode == 1
and r = x + A' * z if mode == 2.
Here, ix is a vector that holds a subset of indices of
1:n. In the case where mode == 2, only the components of
r(ix) will be used; the other components will be ignored.
b is the RHS vector (length m).
bl, bu (optional) are n-vectors of lower and upper bounds on
x . If these are empty or missing, then they will be
substitued with -inf and +inf, respectively.
x (optional) is an n-vector that gives an estimate of the
solution. If x is empty or missing, then x = 0 is the
default.
c (optional) is an n-vector that defines the linear term.
If c is empty or missing, then c = 0 is the default.
damp (optional) is a scalar regularization term. If damp is
empty or missing, then damp = 0 is used.
options (optional) is a structure with optional parameters that
control the bcls algorithm. The special call
[options] = bcls();
returns an empty structure with valid option fields:
.n number of columns in A
.print_level 0 = (none) ... = 6 (most)
.proj_search 0 = first exact min along projected path
(default)
1 = projected backtrack
.newton_step 0 = LSQR (default), 1 = CGLS
.opt_tol default is 1e-6
.major_itns default is 5 * n
.minor_itns default is 10 * n
.Usolve function handle to preconditioning routine.
The (optional) preconditioning routine Usolve must have the prototype
z = Usolve( mode, ix, q )
where z solves U z = q if mode == 1
and z solves U'z = q if mode == 2.
As is the case with Aprod, ix is a vector that holds a subset of
"participating" indices in 1:n.
OUTPUTS
x is a solution (if all went well!).
g is the gradient of the objective at x.
info is a structure that describes the status of the BCLS solve,
and has fields
.dInf the largest gradient among the free vars
.jInf the variable index with the largest gradient
.major_itns number of major iterations
.minor_itns total number of minor (CG) iterations
.exit exit status
0 = converged
1 = too many major iterations
2 = too many minor iterations
3 = undefined exit (bug?)
4 = exit with direction of inifinite descent
5 = bounds are inconsistent
6 = linesearch failure
These are exits requested by the user's routines:
100 = Aprod
110 = Usolve
.message string with BCLS's exit status
.time total solution time (seconds).
Generated on Sun Mar 4 22:50:03 2007 by Doxygen 1.5.1