Content deleted Content added
→Unpreconditioned BiCGSTAB: This version of the algorithm is more efficient and more closely follows Saad. It is Algorithm 7.6 in the 2nd edition and 7.7 in the 3rd edition. |
|||
Line 31:
# {{math|'''<var>r</var>'''<sub>0</sub> {{=}} '''<var>b</var>''' − '''<var>Ax</var>'''<sub>0</sub>}}
# Choose an arbitrary vector {{math|'''<var>r̂</var>'''<sub>0</sub>}} such that {{math|('''<var>r̂</var>'''<sub>0</sub>, '''<var>r</var>'''<sub>0</sub>) ≠ 0}}, e.g., {{math|'''<var>r̂</var>'''<sub>0</sub> {{=}} '''<var>r</var>'''<sub>0</sub>}}
# {{math|<var>ρ</var><sub>0</sub> {{=}} ('''<var>
# {{math|'''<var>
# For {{math|<var>i</var> {{=}} 1, 2, 3, …}}
## {{math|'''<var>
## {{math|<var>
## {{math|<var>
## {{math|'''<var>y</var>''' {{=}} {{SubSup|'''<var>K</var>'''|2|−1}}{{SubSup|'''<var>K</var>'''|1|−1}}'''<var>p</var>'''<sub><var>i</var></sub>}}▼
## {{math|<var>'''v'''<sub>i</sub></var> {{=}} '''<var>Ay</var>'''}}▼
## {{math|<var>α</var> {{=}} <var>ρ<sub>i</sub></var>/('''<var>r̂</var>'''<sub>0</sub>, <var>'''v'''<sub>i</sub></var>)}}▼
## {{math|<var>'''h'''</var> {{=}} '''<var>x</var>'''<sub><var>i</var>−1</sub> + <var>α'''y'''</var> }}
▲## {{math|'''<var>
## If {{math|<var>'''h'''</var>}} is accurate enough then {{math|<var>'''x'''<sub>i</sub></var> {{=}} <var>'''h'''</var>}} and quit
## {{math|'''<var>s</var>''' {{=}} '''<var>r</var>'''<sub><var>i</var>−1</sub> − <var>α'''v'''<sub>i</sub></var>}}▼
## {{math|'''<var>z</var>''' {{=}} {{SubSup|'''<var>K</var>'''|2|−1}}{{SubSup|'''<var>K</var>'''|1|−1}}'''<var>s</var>'''}}
## {{math|'''<var>t</var>''' {{=}} '''<var>Az</var>'''}}
## {{math|<var>ω
## {{math|<var>'''x'''<sub>i</sub></var> {{=}} <var>'''h'''</var> + <var>ω
## If {{math|<var>'''x'''<sub>i</sub></var>}} is accurate enough then quit
## {{math|<var>
▲## {{math|<var>
▲## {{math|<var>'''p'''<
This formulation is equivalent to applying unpreconditioned BiCGSTAB to the explicitly preconditioned system
|