Скачиваний:
33
Добавлен:
20.05.2014
Размер:
454.14 Кб
Скачать

- 24 -

Лекция 3. РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ УРАВНЕНИЙ.

В предшествующих лекциях к решению систем линейных уравнений были сведены задача определения коэффициентов кубического сплайна и задача определения коэффициентов регрессионной модели. В последующих лекциях решение систем линейных уравнений будет необходимо для решения нелинейных систем методом Ньютона и для решения уравнений в частных производных в случае неявных разностных схем. Во всех указанных задачах количество уравнений в системе может быть очень велико.

Система линейных алгебраических уравнений (СЛАУ) имеет вид:

(3.1)

или в матричной форме

(3.2)

- это матрица порядка , т.е. размера - вектор неизвестных, т.е. одномерный массив длины - вектор правых частей той же длины.

Методы решения СЛАУ обычно основаны на приведении матрицы в системе (3.2) к треугольному виду, т.к. системы с треугольными матрицами легко решаются путем последовательного нахождения одного неизвестного в каждом уравнении. Возможны нижняя или верхняя треугольные формы для матрицы, показанные на рис.3.1.

Рис. 3.1. Нижняя и верхняя треугольные матрицы в СЛАУ.

В нижней треугольной матрице все ненулевые элементы должны располагаться в нижнем треугольнике, а в матрице - в верхнем, причем главная диагональ может содержать ненулевые элементы. Для системы или первым решается уравнение или соответственно.

3.1. Метод Гаусса.

Для матриц общего вида любого порядка лучшим методом решения является метод Гаусса. Приведение к треугольному виду в нем (прямой ход) можно рассматривать как последовательное умножение обеих частей системы (3.2) на матрицы простой структуры, каждая из которых обращает в нуль один элемент .

На языке детективов - это "матрицы-убийцы". В результате получаем систему с треугольной матрицей , которая имеет новый вектор правых частей .

Рассмотрим подробнее порядок вычислений. Пусть в системе (3.1) (в противном случае надо переставить уравнения). Множим 1-е уравнение на и складываем с ным уравнением. Перебирая , уничтожаем 1-й член во всех этих уравнениях.

Получаем систему:

,

где , , . Это 1-й шаг.

На втором шаге множим уравнение (2) на и складываем с -ым уравнением. Перебирая , уничтожаем 1-й член во всех этих уравнениях

,

где , , .

На (-м) шаге имеем:

, , .

На шаге получаем систему с треугольной матрицей:

,

отсюда находим - это прямой ход. Далее обратным ходом восстанавливаем .

Количество операций в методе Гаусса пропорционально . Это количество операций можно резко сократить только для матриц специальной структуры, например, симметричных или содержащих большое количество нулей. Для каждой структуры обычно разрабатывается специальный метод, более эффективный, чем метод Гаусса. В случае определения коэффициентов кубического сплайна получается система с трехдиагональной матрицей, в которой все ненулевые элементы расположены на главной и соседних диагоналях. Системы с такими матрицами решаются методом прогонки, который можно рассматривать как частный случай метода Гаусса.

  

3.2. Разреженные матрицы.

Эти матрицы состоят, в основном, из нулей и ненулевые элементы расположены нерегулярно, т.е. название матриц указывает на редкое расположение ненулевых элементов. Образ разреженной матрицы можно представить как квадрат на звездном небе, в котором звезды соответствуют ненулевым элементам.

Эти матрицы характеризуются степенью разреженности (обычно в %), 

,

где количество элементов равно для матрицы порядка .

При моделировании схем получаются разреженные матрицы. Например, для схемы с 10 узлами степень разреженности примерно 50%, для схемы со 100 узлами степень разреженности близка к 95% и при увеличении количества узлов значение стремится к 100%.

Применение стандартных подпрограмм в случае решения СЛАУ с разреженными матрицами методом Гаусса нецелесообразно по следующим причинам:

1.  При хранении матрицы память будет заполнена нулями.

2.  При выполнении операций с элементами будет много операций с нулями.

3.  После приведения к треугольному виду в ненулевом треугольнике будет мало нулей, т.е. разреженность этой части будет утрачена.

