Class SuccessiveOverrelaxationSolver

  • All Implemented Interfaces:
    IterativeLinearSystemSolver

    public class SuccessiveOverrelaxationSolver
    extends Object
    implements IterativeLinearSystemSolver
    The Successive Overrelaxation method (SOR), is devised by applying extrapolation to the Gauss-Seidel method. This extrapolation takes the form of a weighted average between the previous iterate and the computed Gauss-Seidel iterate successively for each component. If the weight ω is chosen optimally, SOR may converge faster than the Gauss-Seidel method by an order of magnitude. If the coefficient matrix A is symmetric positive definite, SOR is guaranteed to converge for any value of ω between 0 and 2, though the choice of ω can significantly affect the rate of convergence. In principle, given the spectral radius ρ of the Jacobi iteration matrix, one can determine a priori the theoretically optimal value of ω for SOR:
    ωopt = 2 / (1 + sqrt(1 - ρ2))
    This is seldom done, since calculating the spectral radius of the Jacobi matrix requires an impractical amount of computation. However, relatively inexpensive rough estimates of ρ can yield reasonable estimates for the optimal value of ω.

    This implementation does not support preconditioning.

    See Also:
    Wikipedia: Successive over-relaxation method