Previous: Functions of a Matrix, Up: Linear Algebra [Contents][Index]

- :
`x`=**bicg***(*`A`,`b`,`rtol`,`maxit`,`M1`,`M2`,`x0`) - :
`x`=**bicg***(*`A`,`b`,`rtol`,`maxit`,`P`) - :
*[*`x`,`flag`,`relres`,`iter`,`resvec`] =**bicg***(*`A`,`b`, …) Solve

`A x = b`

using the Bi-conjugate gradient iterative method.- -
`rtol`is the relative tolerance, if not given or set to [] the default value 1e-6 is used. - -
`maxit`the maximum number of outer iterations, if not given or set to [] the default value`min (20, numel (b))`

is used. - -
`x0`the initial guess, if not given or set to [] the default value`zeros (size (b))`

is used.

`A`can be passed as a matrix or as a function handle or inline function`f`

such that`f(x, "notransp") = A*x`

and`f(x, "transp") = A'*x`

.The preconditioner

`P`is given as`P = M1 * M2`

. Both`M1`and`M2`can be passed as a matrix or as a function handle or inline function`g`

such that`g(x, "notransp") = M1 \ x`

or`g(x, "notransp") = M2 \ x`

and`g(x, "transp") = M1' \ x`

or`g(x, "transp") = M2' \ x`

.If called with more than one output parameter

- -
`flag`indicates the exit status:- - 0: iteration converged to the within the chosen tolerance
- - 1: the maximum number of iterations was reached before convergence
- - 3: the algorithm reached stagnation

(the value 2 is unused but skipped for compatibility).

- -
`relres`is the final value of the relative residual. - -
`iter`is the number of iterations performed. - -
`resvec`is a vector containing the relative residual at each iteration.

- -

- :
`x`=**bicgstab***(*`A`,`b`,`rtol`,`maxit`,`M1`,`M2`,`x0`) - :
`x`=**bicgstab***(*`A`,`b`,`rtol`,`maxit`,`P`) - :
*[*`x`,`flag`,`relres`,`iter`,`resvec`] =**bicgstab***(*`A`,`b`, …) Solve

`A x = b`

using the stabilizied Bi-conjugate gradient iterative method.- -
`rtol`is the relative tolerance, if not given or set to [] the default value 1e-6 is used. - -
`maxit`the maximum number of outer iterations, if not given or set to [] the default value`min (20, numel (b))`

is used. - -
`x0`the initial guess, if not given or set to [] the default value`zeros (size (b))`

is used.

`A`can be passed as a matrix or as a function handle or inline function`f`

such that`f(x) = A*x`

.The preconditioner

`P`is given as`P = M1 * M2`

. Both`M1`and`M2`can be passed as a matrix or as a function handle or inline function`g`

such that`g(x) = M1 \ x`

or`g(x) = M2 \ x`

.If called with more than one output parameter

- -
`flag`indicates the exit status:- - 0: iteration converged to the within the chosen tolerance
- - 1: the maximum number of iterations was reached before convergence
- - 3: the algorithm reached stagnation

(the value 2 is unused but skipped for compatibility).

- -
`relres`is the final value of the relative residual. - -
`iter`is the number of iterations performed. - -
`resvec`is a vector containing the relative residual at each iteration.

- -

- :
`x`=**cgs***(*`A`,`b`,`rtol`,`maxit`,`M1`,`M2`,`x0`) - :
`x`=**cgs***(*`A`,`b`,`rtol`,`maxit`,`P`) - :
*[*`x`,`flag`,`relres`,`iter`,`resvec`] =**cgs***(*`A`,`b`, …) Solve

`A x = b`

, where`A`is a square matrix, using the Conjugate Gradients Squared method.- -
`rtol`is the relative tolerance, if not given or set to [] the default value 1e-6 is used. - -
`maxit`the maximum number of outer iterations, if not given or set to [] the default value`min (20, numel (b))`

is used. - -
`x0`the initial guess, if not given or set to [] the default value`zeros (size (b))`

is used.

`A`can be passed as a matrix or as a function handle or inline function`f`

such that`f(x) = A*x`

.The preconditioner

`P`is given as`P = M1 * M2`

. Both`M1`and`M2`can be passed as a matrix or as a function handle or inline function`g`

such that`g(x) = M1 \ x`

or`g(x) = M2 \ x`