4. Приведение к треугольному виду требует также преобразования вектора .

Первый недостаток можно устранить, используя различные структуры для хранения ненулевых элементов, например, хранить для каждого такого элемента значения , , .

Эти структуры, а также устранение операций с нулями требуют существенного изменения стандартных программ для метода Гаусса. Третий и четвертый недостатки отсутствуют при решении СЛАУ методом LU-разложения.

3.3. LU-разложение.

При решении СЛАУ представим матрицу в виде произведения нижней и верхней треугольных матриц .

Для простоты рассмотрим сначала небольшой порядок матриц , причем все диагональные элементы матрицы положим равными единице. В этом случае получаем равенство:

.

Необычная нумерация элементов матриц позволяет проще сформулировать правила LU-разложения. Матрица задана, её коэффициенты известны.

Неизвестные элементы матриц и обозначены как и соответственно и поэлементное приравнивание обеих частей после перемножения матриц и даёт их значения. При этом важен порядок приравнивания. Его нужно вести "елочкой", т.е. сначала приравнивать все элементы первого столбца (, , в примере), затем первой строки (, ), далее идут столбец 2 (, ), строка 2 (), столбец 3 () и т.д. При таком порядке каждое равенство будет давать один неизвестный коэффициент, т.е. в результате всех приравниваний получим все коэффициенты. В данной матрице из первых трех равенств получим элементы , , из двух следующих , и т. д.

Запишем эти соотношения подробнее:

,

,

,

, ,

, ,

, ,

, ,

, ,

, .

После получения LU-разложения решается система , которая записывается в виде двух систем , . Эти две системы с треугольными матрицами решаются последовательно и результатом является вектор .

Для LU-разложения при произвольном размере матрицы можно использовать разные алгоритмы. Рассмотрим алгоритм Краута, возвращаясь к обычным обозначениям элементов матриц , , . Согласно исходному соотношению имеем после перемножения матриц

,

где верхний предел суммы учитывает наличие нулевых элементов в матрицах и .

Рассмотрим произвольный элемент на или под главной диагональю матрицы , для которого и заменим индекс на . При этом, положив , получим

или

,

(3.3)

Аналогичным образом, рассматривая произвольный элемент над главной диагональю, для которого , и использую индекс вместо , находим

.

После преобразования придем к следующему выражению для элементов матрицы :

,

(3.4)

Уравнения (3.3), (3.4) описывают алгоритм разложения на треугольные матрицы , при задании . Заметим, что требуемые в этих соотношениях значения элементов матриц и рассчитываются на предыдущих этапах процесса, что было проиллюстрировано выше на примере .

Обобщив все сказанное, опишем алгоритм LU-разложения следующим образом:

Шаг 1.

Положим и перейдем к шагу 3.

Шаг 2.

Используя (3.3), рассчитаем -й столбец матрицы . При закончим процедуру разложения.

Шаг 3.

Используя (3.4) рассчитываем -ю строку матрицы .

Шаг 4.

Положим и перейдем к шагу 2.

Основное достоинство метода LU-разложения - сохранение разреженной структуры матриц и , что при исключении операций с нулями позволяет уменьшить количество операций по сравнению с методом Гаусса. Если матрица не является разреженной, то количество операций в обоих методах примерно одинаково.

3.4. Метод прогонки.

Метод прогонки применяется для СЛАУ с трехдиагональной матрицей:

Матричное уравнение , приводит к системе

(1),

, , .

Предположим, что

(2),

где , надо определить.

При замене имеем

(3).

Подставим в уравнение (1)

,

отсюда

(4).

Сравнивая (4) с (2), получаем рекуррентные формулы

,

(5).

При - , (, можно задать произвольно, т.к. ).

Формулы (5) определяют все величины , , . Это прямой ход. Далее по формуле (3) получаются все значения через - это обратный ход. Откуда взять ?

- последнее уравнение системы (1). Имеем также уравнение (3) при .

Исключая , получим значение :

Это выражение формально получается также из (4), при , если положить в нем .

Соседние файлы в папке Лекции