Эта статья может быть слишком технической для понимания большинством читателей . Май 2015 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
В численной линейной алгебре метод двусопряженной градиентной стабилизации , часто обозначаемый аббревиатурой BiCGSTAB , представляет собой итерационный метод, разработанный HA van der Vorst для численного решения несимметричных линейных систем . Это вариант метода двусопряженных градиентов (BiCG), который имеет более быструю и плавную сходимость, чем исходный BiCG, а также другие варианты, такие как метод квадрата сопряженных градиентов (CGS). Это метод подпространств Крылова .
Алгоритмические шаги [ править ]
Безусловный BiCGSTAB [ править ]
Чтобы решить линейную систему Ax = b , BiCGSTAB начинает с первоначального предположения x 0 и действует следующим образом:
- r 0 = b - Ax 0
- Выберем произвольный вектор r̂ 0 такой, что ( r̂ 0 , r 0 ) ≠ 0 , например, r̂ 0 = r 0 . ( x , y ) обозначает скалярное произведение векторов ( x , y ) = x T y
- ρ 0 = α = ω 0 = 1
- v 0 = p 0 = 0
- Для i = 1, 2, 3,…
- ρ i = ( r̂ 0 , r i −1 )
- β = ( ρ i / ρ i −1 ) ( α / ω i −1 )
- p i = r i −1 + β ( p i −1 - ω i −1 v i −1 )
- v i = Ap i
- α = ρ i / ( r̂ 0 , v i )
- h = x i −1 + α p i
- Если h достаточно точное, установите x i = h и выйдите
- s = r i −1 - α v i
- t = Как
- ω i = ( t , s ) / ( t , t )
- x i = h + ω i s
- Если x i достаточно точен, то выйти
- r i = s - ω i t
Предварительно подготовленный BiCGSTAB [ править ]
Предобуславливатели обычно используются для ускорения сходимости итерационных методов. Чтобы решить линейную систему Ax = b с предварительным условием K = K 1 K 2 ≈ A , предварительное кондиционирование BiCGSTAB начинается с исходного предположения x 0 и выполняется следующим образом:
- r 0 = b - Ax 0
- Выберем произвольный вектор r̂ 0 такой, что ( r̂ 0 , r 0 ) ≠ 0 , например, r̂ 0 = r 0
- ρ 0 = α = ω 0 = 1
- v 0 = p 0 = 0
- Для i = 1, 2, 3,…
- ρ i = ( r̂ 0 , r i −1 )
- β = ( ρ i / ρ i −1 ) ( α / ω i −1 )
- p i = r i −1 + β ( p i −1 - ω i −1 v i −1 )
- у = К −1
2 п я - v i = Ay
- α = ρ i / ( r̂ 0 , v i )
- h = x i −1 + α y
- Если h достаточно точно, то x i = h и выйти
- s = r i −1 - α v i
- z = K −1
2 s - t = Az
- ω i = ( K −1
1 т , К −1
1 с ) / ( К −1
1 т , К −1
1 т ) - х я = h + ω я z
- Если x i достаточно точен, выйдите
- r i = s - ω i t
Эта формулировка эквивалентна применению безусловного BiCGSTAB к явно предварительно подготовленной системе.
- Ãx̃ = b̃
с Ã = K −1
1 А К −1
2 , x̃ = K 2 x и b̃ = K −1
1 б . Другими словами, с этой формулировкой возможны как левое, так и правое предварительное кондиционирование.
Вывод [ править ]
BiCG в полиномиальной форме [ править ]
В BiCG направления поиска p i и p̂ i и остатки r i и r̂ i обновляются с использованием следующих рекуррентных соотношений :
- р я = г я -1 + β я п я -1 ,
- p̂ i = r̂ i −1 + β i p̂ i −1 ,
- r i = r i −1 - α i Ap i ,
- r̂ i = r̂ i −1 - α i A T p̂ i .
Константы α i и β i выбраны равными
- α i = ρ i / ( p̂ i , Ap i ) ,
- β i = ρ i / ρ i −1
где ρ i = ( r̂ i −1 , r i −1 ), так что остатки и направления поиска удовлетворяют биортогональности и двусопряженности соответственно, т. е. для i ≠ j ,
- ( r̂ i , r j ) = 0 ,
- ( p̂ i , Ap j ) = 0 .
Несложно показать, что
- r i = P i ( A ) r 0 ,
- r̂ i = P i ( A T ) r̂ 0 ,
- р я +1 знак равно Т я ( А ) г 0 ,
- p̂ i +1 знак равно T i ( A T ) r̂ 0
где Р я ( ) и Т я ( ) являются I - й степени-многочлены A . Эти многочлены удовлетворяют следующим рекуррентным соотношениям:
- P i ( A ) = P i −1 ( A ) - α i A T i −1 ( A ) ,
- Т я ( А ) = Р я ( А ) + β я +1 Т я -1 ( А ) .
Получение BiCGSTAB от BiCG [ править ]
Нет необходимости явно отслеживать остатки и направления поиска BiCG. Другими словами, итерации BiCG могут выполняться неявно. В BiCGSTAB желательно иметь рекуррентные соотношения для
- r̃ i = Q i ( A ) P i ( A ) r 0
где Q i ( A ) = ( I - ω 1 A ) ( I - ω 2 A ) ⋯ ( I - ω i A ) с подходящими константами ω j вместо r i = P i ( A ) в надежде, что Q i ( A ) обеспечит более быструю и плавную сходимость по r̃ i, чем по r i .
Из рекуррентных соотношений для P i ( A ) и T i ( A ) и определения Q i ( A ) следует, что
- Q i ( A ) P i ( A ) r 0 = ( I - ω i A ) ( Q i −1 ( A ) P i −1 ( A ) r 0 - α i A Q i −1 ( A ) T i −1 ( A ) r 0 ) ,
что влечет за собой необходимость рекуррентного соотношения для Q i ( A ) T i ( A ) r 0 . Это также может быть получено из отношений BiCG:
- Q i ( A ) T i ( A ) r 0 = Q i ( A ) P i ( A ) r 0 + β i +1 ( I - ω i A ) Q i −1 ( A ) P i −1 ( A ) г 0 .
Аналогично определению r̃ i , BiCGSTAB определяет
- p̃ я +1 знак равно Q я ( А ) Т я ( А ) г 0 .
Записанные в векторной форме рекуррентные соотношения для p̃ i и r̃ i имеют вид
- p̃ i = r̃ i −1 + β i ( I - ω i −1 A ) p̃ i −1 ,
- r̃ i = ( I - ω i A ) ( r̃ i −1 - α i A p̃ i ).
Чтобы вывести рекуррентное соотношение для x i , определим
- s i = r̃ i −1 - α i A p̃ i .
Тогда рекуррентное соотношение для r̃ i можно записать как
- r̃ i = r̃ i −1 - α i A p̃ i - ω i As i ,
что соответствует
- х я знак равно х я -1 + α я п ̃ я + ω я с я .
Определение констант BiCGSTAB [ править ]
Теперь осталось определить константы BiCG α i и β i и выбрать подходящий ω i .
В BiCG β i = ρ i / ρ i −1 с
- ρ i = ( r̂ i −1 , r i −1 ) = ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) .
Поскольку BiCGSTAB явно не отслеживает r̂ i или r i , ρ i не вычисляется сразу по этой формуле. Однако это может быть связано со скалярным
- ρ̃ i = ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) = ( r̂ 0 , Q i −1 ( A ) P i −1 ( A ) r 0 ) = ( r̂ 0 , r i −1 ) .
Благодаря биортогональности, г я -1 = Р я -1 ( ) г 0 ортогонален U я -2 ( Т ) Г 0 , где U я -2 ( Т ) является любой многочлен степени я - 2 в А T . Следовательно, только члены высшего порядка P i −1 ( A T ) и Q i −1 ( AT ) имеют значение в скалярных произведениях ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) и ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) . Старшие коэффициенты P i −1 ( A T ) и Q i−1 ( A T ) равны (−1) i −1 α 1 α 2 ⋯ α i −1 и (−1) i −1 ω 1 ω 2 ⋯ ω i −1 соответственно. Следует, что
- ρ i = ( α 1 / ω 1 ) ( α 2 / ω 2 ) ⋯ ( α i −1 / ω i −1 ) ρ̃ i ,
и поэтому
- β i = ρ i / ρ i −1 = ( ρ̃ i / ρ̃ i −1 ) ( α i −1 / ω i −1 ) .
Аналогичным образом может быть получена простая формула для α i . В BiCG,
- α i = ρ i / ( p̂ i , Ap i ) = ( P i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) / ( T i −1 ( A T ) r̂ 0 , A T i −1 ( A ) r 0 ) .
Как и в случае выше, только члены высшего порядка P i -1 ( A T ) и T i -1 ( A T ) имеют значение в скалярных произведениях благодаря биортогональности и двусопряженности. Бывает, что P i −1 ( A T ) и T i −1 ( A T ) имеют одинаковый старший коэффициент. Таким образом, их можно заменить одновременно на Q i −1 ( A T ) в формуле, что приводит к
- α i = ( Q i −1 ( A T ) r̂ 0 , P i −1 ( A ) r 0 ) / ( Q i −1 ( A T ) r̂ 0 , A T i −1 ( A ) r 0 ) = ρ̃ i / ( r̂ 0 , A Q i −1 ( A ) T i −1 (А ) r 0 ) = ρ̃ i / ( r̂ 0 , Ap̃ i ).
Наконец, BiCGSTAB выбирает ω i, чтобы минимизировать r̃ i = ( I - ω i A ) s i в 2- норме как функцию от ω i . Это достигается, когда
- (( I - ω i A ) s i , As i ) = 0 ,
давая оптимальное значение
- ω i = ( As i , s i ) / ( As i , As i ) .
Обобщение [ править ]
BiCGSTAB можно рассматривать как комбинацию BiCG и GMRES, где за каждым шагом BiCG следует шаг GMRES ( 1 ) (т.е. GMRES перезапускается на каждом шаге) для исправления нерегулярного поведения конвергенции CGS, в качестве улучшения которого был разработан BiCGSTAB . Однако из-за использования полиномов минимальной остаточной степени один такое исправление может быть неэффективным, если матрица A имеет большие комплексные собственные пары. В таких случаях BiCGSTAB, вероятно, будет стагнировать, что подтверждается численными экспериментами.
Можно ожидать, что минимальные остаточные многочлены более высокой степени могут лучше справиться с этой ситуацией. Это дает начало алгоритмам, включая BiCGSTAB2 [1] и более общий BiCGSTAB ( l ) [2] . В BiCGSTAB ( l ) шаг GMRES ( l ) следует за каждыми l шагами BiCG. BiCGSTAB2 эквивалентен BiCGSTAB ( l ) с l = 2 .
См. Также [ править ]
Ссылки [ править ]
- Ван дер Ворст, HA (1992). «Bi-CGSTAB: быстрый и плавно сходящийся вариант Bi-CG для решения несимметричных линейных систем». SIAM J. Sci. Стат. Comput. 13 (2): 631–644. DOI : 10.1137 / 0913035 . hdl : 10338.dmlcz / 104566 .
- Саад, Ю. (2003). «§7.4.2 BICGSTAB» . Итерационные методы для разреженных линейных систем (2-е изд.). СИАМ. С. 231–234 . DOI : 10.2277 / 0898715342 . ISBN 978-0-89871-534-7.
- ^ Гуткнехт, MH (1993). «Варианты BICGSTAB для матриц с комплексным спектром». SIAM J. Sci. Comput. 14 (5): 1020–1033. DOI : 10.1137 / 0914062 .
- ^ Sleijpen, GLG; Фоккема, Д.Р. (ноябрь 1993 г.). «BiCGstab ( l ) для линейных уравнений, включающих несимметричные матрицы со сложным спектром» (PDF) . Электронные транзакции по численному анализу . Кент, Огайо: Государственный университет Кента. 1 : 11–32. ISSN 1068-9613 . Архивировано из оригинального (PDF) 06.06.2011 . Проверено 7 февраля 2010 .