Участник:EasyBreezy/Стабилизированный метод бисопряженных градиентов (BiCGSTAB): различия между версиями
Перейти к навигации
Перейти к поиску
Строка 4: | Строка 4: | ||
=== Общее описание алгоритма === | === Общее описание алгоритма === | ||
− | Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах | + | :Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах. |
− | |||
− | |||
− | |||
− | BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: | + | :Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах. |
− | K^m (A,r^0 )= span (r^0,Ar^0, | + | |
− | Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система Ax=b с невырожденной матрицей A | + | :BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам. |
− | (Ax,z)=(b,z), | + | |
− | В данном случае вектор x называется обобщенным решением системы. | + | :Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования. |
− | Условие Петрова-Галеркина можно записать и через определение невязки. Пусть r=b-Ax, тогда условие перепишется в виде: | + | |
− | (b-Ax,z)=(r,z), | + | :BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: <math>K^m (A, r^0) = span(r^0, Ar^0, A^2r^0, ..., A^{m-1} r^0).</math> |
− | Это равносильно тому, что вектор невязки ортогонален пространству L. | + | |
− | Пусть для СЛАУ известно некоторое приближение x^0 точного решения x^*. Данное приближение требуется уточнить поправкой | + | :Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система <math>Ax=b</math> с невырожденной матрицей <math>A \in R^{n \times n}</math> и ненулевым вектором <math>b \in R^n</math>. Имеются два подпространства <math>K_n</math> и <math>L_n</math>. Требуется найти вектор <math>x \in K_n</math>, который обеспечивает решение системы, оптимальное относительно подпространства L, то есть требуется выполнение условия Петрова-Галеркина: <math>(Ax,z)=(b,z), \forall z \in L_n</math>. В данном случае вектор x называется обобщенным решением системы. |
− | + | ||
− | Невязка уточненного решения имеет вид: | + | :Условие Петрова-Галеркина можно записать и через определение невязки. Пусть <math>r = b - Ax</math>, тогда условие перепишется в виде: <math>(b - Ax, z)=(r, z),\forall z \in L_n</math>. Это равносильно тому, что вектор невязки ортогонален пространству L. |
− | + | ||
− | Условие Петрова-Галеркина тогда можно переписать так: | + | :Пусть для СЛАУ известно некоторое приближение <math>x^0</math> точного решения <math>x^*</math>. Данное приближение требуется уточнить поправкой <math> \delta: b - Ax^0 + \delta \perp L</math>. Невязка уточненного решения имеет вид: <math>r_{new} = b - Ax^0 + \delta = r^0- A\delta</math>. Условие Петрова-Галеркина тогда можно переписать так: <math>(r_{new}, z)= r^0 - (A\delta, z) = 0, \forall z \in L</math> |
− | (r_ | + | |
− | Пусть | + | :Пусть <math> dim K = dim L = m, V = (v_1, ..., v_n) \in R^{n \times m}, W = (w_1, ... w_n) \in R^{n \times m}</math>, где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно. Пусть так же <math> \delta = Vy, z = Wq</math>, где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L. Тогда новое приближение решения можно записать в виде: <math>x^1 = x^0 + \delta= x^0 + Vy</math>. Из условия ортогональности Петрова-Галеркина получаем, что: <math>(r - AVy, Wq) = (W^Tr^0 - AVy, q) = 0</math>. Поскольку <math>q \neq 0</math>, то получаем СЛАУ для вектора y: <math>W^TAVy = W^Tr^0</math>. Если предположить, что матрица <math>W^TAVy</math> невырождена, то вектор y однозначно определяется и равен: <math>y = W^TAV^{-1}W^Tr^0</math>. Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: <math>x^1 = x^0 + \delta = x^0 + W^TAV^{-1}W^Tr^0y</math> |
− | Пусть так же | + | |
− | Тогда новое приближение | + | :Подведем итог. Общий порядок шагов любого проекционного метода следующий: |
− | x^1= x^0+ | + | #Выбрать пару подпространств K и L |
− | Из условия ортогональности Петрова-Галеркина получаем, что: | + | #Найти базис V пространства K и базис W пространства L; |
− | (r-AVy,Wq)=(W^ | + | #Вычислить невязку |
− | Поскольку q | + | #Найти <math>y = W^T AV^{-1} W^T r^0</math> |
− | W^ | + | #Положить <math>x = x + Vy</math> |
− | Если предположить, что матрица W^ | + | #Если не достигнут критерий остановки итерационного процесса, то повторить алгоритм, начиная с первого шага. |
− | y= W^ | + | |
− | Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: | + | :Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу W^T AV^{-1} в явном виде. |
− | x^1= x^0+ | ||
− | Общий порядок шагов любого проекционного метода следующий: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу W^T AV^ | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === |
Версия 20:46, 14 октября 2016
Основные авторы описания:
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
- Стабилизированный метод бисопряженных градиентов, так же известный как BiCGSTAB (Biconjugate gradient stabilized method), был предложен голландским математиком Хенком ван дер Ворстом в 1992 году. Статья, в которой описывался метод, стала самым цитируемым научным трудом в области математики в 1990х годах.
- Метод появился, как ответ на задачу о построении способа решения систем линейных алгебраических уравнений произвольного вида. На момент появления BiCGSTAB уже существовали методы решения СЛАУ произвольного типа, в том числе и в комплексном пространстве, например метод бисопряженных градиентов. Однако существующие на тот момент методы либо обладали недостаточной скоростью сходимости, либо использовали в вычислениях тяжелые операции, такие как транспонирования матрицы, которые усложняли распараллеливание на многопроцессорных машинах.
- BiCGSTAB является итерационным методом решения систем линейных алгебраических уравнений. Мощь метода заключается в том, что его можно применять к матрицам общего вида, в том числе с комплексными коэффициентами. В процессе выполнения BiCGSTAB не использует для вычисления плохо распараллеливаемых операций, не допускает накопления погрешностей округления и нестабильного поведения невязки. Эти факторы выгодно отличают его от предшественников: метода бисопряженных градиентов и квадратичного метода сопряженных градиентов, из которого BiCGSTAB фактически и вытекает. К преимуществам так же можно добавить более высокую в общем случае скорость сходимости относительно ближайших конкурентов. Тем не менее, для некоторых видов СЛАУ BiCGSTAB может уступать более простым методам.
- Благодаря свойствам алгоритма область применения метода весьма широка. Фактически, он используется во всех задачах, где требуется решать СЛАУ, в том числе СЛАУ большой размерности, к которым сводится большое количество численных методов, применяемых при решении задач математического моделирования.
- BiCGSTAB относится к классу так называемых проекционных методов. Основная идея методов данного класса: искать итерационным способом наилучшее приближение решения в некотором подпространстве пространства R^n, и чем шире подпространство, в котором ищется приближение решения, тем ближе будет приближенное решение к точному на каждой итерации. В качестве такого подпространства используются пространства Крылова, порожденные матрицей системы и невязкой первого приближения: [math]K^m (A, r^0) = span(r^0, Ar^0, A^2r^0, ..., A^{m-1} r^0).[/math]
- Изложим основную идею любого проекционного метода, заложенную в том числе и в BiCGSTAB. Для простоты выкладок и рассуждений здесь и далее будем считать, что матрица системы и ее правая часть вещественны. Без ограничения общности все дальнейшие рассуждения могут быть перенесены и на комплексный случай. Итак, пусть решается система [math]Ax=b[/math] с невырожденной матрицей [math]A \in R^{n \times n}[/math] и ненулевым вектором [math]b \in R^n[/math]. Имеются два подпространства [math]K_n[/math] и [math]L_n[/math]. Требуется найти вектор [math]x \in K_n[/math], который обеспечивает решение системы, оптимальное относительно подпространства L, то есть требуется выполнение условия Петрова-Галеркина: [math](Ax,z)=(b,z), \forall z \in L_n[/math]. В данном случае вектор x называется обобщенным решением системы.
- Условие Петрова-Галеркина можно записать и через определение невязки. Пусть [math]r = b - Ax[/math], тогда условие перепишется в виде: [math](b - Ax, z)=(r, z),\forall z \in L_n[/math]. Это равносильно тому, что вектор невязки ортогонален пространству L.
- Пусть для СЛАУ известно некоторое приближение [math]x^0[/math] точного решения [math]x^*[/math]. Данное приближение требуется уточнить поправкой [math] \delta: b - Ax^0 + \delta \perp L[/math]. Невязка уточненного решения имеет вид: [math]r_{new} = b - Ax^0 + \delta = r^0- A\delta[/math]. Условие Петрова-Галеркина тогда можно переписать так: [math](r_{new}, z)= r^0 - (A\delta, z) = 0, \forall z \in L[/math]
- Пусть [math] dim K = dim L = m, V = (v_1, ..., v_n) \in R^{n \times m}, W = (w_1, ... w_n) \in R^{n \times m}[/math], где V и W – матрицы, столбцы которых образуют базисы пространств K и L соответственно. Пусть так же [math] \delta = Vy, z = Wq[/math], где y – коэффициенты разложения вектора поправки по базису пространства K, а q – коэффициенты разложения вектора z в пространстве L. Тогда новое приближение решения можно записать в виде: [math]x^1 = x^0 + \delta= x^0 + Vy[/math]. Из условия ортогональности Петрова-Галеркина получаем, что: [math](r - AVy, Wq) = (W^Tr^0 - AVy, q) = 0[/math]. Поскольку [math]q \neq 0[/math], то получаем СЛАУ для вектора y: [math]W^TAVy = W^Tr^0[/math]. Если предположить, что матрица [math]W^TAVy[/math] невырождена, то вектор y однозначно определяется и равен: [math]y = W^TAV^{-1}W^Tr^0[/math]. Подставляя найденные коэффициенты разложения в выражение для первого приближения получаем: [math]x^1 = x^0 + \delta = x^0 + W^TAV^{-1}W^Tr^0y[/math]
- Подведем итог. Общий порядок шагов любого проекционного метода следующий:
- Выбрать пару подпространств K и L
- Найти базис V пространства K и базис W пространства L;
- Вычислить невязку
- Найти [math]y = W^T AV^{-1} W^T r^0[/math]
- Положить [math]x = x + Vy[/math]
- Если не достигнут критерий остановки итерационного процесса, то повторить алгоритм, начиная с первого шага.
- Как будет показано далее, в BiCGSTAB не требуется вычислять матрицу W^T AV^{-1} в явном виде.