Cost per step of BiCGSTAB full
This proof shows: time.worst, space.extra, matvecs.per_step, flops.per_step.
One pass of L3 to L11, with A stored with z nonzeros:
- Products: v=Ap (L4) and t=As (L7), each at most 2z flops: 4z, so 2 matvecs.
- Inner products and squared norms, each 2n−1 flops: rTr (L3 test), r^Tv (L4), sTs (L6), tTs and tTt (L8), r^Tr (L10): six, 12n−6.
- Updates: s=r−αv (2n), x←x+αp+ωs (4n), r=s−ωt (2n), p=r+β(p−ωv) (4n): 12n.
- Scalars: O(1).
Total 4z+24n+O(1) flops. Over k passes plus the initial residual, O(k(z+n)) time. Storage: x,r,r^,p,v,s,t, seven vectors of length n reused at every pass, so Θ(n) extra space. ■
The product form of BiCGSTAB and its finite termination full
This proof shows: correctness, termination.
Exact arithmetic. Notation of the page. BiCG with shadow r^0 produces residuals rkB=φk(A)r0 and directions pkB=πk(A)r0, with φ0=π0=1 and
φk+1(t)=φk(t)−αktπk(t),πk+1(t)=φk+1(t)+βkπk(t), αk=ρkB/σkB, βk=ρk+1B/ρkB, where ρkB=r~kTrkB and σkB=p~kTApkB, with r~k=φk(AT)r^0 and p~k=πk(AT)r^0. Let ψ0=1 and ψk+1(t)=(1−ωk+1t)ψk(t). All polynomials in A commute.
Lemma 1 (invariant). r=b−Ax holds after L1 and after each L9.
Proof. If r=b−Ax and s=r−αAp, then b−A(x+αp+ωs)=s−ωAs=s−ωt, which is the new r. The same computation with ω=0 covers the return in L6. □
Lemma 2 (bilinear identities). Let φk have leading coefficient ck (coefficient of tk), and ψk leading coefficient dk=(−1)kω1⋯ωk. Then
ρkB=dkckr^0Tψk(A)φk(A)r0,σkB=dkckr^0TAψk(A)πk(A)r0. Proof. ρkB=r^0Tφk(A)φk(A)r0. By BiCG biorthogonality, φk(A)r0=rkB is orthogonal to Kk(AT,r^0), so in r^0Tq(A)rkB only the tk coefficient of q matters, for any q of degree ≤k. Applied to q=φk and q=ψk, r^0Tφk(A)rkB=(ck/dk)r^0Tψk(A)rkB. For σB: p~kTApkB=r^0Tπk(A)Aπk(A)r0, and ApkB is A-biconjugate: r^0Tq(A)Aπk(A)r0=0 for degq<k (since p~jTApkB=0 for j<k and the p~j span Kk(AT,r^0)). The leading coefficient of πk equals ck (because πk=φk+βk−1πk−1 with degπk−1<k), so the same argument applies with πk replaced by ψk. □
Theorem 1 (product form). If no breakdown occurs before step k, then at the start of pass k of L3 the vectors are r=ψk(A)φk(A)r0, p=ψk(A)πk(A)r0, ρ=r^0Tr, and the α computed in L4 equals the BiCG value αk; in L5, s=ψk(A)φk+1(A)r0; and β in L10 equals βk.
Proof. Induction on k. At k=0: r=p=r0, ψ0=φ0=π0=1. Assume the claim at the start of pass k. In L4, σ=r^0TAψk(A)πk(A)r0, so by Lemma 2, ρ/σ=ρkB/σkB=αk (the factors ck/dk cancel). Then s=ψk(A)(φk(A)−αkAπk(A))r0=ψk(A)φk+1(A)r0. In L9, r=(I−ωk+1A)s=ψk+1(A)φk+1(A)r0. In L10, ρnew=r^0Tψk+1(A)φk+1(A)r0=(dk+1/ck+1)ρk+1B and ρ=(dk/ck)ρkB, and ck+1=−αkck (leading coefficient of φk+1) and dk+1=−ωk+1dk. Hence
ρρnew⋅ωk+1αk=ρkBρk+1B⋅dkck+1dk+1ck⋅ωk+1αk=βk⋅αkωk+1⋅ωk+1αk=βk. Finally, in L11, p=r+βk(p−ωk+1v)=ψk+1(A)φk+1(A)r0+βk(I−ωk+1A)ψk(A)πk(A)r0=ψk+1(A)(φk+1(A)+βkπk(A))r0=ψk+1(A)πk+1(A)r0. □
Lemma 3 (local optimality). ω=tTs/tTt minimizes f(ω)=∥s−ωt∥22, and ∥rk+1∥22=∥s∥22−(tTs)2/tTt≤∥s∥22.
Proof. f is a quadratic in ω with f′(ω)=2(ωtTt−tTs), zero at the stated ω (t=0 since s=0 and A is nonsingular); substitute. □
Theorem 2 (termination). If no breakdown occurs, BiCGSTAB returns CONVERGED with Ax=b after at most n passes when tol=0; in every case the code returns after at most kmax+1 passes.
Proof. BiCG without breakdown reaches φd(A)r0=0 for some d≤n (finite termination of BiCG). The BiCG scalars used by BiCGSTAB up to step d are the same (Theorem 1), so at pass d−1, s=ψd−1(A)φd(A)r0=0, the test in L6 succeeds, and x is updated so that b−Ax=s=0 (Lemma 1). If the residual vanishes earlier, the L3 test returns earlier. Each pass either returns or completes, and the loop has kmax+1 passes. ■