lsolve.gs {Rlinsolve}R Documentation

Gauss-Seidel method

Description

Gauss-Seidel(GS) method is an iterative algorithm for solving a system of linear equations, with a decomposition A=D+L+UA = D+L+U where DD is a diagonal matrix and LL and U are strictly lower/upper triangular matrix respectively. For a square matrix AA, it is required to be diagonally dominant or symmetric and positive definite. For an overdetermined system where nrow(A)>ncol(A), it is automatically transformed to the normal equation. Underdetermined system - nrow(A)<ncol(A) - is not supported.

Usage

lsolve.gs(
  A,
  B,
  xinit = NA,
  reltol = 1e-05,
  maxiter = 1000,
  adjsym = TRUE,
  verbose = TRUE
)

Arguments

A

an (m×n)(m\times n) dense or sparse matrix. See also sparseMatrix.

B

a vector of length mm or an (m×k)(m\times k) matrix (dense or sparse) for solving kk systems simultaneously.

xinit

a length-nn vector for initial starting point. NA to start from a random initial point near 0.

reltol

tolerance level for stopping iterations.

maxiter

maximum number of iterations allowed.

adjsym

a logical; TRUE to symmetrize the system by transforming the system into normal equation, FALSE otherwise.

verbose

a logical; TRUE to show progress of computation.

Value

a named list containing

x

solution; a vector of length nn or a matrix of size (n×k)(n\times k).

iter

the number of iterations required.

errors

a vector of errors for stopping criterion.

References

Demmel JW (1997). Applied Numerical Linear Algebra. Society for Industrial and Applied Mathematics. ISBN 978-0-89871-389-3 978-1-61197-144-6.

Examples

## Overdetermined System
set.seed(100)
A = matrix(rnorm(10*5),nrow=10)
x = rnorm(5)
b = A%*%x

out = lsolve.gs(A,b)
matout = cbind(matrix(x),out$x); colnames(matout) = c("true x","est from GS")
print(matout)


[Package Rlinsolve version 0.3.2 Index]