Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Метод Гаусса для решения систем линейных алгебраических уравнений.
Рассмотрим систему линейных алгебраических уравнений
где х = (х1, х2, … хn)Т – вектор неизвестных; b = (b1, b2, … bn)Т – вектор свободных членов; А = , i, j = 1, 2, …, n – невырожденная матрица размерами n ´ n. В силу невырожденности матрицы А (det A ¹ 0) для однородной системы уравнений с вектором правых частей b = (0, 0, …, 0)T имеем единственное тривиальное решение х=(0, 0, …, 0)T. Для неоднородной системы имеем единственное решение х = А-1b, где А-1 – матрица, обратная А. Алгоритм метода исключения неизвестных был изобретен в 3 веке до нашей эры, хотя и носит имя Гаусса. Идея алгоритма состоит в приведении СЛАУ к эквивалентной ей системе с треугольной матрицей (прямой ход исключения), а затем к нахождению неизвестных последовательными подстановками (обратный ход). Данный метод требует числа арифметических операций порядка 2/3 n3. Он используется для решения СЛАУ с n ~ 102-104. Объединим матрицу А и вектор b в расширенную матрицу. размерами n ´ (n+1), которая содержит всю известную информацию о системе (3.1). Опишем вначале прямойход, первыйшаг которого состоит в обнулении всех элементов первого столбца матрицы А(0), кроме того, что находится в первой строке. Введем обозначение аi = (ai1, ai2, … ain, bi). C матрицей А(0) можно обращаться так же, как с исходной системой (3.1), например, осуществлять элементарные преобразования. В качестве последних будем использовать перестановки строк, прибавление к элементам данной строки элементов какой-либо другой строки, умноженных на одно и то же число. Найдем ненулевой элемент в первом столбце матрицы А(0). Такой элемент найдется всегда ибо, в противном случае, весь первый столбец состоит из нулей и матрица А – вырожденная. Пусть аr1 ¹ 0, тогда поменяем местами строки номера r и 1. Если r = 1, то, естественно, перестановка не требуется. Затем вычтем из каждой строки номера i, i = 2, …, n первую строку, умноженную на число fi, где . В результате все элементы i-ой строки изменят свои значения и станут равными
Здесь мы предполагаем, что хотя перестановка строк и могла состояться, однако нумерация элементов матрицы А(0) осталась прежней. Введем обозначения
С учетом введенных обозначений (3.2) и (3.3) матрица А(0) преобразуется к матрице А(1) и станет равной
Тот же алгоритм может быть применен на второмшаге к (n-1) ´ n матрице, которая получается из А(1), если убрать в ней первую строку и первый столбец. Применение этого алгоритма j раз приводит к матрице А(j) В матрице А(j) полученные нули располагаются в столбцах с номерами от 1 до j ниже диагонали. Эти нули сохраняются во время следующих шагов алгоритма. В результате применения алгоритма n раз система (3.1), в конечном счете, преобразуется в систему вида
где R – верхняя (правая) треугольная матрица, т.е.
Значения неизвестных можно вычислить из (3.6) по формулам
Процесс приведения системы (3.1) к треугольному виду (3.6) называется прямымходом, а нахождение неизвестных по формулам (3.7) называется обратнымходом. Произведем подсчет числа арифметических операций в методе Гаусса. Число арифметических операций, необходимое для реализации прямого хода в методе Гаусса для решения систем уравнений порядка n, равно
При обратном ходе
Из формул (3.8) и (3.9) получаем оценку общего числа арифметических действий . Если имеется р систем вида (3.1) с одинаковыми матрицами А и разными правыми частями , то целесообразно прямой ход осуществлять для всех систем одновременно, для чего следует вместо одной правой части, задаваемой вектором-столбцом, производить операции над р правыми частями (матрицей порядка n´ p). Количество арифметических операций, необходимое для реализации прямого метода Гаусса с учетом (3.8) и (3.9), есть . Количество арифметических операций, необходимое для реализации р обратных ходов (для р систем) методом Гаусса, есть QIIp= p(n2 – n). Откуда следует, что общее количество арифметических операций, необходимое для реализации р систем с разными правыми частями, равно .
Алгоритм LU-разложения. Данный алгоритм можно рассматривать как конкретную форму метода Гаусса. Алгоритм LU-разложения используется не только для решения СЛАУ, но и также для обращения матрицы, т.е. вычисления матрицы, обратной данной. Пусть и будем искать представление A в виде:
где L и U – соответственно нижняя и верхняя треугольные матрицы вида . Известно, что если все угловые миноры матрицы А отличны от нуля, т.е. то разложение вида (3.10) существует и единственно. Для того чтобы получить расчётные формулы, поступим следующим образом. Обозначим aij произведение i-ой строки матрицы L на j-ый столбец матрицы R, причём будем считать вначале, что i< j. Тогда . Выразим из последней формулы uij.
Как это принято, будем считать в формуле (3.11) и далее, что сумма вида равна нулю, если значение верхней границы индекса суммирования меньше нижней границы. В случае i = j имеем Учитывая, что uii º 1 и, выражая из последнего соотношения lii, получаем:
Наконец, при i > j получаем откуда, с учетом того, что ujj º 1 приходим к формуле
Итак, расчетные формулы (3.11) – (3.13) получены. Для того чтобы при их применении не использовались неизвестные (не вычисленные) величины, необходимо выбрать соответствующий порядок вычисления элементов матриц L и U. Например, можно рекомендовать порядок расчета элементов матриц L и U, схематически изображенный на рис. 3.1. На нем цифры слева для матрицы L и сверху - для матрицы U означают, что на первом шаге рассчитывается l11 по формуле (3.12), затем вычисляется элемент u12 по формуле (3.11). Далее (3 шаг) определяются элементы второй строки матрицы L в порядке, указанном стрелкой: l21 и l22 (по формулам (3.13) и (3.12) соответственно). На 4 шаге выполняется расчет элементов 3 столбца матрицы U в порядке, обозначенном стрелкой: u13, u23 (формулы (3.11)) и т.д. Рис. 3.1.
Рассмотрим теперь применение LU-разложения для решения СЛАУ вида Ах = b, где A = LU. Введем вспомогательный вектор у,
Тогда исходную систему можно записать так
В силу формул (3.14) и (3.15) решение исходной СЛАУ сводится к последовательному решению систем (3.15) и (3.14) соответственно с верхней и нижней треугольной матрицами. Метод прогонки. Метод прогонки представляет собой вариант метода Гаусса, примененный к специальным системам линейных алгебраических уравнений, и учитывающий ленточную структуру матрицы системы. Пусть имеем СЛАУ со специальной трехдиагональной формой матрицы
или в матричной форме: AY = F, где Y = (y0, y1, ..., yn)T - вектор неизвестных; F = (f0, f1,..., fn)T - вектор правых частей; А - квадратная (N+1)´ (N+1) матрица Системы вида (3.16) возникают при конечно-разностной аппроксимации краевых задач математической физики, описываемых обыкновенными дифференциальными уравнениями второго порядка с постоянными и переменными коэффициентами, а также уравнениями в частных производных. Ставится задача разработать экономичные методы решения задач вида (3.16), число арифметических операций для которых пропорционально числу неизвестных. Таким методом для системы (3.16) является метод прогонки. Специфика матрицы А состоит в расположении ненулевых элементов, матрица А - разреженная матрица, из (N+1)2 элементов которой ненулевыми являются не более 3N+1 элементов. Это позволяет получить для решения СЛАУ простые расчетные формулы. Будем искать решение (3.16) в виде
c неопределенными коэффициентами ai, bi. Выражение yi-1 = aiyi + bi подставим в (3.16) (сi - aiai)yi - biyi+1 = fi +aibi c учетом (3.17) имеем [(сi - aiai)ai+1 - bi]yi+1 + (ci - aiai)bi+1 - aibi = fi . Это равенство имеет место для любых yi, если (сi - aiai)ai+1 - bi = 0, (сi - aiai)bi+1 - aibi = fi . Отсюда получаем рекуррентные формулы для определения ai+1, bi+1
Коэффициенты ai, bi, i = 1, 2, ..., N называются прогоночными. Если коэффициенты ai и bi известны, а также известно yN то, двигаясь справа налево (от i+1 к i) последовательно определяем все yi. Задача нахождения ai, bi по формулам (3.18), (3.19) решается слева направо (от i к i+1). Начальные значения прогоночных коэффициентов ai, bi можно определить следующим образом. Полагаем в формуле (3.17) i=0, имеем y0=a1y1+b1, а из первого уравнения (3.16) c0y0 - b0y1 = f0, откуда
Значение yN определяется следующим образом. Полагаем в формуле (3.17) i=N-1, имеем yN-1 = aNyN + bN, а из последнего уравнения (3.18) -aNyN-1 + cNyN = fN откуда
Расчетные формулы (3.17) - (3.21) можно получить также из (3.16), если применить метод исключения Гаусса. Прямой ход метода заключается в том, что на первом шаге из всех уравнений системы (3.16) при помощи первого уравнения исключается y0, затем из преобразованных уравнений для i=2, ..., N при помощи уравнения, соответствующего i=1, исключается yi и т.д. В результате получим одно уравнение относительно yN. На этом прямой ход метода прогонки заканчивается. На обратном ходе для i=N-1, N-2, ..., 0 находятся yi. Порядок счета в методе прогонки следующий: 1) исходя из значений a1, b1, вычисленных по формулам (3.20), все остальные коэффициенты ai, bi для i=2, 3, ..., N-1 определяются последовательно по формулам (3.18) и (3.19); 2) исходя из значения yN, рассчитанного по формуле (3.21), все остальные неизвестные yi, i=N -1, N-2, ..., 0 определяются последовательно по формуле (3.17). Изложенный метод поэтому называется правой прогонкой. Аналогично выводятся формулы левой прогонки:
Здесь yi находятся последовательно для значений i=1, 2, ..., N; ход вычислений - слева направо. В случае, если необходимо найти только одно неизвестное, например, ym (0 £ m £ N) или группу идущих подряд неизвестных, целесообразно комбинировать правую и левую прогонки. При этом получается метод встречных прогонок. Произведем подсчет числа арифметических действий для метода правой прогонки. Анализ формул (3.17)-(3.21) показывает, что общее число арифметических операций есть Q=8N+1. Коэффициенты ai не зависят от правой части СЛАУ (3.16) и определяются только элементами ai, bi, ci матрицы А. Поэтому, если требуется решить серию задач (3.16) с различными правыми частями, то прогоночные коэффициенты ai вычисляются только для первой серии. Для каждой последующей серии задач определяются только коэффициенты bi и решение yi, причем используются ранее найденные ai. На решение первой из серии задач расходуется 8N+1 операций, а на решение каждой следующей задачи 5N+3 операций. Число арифметических операций, необходимое для решения СЛАУ (3.16) методом левой прогонки и методом встречных прогонок такое же, т.е. Q»8N. Метод правой прогонки будем называть корректным, если ci-aiai ¹ 0 при i=1, 2,..., N. Решение yi находится по рекуррентной формуле (3.17). Эта формула может порождать накопление ошибок округления результатов арифметических операций. Пусть прогоночные коэффициенты bi и ai найдены точно, а при вычислении yN допущена ошибка DyN, т.е. . При вычислениях с помощью формулы (3.17) мы получаем
Вычитая из (3.25) значение yi по формуле (3.17) имеем для погрешности с заданным DyN. Отсюда ясно, что если ai по модулю больше единицы, и если N достаточно велико, то вычисленное значение будет значительно отличаться от искомого решения yi. В этом случае говорят, что алгоритм прогонки неустойчив. Определение. Алгоритм прогонки называется устойчивым, если |ai| £ 1, i = 1, 2, …, N. Условия корректности и устойчивости алгоритма правой прогонки определяются следующей теоремой. Теорема. Пусть коэффициенты системы (3.16) действительны и удовлетворяют условиям: |b0| ³ 0, |aN| ³ 0, |c0| > 0, |cN| > 0, |ai| > 0, |bi| ³ 0, i = 1, 2, …, N-1;
причем хотя бы в одном из неравенств (3.26) и (3.27) выполняется строгое неравенство, т.е. матрица А имеет диагональное преобладание. Тогда для алгоритма (3.17)-(3.21) имеют место неравенства: ci - aiai ¹ 0, |ai| £ 1, i = 1, 2, …, N, т.е. алгоритм метода правой прогонки корректен и устойчив. Условия (3.26) и (3.27) теоремы обеспечивают также корректность и устойчивость алгоритмов левой и встречных прогонок. Эти условия сохраняются и для случая системы (3.16) с комплексными коэффициентами ai, bi, ci. Легко показать, что при выполнении условий (3.26)-(3.27) теоремы система (3.16) имеет единственное решение при любой правой части.
Пример выполнения лабораторной работы №3
Решите систему уравнений методом Гаусса и методом LU разложения
Решите систему уравнений методом прогонки Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 705; Нарушение авторского права страницы