МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра телевидения и управления (ТУ) УТВЕРЖДАЮ Заведующий кафедрой ТУ, профессор _________________И.Н. Пустынский «______»___________________2012 г. ИСПОЛЬЗОВАНИЕ МЕТОДОВ РЕШЕНИЯ СЛАУ Учебное методическое пособие РАЗРАБОТАЛ _________ С.П. Куксенко ___________ Т.Р. Газизов «______»_________2012 г. 2012 2 Куксенко С.П., Газизов Т.Р. Использование методов решения СЛАУ: Учебное методическое пособие. – Томск: кафедра ТУ, ТУСУР, 2012. – 63 с. В первой части работы приведены теоретические основы прямых методов решения СЛАУ. Во второй части подробно рассмотрены итерационные методы решения СЛАУ. Работа предназначена для студентов, которые проходят групповое проектное обучение по направлению «Электромагнитная совместимость». Она может быть полезной при выполнении курсовых и дипломных работ, а также в проведении научных исследований инженерами и аспирантами с использованием системы моделирования электромагнитной совместимости. Материалы работы могут быть использованы в лекционных курсах по дисциплинам, связанным с вычислительной математикой. © Куксенко С.П., Газизов Т.Р., 2012 © Кафедра телевидения и управления, ТУСУР, 2012 3 ОГЛАВЛЕНИЕ 1. Прямые (точные) методы .............................................................. 8 1.1 Метод исключения Гаусса ............................................................ 8 1.2 LU–разложение матриц ............................................................... 12 1.3 Решение СЛАУ с помощью LU-разложения матриц ............... 15 1.4 Обращение матриц ....................................................................... 18 1.5 Метод исключения Жордана (Гаусса – Жордана).................... 18 1.6 Контроль точности и уточнение приближенного решения в рамках прямого метода...................................................................... 20 1.7 Вычислительные затраты прямых методов .............................. 22 2. Итерационные методы ................................................................. 23 2.1 Классические итерационные методы и релаксация ................. 24 2.1.1 Методы Якоби и Гаусса-Зейделя ......................................... 24 2.1.2 Ускорение сходимости релаксационных методов ............. 27 2.2 Проекционные методы и подпространства Крылова............... 28 2.2.1 Общий подход к построению проекционных методов ...... 28 2.2.2 Случай одномерных подпространств K и L ........................ 30 2.2.3 Два выбора подпространств ................................................. 33 2.2.4 Подпространства Крылова .................................................... 34 2.2.5 Базис подпространства Крылова. Ортогонализация Арнольди .......................................................................................... 35 2.2.5 Биортогонализация Ланцоша ............................................... 38 2.3 Предобусловливание ................................................................... 40 2.3.1 Предобусловливание основанное на классических методах42 2.3.2 Неполное LU-разложение ..................................................... 43 2.3.3 Выбор структуры разреженности ........................................ 45 4 2.4 Методы Крыловского типа ......................................................... 47 2.4.1 Метод обобщенных минимальных невязок ........................ 48 2.4.2 Метод бисопряженных градиентов...................................... 53 2.4.3 Стабилизированный метод бисопряженных градиентов .. 55 2.4.4 Метод квази-минимальных невязок .................................... 57 2.2.5 Квадратичный метод сопряженных градиентов................. 60 2.2.6 Метод сопряженных градентов ............................................ 62 5 Введение Необходимость в решении системы линейных алгебраических уравнений (СЛАУ) возникает при использовании широкого класса моделей и подходов, используемых при проектировании и разработке аппаратуры для учета требований электромагнитной совместимости (ЭМС). Подобного рода учет становится все более актуальным ввиду ряда причин: усложняющаяся электромагнитная (ЭМ) обстановка, постоянно увеличивающееся количество используемых радиоэлектронных средств и радиоэлектронной аппаратуры, рост плотности их размещения, недостаточная изученность ЭМ процессов происходящих как внутри реальных корпусов функциональной аппаратуры, так и в жилых помещениях. Решение задач излучения или рассеяния электромагнитной волны сложными объектами, являющихся одними из основных задач ЭМ теории, может быть получено с помощью интегральных уравнений, сводящихся методом моментов к СЛАУ с плотными матрицами. Компьютерное моделирование позволяют существенно снизить затраты на тестирование разрабатываемой аппаратуры, сделать эти процессы более автоматизированными и рентабельными. Более того, учет требований ЭМС, которые становится все более жесткими, а особенно для бытовой радиоэлектроники, является одним из залогов экономического успеха товара на рынке. При компьютерном моделировании основные вычислительные затраты состоят из суммы затрат на формирование матрицы и затрат непосредственно на решение 6 СЛАУ. Поскольку в большинстве случаев временные затраты на решение СЛАУ намного превосходят затраты на заполнение матрицы таким образом, трудно переоценить роль, которую играет выбор эффективного способа решения СЛАУ. Поэтому разработка и исследование новых математических методов и подходов для решения таких СЛАУ весьма актуальна. Целью данного пособия является описание использования методов позволяющих решать системы линейных алгебраических уравнений, на примере системы TALGAT. В данном пособии рассматриваются методы решения СЛАУ вида a11 x1 a12 x1 a1N x N b1 , a 21 x1 a 22 x 2 a 2 N x N b 2 , a N 1 x1 a N 2 x 2 a NN x N b N . (1.1) или иначе, векторно-матричных уравнений Ax = b, (1.2) где b – вектор свободных членов, x – вектор неизвестных (векторрешение) размерности N и A – N N матрица коэффициентов данной системы. Необходимо отметить, что в системе TALGAT (см. методические указания по использованию системы) матрицы относятся к типу данных matrix. При этом матрицы из чисел типа double номинально обозначаются как тип real_matrix, матрицы из чисел типа complex - как тип complex_matrix. Если команда требует параметр типа matrix, то ей можно передавать параметры типа 7 real_matrix и complex_matrix. Если команда явно требует параметр типа real_matrix, то ей нельзя передавать параметр типа complex_matrix, и наоборот. Индексация столбцов и строк матриц начинается с нуля (в отличие от описания, приведенного в пособии). Векторы в системе представляются матрицами с одной строкой. Эффективность способа решения системы (1.1) во многом зависит от структуры матрицы A: размера, обусловленности, симметричности, заполненности (т.е. соотношения между числом ненулевых и нулевых элементов), специфики расположения ненулевых элементов в матрице и др. Все методы решения линейных алгебраических систем можно разбить на два класса: прямые и итерационные. Прямыми методами называются методы, которые приводят к решению за конечное число арифметических операций. Если операции реализуются точно, то и решение также будет точным (в связи, с чем к классу прямых методов применяют еще название точные методы). Итерационными методами являются методы, в которых точное решение может быть получено лишь в результате бесконечного повторения единообразных действий. В системе TALGAT все реализованные методы позволяют решать СЛАУ как для действительного, так и для комплексного случая. 8 1. Прямые (точные) методы 1.1 Метод исключения Гаусса Наиболее известным и популярным способом решения линейных систем вида (1.1) является метод последовательного исключения неизвестных – метод Гаусса (GE). Метод существует во многих вариантах, которые алгебраически тождественны. Методы отличаются характером хранения матриц, порядком исключения, способами предупреждения больших погрешностей округления и тем, как уточняются вычисленные решения. Имеются также варианты, специально приспособленные для систем с симметричными положительно определенными матрицами, которые хранятся в примерно вдвое меньшем объеме. Систему (1.1) приводят к треугольному виду последовательно, исключая сначала x1 из второго, третьего, …, N-го уравнений, затем x2 из третьего, четвертого, …, N-го уравнений преобразованной системы, и т.д. На первом этапе заменяют второе, третье, …., N-е уравнение на уравнения, получающиеся сложением этих уравнений с первым, умноженным соответственно на a 21 , a31 , ..., a N 1 . Результатом этого этапа преобразований будет a11 a11 a11 эквивалентная (1.1) система. На втором этапе проделывается такие же операции, как и на первом, с подсистемой полученной системы, получающейся исключением первого уравнения. Продолжая этот процесс, на (N – 1)-м этапе так называемого прямого хода метода Гаусса данную систему (1.1) приводят к треугольному виду. Очевидно, что треугольная структура системы позволяет 9 последовательно одно за другим вычислять значения неизвестных, начиная с последнего. Этот процесс последовательного вычисления значений неизвестных называют обратным ходом метода Гаусса. Далее приведен простой алгоритм решения СЛАУ методом Гаусса. Алгоритм метода Гаусса Для k = 1, 2,…, N 1 Для i = k + 1, …, N tik = aik / akk bi = bi – tik bk Увеличить i Для j = k + 1, …, N aij = aij – tik akj Увеличить j Увеличить k xN = bN / aNN Для k = N 1, …, 2, 1 N a kj x j / a kk x k bk j k 1 Увеличить k Инициализируем в системе матрицу (см. методические указания к системе) real_m для действительно случая и complex_m для комплексного случая. Далее инициализируем вектор (однострочную матрицу) свободных членов right_r и right_c для действительного и комплексного случая соответственно. Пример использования метод Гаусса в системе TALGAT будет иметь вид: 10 - действительный случай: SET "solve" GE_r real_m right_r; - комплексный случай: SET "solve" GE complex_m right_c. Результат выполнения программы можно с помощью команды ECHO TO_STRING solve. Подав на вход алгоритма квадратную матрицу коэффициентов и вектор свободных членов и выполнив три вложенных цикла вычислений прямого хода (строки 1 – 6) приведем исходную систему к треугольному виду. Выполнив цикл вычислений обратного хода (строки 7 – 9) на выходе алгоритма получим точное решение системы (в обратном порядке), если, разумеется, ни один из знаменателей не обращается в нуль и все вычисления проводятся точно. Так как реальные машинные вычисления производятся не с точными, а с усеченными числами, т.е. неизбежны ошибки округления, то, анализируя, например, формулы строк 4 и 6, можно сделать вывод прекратиться о или том, что привести к выполнение алгоритма может неверным результатам, если знаменатели дробей на каком-то этапе окажутся равными нулю или очень маленькими числами. Чтобы уменьшить влияние ошибок округлений и исключить деление на нуль, на каждом этапе прямого хода уравнения системы (точнее, обрабатываемой подсистемы) обычно переставляют так, чтобы деление производилось на наибольший по модулю в данном столбце (обрабатываемом подстолбце) элемент. Числа, на которые производится деление в методе Гаусса, называются ведущими или главными элементами. Отсюда название рассматриваемой модификации метода, 11 исключающей деление на нуль и уменьшающей вычислительные погрешности, – метод Гаусса с постолбцовым выбором главного элемента (или, иначе, с частичным упорядочиванием по столбцам). Частичное упорядочивание по столбцам требует внесение в алгоритм следующих изменений: между строками 1 и 2 нужно сделать вставку эффективным, (чтобы перед частичное этим упорядочивание целесообразно было произвести масштабирование системы, например, разделить все числа каждой строки на наибольшее число строки): «Найти m k такое, что a mk max a ik ; если amk = 0, остановить ik работу алгоритма («однозначного решения нет»), иначе поменять местами bk и bm, akj и amj при всех j = k, …, N» Пример использования метода исключения Гаусса с частичным упорядочиванием по столбцам в системе TALGAT: - действительный случай: SET "solve" PGE_r real_m right_r; - комплексный случай: SET "solve" PGE complex_m right_c. Устойчивость алгоритма к погрешностям исходных данных и результатов промежуточных вычислений можно еще усилить, если выполнить деление на каждом этапе на элемент, наибольший по модулю во всей матрице преобразуемой на данном этапе подсистемы. Такая модификация метода Гаусса, называемая методом главных элементов, применяется довольно редко, поскольку сильно усложняет алгоритм. Усложнение связано как с необходимостью осуществления двумерного поиска главных 12 элементов, так и с необходимостью запоминать номера столбцов, откуда берутся эти элементы (перестановка столбцов означает как бы переобозначение неизвестных, в связи, с чем требуется обратная замена). 1.2 LU–разложение матриц Пусть A a ij i,j 1 – данная N N-матрица, а L l ij i,jN1 и N U u ij i,j 1 – соответственно нижняя (левая) и верхняя (правая) N треугольные матрицы. Справедливо следующее утверждение. Если все главные миноры квадратной матрицы A отличны от нуля, то существуют такие нижняя L и верхняя U треугольные матрицы, что A = LU (главными минорами матрицы A aij i,j 1 называются N определители подматриц A k a ij i,j 1 , где k = 1, 2,…, N – 1). Если k элементы диагонали одной из матриц L или U фиксированы (ненулевые), то такое разложение единственно. Реализация LU-разложения с фиксированием диагонали верхней треугольной матрицы называется методом Краута. Рассмотрим разложение матриц при фиксировании диагонали нижней треугольной матрицы (lij = 1 при i = j) – метод Дулитла. Далее находят lij при i j (lij = 0 при i j)и uij при i j (uij = 0 при i j) такие, чтобы 0 1 l 21 1 ... ... l N1 l N 2 ... ... ... ... 0 u11 u12 0 0 u 22 ... ... ... 1 0 0 ... u1N a11 a12 ... u1N a 21 a 22 ... ... ... ... ... u NN a1N a 2 N ... a1N ... a 2 N ... ... ... a NN 13 Выполнив перемножение матриц, на основе поэлементного приравнивания левых и правых частей приходим к N N матрице уравнений u11 a11 , u12 a12 , l 21 u11 a 21 , l 21 u12 u 22 a 22 , .... .... l N 1 u11 a N 1 , l N 1 u12 l N 2 u 22 a N 2 , ..., u1N a1N , ..., l 21 u1N u 2 N a 2 N , .... .... ..., l N 1 u1N ... u NN a NN , относительно N N-матрицы неизвестных u11, u12, … , u1N l21, u22, … , u2N (1.3) ………………. lN1, lN2, … , uNN Легко видеть, что все отличные от 0 и 1 элементы матриц L и U могут быть однозначно вычислены с помощью всего двух формул i 1 u ij aij l ik u kj (где i j), (1.4) k 1 l ij При j 1 1 a ij l ik u kj (где i j). k 1 u jj внимательном преобразований можно рассмотрении заметить, что для (1.5) приведенных реализации LU- разложения по данным формулам существует большое количество различных методов, например, построчное вычисление, т.е. пока не вычислена i-ая строка матриц L и U, алгоритм не модернизирует i+1 строку. 14 При практическом выполнении разложения (факторизации) матрицы A нужно иметь в виду следующие два обстоятельства. Во-первых, организация вычислений по формулам (1.4) – (1.5) должна предусматривать переключение счета с одной формулы на другую. Это удобно делать, ориентируясь на матрицу неизвестных (1.3) (ее, кстати, можно интерпретировать как N 2мерный массив для компактного хранения LU-разложения в памяти компьютера), а именно, первая строка (1.3) вычисляется по формуле (1.4) при i = 1, j = 1, 2,…, N; первый столбец (1.3) (без первого элемента) – по формуле (1.5) при j = 1, i = 2,…, N, и т.д. Во-вторых, препятствием для осуществимости описанного процесса LU-разложения матрицы A может оказаться равенство нулю диагональных элементов матрицы U, поскольку на них выполняется деление в формуле (1.5). Отсюда следует требование, накладываемое на главные миноры. Для определенных классов матриц требования о разложении заведомо выполняются. Это относится, например, к матрицам с преобладанием диагональных элементов. Далее приведена построчная схема LU-разложения (так называемая ikj-версия). Алгоритм LU-разложения (ikj-версия) Для i = 2, …, N Для k = 1, …, i – 1 aik = aik / akk Для j = k + 1, …, N aij = aij – aikakj 15 Увеличить j Увеличить k Увеличить i Данный алгоритм позволяет пересчитать i-ю строку матрицы A в i-ю строку матриц L и U. Каждые 1, 2,…, j-1 строки участвуют в определении j-й строки матриц L и U, но сами больше не модернизируются. Пример использования LU-разложения в системе TALGAT: - действительный случай: SET "lu_fact" LU_FACT_r real_m; - комплексный случай: SET "lu_fact" LU_FACT complex_m. Как упоминалось ранее, существует много вариантов осуществления LU-разложения. 1.3 Решение СЛАУ с помощью LU-разложения матриц Если матрица A исходной системы (1.1) разложена в произведение треугольных L и U, то, значит, вместо (1.2) можно записать эквивалентное уравнение LUx=b. Введя вектор вспомогательных переменных y, последнее выражение можно переписать в виде системы Ly b, Ux y. Таким образом, решение данной системы с квадратной матрицей коэффициентов свелось к последовательному решению двух систем с треугольными матрицами коэффициентов. 16 Очевидно, все yi могут быть найдены из системы Ly=b при i=1, 2,…, N по формуле (прямой ход) i 1 yi bi l ik y k . (1.6) k 1 Значения неизвестных xi находятся из системы Ux=y в обратном порядке, т.е. при i=N, N–1,…, 1, по формуле (обратный ход) xi Итак, решение N 1 y i u ik x k . k i 1 u ii СЛАУ (1.7) посредством LU-факторизации сводится к организации вычислений по четырем формулам: совокупности формул (1.4)–(1.5) для получения матрицы L+U–I (1.3) ненулевых и неединичных элементов матриц для L и U, формулы (1.6) для получения вектора свободных членов треугольной системы Ux=y и формулы (1.7), генерирующей решение исходной системы (1.1). Обратим внимание на тот факт, что выполнение расчетов по формулам (1.4)–(1.6) можно интерпретировать как преобразование системы (1.1) к треугольной системе Ux=y. С системой, являющейся результатом прямого хода метода Гаусса, последняя имеет не только структурное сходство, но полностью совпадает с ней (совпадение первых уравнений очевидно, коэффициенты при неизвестных и свободные члены вторых уравнений легко выражаются одинаково через исходные данные; можно и дальше проводить сравнение этих систем таким путем, однако обычно идентичность этих систем показывают проще на основе, представления прямого хода метода Гаусса как последовательности умножений матрицы A слева на матрицы очень простой структуры 17 такой, что в итоге получается матрица U, а последовательность обратных преобразований дает L. Так что решение линейных систем с помощью LU-разложения – это просто другая схема реализации метода Гаусса. В отличие от рассмотренной в ранее так называемой схемы единственного деления эту называют компактной схемой Гаусса или схемой Холецкого (чаще схемой Холецкого называют основанный на той же идее способ решения симметричных линейных систем). Пример использования метода решения СЛАУ, основанного на LU-разложения в системе TALGAT без упорядочивания по столбцам: - действительный случай: SET "lu_solve" LU_SOLVE_r LU_FACT_r real_m right_r; - комплексный случай: SET "lu_solve" LU_SOLVE LU_FACT complex_m right_c; с частичным упорядочивание по столбцам: - действительный случай: SET "lu_solve" PLU_r r real_m right_r; - комплексный случай: SET "lu_solve" PLU complex_m right_c. В отличие от схемы единственного деления данная схема менее удобна для усовершенствования с целью уменьшения влияния вычислительных погрешностей путем выбора подходящих ведущих элементов. Достоинством же ее можно считать то, что LUразложение матрицы A играет роль обратной матрицы, и может помещаться в памяти компьютера на место матрицы A и использоваться, например, при решении нескольких систем, 18 имеющих одну и ту же матрицу коэффициентов и разные векторы свободных членов. 1.4 Обращение матриц Для обращения матрицы A с помощью LU-разложения можно N-кратно использовать формулы (1.6)–(1.7) для получения столбцов матрицы А–1; при этом в качестве bi в (1.6) должны фигурировать только 0 и 1: для нахождения первого столбца полагают b1=1, b2=0, b3=0, … = bN=0, для второго b1=0, b2=1, b3=0, … = bN=0, и тд. В результате после окончания N шагов на месте исходной матрицы A находится ее обратная матрица А–1. Пример использования метода обращения матриц в системе TALGAT: - действительный случай: SET "lu_inv" LU_INV_r real_m; - комплексный случай: SET " lu_inv " LU_INV complex_m. 1.5 Метод исключения Жордана (Гаусса – Жордана) Одной из модификаций, описанного выше, метода Гаусса является подход, предложенный Жорданом, позволяющий получить решения с помощью только прямого хода. Различие этих двух методов заключается в том, что при реализации последнего элементы матрицы обнуляются как под, так и над главной диагональю. В результате данного подхода вектор решение находится на месте вектора свободных членов, а на месте исходной матрицы находится единичная. Рассмотрим подробнее данный метод без выбора, ведущего элемента. 19 a11 a12 a 21 a 22 ... ... a1N a 2 N ... a1N x1 b1 ... a 2 N x 2 b 2 ... ... ... ... ... a NN x N b N Пусть a11 ведущий элемент. На первом этапе первая строка подвергается нормировке ведущим элементом, а затем аналогично методу Гаусса происходит обнуление поддиагональных элементов. В результате первого этапа получаем эквивалентную систему. 1 a12 a11 (1) 0 a 22 ... ... (1) 0 aN 2 ... a1N a11 x1 b1 a11 (1) (1) ... a2 N x2 b2 ... ... ... ... (1) (1) ... a NN x N b N (1) На втором этапе после нормировки второй строки на a 22 , аналогично методу Гаусса обнуляют поддиагональные элементы, а также и наддиагональный. Продолжая процесс подобным образом на месте исходной матрицы получим единичную и, соответственно, на месте вектора свободных членов вектор решение. Далее приведен алгоритм метода Гаусса-Жордана. Алгоритм метода Гаусса - Жордана Для k = 1, 2,…, N bk = bk / akk Для j = N, N – 1, …, k akj = akj / akk Увеличить j Для i = 1, 2,…k – 1, k + 1, …, N bi = bi – aik bk 20 Увеличить i Для j = N, N – 1, …, k Для i = 1, 2,…k – 1, k + 1, …, N aij = aij – aik akj Увеличить i Увеличить i Увеличить k Для повышения точности используют модификацию с частичным или полным выбором ведущего элемента. Для введения частичного упорядочивания необходимо, как и в алгоритме метода Гаусса, сделать вставку, приведенную в разделе 1.1. Пример использования метода Гаусса - Жордана в системе TALGAT без упорядочивания по столбцам: - действительный случай: SET "solve" GJE_r real_m right_r; - комплексный случай: SET "solve" GJE complex_m right_c; с частичным упорядочивание по столбцам: - действительный случай: SET "solve" PGJE_r real_m right_r; - комплексный случай: SET "solve" PGJE complex_m right_c. 1.6 Контроль точности и уточнение приближенного решения в рамках прямого метода Как отмечалось во введении, прямые методы приводят к точному решению предусматриваемых арифметических СЛАУ при точном соответствующими операций (без округлений). выполнении алгоритмами Реальные же вычисления базируются на арифметики машинных (т.е. усеченных 21 до определенного количества разрядов) чисел. Как отражается на результате решения системы подмена арифметики действительных чисел машинной арифметикой, зависит от самой решаемой системы, параметров применяемого компьютера, системы представления данных, способов реализации алгоритмов. В любом случае, практически вместо точного решения СЛАУ (1.1) прямой метод дает приближенное решение x0. Метод Гаусса порождает относительную ошибку решения порядка N2–lсondA, где l–число двоичных разрядов, выделяемых компьютером под мантиссу вещественного числа, а число condA обусловленности condA=||A||||A–1|||max|/|min|. Подставив x0 в выражение невязки, по малости полученного вектора-значения r0=b–Ax0 можно с осторожностью судить о близости найденного решения x0 к точному решению x. Если, например, ||r0||2–недостаточно малая величина, то следует искать вектор-поправку p такой, что x0+p=x есть точное решение системы (1.1), т.е. A(x0+p)=b. Последнее равносильно векторно-матричному уравнению Ap=r0. Как видно, нахождение поправки сводится к решению такой же системы, как и (1.1), где в качестве вектора свободных членов должен быть взят вектор невязок. Поскольку матрица коэффициентов осталась той же, что и у исходной системы, нет надобности в коэффициентов выполнении при прямого неизвестных хода (иначе, преобразований LU-разложения); достаточно выполнить только, действия, касающиеся новых 22 свободных членов (решить две треугольные системы: Lz=r0 и Up=z). Прибавив найденную поправку p=p0 к x0, получаем уточненное приближенное решение x1=x0+p0.В случае, если величина ||p0||2 (или ||p0||2/||x1||2, если контролируется относительная, а не абсолютная погрешность) окажется недостаточно малой, процесс уточнения может быть повторен: ищется поправка p1 как приближенное решение уравнения Ap=r1, где r1=b–Ax1; тогда более точным должно быть решение x2=x1+p1. Cходимость к нулю невязок в таком процессе уточнения решения может не наблюдаться, т.е. следить нужно за установлением знаков самого решения. Обычно делают не более двух-трех шагов уточнения, причем рекомендуется производить вычисление невязок в режиме накопления. Если в этом процессе не происходит сближения xk при k=2, 3, то это говорит, скорее всего, о том, что данная система плохо обусловлена и ее решение не может быть найдено с требуемой точностью без привлечения дополнительной информации об исходной задаче. В таких случаях закономерно ставить вопрос о том, что понимать под точным решением системы и, возможно, обращаться к методам нахождения ее. Хотя описанный здесь контроль точности по невязкам и уточнение решений не требует больших вычислительных затрат, требуемая память компьютера должна быть увеличена вдвое, так как при этом нужно удерживать в памяти исходные данные. 1.7 Вычислительные затраты прямых методов Одним из факторов, предопределяющих выбор того или иного метода при решении конкретной задачи, является 23 вычислительная эффективность метода. Особенностью прямых методов является то, что здесь можно точно подсчитать требуемое количество арифметических операций. Учитывая, что часто операции сложения выполняются намного быстрее, чем умножения и деления, обычно ограничиваются подсчетом последних. Так для решения N-мерной СЛАУ методом Гаусса (без выбора главного элемента) требуется N 3/3+N 2–N/3 умножений и делений. При больших значениях размерности N существенным является старший член выражения для подсчета числа арифметических операций (иначе, арифметической сложности метода). Можно сказать, что вычислительные затраты на операции умножения и деления в методе Гаусса составляют величину N 3/3. 2. Итерационные методы Развитие вычислительной техники и вызванный этим процессом переход к более сложным (трехмерным) моделям, привел к необходимости решения больших систем линейных алгебраических уравнений. Точные методы понятны и просты для программной реализации, однако, вычислительные затраты этих методов, которые пропорциональны N 3, серьезно ограничивают круг рассматриваемых проблем. Поэтому в последнее время широко применяются итерационные методы, т.к. если для сходимости итерационного метода потребуется число итераций много меньше, чем N, то основные вычислительные затраты приходятся на умножение матрицы на вектор (один или два раза в каждой итерации в зависимости от использованного метода), т.е. 24 уменьшаются до N 2. Наиболее эффективными и устойчивыми среди итерационных методов являются так называемые проекционные методы, и особенно тот их класс, который связан с проектированием на подпространства Крылова. Эти методы обладают рядом достоинств: они устойчивы, допускают эффективное распараллеливание и работу с предобусловливателями разных типов. 2.1 Классические итерационные методы и релаксация Исторически первые итерационные методы основывались на циклическом покомпонентном изменении вектора решения, осуществляемом таким образом, чтобы обнулить соответствующий коэффициент вектора невязки и тем самым уменьшить его норму. Подобная методика уточнения решения получила название релаксация. Хотя в настоящее время такие методы в их классической формулировке уже практически не применяются, существуют определенные классы задач, для которых разработаны их модификации, хорошо себя зарекомендовавшие. Кроме того, как будет показано далее, эти методы могут быть применены не в качестве самостоятельного средства решения СЛАУ, а для предобусловливания. 2.1.1 Методы Якоби и Гаусса-Зейделя Пусть матрица A системы (1.1) такова, что ее главная диагональ не содержит нулевых элементов. Представим ее в виде разности трех матриц: 25 A=D–E–F, (2.1) где матрица D, содержит диагональные элементы матрицы A; матрица E – только поддиагональные; матрица F – только наддиагональные. Тогда система (1.1) может быть записана в виде Dx–Ex–Fx=b. Если имеется некоторое приближение xk к точному решению СЛАУ x*, то при xkx* это соотношение не выполняется. Однако, если в выражении Dxk–Exk–Fxk=b (2.2) одно или два из вхождений вектора xk заменить на xk+1 и потребовать, чтобы равенство имело место, можно получить некоторую вычислительную схему для уточнения решения. Наиболее простой с точки зрения объема вычислительной работы вариант получается при замене в (2.2) Dxk на Dxk+1. При этом получается схема xk+1=D–1(E+F)xk+D–1b, (2.3) известная как метод Якоби. Выражение (210) в скалярной форме имеет вид x (k 1 ) i i 1 N (k) bi a ij x j a ij x(k) j / a ii , i=1,…, N, j 1 j k 1 (2.4) откуда хорошо видна основная идея метода: на (k+1)-й итерации i-й компонент вектора решения изменяется по сравнению с k-й итерацией так, чтобы i-й компонент вектора невязки стал rk+1нулевым (при условии отсутствия изменений в компонентах вектора x). других 26 Очевидным недостатком схемы (2.3) – (2.4) является то, что при нахождении компонента xi(k+1) никак не используется информация о уже пересчитанных компонентах x1(k+1),…, xi-1(k+1). Исправить этот недостаток можно, переписав (2.4) в виде x (k 1 ) i bi a ij x(kj 1 ) a ij x(k) j / a ii , i=1,…, N, j 1 j k 1 i 1 N (2.5) что в векторной форме эквивалентно xk+1=(D–E)–1Fxk+(D–E)–1b. (2.6) Такая схема называется методом Гаусса-Зейделя. Выражение (2.5) получается из (2.2) заменой xk на xk+1 при матрицах D и E. Если вместо этой пары матриц взять D и F, то получится похожая схема xk+1=(D–F)–1Exk+(D–F)–1b, (2.7) которая называется обратным методом Гаусса-Зейделя. Еще одной модификацией является симметричный метод Гаусса-Зейделя, который заключается в циклическом чередовании (2.6) и (2.7) на соседних итерациях. Нетрудно заметить, что выражения (2.3), (2.4), (2.5) могут быть записаны в виде Kxk+1=Rxk+b, (2.8) где матрицы K и R связаны соотношением A=K–R. (2.9) Подобное представление матрицы A называется расщеплением, а методы вида (2.8)–методами, основанными на расщеплении. Очевидно, матрица K должна быть невырожденной и легко обратимой. 27 2.1.2 Ускорение сходимости релаксационных методов Скорость сходимости методов, основанных на расщеплении, непосредственно связана со спектральным радиусом матрицы K–1R; с другой стороны, выбор K ограничен требованием легкой обратимости. Одним из распространенных способов улучшения сходимости является введение параметра. Пусть – некоторое вещественное число. Рассмотрим вместо системы (1.1) масштабированную систему Ax=b, (2.10) и вместо (2.1) воспользуемся представлением A=(D–E)–(F+(1–)D), (2.11) где матрицы D, E, F имеют тот же смысл, что и в (2.1). Тогда на основании (2.10) и (2.11) можно построить итерационную схему, похожую на метод Гаусса-Зейделя, (D–E)xk+1=(F+(1–)D)xk+b. (2.12) Схема (2.18) называется методом последовательной верхней релаксации (SOR). Для нее KSOR()=D–E RSOR()=F+(1–)D. Выбор параметра , минимизирующего спектральный радиус является, вообще говоря, достаточно сложной проблемой. Однако для многих классов матриц такая задача исследована и оптимальные значения известны. Выражение (2.11) остается тождеством, если в нем поменять местами матрицы E и F. Такая перестановка дает обратный метод последовательной верхней релаксации: 28 (D–F)xk+1=[E+(1–)D]xk+b. Последовательное применение прямого и обратного методов SOR дает симметричный метод последовательной верхней релаксации (SSOR) (D–E)xk+1/2=[F+(1–)D]xk+b; (D–F)xk+1=[E+(1–)D]xk+1/2+b. 2.2 Проекционные методы и подпространства Крылова 2.2.1 Общий подход к построению проекционных методов Рассмотрим систему (1.1) и сформируем для нее следующую задачу. Пусть заданы некоторые два подпространства K RN и L RN. Требуется найти такой вектор xK, который обеспечивал бы решение исходной системы, «оптимальное относительно подпространства L», т.е. чтобы выполнялось условие l L: (Ax, l)=(b, l), называемое условием Петрова-Галеркина. Сгруппировав обе части равенства по свойствам скалярного произведения и заметив, что b– Ax=rx, это условие можно переписать в виде l (2.13) L: (rx, l)=0, т.е. rx=b–Ax L. Такая задача называется задачей проектирования x на подпространство K ортогонально к подпространству L. В более общей постановке задача выглядит следующим образом. Для исходной системы (1.1) известно некоторое приближение x0 к решению x*. Требуется уточнить его поправку x K таким образом, чтобы b–A(x0+x) L. Условие ПетроваГалеркина в этом случае можно записать в виде 29 l L: (rx0+x, l)=((b–Ax0)–Ax, l)=(r0–Ax, l)=0. Пусть dimK=dimL=m (где dim – размер подпространств). Введем в подпространство K и L базисы {ν j}mj 1 и {ω j}mj 1 соответственно. Нетрудно видеть, что (2.19) выполняется тогда и только тогда, когда j(1jm): (r0–Ax,j)=0. (2.14) При введении для базисов матричных обозначений V=|1|2| |m| и W=|1|2| |m| можно записать x=Vy где y Rm– вектор коэффициентов. Тогда (2.14) может быть записано в виде WT(r0–AVy)=0, (2.15) y=(WTAV)–1WTr0. (2.16) откуда WTAVy=WTr0 и Таким образом, решение должно уточняться в соответствии с формулой x1=x0+V(WTAV)–1WTr0, (2.17) из которой сразу вытекает важное требование: в практических реализациях проекционных методов подпространства и их базисы должны выбираться, так чтобы WTAV либо была малой размерности, либо имела простую структуру, удобную для обращения. Из (2.15) также вытекает соотношение Vy=A–1r0=A–1(b–Ax0)=x*–x0, т.е. Vy=x представляет собой проекцию на подпространство K разности между точным решением и начальным приближением. 30 Пусть имеется набор пар подпространств [ K i , Li ]iq1 таких, что K1 K2… Kq=RN и L1 L2… Lq=RN (запись K L обозначает симметричную разность множеств K и L, т.е. элемент принадлежит K L, если он находится либо в K, либо в L, но не в пересечении K и L, т.е. K L = K L – K L). Тогда очевидно, что последовательное применение описанного ранее процесса ко всем таким парам приведет к решению xq, удовлетворяющему исходной системе Ax=b. Соответственно, в общем, виде алгоритм любого метода проекционного класса может быть записан следующим образом: Начало Выбор пары подпространств K и L Построение для K и L базисов V=|1|2| |m| и W=|1|2| |m| r=b–Ax y=(WTAV)–1WTr x=x+Vy Продолжать до достижения сходимости 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) 31 причем коэффициент 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)= T T T T T (2.20) T =xk+A rk(A rk, A rk)/(A AA rk, A rk). Данный метод называется методом наискорейшего уменьшения невязки; условием его сходимости является невырожденность матрицы A. Сравнивая (2.19) и (2.20), нетрудно убедится, что метод наискорейшего уменьшения невязки совпадает с методом наискорейшего спуска, примененным к системе ATAx=ATb. Если положить K=L и на различных итерациях в качестве вектора k циклически с повторением выбирать единичные орты e1, e2,…,eN, e1,…то получится рассмотренный ранее метод ГауссаЗейделя (обратный порядок выбора соответствует обратному методу Гаусса-Зейделя). 32 Выбор на k-й итерации k=k=ATek дает, так называемый, ABS-класс методов. Чтобы для различных итераций выполнилось условие Ki Kj, возможно либо хранение всех k с их ортогонализацией по мере нахождения (схема Хуанга), либо пересчет матрицы A (схема Абрамова). Первый вариант ведет к увеличению расходов памяти для реализации алгоритма, второй – к изменению заполненности матрицы. Следовательно, данные методы пригодны лишь для решения небольших систем; с другой стороны, их единственным условием сходимости является существование решения как такового, а потому данный класс пригоден для СЛАУ с вырожденными и неквадратными матрицами. Непосредственно из определения векторов k следует, что в данных методах на k-й итерации поправка к решению вычисляется из условия обращения k-го уравнения в тождество. Если предполагать, что матрица A квадратная и невырожденная, вычислительная схема имеет следующий вид (вариант с пересчетом матрицы, метод ABR1ORT): Алгоритм метода ABR1ORT Выполнять для i=1,…, N xx bi T ai * (ai * , ai *) Выполнять для j=i+1,…, N α (ai* , a j* ) (ai * , ai *) aj*=aj*–ai* bj=bj–bi 33 увеличить j увеличить i Пример использования метода ABR1ORT в системе TALGAT: - действительный случай: SET "solve" ABR1ORT_r real_m right_r; - комплексный случай: SET "solve" ABR1ORT complex_m right_c; 2.2.3 Два выбора подпространств В разделе 2.2.2 были рассмотрены методы наискорейшего спуска, в котором подпространства K и L были связаны соотношением K=L, и наискорейшего уменьшения невязки который основан на соотношении L=AK. Сами подпространства являлись одномерными, в качестве базиса K выступал вектор невязки. В этих случаях задача проектирования эквивалентна задаче минимизации функционалов. Как оказывается, подобные утверждения справедливы и в гораздо более общих случаях, которые имеют важное значение при построении более сложных и эффективных методов. Так если матрица A симметрична и положительно определенна, то задача проектирования решения СЛАУ (1.1) на любое подпространство K ортогонально к нему самому (т.е. ортогонально к пространству L=K) является эквивалентной задаче минимизации ||x–x*||A2 на пространстве K. Для произвольной невырожденной матрицы A задача проектирования решения СЛАУ (1.1) на любое подпространство K ортогонально подпространству 34 L=AK, эквивалентна задаче минимизации ||rx||22 на подпространстве K. 2.2.4 Подпространства Крылова При построении и реализации проекционных методов важную роль играют так называемые подпространства Крылова, часто выбираемые в качестве K. Подпространством Крылова размерности m, порожденным вектором и матрицей A называется линейное пространство Km(, A)=span{, A, A2,…,Am–1}. (2.21) В качестве вектора обычно выбирается невязка начального приближения r0; тогда выбор подпространства L и способ построения базисов подпространств полностью определяет вычислительную схему метода. К идее использования подпространств Крылова можно прийти, например, следующим образом. При построении релаксационных методов использовалось представление матрицы A в виде A=D–E–F. Было также показано, что методы Якоби-Зейделя являются частными случаями класса методов, основанного на расщеплении A в виде разности (2.9) двух матриц K и R. Тогда исходная система (1.1) может быть записана в виде Kx=b+Rx=b+(K–A)x, что позволяет построить итерационный процесс Kxk+1=Kxk+(b–Axk), или, что то же самое, xk+1=xk+K–1rk. (2.22) 35 Если выбрать K=I и R=I–A, тогда процесс (2.22) будет сведен к виду xk+1=xk+rk, (2.23) xk=x0+r0+r1+…+rk–1. (2.24) откуда следует Умножив обе части (2.23) слева на (–A) и прибавив к ним b, получится b–Axk+1=b–Axk–Ark=rk–Ark, что позволяет найти выражение для невязки на k-ой итерации через невязку начального приближения: rk=(I–A)rk–1=(I–A) kr0. (2.25) После подстановки (2.25) в (2.24) получается k 1 j 0 xk=x0+ (I A) j r0, т.е. k span{r0, Ar0, …,Ak-1r0}=Kk(r0, A). Из (2.25) следует, что в методах, использующих подпространства Крылова, невязка на k-ой итерации выражается через начальную невязку некоторым матричным полиномом. 2.2.5 Базис подпространства Крылова. Ортогонализация Арнольди Для построения базиса в пространстве Крылова Km(1, A) можно применить следующий подход. Сначала находят векторы 1=1, 2=A1, 3=A21=A2,…, m=Am–11=Am–1. По определению (2.21), Km(1, A)=span{1, 2,…, m}. Далее переходят от {1, 2,…, m} к {1, 2,…, m}, применив процедуру ортогонализации 36 k k+1=k–1– αi νi , (2.26) i 1 и затем пронормировав полученные векторы. Предполагая, что предыдущие k векторов уже построены, т.е. i,j 0, i j . 1, i j (1i, jk): (i,j)= (2.27) Тогда (2.26) можно записать k k+1=Ak– αi νi . i 1 Для выполнения условия ортогональности k+1 ко всем предыдущим векторам, умножают это равенство скалярно на j (jk) и приравнивая результат к нулю k (Ak, j)– αi( νi , ν j ) 0. (2.28) i 1 С учетом (2.27) отсюда легко получить выражение для коэффициентов j j=(Ak, j). Описанный метод может быть оформлен в виде следующей процедуры, называемой ортогонализацией Арнольди. Алгоритм ортогонализации Арнольди Входные данные: 1, такой что ||1||2=1; A; m Выполнять для j=1,…, m =Aj Выполнять для i=1,…, j hij=(, i) =–hiji 37 увеличить i hj+1, j=||||2 Если hj+1, j=0, то КОНЕЦ. Базис построен. j+1=/hj+1, j увеличить j Для коэффициентов ортогонализации здесь введена двойная индексация, с учетом которой внутренний цикл алгоритма алгебраически записывается как j hj+1, j j+1=Aj– hij νi . (2.29) i 1 Коэффициенты ортогонализации hi,j можно объединить в виде матрицы H, дополнив в ней недостающие позиции нулями. При этом, как видно из алгоритма, для заданной размерности пространства m генерируется m+1 векторов. Последний вектор m+1 (возможно, нулевой) в матричном представлении означает расширение базиса V одним дополнительным столбцом, т.е. Vm=[1|2|…|m]; Vm+1=[1|2|…|m|m+1]. Соответствующий вектору m+1 коэффициент hm+1,m означает расширение матрицы H одной дополнительной строкой (возможно, нулевой). Пусть H m – это матрица (m+1)m матрица коэффициентов hm+1,m, а матрица Hm – та же самая матрица без последней строки, имеющая размерность mm. Тогда непосредственно из описания алгоритма Арнольди и (2.29) следует, что матрица Hm является 38 матрицей в верхней форме Хессенберга, (матрица называется верхней хессенберговой или верхней почти треугольной, если ее ненулевые элементы расположены только в ее верхнем треугольнике, на диагонали и на поддиагонали) и для нее справедливы соотношения AVm=Vm+1 H m =VmHm+memT; (2.30) VmTAVm=Hm. (2.31) Кроме того, вследствие ортонормальности базиса {j} имеет место равенство VTk=ek. (2.32) 2.2.5 Биортогонализация Ланцоша Алгоритм ортогонализации Арнольди, рассмотренный ранее, для построения каждого нового вектора k требует нахождения (k–1) скалярных произведений и столько же операций линейного комбинирования. Однако, как оказывается, при отказе от требования ортогональности базиса в пользу некоторого более общего условия можно построить процедуру меньшей сложности. Системы векторов m {xi}i1 и m {y i}i1 называются биортогональными, если скалярное произведение (xi,yi) обращается в ноль при ij. В случае xiyi условие биортогональности сводится к обычному условию ортогональности. Пусть векторы 1 и 1 m m таковы, что (1,1)0 и пусть системы векторов {νi}i и {ωi}i 1 1 определяются соотношениями: i+1=Ai–ii–ii–1, 00; (2.33) 39 i+1=ATi–ii–ii–1, 00; (2.34) i=(Ai, i)/)(i, i); (2.35) i=(i, i)/(i–1, i–1), 10. (2.36) Тогда m m системы {νi}i и {ωi}i являются биортогональными; 1 1 m m каждая система {νi}i и {ωi}i является линейно 1 1 независимой и образует базис в Km(1, A) и Km(1,AT) соответственно. Процедура построения векторов и согласно формулам (2.33)– (2.36) называется биортогонализацией Ланцоша. Очевидно, что (2.33) является частным случаем (2.29), где из всей суммы оставлены только два последних слагаемых; точно так же (2.34) является частным случаем (2.29), записанной для матрицы AT и вектора 1. При этом коэффициенты ортогонализации в (2.33) и (2.34) одинаковы. Из сказанного следует, что можно записать аналог матричной формулы (2.31) WmTAVm=Tm, (2.37) где Tm – симметричная трехдиагональная матрица, элементы которой определяются соотношениями [Tm]ii=i(i, i); (2.38) [Tm]i+1,i=[Tm]i,i+1=i(i, i), (2.39) выводимыми из (2.39) – (2.40). Основным недостатком биортогонализация Ланцоша является возможность возникновения ситуации, когда (i, i)=0; 40 при этом продолжение процесса становится невозможным из-за неопределенности коэффициента i+1. 2.3 Предобусловливание Вычисление обусловленности итерационными матрицы А, методами зависит оцениваемой от числом обусловленности condA=||A||||A–1|||max|/|min|. С ростом condA обусловленность ухудшается, и для ряда проблем сходимость может оказаться очень медленной и поэтому итерационный процесс может застопорится или даже оборваться. Однако применение так называемого предобусловливания улучшает сходимость к требуемому решению. Пусть М – некоторая невырожденная матрица размерности N. Домножив (1.1) на матрицу M–1, получим систему M–1Ax=M–1b, (2.40) которая в силу невырожденности M имеет то же точное решение x*. Введя обозначения Â =M–1A и b̂ =M–1b, (2.40) примет вид Â x= b̂ . (2.41) Хотя (2.41) алгебраически эквивалентна (1.1), спектральные характеристики матрицы Â отличаются от характеристик матрицы A, что, вообще говоря, ведет к изменению скорости сходимости численных методов для (2.41) по отношению к (1.1) в конечной арифметике. Процесс перехода от (2.1) к (2.41) с целью улучшения характеристик матрицы для ускорения сходимости к решению называется предобусловливанием, а матрица M–1– матрицей 41 предобусловливателя. Из (2.40) сразу же вытекает важное требование: матрица M должна быть близка к матрице A. Выбор M=A сразу же приводит (1.1) к виду Ix=A–1b, однако не имеет практического смысла, так как требует нахождения A–1, что по существу и сводится к решению (1.1). Вторым естественным требованием является требование легкой вычислимости матрицы M. Невязкой системы (1.1), соответствующей вектору x, называется вектор r=b–Ax=A(x–x), где x – точное решение. Невязка r̂ системы (2.41) связана с невязкой системы (1.1) очевидным соотношением M r̂ =r, (2.42) которое справедливо и для матрично-векторных произведений z=Aq и ẑ = Â q: ẑ = Â q=M–1Aq M ẑ =Aq=z. (2.43) Это позволяет вместо явного перехода от (1.1) к (2.41) вводить в схемы методов корректирующие шаги для учета влияния предобусловливающей матрицы. Данный подход называется неявное предобусловливание. Явное предобусловливание требует нахождениия матрицы М–1 и умножения матрицы предобусловливания на вектор в каждой. В данной версии системы TALGAT реализовано использование только неявного предобусловливания. Из (2.43) следует еще одно условие: структура матрицы предобусловливателя должна допускать легкое и быстрое решение «обратных к предобусловливателю» систем вида M ẑ =z. 42 Таким образом: M должна быть по возможности близка к матрице A; M должна быть легко вычислима; M должна быть легко обратима. 2.3.1 Предобусловливание основанное на классических методах Ранее было показано, что методы Якоби и Гаусса-Зейделя, а также SOR и SSOR могут быть представлены в виде (2.8). Другой формой этого выражения является xk+1=Gxk+f, (2.44) которое получается из (2.14) домножением левой и правой частей на K–1. Проведя аналогию с (2.1) и (2.2), нетрудно увидеть, что (2.44) можно рассматривать как итерационную схему, построенную для решения СЛАУ (I–G)x=f, (2.45) в которой f=K–1b; G=K–1R=K–1(K–A)=I–K–1A. Таким образом, система (2.51) эквивалентна системе K–1Ax=K–1b, т.е. предобусловленной СЛАУ (2.1) с матрицей предобусловливания K. Для методов Якоби, Гаусса-Зейделя, SOR и SSOR эти матрицы соответственно, равны (K заменено на M): MJ=D; MGS=D–E; MSOR 1 (D–E); ω 43 MSSOR Скалярные множители 1 (D–E)D–1(D–F). ω(2 - ω) 1 1 и при практических реализациях ω(2 - ω) ω SOR и SSOR-предобусловливания обычно не учитываются, так как дают лишь масштабирование, практически не влияющие на скорость сходимости. При =1 получается симметричный метод Гаусса-Зейделя (SGS) MSGS=(D–E)D–1(D–F). Заметив, что (D–E) соответствует нижнетреугольной части матрицы A, а (D–F) верхнетреугольной части, то MSGS=LU, где L=(D–E)D–1=I–ED–1, U=D–F. Таким образом для решения систем вида w=MSGS–1x необходимо последовательно решить (I–ED–1)z=x, (D–F)w=z. 2.3.2 Неполное LU-разложение Исторически предобусловливание, как собственно и итерационные методы вообще, использовалось для решения разреженных СЛАУ большой размерности. Поэтому использование предобусловливания для решения СЛАУ с плотными матрицами необходимо использовать с некоторыми добавлениями о которых речь пойдет позже. 44 Для систем с разреженными матрицами хорошим предобусловливанием является неполное LU-разложение. Данное разложение заключается в представлении матрицы в виде M=LU+R, (2.46) где L и U как и прежде нижне- и верхнетреугольные матрицы, соответственно, а матрица R является матрицей ошибки. Тогда приближенное представление M LU называется неполным LUразложением матрицы M или коротко её ILU-разложением. Как хорошо известно, в результате реализации стандартного LUразложения на месте исходной матрицы находится результат разложения, т.е. матрицы L и U, одна из которых имеет единичную диагональ. Наиболее простым вариантом является ILU(0) разложение. Оно заключается в применении LU-разложения к матрице M, но если mij = 0, то полагается lij = 0 или uij = 0. Поскольку в рассматриваемой задаче матрица M плотная, то применение ILU(0) не целесообразно, без предварительного процесса разрежевания. С учетом предобусловливания вышесказанного в виде представление удобном для матрицы использования итерационного метода с неявным преобусловливанием (M LU) требует осуществления двух этапов. На первом этапе определяется структура разреженности матрицы М (путем предфильтрации матрицы А), т.е. mij = aij, если пара индексов (i, j) соответствует предписанной структуре и mij = 0 в противном случае (данный этап более подробно рассмотрен ниже). На втором этапе производится собственно само ILU-разложение, в частности ILU(0). 45 Алгоритм ILU(0) разложения Для i=1,…N w=ai* Для k=1,…i–1 и wk0 wk=wk/ukk Для j=k+1,…N w=w–wkuk* Увеличить j Увеличить k lij=wj, для j=1,…i-1 uij=wj, для j=i,…N Увеличить i Очевидно, что построенная таким образом матрица LU удовлетворяет всем требованиям к матрице предобусловливателя. Действительно, она близка к матрице A; она легко вычислима по приведенному выше не сложному алгоритму; наконец, она легко обратима, так как является произведением двух треугольных матриц. Таким образом, выбор M=LU является достаточно хорошим способом предобусловливания. В данной версии системы реализовано нахождение матрицы предобусловливания как с помощью ILU(0), так и с помощью стандартного LU-разложения. 2.3.3 Выбор структуры разреженности Поскольку уменьшения предобусловливание количества является арифметических способом операций при итерационном решении СЛАУ, за счет улучшения сходимости, 46 следовательно, выбор структуры (портрета) разреженности матрицы предобусловливания является одной из важнейших практических задач. Одной из простейших стратегий является выбор заранее известной структуры (структурная предфильтрация), например, ленточной или блочно-диагональной т.е. элементы матрицы М совпадают с ленточной (блочно-диагональной) частью матрицы А, и равны нулю вне данной структуры. Данная предфильтрация характеризуется шириной ленты (k) (размером блока). Другой более часто используемой стратегией является динамическое определение структуры разреженности, основанное на некотором Алгебраическая определенного отбрасывание пороге (алгебраическая предфильтрация порога, с (обнуление) предфильтрация). заключается помощью в нахождении которого происходит малозначащих элементов путем сравнения модуля каждого элемента со значением полученного порога. Упомянутый порог обнуления, в свою очередь, может быть получен многими способами. В данной версии системы реализована следующие стратегии mij = 0, если |aij| < i = ||ai*||2 . , которая основана на построчном нахождении евклидовой нормы строки далее умножением полученного значения на значение задаваемой точности обнуления () получим, собственно, значение порога (i) для определения элементов матрицы М соответствующей строки. Далее следует перейти к следующей строке и осуществить вышеописанные действия, для текущей 47 строки. Процесс закончится, когда все строки будут обработаны подобным образом. Таким образом, при таком подходе, порог обнуления является своим для каждой строки. Также реализовано еще два подхода. Первый способ аналогичен вышеописанному, только вместо строк обрабатываются столбцы матрицы mij = 0, если |aij| < j = ||a*j||2 . . Второй способ является более глобальным, поскольку порог обнуления, при таком подходе, является одним для всех элементов матрицы, т.е. первоначально вычисляется, евклидова норма матрицы далее, как и ранее умножением полученного значения на значение задаваемой точности получим искомый порог обнуления (). 2.4 Методы Крыловского типа Ранее был построен класс проекционных методов, основой которых служит условие Петрова-Галеркина (2.13) и формула (2.16). Далее были приведены примеры построения нескольких методов для достаточно простого случая одномерных подпространств K и L. Однако выбор m=1, как правило, дает медленную сходимость, и соответствующие методы оказываются пригодными лишь для СЛАУ небольшой размерности. В настоящее время широкое распространение получили проекционные методы, которые в качестве K используют описанные ранее подпространства Крылова размерности больше единицы. Такие методы называются методами крыловского типа. 48 2.4.1 Метод обобщенных минимальных невязок Пусть пространства K и L связаны соотношением L=AK, причем в качестве K используется подпространство Крылова Km(1,A) с ортонормированного Арнольди. 1=r0/, выбором Вместо базиса =||r0||2. воспользуемся проектирования Для построения ортогонализацией (2.16) рассмотрим эквивалентную задачу минимизации функционала (x)=||rx||22 на пространстве K. Так как любой вектор x из пространства (x0+Km) может быть записан в виде x=x0+Vmy, где y вектор размера m. Таким образом, задачу минимизации функционала можно переписать как ym=argminy ||b–A(x0+Vmy)||22. Вычислительная схема, построенная с использованием таких предпосылок, называется методом обобщенных минимальных невязок (GMRES). С использованием определения вектора 1 и соотношений (2.30), (2.32) имеем r=b–A(x0+Vmy)=Vm+1( e1– H m y). Поскольку матрица Vm+1 составлена из ортонормированных столбцов, справедливо равенство (y)=(x0+Vmy)=|| e1– H m y||22. Таким образом, для нахождения коэффициентов (2.47) линейного комбинирования векторов {i} в GMRES необходимо решить СЛАУ 49 Hm y β e1 , . (2.48) которая является переопределенной (так как матрица H m имеет размерность (m+1)m). Матрица системы (2.48) имеет верхнюю хессенбергову форму. Поэтому предварительного последняя строка (2.48) проще приведения Hm при всего к решать с помощью верхнетреугольному этом обнуляется. С виду; учетом хессенберговой формы наиболее простым вариантом оказываются вращения Гивенса. Всего необходимо m таких вращений G1, G2,…,Gm, причем Gk строится так, чтобы его применение к (hkk,hk+1,k)T обнуляло второй компонент этого вектора. Структура матриц G1 и G2 имеет вид c 0 s c s 1 G1 1 0 1 0 1 s c c s G2 1 0 1 Числа s и c связаны соотношением s2+c2=1 (это позволяет их интерпретировать как синус и косинус некоторого угла) и определяются как: h kk ; tk h k 1, k ck 1 1 t 2k ; sk t k ck . Очевидно, что при программной реализации нет необходимости в непосредственном хранении матриц вращения Gi, так как каждая 50 такая матрица полностью определяется двумя числами – косинусом и синусом угла поворота – и индексами компонент вектора, к которым применяется вращение. Основной проблемой в GMRES является выбор размерности m пространства K; хранение базисных векторов этого пространства определяет основные затраты памяти при программной реализации метода, составляющие mN чисел. Наиболее распространенной модификацией GMRES является перезапускаемый GMRES или GMRES(m). Выбирается некоторая размерность m<N, определяемая, по существу, лишь доступным объемом памяти, и после обновления решения x=x0+Vmym оно принимается за новое начальное приближение, после чего процесс повторяется. Далее приведен алгоритм предобусловленного метода GMRES(m) с вращениями Гивенса. Алгоритм метода GMRES(m) с вращениями Гивенса Если необходимо построить матрицу предобусловливателя M Выбрать m < N и произвольное начальное приближение x(0) z = b – A x(0) =||z||2 Найти r(0) из системы M r(0) =z = ||r(0)||2 Создать ((m + 1) m) - матрицу H Создать вектор (m + 1) - вектор q Для Nit =1, 2, … до сходимости или до Nitmax H = 0; q = e1 51 1= r(0)/ Для i=1,…,m z=A(i) Найти w из системы Mw=z Для k=1,…,i hki=(w, (k)) w=w–hki(k) увеличить k hi+1,i=||w||2 (i+1)=w/hi+1,i Для k=1,…,i–1 (h1i,…, hi+1,i)T=Gk(h1i,…, hi+1,i)T увеличить k Построить Gi так, что [Gih,i]i+1=0 q=Giq увеличить i Решить треугольную СЛАУ H1:p,1:py=q1:p p x (0) x(0) y i v (i ) i 1 z=b–Ax(0) Найти r0 из системы Mr0=z =||r(0)||2 Продолжать пока / tol Алгоритм начинается с того, что требуется задать произвольное начальное условие x(0) (третий параметр метода). 52 Итерационный процесс продолжается до тех пор, пока не будет получено решение, с точностью определяемое параметром tol (четвертый параметр) или при достижении максимального числа итераций Nitmax (пятый параметр). Также необходимо, чтобы пользователь определил размерности m (шестой параметр). В случае необходимости использовать метод без предобусловливани необходимо инициализировать седьмой параметр нулем. В противном случае необходимо задать: - 10 в случае использования метода с предобусловливанием, основанном на LU-разложении с выбором структуры разреженности, основанном на норме строки; - 11 в случае использования метода с предобусловливанием, основанном на LU-разложении с выбором структуры разреженности, основанном на норме столбца; - 12 в случае использования метода с предобусловливанием, основанном на LU-разложении с выбором структуры разреженности, основанном на норме матрицы; -20 в случае использования метода с предобусловливанием, основанном на ILU(0) разложении с выбором структуры разреженности, основанном на норме строки; - 21 в случае использования метода с предобусловливанием, основанном на ILU(0) разложении с выбором структуры разреженности, основанном на норме столбца; -22 в случае использования метода с предобусловливанием, основанном на ILU(0) разложении с выбором разреженности, основанном на норме матрицы. структуры 53 Также для использования метода с предобусловливанием необходимо задать точность обнуления () определяемую восьмым параметром. Пример использования метода GMRES(m) с вращениями Гивенса в системе TALGAT: - действительный случай: SET "solve" GMRES_r real_m right_r 0. 1.e-8 150 15 10 1.e-4; - комплексный случай: SET "solve" GMRES complex_m right_c 0. 1.e-8 150 15 10 1.e-4. 2.4.2 Метод бисопряженных градиентов Ранее была описана биортогонализация Ланцоша, которая в отличие от ортогонализации Арнольди, использует для построения базиса экономичные трехчленные формулы. Выбрав в качестве пространства K пространство Крылова Km(r(0), A), а в качестве (0) (0) (0) Lm ( ~ r , AT), где вектор ~ r удовлетворяет условию (r(0), ~ r )0, строят метод бисопряженных градиентов BiCG. Далее приведен алгоритм предобусловленного метода бисопряженных градиентов. Алгоритм метода BiCG Если необходимо построить матрицу предобусловливателя M Выбрать начальное приближение x(0) r(0) = b – A x(0) (0) (0) Выбрать вектор ~ r , удовлетворяющий условию (r(0), ~ r ) 0 (0) (например, ~ r = r(0)) Для i = 1, 2, … до сходимости или до Nitmax 54 Найти z(i–1) из системы M z(i–1) = r(i–1) ( i 1) ( i 1) ( i 1) Найти ~ из системы MT ~ z z =~ r ( i 1) i – 1 = (z(i–1), ~ r ) Если i–1 = 0 то метод не может решить данную систему Если i = 1 p z (i 1) (i ) ( i 1) ~(i ) ~ p z Иначе i–1 = i–1 / i–2 p z (i 1) βi 1 p (i ) ( i 1) ( i 1) ~( i ) ~ ~(i1) p z βi1 p q(i) = A p(i) ~(i ) = AT p ~(i ) q ~(i ) , q(i)) i = i–1 / ( p x(i) = x(i–1) + i p(i) r(i) = r(i–1) – i q(i) (i ) ( i 1) ~(i ) ~ r =~ r – i q Если ||r(i)||2 / ||r(0)||2 tol то КОНЕЦ (x(i) – полученное решение) увеличить i Первые пять параметров метода BiCG, которые необходимо задать, совпадают с аналогичными параметрами метода GMRES. 55 Шестым параметром является тип предобусловливания (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– 56 специальным образом строящийся полином, такой, что произведение pmqm не содержит нечетных степеней. Далее приведен алгоритм стабилизированного метода бисопряженных градиентов. Алгоритм метода BiCGStab Если необходимо построить матрицу предобусловливателя M Выбрать начальное приближение x(0) r(0) = b – A x(0) Выбрать вектор ~r , удовлетворяющий условию (r(0), ~r ) 0 (например, ~r = r(0)) Для i = 1, 2, … до сходимости или до Nitmax i – 1 = ( ~r , 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 p̂ = p(i) v(i) = A p̂ i = i–1 / ( ~r , v(i)) s = r(i–1) – i v(i) Если ||s||2 / ||r(0)||2 tol то КОНЕЦ (x(i) = x(i–1) +i p̂ – полученное решение) 57 Найти ŝ из системы M ŝ = s t = A ŝ i = (t, s) / (t, t) x(i) =x(i–1) +i p̂ +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. 2.4.4 Метод квази-минимальных невязок Разработка еще одного итерационного метода была направлена на устранение, упомянутой в 2.4.3, проблемы метода BiCG, а именно нестабильной сходимости. Таким методом являлся метод квази-минимальных невязок (QMR). Далее приведен алгоритм метода QMR. Алгоритм метода QMR Если необходимо построить матрицу предобусловливателя M Выбрать начальное приближение x(0) r(0) = b – A x(0) 58 ~v(1) = r(0) (1) Найти y из системы M1 y = ~ v 1 = ||y||2 ~ (1) MT2 z = ω ξ1 = ||z||2 0 = 1; 0 = – 1 Для i = 1, 2, … до сходимости или до Nitmax Если i = 0 или i = 0 то метод не может решить данную систему v(i) = ~v(i ) / i; y = y / i ~ (i ) /i; z = z / i (i) = ω i = (z, y) Если i = 0 то метод не может решить данную систему y из системы M2 ~ y=y Найти ~ Найти ~ z из системы M1T ~z = z Если i = 1 y ; q(1) = ~ p(1) = ~ z Иначе y – (i i / i – 1) p(i–1) p(i) = ~ q(i) = ~ z – (i i / i –1) q(i–1) ~ = A p(i) p ~) i = (q(i), p Если i = 0 59 то метод не может решить данную систему i = i / i Если i = 0 то метод не может решить данную систему ( i 1) ~ – i v(i ) ~ v =p ( i 1) Найти y из системы M1y = ~ v i+1 = ||y||2 ~ (i1) = ATq(i) – i ω(i ) ω ~ (i1) Найти z из системы MT2 z = ω i+1 = ||z||2 i = i+1 / (i |i|) γi = 1 / 1 θi2 Если γi = 0 то метод не может решить данную систему 2 2 ηi = – ηi1 ρi γi / (βi γi1) Если i = 1 ~ d(1) = η1 p(1); s(1) = η1 p Иначе ( i 1) (i ) d = ηi p(i) + (θi1 γi ) d 2 ( i 1) (i ) ~ s = ηi p (θi 1 γi ) s 2 x(i) =x(i–1) + d(i) r(i) = r(i–1) – s(i) Если ||r||2 / ||r(0)||2 tol то КОНЕЦ (x(i) – полученное решение) 60 увеличить 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) ~r (0). Часто данный метод характеризуется повышением скорости решения в два раза по сравнению с методом BiCG. Далее приведен алгоритм метода CGS. Алгоритм метода CGS Если необходимо построить матрицу предобусловливателя M Выбрать начальное приближение x(0) r(0) = b – A x(0) Выбрать вектор ~r , удовлетворяющий условию (r(0), ~r ) 0 (например, ~r = r(0)) Для i = 1, 2, … до сходимости или до Nitmax 61 i–1 = ( ~r , 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)) Найти p̂ из системы M p̂ = p(i) v̂ = A p̂ i = i–1 / ( ~r , v̂ ) q(i) = u(i) – i v̂ Найти û из системы M û = u(i) + q(i) x(i) =x(i – 1) +i û q̂ = A û r(i) = r(i – 1) – i q̂ Если ||r||2 / ||r(0)||2 tol то КОНЕЦ (x(i) – полученное решение) увеличить i Параметры метода совпадают с параметрами методов BiCG, BiCGStab и QMR. Пример использования метода CGS в системе TALGAT: 62 - действительный случай: 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. 2.2.6 Метод сопряженных градентов В случае если матрица А симметрична, то очевидно что метод BiCG более простой вид. Метод, который получается за счет упрощений вносимых симметричностью, называется методом сопряженных градиентов (CG). Следует заметить, что метод бисопряженных градиентов исторически появился как обобщение CG на несимметричный случай. Далее приведен алгоритм метода сопряженных градиентов. Алгоритм метода CG Если необходимо построить матрицу предобусловливателя M Выбрать начальное приближение x(0) Вычислить r(0) = b – A x(0) Для i = 1, 2,…до сходимости или до Nitmax Найти z(i–1) из системы M z(i–1) = r(i–1) i–1 = (r(i–1), z(i–1)) Если i = 1 p(1) = z(0) Иначе i–1 = i–1 / i–2 p(i) = z(i–1) + i–1 p(i–1) q(i) = A p(i) i = i–1 / (p(i), q(i)) 63 x(i) = x(i–1) + i p(i) r(i) = r(i–1) – i q(i) Если ||r||2 / ||r(0)||2 tol то КОНЕЦ (x(i) – полученное решение) увеличить i