LU-факторизация алгоритмом Краута
Схема Халецкого (LU-факторизация)
Одним из лучших методов решения систем линейных алгебраических уравнений общего вида является метод, основанный на разложении исходной матрицы на произведение треугольных, или метод -факторизации. Алгоритмы этого метода близки к алгоритмам метода Гаусса, хотя вычисления могут производиться в различной последовательности. Главным преимуществом метода -факторизации в сравнении с методом Гаусса является возможность более быстрого получения решений для различных векторов свободных членов, а также для транспонированной системы уравнений.
По числу операций, необходимых для решения конкретной системы, методы Гаусса и -факторизации практически неразличимы. Однако из всех операций решения в методе -разложения почти половина приходится на этап факторизации и следующая половина - на собственно решение двух треугольных систем. В силу этого факта при необходимости решения системы, отличающейся лишь вектором свободных членов, получаем экономию на операциях разложения. Аналогично, когда необходимо решать транспонированную систему после исходной, можно воспользоваться предыдущей факторизацией и лишь сменить порядок решения треугольных систем в силу операции транспонирования.
В методе решения систем линейных уравнений, основанном на факторизации, предполагается, что исходная система (6.12)
может быть представлена в виде
, (6.13)
т.е.
. (6.14)
Причем для определенности полагается, что матрица является нижнетреугольной, а – верхнетреугольной, причем с единичной диагональю.
Забегая несколько вперед, сразу отметим, что определитель треугольной матрицы равен произведению диагональных элементов, а определитель произведения матриц равен произведению их определителей. Откуда следует, что определитель матрицы равен произведению диагональных элементов нижнетреугольной матрицы :
. (6.15)
Ограничившись для наглядности порядком , запишем - и -матрицы
Схема Халецкого. Предполагая возможным разложение (6.14), вводя вспомогательный вектор
(6.16)
и подставив данное выражение в уравнение (6.13), получим
- (6.17)
две треугольные системы, эквивалентные исходной системе. Поскольку обе системы (6.16) и (6.17) треугольные, их решения достаточно тривиальны, причем в начале решаем систему (6.17) и находим вектор , а затем из (6.16) окончательно находим .
Распишем подробнее алгоритм решения. Записывая систему (6.17) в виде
Для первых компонент вектора можем записать
,
,
.
Обобщая последовательность этих операций, называемых прямой подстановкой или прямым ходом, можем записать
; , (6.18)
при .
Для того чтобы соотношение (6.18) имело смысл, не должны равняться нулю.
Теперь решим систему (6.16) в координатной форме:
,
,
,
,
.
Начиная с последней формулы, запишем выражения для нескольких компонент вектора решений :
,
,
.
Обобщая эту последовательность действий, называемую обратной подстановкой или обратным ходом, запишем
, (6.19)
при .
Число операций, требуемых для выполнения как прямой, так и обратной подстановок, равно примерно , а в сумме для решения вместе с разложением требуется примерно операций.
Изучение соотношений (6.16) и (6.17) показывает, что компоненты используются только для определения и позднее не требуются. Аналогично не нужны после вычисления . Следовательно, при такой системе расчетов векторы и могут быть размещены в одних и тех же ячейках памяти ЭВМ. Коэффициенты треугольных систем – матрицы и , если не хранить единичную диагональ матрицы , могут быть размещены на месте исходной матрицы коэффициентов . Следует также отметить эквивалентность обратных подстановок в схеме Халецкого и в методе Гаусса.
При изложении алгоритмов разложения для наглядности ограничимся порядком системы , что не повлияет на общность рассуждений.
Суть алгоритма Краута. Предполагая, что разложение существует, запишем произведение :
.
Сравнивая компоненты этого произведения с компонентами матрицы , видим, что первый столбец произведения равен первому столбцу матрицы , т.е. , при . Первая строка произведения может быть использована для определения первой строки матрицы . Действительно, т.к.
,
при , получаем
.
Поскольку во втором столбце элементы и известны, можем определить второй столбец матрицы :
,
где . Теперь, т.к. известны и , можно по второй строке произведения определить вторую строку матрицы :
,
при . Далее, чередуя строки и столбцы, можно аналогичным образом найти остальные элементы матриц и .
Чтобы получить общие соотношения, запишем произвольный элемент произведения :
,
где верхний предел суммы учитывает наличие нулевых элементов в матрицах и . Рассмотрим произвольный элемент на или под главной диагональю матрицы , для которого , и заменим индекс на . Учитывая при этом, что , получим
,
откуда
, (6.20)
при и . Аналогичным образом, рассматривая произвольный элемент над главной диагональю, для которого , и используя вместо , находим
,
откуда
, (6.21)
при и .
Эти соотношения для и есть алгоритм разложения на треугольные матрицы – алгоритм Краута. Заметим, что текущие элементы матриц и определяются текущим элементом матрицы и предыдущими элементами матриц и . Отсюда, т.к. нулевые элементы и единичную диагональ матрицы запоминать не нужно, в процессе вычислений матрицы и могут быть записаны на месте матрицы , причем расположена в нижнем треугольнике , а – соответственно в верхнем треугольнике матрицы .
Коротко алгоритм Краута как вариант чередования столбцов и строк можно представить следующей последовательностью действий:
1) положим и перейдем к пункту 3;
2) используя выражение (6.20), рассчитываем -ый столбец матрицы и, если , закончим процедуру разложения;
3) используя выражение (6.21), рассчитываем -ую строку матрицы ;
4) положим и перейдем к пункту 2.
Кроме варианта чередования столбцов и строк, на основе соотношений (6.20) и (6.21) возможны варианты последовательного обхода по строкам либо по столбцам.
Если последовательно обходить ()-произведение по строкам, то можно заметить, что, используя предыдущие соотношения (6.20) для при и (6.21) для при , можно беспрепятственно определить все элементы матриц и . Аналогично можно организовать алгоритм вычисления элементов матриц и , совершая обход по столбцам.
Преимущества этих вариантов алгоритма Краута проявляются при матрицах большого размера.
Известен также вариант алгоритма -факторизации, основанный на приведении исходной матрицы к верхней треугольной форме по Гауссу [1], однако по сравнению с алгоритмом Краута он требует более частого обращения к матрице .