
- •Министерство образования и науки Российской Федерации
- •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.4 Метод квази-минимальных невязок
Разработка еще одного итерационного метода была направлена на устранение, упомянутой в 2.4.3, проблемы метода BiCG, а именно нестабильной сходимости. Таким методом являлся метод квази-минимальных невязок (QMR).
Далее приведен алгоритм метода QMR.
Алгоритм метода QMR
Если необходимо построить матрицу предобусловливателя M |
Выбрать начальное приближение x(0) |
r(0) = b – A x(0) |
|
Найти y из системы M1 y = |
1 = ||y||2 |
|
|
0 = 1; 0 = – 1 |
Для i = 1, 2, … до сходимости или до Nitmax |
Если i = 0 или i = 0 |
то метод не может решить данную систему |
v(i)
=
|
(i)
=
|
i = (z, y) |
Если i = 0 |
то метод не может решить данную систему |
Найти
|
Найти
|
Если i = 1 |
p(1) = ; q(1) = |
Иначе |
p(i) = – (i i / i – 1) p(i–1) |
q(i) = – (i i / i –1) q(i–1) |
|
i = (q(i), ) |
Если i = 0 |
то метод не может решить данную систему |
i = i / i |
Если i = 0 |
то метод не может решить данную систему |
|
Найти y из системы M1y = |
i+1 = ||y||2 |
|
Найти
z
из системы
|
i+1 = ||z||2 |
i = i+1 / (i |i|) |
|
Если
|
то метод не может решить данную систему |
|
Если i = 1 |
d(1)
= |
Иначе |
|
|
x(i) =x(i–1) + d(i) |
r(i) = r(i–1) – s(i) |
Если ||r||2 / ||r(0)||2 tol |
то КОНЕЦ (x(i) – полученное решение) |
увеличить i |
Метод характеризуется зачастую более гладкой сходимостью.
Параметры метода совпадают с параметрами методов BiCG и BiCGStab.
Пример использования метода QMR в системе TALGAT:
- действительный случай: SET "solve" QMR_r real_m right_r 0. 1.e-8 150 20 5.e-4;
- комплексный случай: SET "solve" QMR complex_m right_c 0. 1.e-8 150 20 5.e-4.
2.2.5 Квадратичный метод сопряженных градиентов
Еще одним итерационным методом решения СЛАУ с несимметричными матрицами является квадратичный метод сопряженных градиентов (CGS). Данный метод строится, используя соотношение rm=pm(AT) (0). Часто данный метод характеризуется повышением скорости решения в два раза по сравнению с методом BiCG.
Далее приведен алгоритм метода CGS.
Алгоритм метода CGS
Если необходимо построить матрицу предобусловливателя M |
Выбрать начальное приближение x(0) |
r(0) = b – A x(0) |
Выбрать вектор , удовлетворяющий условию (r(0), ) 0 (например, = r(0)) |
Для i = 1, 2, … до сходимости или до Nitmax |
i–1 = ( , r(i – 1)) |
Если i–1 = 0 |
то метод не может решить данную систему |
Если i = 1 |
u(1) = r(0) |
p(1) = u(1) |
Иначе |
i–1 = (i–1 / i–2) |
u(i) = r(i–1) + i–1q(i–1) |
p(i) = u(i) + i–1(q(i–1) + i–1p(i–1)) |
Найти из системы M = p(i) |
|
i
= i–1
/ (
, |
q(i) = u(i) – i |
Найти
|
x(i) =x(i – 1) +i |
|
r(i) = r(i – 1) – i |
Если ||r||2 / ||r(0)||2 tol |
то КОНЕЦ (x(i) – полученное решение) |
увеличить i |
Параметры метода совпадают с параметрами методов BiCG, BiCGStab и QMR.
Пример использования метода CGS в системе TALGAT:
- действительный случай: SET "solve" CGS_r real_m right_r 0.5 1.e-8 100 20 5.e-4;
- комплексный случай: SET "solve" CGS complex_m right_c 0.5 1.e-8 100 20 5.e-4.