Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЛАВА_6_ФИН.doc
Скачиваний:
60
Добавлен:
14.11.2018
Размер:
441.86 Кб
Скачать

6.7.Решение систем линейных уравнений с использованием lu-разложения матрицы системы

LU-разложением (LU-факторизацией) называют представление матрицы A в виде произведения LU, где L — нижняя треугольная матрица с единичной диагональю, а U — верхняя треугольная матрица:

(6.15)

Метод решения систем линейных уравнений, основанный на данном разложении, является разновидностью метода Гаусса.

Обозначим элементы L через lij, элементы U - через uij, (i,j=1,...,n). По свойствам 9 и 10 определителей (Глава 5):

det(L)=1; det(L) = l11 l22 …lnn = 1;

det(A) = det(L)det(U) = 1det(U) = u11 u22 …unn.

6.7.1. Идея использования lu-разложения и алгоритм прямого метода расчета

Идея LU-разложения основана на матричном представлении прямого хода метода Гаусса без выбора главных элементов строк. Обозначив для общности матрицу начальной системы уравнений А через А(0), представим исходную систему уравнений в виде:

А(0)X =B. (6.16)

При выполнении прямого хода вначале обнуляются элементы столбца 1 матрицы системы под главной диагональю путем сложения строк расширенной матрицы с номерами 2,3,…,n с первой строкой, умноженной, соответственно, на коэффициенты (-а(0)21/а(0)11), (-а(0)31/а(0)11),…, (-а(0)n1/а(0)11). Это преобразование эквивалентно умножению левой и правой частей уравнения (6.16) на нижнюю треугольную матрицу с единичной диагональю вида:

С1(0))А(0)X = С1(0))B.

Обозначим произведение С1(0))А(0) через А(1) и представим преобразованную систему в виде А(1)X = С1(0))B. Для того, чтобы в данной системе обнулить элементы столбца 2 матрицы системы А(1)под главной диагональю, складываем строки расширенной матрицы с номерами 3,4,…,n со второй строкой, умноженной, соответственно, на коэффициенты (-а(1)32/а(1)22), (-а(1)42/а(1)22),…, (-а(1)n2/а(1)22). Это преобразование эквивалентно умножению левой и правой частей преобразованного уравнения на нижнюю треугольную матрицу с единичной диагональю вида:

С2(1))А(1)X = С2(1))С1(0))B.

Затем в полученной новой системе уравнений умножаем обе части на матрицы С3(2)), С4(3)),… Сn-1(n-2)). В итоге всех умножений, вводя обозначение С = С n-1(n-2)) С n-2(n-3))…С2(1))С1(0)), получим систему вида:

С А(0)X = С B, (6.17)

у которой матрица СА(0) после завершения прямого хода имеет верхний треугольный вид. Матрица С является произведением (n-1) нижних треугольных матриц с единичной диагональю. Несложно показать, что С также будет нижней треугольной с единичной диагональю. Так как det(C) = 1, то обратная матрица C-1 существует. Нетрудно доказать, что она также является нижней треугольной с единичной диагональю. Умножая обе части системы (6.17) на C-1, получим исходную систему уравнений (6.16) в следующей форме:

С-1  С А(0)X =B,

Матрица С-1 удовлетворяет требованиям к матрице L, а произведение С А(0) - к U, т.е.: L=С-1, U=С А(0) – матрица исходной системы после прямого хода.

Для определения коэффициентов матриц L и U используют прямой метод расчета, основанный на правиле умножения матриц и учете структуры матриц L и U. По нему на каждом шаге k (k =1,2,…,n) по ранее найденным элементам матриц определяются строка матрицы U и столбец матрицы L с номером k. Для примера рассмотрим вывод формул для k =1,2.

k =1. Из структуры матриц L и U следует, что элементы а1j первой строки матрицы А образуются умножением на 1 (l11) элементов u1j: а1j = l11 u1j = u1j. Поэтому в первой строке матрицы U: u1j = а1j, (j = 1,...,n). Элементы аi1 первого столбца матрицы А образуются умножением li1 на u11: аi1 = li1u11. Поэтому в первом столбце матрицы L: li1 = аi1/u11, (i = 2,...,n). В итоге расчетные формулы шага i =1 с учетом l11 =1 имеют вид:

u1j = а1j, (j = 1,...,n); l11 =1; li1 = аi1/ u11, (i = 2,...,n). (6.18.1)

k =2. Элементы а2j второй строки матрицы А рассчитываются по формуле: а2j= l21 u1j+ l22 u2j. Учитывая, что l22=1, u21=0 и первая строка U уже найдена, формула для расчета элементов ее строки 2 имеет вид: u2j = а2j - l21 u1j, (j = 2,...,n). Аналогично из формулы для элементов второго столбца матрицы А: аi2 = li1 u12+ li2u22, учитывая, что l12=0, l22=1 и первый столбец L уже найден, расчетная формула элементов ее столбца 2 имеет вид: li2 = (аi2 - li1 u12)/(u22), (i = 3,...,n).. В итоге расчетные формулы шага i =2 имеют вид:

u21=0; u2j = а2j - l21 u1j, (j = 2,...,n);

l12=0; l22=1; li2 = (аi2 - li1 u12)/(u22). (i = 3,...,n). (6.18.2)

По аналогии можно вывести расчетные формулы для произвольного шага k (k = 1,...,n), который заключается в расчете строки матрицы U и столбца L с номерами k:

uk1=uk2=…=uk(k-1)=0;

ukj = аkj – ( lk1 u1j + lk2 u2j +…+ lk(k-1) u(k-1)j), (j = k,...,n); (6.18.k.1)

l1k=l2k=…=l(k-1)k =0; lkk = 1;

lik = [аjk – ( lj1 u1k + lj2 u2k +…+ lj(k-1) u(k-1)k)]/ukk, (i = (k +1),...,n). (6.18.k.2)

Вычисления по формулам (6.18.k) начинаются с расчета величины диагонального элемента ukk матрицы U.

Если ukk  0, то при (k = 1,...,n-1), можно продолжать дальнейшие расчеты по формулам (6.18.k.1)-(6.18.k.2), поскольку все величины в них определены.

Если ukk = 0 при (k = 1,...,n-1), то из-за деления на нуль возникает неопределенность в расчете коэффициентов lik. Следовательно, для заданной исходной матрицы А LU-разложение не существует и следует прекратить выполнение алгоритма.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]