- •Глава 6. Численные методы алгебры. Решение систем лИнейных уравнений
- •6.1. Линейные уравнения. Теоретическое и практическое решения линейных уравнений с одним неизвестным
- •6.2. Системы линейных уравнений. Основные понятия
- •6.3. Необходимое и достаточное условие существования решения системы линейных уравнений. Методы решения
- •6.4. Прямые методы решения систем линейных уравнений. Метод с использованием обратной матрицы и метод Крамера
- •6.5. Прямые методы решения систем линейных уравнений с исключением неизвестных. Метод Гаусса
- •6.5.1.Метод Гаусса.
- •6.6. Метод Гаусса-Жордана решения систем линейных уравнений
- •6.7.Решение систем линейных уравнений с использованием lu-разложения матрицы системы
- •6.7.1. Идея использования lu-разложения и алгоритм прямого метода расчета
- •6.7.2. Критерии существования lu-разложения. Трудоемкость и сложность его алгоритма
- •6.7.3. Решение системы линейных уравнений с использованием результатов lu-разложения ее матрицы.
- •6.8. Алгоритм расчета определителей с использованием исключения неизвестных
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) = 1det(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-разложение не существует и следует прекратить выполнение алгоритма.