
- •Министерство образования и науки Российской Федерации
- •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.2.2 Случай одномерных подпространств k и l
Наиболее простой ситуацией является случай, когда пространства K и L одномерны. Пусть K и L подпространства являющиеся множествами векторов представимых в виде линейной комбинации векторов {1, 2,…} и {1, 2,…} т.е. K=span{} и L=span{}. Тогда (2.17) принимает вид
xk+1=xk+kk, |
(2.18) |
причем коэффициент k легко находится из условия ортогональности rk–A(kk) k:
(rk–Akk, k)=(rk, k)–k(Ak, k)=0, |
откуда k=(rk, k)/(Ak, k).
Если выбрать k=k=rk, тогда (2.18) принимает вид
xk+1=xk+rk(rk, rk)/(Ark, rk). |
(2.19) |
Поскольку выражение в знаменателе представляет собой квадратичную форму rkTArk, сходимость процесса гарантирована, если матрица A является симметричной и положительно определенной. Данный метод называется методом наискорейшего спуска. В практических задачах метод наискорейшего спуска обладает достаточно медленной сходимостью.
При выборе k=ATrk и k=Ak формула (2.18) примет вид
xk=1=xk+ATrk(rk, AATrk)/(AATrk, AATrk)= =xk+ATrk(ATrk, ATrk)/(ATAATrk, ATrk). |
(2.20) |
Данный метод называется методом наискорейшего уменьшения невязки; условием его сходимости является невырожденность матрицы A. Сравнивая (2.19) и (2.20), нетрудно убедится, что метод наискорейшего уменьшения невязки совпадает с методом наискорейшего спуска, примененным к системе ATAx=ATb.
Если положить K=L и на различных итерациях в качестве вектора k циклически с повторением выбирать единичные орты e1, e2,…,eN, e1,…то получится рассмотренный ранее метод Гаусса-Зейделя (обратный порядок выбора соответствует обратному методу Гаусса-Зейделя).
Выбор на k-й итерации k=k=ATek дает, так называемый, ABS-класс методов. Чтобы для различных итераций выполнилось условие Ki Kj, возможно либо хранение всех k с их ортогонализацией по мере нахождения (схема Хуанга), либо пересчет матрицы A (схема Абрамова). Первый вариант ведет к увеличению расходов памяти для реализации алгоритма, второй – к изменению заполненности матрицы. Следовательно, данные методы пригодны лишь для решения небольших систем; с другой стороны, их единственным условием сходимости является существование решения как такового, а потому данный класс пригоден для СЛАУ с вырожденными и неквадратными матрицами. Непосредственно из определения векторов k следует, что в данных методах на k-й итерации поправка к решению вычисляется из условия обращения k-го уравнения в тождество. Если предполагать, что матрица A квадратная и невырожденная, вычислительная схема имеет следующий вид (вариант с пересчетом матрицы, метод ABR1ORT):
Алгоритм метода ABR1ORT
Выполнять для i=1,…, N |
|
Выполнять для j=i+1,…, N |
|
aj*=aj*–ai* |
bj=bj–bi |
увеличить j |
увеличить i |
Пример использования метода ABR1ORT в системе TALGAT:
- действительный случай: SET "solve" ABR1ORT_r real_m right_r;
- комплексный случай: SET "solve" ABR1ORT complex_m right_c;