SuanShu, a Java numerical and statistical library

com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.nonstationary
Class SteepestDescentSolver

java.lang.Object
  extended by com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.nonstationary.SteepestDescentSolver
All Implemented Interfaces:
IterativeLinearSystemSolver

public class SteepestDescentSolver
extends java.lang.Object
implements IterativeLinearSystemSolver

The Steepest Descent method (SDM) solves a symmetric n-by-n linear system. The convergence is guaranteed if A is symmetric positive definite.

Only left preconditioning is supported in this implementation. The preconditioner must be symmetric and positive definite.

See Also:
Wikipedia: Gradient descent

Nested Class Summary
 
Nested classes/interfaces inherited from interface com.numericalmethod.suanshu.matrix.doubles.matrixtype.sparse.solver.iterative.IterativeLinearSystemSolver
IterativeLinearSystemSolver.Solution
 
Field Summary
static int DEFAULT_RESIDUAL_REFRESH_RATE
          The algorithm recomputes the residual as b - Axi once per this number of iterations
 
Constructor Summary
SteepestDescentSolver(int maxIteration, Tolerance tolerance)
          Construct a Steepest Descent method (SDM) solver.
SteepestDescentSolver(PreconditionerFactory leftPreconditionerFactory, int residualRefreshRate, int maxIteration, Tolerance tolerance)
          Construct a Steepest Descent method (SDM) solver.
 
Method Summary
 IterativeLinearSystemSolver.Solution solve(LSProblem problem)
           
 IterativeLinearSystemSolver.Solution solve(LSProblem problem, IterationMonitor<Vector> monitor)
          Solves iteratively Ax = b until the solution converges, i.e., the norm of residual (b - Ax) is less than or equal to the threshold.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_RESIDUAL_REFRESH_RATE

public static final int DEFAULT_RESIDUAL_REFRESH_RATE
The algorithm recomputes the residual as b - Axi once per this number of iterations

See Also:
Constant Field Values
Constructor Detail

SteepestDescentSolver

public SteepestDescentSolver(PreconditionerFactory leftPreconditionerFactory,
                             int residualRefreshRate,
                             int maxIteration,
                             Tolerance tolerance)
Construct a Steepest Descent method (SDM) solver.

Parameters:
leftPreconditionerFactory - constructs a new left preconditioner
residualRefreshRate - the number of iterations before the next refresh
maxIteration - the maximum number of iterations
tolerance - the convergence threshold

SteepestDescentSolver

public SteepestDescentSolver(int maxIteration,
                             Tolerance tolerance)
Construct a Steepest Descent method (SDM) solver.

Parameters:
maxIteration - the maximum number of iterations
tolerance - the convergence threshold
Method Detail

solve

public IterativeLinearSystemSolver.Solution solve(LSProblem problem)
                                           throws ConvergenceFailure
Throws:
ConvergenceFailure

solve

public IterativeLinearSystemSolver.Solution solve(LSProblem problem,
                                                  IterationMonitor<Vector> monitor)
                                           throws ConvergenceFailure
Description copied from interface: IterativeLinearSystemSolver
Solves iteratively
Ax = b
until the solution converges, i.e., the norm of residual (b - Ax) is less than or equal to the threshold.

Specified by:
solve in interface IterativeLinearSystemSolver
Parameters:
problem - a system of linear equations
monitor - an iteration monitor
Returns:
an (approximate) solution to the linear problem
Throws:
ConvergenceFailure - if the algorithm fails to converge

SuanShu, a Java numerical and statistical library

Copyright © 2012 Numerical Method Inc. Ltd. All Rights Reserved.