
- •Министерство образования и науки Российской Федерации
- •1. Прямые (точные) методы
- •1.1 Метод исключения Гаусса
- •1.3 Решение слау с помощью lu-разложения матриц
- •1.4 Обращение матриц
- •1.5 Метод исключения Жордана (Гаусса – Жордана)
- •1.6 Контроль точности и уточнение приближенного решения в рамках прямого метода
- •1.7 Вычислительные затраты прямых методов
- •2. Итерационные методы
- •2.1 Классические итерационные методы и релаксация
- •2.1.1 Методы Якоби и Гаусса-Зейделя
- •2.1.2 Ускорение сходимости релаксационных методов
- •2.2 Проекционные методы и подпространства Крылова
- •2.2.1 Общий подход к построению проекционных методов
- •2.2.2 Случай одномерных подпространств k и l
- •2.2.3 Два выбора подпространств
- •2.2.4 Подпространства Крылова
- •2.2.5 Базис подпространства Крылова. Ортогонализация Арнольди
- •2.2.5 Биортогонализация Ланцоша
- •2.3 Предобусловливание
- •2.3.1 Предобусловливание основанное на классических методах
- •2.3.2 Неполное lu-разложение
- •2.3.3 Выбор структуры разреженности
- •2.4 Методы Крыловского типа
- •2.4.1 Метод обобщенных минимальных невязок
- •2.4.2 Метод бисопряженных градиентов
- •2.4.3 Стабилизированный метод бисопряженных градиентов
- •2.4.4 Метод квази-минимальных невязок
- •2.2.5 Квадратичный метод сопряженных градиентов
- •2.2.6 Метод сопряженных градентов
2.4.2 Метод бисопряженных градиентов
Ранее была описана
биортогонализация Ланцоша, которая в
отличие от ортогонализации Арнольди,
использует для построения базиса
экономичные трехчленные формулы. Выбрав
в качестве пространства K
пространство Крылова Km(r(0),
A),
а в качестве Lm(
,
AT),
где вектор
удовлетворяет условию (r(0),
)0,
строят метод бисопряженных градиентов
BiCG.
Далее приведен алгоритм предобусловленного метода бисопряженных градиентов.
Алгоритм метода BiCG
Если необходимо построить матрицу предобусловливателя M |
Выбрать начальное приближение x(0) |
r(0) = b – A x(0) |
Выбрать вектор , удовлетворяющий условию (r(0), ) 0 (например, = r(0)) |
Для i = 1, 2, … до сходимости или до Nitmax |
Найти z(i–1) из системы M z(i–1) = r(i–1) |
Найти
|
i – 1 = (z(i–1), ) |
Если i–1 = 0 |
то метод не может решить данную систему |
Если i = 1 |
|
|
Иначе |
i–1 = i–1 / i–2 |
|
|
q(i) = A p(i) |
|
i = i–1 / ( , q(i)) |
x(i) = x(i–1) + i p(i) |
r(i) = r(i–1) – i q(i) |
|
Если ||r(i)||2 / ||r(0)||2 tol |
то КОНЕЦ (x(i) – полученное решение) |
увеличить i |
Первые пять параметров метода BiCG, которые необходимо задать, совпадают с аналогичными параметрами метода GMRES. Шестым параметром является тип предобусловливания (0, 10-12 или 20-22). Седьмым является точность обнуления ().
Пример использования метода BiCG в системе TALGAT:
- действительный случай: SET "solve" BICG_r real_m right_r 0. 1.e-8 250 10 1.e-4;
- комплексный случай: SET "solve" BICG complex_m right_c 0. 1.e-8 250 10 1.e-4.
2.4.3 Стабилизированный метод бисопряженных градиентов
К сожалению, описанный алгоритм BiCG зачастую обнаруживает в экспериментах неустойчивость и осциллирующее поведение нормы невязки. Более того, итерационный процесс может полностью оборваться, без возможности его дальнейшего продления. Это происходит если коэффициент j=0. К тому же метод BiCG плохо поддается реализации на многопроцессорных вычислительных системах с распределенной памятью за счет использования операций с транспонированной матрицей. Эти возникающие проблемы привели к разработке целого класса методов, в которых операция с транспонированной матрицей не используется.
Алгебраически это может быть достигнуто за счет изменения специальным образом полинома pm, которому удовлетворяет последовательность невязок в методах, использующих подпространства Крылова. Из числа методов, свободных от транспонирования, в настоящее время широко применяется стабилизированный метод бисопряженных градиентов (BiCGStab), использующий соотношение rm=pm(A)qm(A)r(0), где qm– специальным образом строящийся полином, такой, что произведение pmqm не содержит нечетных степеней.
Далее приведен алгоритм стабилизированного метода бисопряженных градиентов.
Алгоритм метода BiCGStab
Если необходимо построить матрицу предобусловливателя M |
Выбрать начальное приближение x(0) |
r(0) = b – A x(0) |
Выбрать вектор
|
Для i = 1, 2, … до сходимости или до Nitmax |
i – 1 = ( , r(i–1)) |
Если i–1 = 0 |
то метод не может решить данную систему |
Если i = 1 |
p(i) = r(i–1) |
Иначе |
i–1 = (i–1 / i–2) (i–1 / i–1) |
p(i) = r(i–1) + i–1(p(i–1) – i–1 v(i–1)) |
Найти
p*
из системы
M |
v(i)
= A |
i = i–1 / ( , v(i)) |
s = r(i–1) – i v(i) |
Если ||s||2 / ||r(0)||2 tol |
то КОНЕЦ (x(i) = x(i–1) +i – полученное решение) |
Найти
|
t = A |
i = (t, s) / (t, t) |
x(i) =x(i–1) +i +i |
r(i) =s – i t |
Если ||r||2 / ||r(0)||2 tol |
то КОНЕЦ (x(i) – полученное решение) |
увеличить i |
Параметры метода полностью совпадают с параметрами метода BiCG.
Пример использования метода BiCGStab в системе TALGAT:
- действительный случай: SET "solve" BICGSTAB_r real_m right_r 0. 1.e-8 150 10 5.e-4;
- комплексный случай: SET "solve" BICGSTAB complex_m right_c 0. 1.e-8 150 10 5.e-4.