Parallel Colt 0.7.2

cern.colt.matrix.tdouble.algo.solver
Class DoubleHyBR

java.lang.Object
  extended by cern.colt.matrix.tdouble.algo.solver.AbstractDoubleIterativeSolver
      extended by cern.colt.matrix.tdouble.algo.solver.DoubleHyBR
All Implemented Interfaces:
DoubleIterativeSolver

public class DoubleHyBR
extends AbstractDoubleIterativeSolver

HyBR is a Hybrid Bidiagonalization Regularization method used for solving large-scale, ill-posed inverse problems of the form: b = A*x + noise The method combines an iterative Lanczos Bidiagonalization (LBD) Method with an SVD-based regularization method to stabilize the semiconvergence behavior that is characteristic of many ill-posed problems. The code is derived from RestoreTools: An Object Oriented Matlab Package for Image Restoration written by James G. Nagy and several of his students, including Julianne Chung, Katrina Palmer, Lisa Perrone, and Ryan Wright.

References:

[1] Paige and Saunders, "LSQR an algorithm for sparse linear equations an sparse least squares", ACM Trans. Math Software, 8 (1982), pp. 43-71.

[2] Bjorck, Grimme and Van Dooren, "An implicit shift bidiagonalization algorithm for ill-posed systems", BIT 34 (11994), pp. 520-534.

[3] Chung, Nagy and O'Leary, "A Weighted GCV Method for Lanczos Hybrid Regularization", Elec. Trans. Numer. Anal., 28 (2008), pp. 149--167.

Author:
Piotr Wendykier (piotr.wendykier@gmail.com)

Constructor Summary
DoubleHyBR()
          Creates new instance of HyBR solver with default parameters:

innerSolver = HyBR.InnerSolver.TIKHONOV
regularizationMethod = HyBR.RegularizationMethod.ADAPTWGCV
regularizationParameter = 0
omega = 0
reorthogonalize = false
beginRegularization = 2
flatTolerance = 1e-6
computeRnrm = false;
DoubleHyBR(HyBRInnerSolver innerSolver, HyBRRegularizationMethod regularizationMethod, double regularizationParameter, double omega, boolean reorthogonalize, int beginRegularization, double flatTolerance, boolean computeRnrm)
          Creates new instance of HyBR solver.
 
Method Summary
 DoubleMatrix1D solve(DoubleMatrix2D A, DoubleMatrix1D b, DoubleMatrix1D x)
          Solves the given problem, writing result into the vector.
 
Methods inherited from class cern.colt.matrix.tdouble.algo.solver.AbstractDoubleIterativeSolver
getIterationMonitor, getPreconditioner, setIterationMonitor, setPreconditioner
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DoubleHyBR

public DoubleHyBR()
Creates new instance of HyBR solver with default parameters:

innerSolver = HyBR.InnerSolver.TIKHONOV
regularizationMethod = HyBR.RegularizationMethod.ADAPTWGCV
regularizationParameter = 0
omega = 0
reorthogonalize = false
beginRegularization = 2
flatTolerance = 1e-6
computeRnrm = false;


DoubleHyBR

public DoubleHyBR(HyBRInnerSolver innerSolver,
                  HyBRRegularizationMethod regularizationMethod,
                  double regularizationParameter,
                  double omega,
                  boolean reorthogonalize,
                  int beginRegularization,
                  double flatTolerance,
                  boolean computeRnrm)
Creates new instance of HyBR solver.

Parameters:
innerSolver - solver for the inner problem
regularizationMethod - a method for choosing a regularization parameter
regularizationParameter - if regularizationMethod == HyBR.RegularizationMethod.NONE then the regularization parameter has to be specified here (value from the interval (0,1))
omega - regularizationMethod == HyBR.RegularizationMethod.WGCV then omega has to be specified here (must be nonnegative)
reorthogonalize - if thue then Lanczos subspaces are reorthogonalized
beginRegularization - begin regularization after this iteration (must be at least 2)
flatTolerance - tolerance for detecting flatness in the GCV curve as a stopping criteria (must be nonnegative)
computeRnorm - if true then the norm of relative residual is computed
Method Detail

solve

public DoubleMatrix1D solve(DoubleMatrix2D A,
                            DoubleMatrix1D b,
                            DoubleMatrix1D x)
                     throws IterativeSolverDoubleNotConvergedException
Description copied from interface: DoubleIterativeSolver
Solves the given problem, writing result into the vector.

Parameters:
A - Matrix of the problem
b - Right hand side
x - Solution is stored here. Also used as initial guess
Returns:
The solution vector x
Throws:
IterativeSolverDoubleNotConvergedException

Parallel Colt 0.7.2

Jump to the Parallel Colt Homepage