Learn R Programming

Rlinsolve (version 0.3.2)

lsolve.gmres: Generalized Minimal Residual method

Description

GMRES is a generic iterative solver for a nonsymmetric system of linear equations. As its name suggests, it approximates the solution using Krylov vectors with minimal residuals.

Usage

lsolve.gmres(
  A,
  B,
  xinit = NA,
  reltol = 1e-05,
  maxiter = 1000,
  preconditioner = diag(ncol(A)),
  restart = (ncol(A) - 1),
  verbose = TRUE
)

Value

a named list containing

x

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

iter

the number of iterations required.

errors

a vector of errors for stopping criterion.

Arguments

A

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

B

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

xinit

a length-\(n\) 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.

preconditioner

an \((n\times n)\) preconditioning matrix; default is an identity matrix.

restart

the number of iterations before restart.

verbose

a logical; TRUE to show progress of computation.

References

saad_gmres:_1986Rlinsolve

Examples

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

out1 = lsolve.cg(A,b)
out3_1 = lsolve.gmres(A,b,restart=2)
out3_2 = lsolve.gmres(A,b,restart=3)
out3_3 = lsolve.gmres(A,b,restart=4)
matout = cbind(matrix(x),out1$x, out3_1$x, out3_2$x, out3_3$x);
colnames(matout) = c("true x","CG", "GMRES(2)", "GMRES(3)", "GMRES(4)")
print(matout)


Run the code above in your browser using DataLab