.If called with more than one output parameter

- -
`flag`indicates the exit status:- - 0: iteration converged to the within the chosen tolerance
- - 1: the maximum number of iterations was reached before convergence
- - 3: the algorithm reached stagnation

(the value 2 is unused but skipped for compatibility).

- -
`relres`is the final value of the relative residual. - -
`iter`is the number of iterations performed. - -
`resvec`is a vector containing the relative residual at each iteration.

- -

- :
`x`=**gmres***(*`A`,`b`,`m`,`rtol`,`maxit`,`M1`,`M2`,`x0`) - :
`x`=**gmres***(*`A`,`b`,`m`,`rtol`,`maxit`,`P`) - :
*[*`x`,`flag`,`relres`,`iter`,`resvec`] =**gmres***(…)* Solve

`A x = b`

using the Preconditioned GMRES iterative method with restart, a.k.a. PGMRES(m).- -
`rtol`is the relative tolerance, if not given or set to [] the default value 1e-6 is used. - -
`maxit`is the maximum number of outer iterations, if not given or set to [] the default value`min (10, numel (b) / restart)`

is used. - -
`x0`is the initial guess, if not given or set to [] the default value`zeros (size (b))`

is used. - -
`m`is the restart parameter, if not given or set to [] the default value`numel (b)`

is used.

Argument

`A`can be passed as a matrix, function handle, or inline function`f`

such that`f(x) = A*x`

.The preconditioner

`P`is given as`P = M1 * M2`

. Both`M1`and`M2`can be passed as a matrix, function handle, or inline function`g`

such that`g(x) = M1\x`

or`g(x) = M2\x`

.Besides the vector

`x`, additional outputs are:- -
`flag`indicates the exit status:- 0 : iteration converged to within the specified tolerance
- 1 : maximum number of iterations exceeded
- 2 : unused, but skipped for compatibility
- 3 : algorithm reached stagnation (no change between iterations)

- -
`relres`is the final value of the relative residual. - -
`iter`is a vector containing the number of outer iterations and total iterations performed. - -
`resvec`is a vector containing the relative residual at each iteration.

- -

- :
`x`=**qmr***(*`A`,`b`,`rtol`,`maxit`,`M1`,`M2`,`x0`) - :
`x`=**qmr***(*`A`,`b`,`rtol`,`maxit`,`P`) - :
*[*`x`,`flag`,`relres`,`iter`,`resvec`] =**qmr***(*`A`,`b`, …) Solve

`A x = b`

using the Quasi-Minimal Residual iterative method (without look-ahead).- -
`rtol`is the relative tolerance, if not given or set to [] the default value 1e-6 is used. - -
`maxit`the maximum number of outer iterations, if not given or set to [] the default value`min (20, numel (b))`

is used. - -
`x0`the initial guess, if not given or set to [] the default value`zeros (size (b))`

is used.

`A`can be passed as a matrix or as a function handle or inline function`f`

such that`f(x, "notransp") = A*x`

and`f(x, "transp") = A'*x`

.The preconditioner

`P`is given as`P = M1 * M2`

. Both`M1`and`M2`can be passed as a matrix or as a function handle or inline function`g`

such that`g(x, "notransp") = M1 \ x`

or`g(x, "notransp") = M2 \ x`

and`g(x, "transp") = M1' \ x`

or`g(x, "transp") = M2' \ x`

.If called with more than one output parameter

- -
`flag`indicates the exit status:- - 0: iteration converged to the within the chosen tolerance
- - 1: the maximum number of iterations was reached before convergence
- - 3: the algorithm reached stagnation

(the value 2 is unused but skipped for compatibility).

- -
`relres`is the final value of the relative residual. - -
`iter`is the number of iterations performed. - -
`resvec`is a vector containing the residual norms at each iteration.

References:

- R. Freund and N. Nachtigal, QMR: a quasi-minimal residual method for non-Hermitian linear systems, Numerische Mathematik, 1991, 60, pp. 315-339.
- R. Barrett, M. Berry, T. Chan, J. Demmel, J. Donato, J. Dongarra, V. Eijkhour, R. Pozo, C. Romine, and H. van der Vorst, Templates for the solution of linear systems: Building blocks for iterative methods, SIAM, 2nd ed., 1994.

- -

Previous: Functions of a Matrix, Up: Linear Algebra [Contents][Index]