WikiDer > Метод двусопряженной градиентной стабилизации
Эта статья может быть слишком техническим для большинства читателей, чтобы понять. Пожалуйста помогите улучшить это к сделать понятным для неспециалистов, не снимая технических деталей. (Май 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
В числовая линейная алгебра, то метод двусопряженной градиентной стабилизации, часто сокращенно BiCGSTAB, является итерационный метод разработан Х. А. ван дер Ворст для численного решения несимметричных линейные системы. Это вариант метод двусопряженных градиентов (BiCG) и имеет более быструю и плавную сходимость, чем исходный BiCG, а также другие варианты, такие как метод квадрата сопряженного градиента (CGS). Это Крыловское подпространство метод.
Алгоритмические шаги
Без предварительной подготовки BiCGSTAB
Решить линейную систему Топор = б, BiCGSTAB начинается с первоначального предположения Икс0 и происходит следующее:
- р0 = б − Топор0
- Выберите произвольный вектор р0 такой, что (р0, р0) ≠ 0, например, р0 = р0 . (Икс,y) обозначает скалярное произведение векторов (Икс,y) = ИксТ y
- ρ0 = α = ω0 = 1
- v0 = п0 = 0
- За я = 1, 2, 3, …
- ρя = (р0, ря−1)
- β = (ρя/ρя−1)(α/ωя−1)
- пя = ря−1 + β(пя−1 − ωя−1vя−1)
- vя = Apя
- α = ρя/(р0, vя)
- час = Икся−1 + αпя
- Если час достаточно точно, затем установите Икся = час и выйти
- s = ря−1 − αvя
- т = В качестве
- ωя = (т, s)/(т, т)
- Икся = час + ωяs
- Если Икся достаточно точный, затем выйти
- ря = s − ωят
Предварительно подготовленный BiCGSTAB
Прекондиционеры обычно используются для ускорения сходимости итерационных методов. Решить линейную систему Топор = б с прекондиционером K = K1K2 ≈ А, предварительно подготовленный BiCGSTAB начинается с первоначального предположения Икс0 и происходит следующее:
- р0 = б − Топор0
- Выберите произвольный вектор р0 такой, что (р0, р0) ≠ 0, например, р0 = р0
- ρ0 = α = ω0 = 1
- v0 = п0 = 0
- За я = 1, 2, 3, …
- ρя = (р0, ря−1)
- β = (ρя/ρя−1)(α/ωя−1)
- пя = ря−1 + β(пя−1 − ωя−1vя−1)
- y = K −1
2 пя - vя = Ау
- α = ρя/(р0, vя)
- час = Икся−1 + αy
- Если час достаточно точно Икся = час и выйти
- s = ря−1 − αvя
- z = K −1
2 s - т = Аз
- ωя = (K −1
1 т, K −1
1 s)/(K −1
1 т, K −1
1 т) - Икся = час + ωяz
- Если Икся достаточно точен, тогда брось
- ря = s − ωят
Эта формулировка эквивалентна применению безусловного BiCGSTAB к явно предварительно подготовленной системе.
- Ãx̃ = b̃
с Ã = K −1
1 АK −1
2 , Икс = K2Икс и b̃ = K −1
1 б. Другими словами, с этой формулировкой возможны как левое, так и правое предварительное кондиционирование.
Вывод
BiCG в полиномиальной форме
В BiCG направления поиска пя и пя а остатки ря и ря обновляются с использованием следующих повторяющиеся отношения:
- пя = ря−1 + βяпя−1,
- пя = ря−1 + βяпя−1,
- ря = ря−1 − αяApя,
- ря = ря−1 − αяАТпя.
Константы αя и βя выбраны быть
- αя = ρя/(пя, Apя),
- βя = ρя/ρя−1
куда ρя = (ря−1, ря−1) так что остатки и направления поиска удовлетворяют биортогональности и двусопряженности соответственно, т. е. для я ≠ j,
- (ря, рj) = 0,
- (пя, Apj) = 0.
Несложно показать, что
- ря = пя(А)р0,
- ря = пя(АТ)р0,
- пя+1 = Тя(А)р0,
- пя+1 = Тя(АТ)р0
куда пя(А) и Тя(А) находятся ямногочлены степени от А. Эти многочлены удовлетворяют следующим рекуррентным соотношениям:
- пя(А) = пя−1(А) − αяАТя−1(А),
- Тя(А) = пя(А) + βя+1Тя−1(А).
Получение BiCGSTAB из BiCG
Нет необходимости явно отслеживать остатки и направления поиска BiCG. Другими словами, итерации BiCG могут выполняться неявно. В BiCGSTAB желательно иметь рекуррентные соотношения для
- ря = Qя(А)пя(А)р0
куда Qя(А) = (я − ω1А)(я − ω2А)⋯(я − ωяА) с подходящими константами ωj вместо ря = пя(А) в надежде, что Qя(А) обеспечит более быструю и плавную сходимость в ря чем ря.
Из рекуррентных соотношений для пя(А) и Тя(А) и определение Qя(А) который
- Qя(А)пя(А)р0 = (я − ωяА)(Qя−1(А)пя−1(А)р0 − αяАQя−1(А)Тя−1(А)р0),
что влечет за собой необходимость рекуррентного соотношения для Qя(А)Тя(А)р0. Это также можно получить из отношений BiCG:
- Qя(А)Тя(А)р0 = Qя(А)пя(А)р0 + βя+1(я − ωяА)Qя−1(А)пя−1(А)р0.
Аналогично определению ря, BiCGSTAB определяет
- пя+1 = Qя(А)Тя(А)р0.
В векторной форме рекуррентные соотношения для пя и ря находятся
- пя = ря−1 + βя(я − ωя−1А)пя−1,
- ря = (я − ωяА)(ря−1 − αяАпя).
Чтобы вывести рекуррентное соотношение для Икся, определять
- sя = ря−1 − αяАпя.
Рекуррентное соотношение для ря тогда можно записать как
- ря = ря−1 − αяАпя − ωяВ качествея,
что соответствует
- Икся = Икся−1 + αяпя + ωяsя.
Определение констант BiCGSTAB
Теперь осталось определить константы BiCG. αя и βя и выберите подходящий ωя.
В BiCG, βя = ρя/ρя−1 с
- ρя = (ря−1, ря−1) = (пя−1(АТ)р0, пя−1(А)р0).
Поскольку BiCGSTAB явно не отслеживает ря или же ря, ρя не вычисляется сразу по этой формуле. Однако это может быть связано со скалярным
- ρ̃я = (Qя−1(АТ)р0, пя−1(А)р0) = (р0, Qя−1(А)пя−1(А)р0) = (р0, ря−1).
Благодаря биортогональности, ря−1 = пя−1(А)р0 ортогонален Uя−2(АТ)р0 куда Uя−2(АТ) - любой многочлен степени я − 2 в АТ. Следовательно, только члены высшего порядка пя−1(АТ) и Qя−1(АТ) вопрос в скалярных произведениях (пя−1(АТ)р0, пя−1(А)р0) и (Qя−1(АТ)р0, пя−1(А)р0). Старшие коэффициенты пя−1(АТ) и Qя−1(АТ) находятся (−1)я−1α1α2⋯αя−1 и (−1)я−1ω1ω2⋯ωя−1, соответственно. Следует, что
- ρя = (α1/ω1)(α2/ω2)⋯(αя−1/ωя−1)ρ̃я,
и поэтому
- βя = ρя/ρя−1 = (ρ̃я/ρ̃я−1)(αя−1/ωя−1).
Простая формула для αя можно получить аналогично. В BiCG,
- αя = ρя/(пя, Apя) = (пя−1(АТ)р0, пя−1(А)р0)/(Тя−1(АТ)р0, АТя−1(А)р0).
Как и в предыдущем случае, только члены высшего порядка пя−1(АТ) и Тя−1(АТ) имеет значение в скалярных произведениях благодаря биортогональности и двусопряженности. Бывает что пя−1(АТ) и Тя−1(АТ) имеют одинаковый ведущий коэффициент. Таким образом, их можно заменить одновременно с Qя−1(АТ) в формуле, что приводит к
- αя = (Qя−1(АТ)р0, пя−1(А)р0)/(Qя−1(АТ)р0, АТя−1(А)р0) = ρ̃я/(р0, АQя−1(А)Тя−1(А)р0) = ρ̃я/(р0, Ap̃я).
Наконец, BiCGSTAB выбирает ωя минимизировать ря = (я − ωяА)sя в 2-норма как функция ωя. Это достигается, когда
- ((я − ωяА)sя, В качествея) = 0,
давая оптимальное значение
- ωя = (В качествея, sя)/(В качествея, В качествея).
Обобщение
BiCGSTAB можно рассматривать как комбинацию BiCG и GMRES где за каждым шагом BiCG следует GMRES (1) (т.е. GMRES перезапускается на каждом шаге), чтобы исправить неправильное поведение конвергенции CGS, в качестве улучшения которого был разработан BiCGSTAB. Однако из-за использования полиномов минимальной остаточной степени один такой ремонт может быть неэффективным, если матрица А имеет большие комплексные собственные пары. В таких случаях BiCGSTAB может застаиваться, что подтверждается численными экспериментами.
Можно ожидать, что минимальные остаточные многочлены более высокой степени могут лучше справиться с этой ситуацией. Это дает начало алгоритмам, включая BiCGSTAB2[1] и более общий BiCGSTAB (л)[2]. В BiCGSTAB (л), а GMRES (л) шаг следует за каждым л Шаги BiCG. BiCGSTAB2 эквивалентен BiCGSTAB (л) с л = 2.
Смотрите также
Рекомендации
- Ван дер Ворст, Х.А. (1992). «Bi-CGSTAB: быстрый и плавно сходящийся вариант Bi-CG для решения несимметричных линейных систем». SIAM J. Sci. Стат. Comput. 13 (2): 631–644. Дои:10.1137/0913035. HDL:10338.dmlcz / 104566.
- Саад, Ю. (2003). "§7.4.2 BICGSTAB". Итерационные методы для разреженных линейных систем. (2-е изд.). СИАМ. стр.231–234. Дои:10.2277/0898715342. ISBN 978-0-89871-534-7.
- ^ Гуткнехт, М. Х. (1993). «Варианты BICGSTAB для матриц с комплексным спектром». SIAM J. Sci. Comput. 14 (5): 1020–1033. Дои:10.1137/0914062.
- ^ Sleijpen, G.L.G .; Фоккема Д. Р. (ноябрь 1993 г.). «BiCGstab (л) для линейных уравнений с несимметричными матрицами комплексного спектра » (PDF). Электронные транзакции по численному анализу. Кент, Огайо: Государственный университет Кента. 1: 11–32. ISSN 1068-9613. Архивировано из оригинал (PDF) на 2011-06-06. Получено 2010-02-07.