| lsolve.cg {Rlinsolve} | R Documentation | 
Conjugate Gradient method
Description
Conjugate Gradient(CG) method is an iterative algorithm for solving a system of linear equations where the system
is symmetric and positive definite.
For a square matrix A, it is required to be 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. Preconditioning matrix M, in theory, should be symmetric and positive definite
with fast computability for inverse, though it is not limited until the solver level.
Usage
lsolve.cg(
  A,
  B,
  xinit = NA,
  reltol = 1e-05,
  maxiter = 10000,
  preconditioner = diag(ncol(A)),
  adjsym = TRUE,
  verbose = TRUE
)
Arguments
| A | an  | 
| B | a vector of length  | 
| xinit | a length- | 
| reltol | tolerance level for stopping iterations. | 
| maxiter | maximum number of iterations allowed. | 
| preconditioner | an  | 
| adjsym | a logical;  | 
| verbose | a logical;  | 
Value
a named list containing
- x
- solution; a vector of length - nor a matrix of size- (n\times k).
- iter
- the number of iterations required. 
- errors
- a vector of errors for stopping criterion. 
References
Hestenes MR, Stiefel E (1952). “Methods of conjugate gradients for solving linear systems.” Journal of Research of the National Bureau of Standards, 49(6), 409. ISSN 0091-0635.
Examples
## Overdetermined System
set.seed(100)
A = matrix(rnorm(10*5),nrow=10)
x = rnorm(5)
b = A%*%x
out1 = lsolve.sor(A,b,w=0.5)
out2 = lsolve.cg(A,b)
matout = cbind(matrix(x),out1$x, out2$x);
colnames(matout) = c("true x","SSOR result", "CG result")
print(matout)