| lsolve.bicgstab {Rlinsolve} | R Documentation |
Biconjugate Gradient Stabilized Method
Description
Biconjugate Gradient Stabilized(BiCGSTAB) method is a stabilized version of Biconjugate Gradient method for nonsymmetric systems using
evaluations with respect to A^T as well as A in matrix-vector multiplications.
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.bicgstab(
A,
B,
xinit = NA,
reltol = 1e-05,
maxiter = 1000,
preconditioner = diag(ncol(A)),
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 |
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
van der Vorst HA (1992). “Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems.” SIAM Journal on Scientific and Statistical Computing, 13(2), 631–644. ISSN 0196-5204, 2168-3417.
Examples
## Overdetermined System
set.seed(100)
A = matrix(rnorm(10*5),nrow=10)
x = rnorm(5)
b = A%*%x
out1 = lsolve.cg(A,b)
out2 = lsolve.bicg(A,b)
out3 = lsolve.bicgstab(A,b)
matout = cbind(matrix(x),out1$x, out2$x, out3$x);
colnames(matout) = c("true x","CG result", "BiCG result", "BiCGSTAB result")
print(matout)