In mathematics, more specifically in numerical linear algebra, the biconjugate gradient method is an algorithm to solve systems of linear equations
Unlike the conjugate gradient method, this algorithm does not require the matrix A to be self-adjoint, but instead one needs to perform multiplications by the conjugate transpose A*.
Contents |
The algorithm
- Choose initial guess
, two other vectors
and
and a preconditioner 




- for
do
In the above formulation, the computed
and
satisfy
and thus are the respective residuals corresponding to
and
, as approximate solutions to the systems
Discussion
The biconjugate gradient method is numerically unstable[citation needed], but very important from theoretical point of view. Define the iteration steps by
where j < k using the related projection
with
These related projections may be iterated themselves as
The new directions
are then orthogonal to the residuals:
which themselves satisfy
where i,j < k.
The biconjugate gradient method now makes a special choice and uses the setting
This particular choice allows to avoid explicit evaluations of Pk and A−1, and subsequently leads to the algorithm stated above.
Properties
- If
is self-adjoint,
and b * = b, then
,
, and the conjugate gradient method produces the same sequence
at half the computational cost.
- When applied to an n-dimensional system, the biconjugate gradient method returns the exact solution within n iterations after iterating the full space and thus is a direct method.
- The sequences produced by the algorithm are biorthogonal, i.e.,
for
.
- if
is a polynomial with
, then
. The algorithm thus produces projections onto the Krylov subspace.
- if
is a polynomial with
, then
.
References
- Fletcher, R. (1976). "Conjugate gradient methods for indefinite systems". Numerical Analysis. Lecture Notes in Mathematics (Springer Berlin / Heidelberg) 506: 73–89. doi:. ISBN 978-3-540-07610-0. ISSN 1617-9692. http://www.springerlink.com/content/974t1l33m84217um/.
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)

















![\mathbf{u}_k=\left[u_0, u_1, \dots, u_{k-1} \right],](http://wpcontent.answers.com/math/2/2/c/22c06621ecee4c38e89c6da91ddd8272.png)
![\mathbf{v}_k=\left[v_0, v_1, \dots, v_{k-1} \right].](http://wpcontent.answers.com/math/6/8/5/6855792fc4a5a8f63e6aa232d35bb0e3.png)












