Перейти к содержанию

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

Материал из Мегавики — свободной энциклопедии

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

LU-разложение используется для решения систем линейных уравнений, обращения матриц и вычисления определителя. LU-разложение существует только в том случае, когда матрица A обратима, а все ведущие (угловые) главные миноры матрицы A невырождены[1].

LU-разложение является обратной операцией по отношению к последовательному исключению неизвестных с помощью матрицы исключения. Матрица L является обратной матрице исключения E1=L. В отличии от матрицы исключения E, обратная ей матрица L дает удобную формулу с множителями Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{ij}} , расположенными каждый на своем месте (См. Матрица, обратная матрице исключения).

Метод LU-разложения является одной из разновидностей метода Гаусса.

Применения[править]

Решение систем линейных уравнений[править]

Полученное LU-разложение матрицы A (матрица коэффициентов системы) может быть использовано для решения семейства систем линейных уравнений с различными векторами b в правой части[2]:

Ax=b

Если известно LU-разложение матрицы A, A=LU, исходная система может быть записана как

LUx=b.

Эта система может быть решена в два шага. На первом шаге решается система

Ly=b.

Поскольку L — нижняя треугольная матрица, эта система решается непосредственно прямой подстановкой.

На втором шаге решается система

Ux=y.

Поскольку U — верхняя треугольная матрица, эта система решается непосредственно обратной подстановкой.

Обращение матриц[править]

Обращение матрицы A эквивалентно решению линейной системы

AX=I,

где X — неизвестная матрица, I — единичная матрица. Решение X этой системы является обратной матрицей A1.

Систему можно решить описанным выше методом LU-разложения.

Вычисление определителя матрицы[править]

Имея LU-разложение матрицы A,

A=LU,

можно непосредственно вычислить её определитель,

det(A)=det(LU)=det(L)det(U)=(i=1nLii)(i=1nUii),

где n — размер матрицы A, Lii и Uii — диагональные элементы матриц L и U.

Вывод формулы[править]

Первый способ[править]

При рассмотрении равенства A=LU следует учитывать свойства последовательного исключения неизвестных из матрицы A для получения верхней треугольной матрицы U. Ведущие строки, которые вычитаются из нежерасположенных строк, не являются строками первоначальной матрицы A, поскольку процесс последовательного исключения строк меняет (в определенных случаях) строки, чтобы сделать их ведущими. Но ведущие строки являются строками матрицы U, так как последовательное исключение неизвестных не меняет строки снова, если они уже являются ведущими.

Так в примере (См. Матрица исключения):

Невозможно разобрать выражение (неизвестная функция «\begin{bmatrix}»): {\displaystyle E=E_{32}E_{31}E_{21}= \begin{bmatrix} 1 & 0 & 0 \\0 & 1 & 0 \\ 0 & -ℓ_{32} & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\0 & 1 & 0 \\ -ℓ_{31} & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\-ℓ_{21} & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0 \\-ℓ_{21} & 1 & 0 \\(ℓ_{32}ℓ_{21}-ℓ_{31}) & -ℓ_{32} & 1 \end{bmatrix}}

при вычислении третьей строки U производится вычитание кратных количеств полученных ранее, предыдущих ведущих строк матрицы U (но не матрицы A):

Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle \text{Строка}\ 3\ \text{матрицы}\ U\ = (\text{Строка}\ 3\ \text{матрицы}\ A)\ - ℓ_{31}\times(\text{Строка}\ 1\ \text{матрицы}\ U)\ - ℓ_{32}\times(\text{Строка}\ 2\ \text{матрицы}\ U)\ }
Исходная матрица Приводим элемент {3,1} матрицы, находящийся под ведущим элементом первой строки, к нулю Приводим элемент {3,2} матрицы, находящийся под ведущим элементом второй строки, к нулю
Строка 3 матрицы U = (Строка 3 матрицы A) Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle - ℓ_{31}(\text{Строка}\ 1\ \text{матрицы}\ U)} Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle - ℓ_{32}(\text{Строка}\ 2\ \text{матрицы}\ U) }

Таким образом строка Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle [ℓ_{31},ℓ_{32},1]} умножается на матрицу U, что видно если мы перепишем равенство:

Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle \text{Строка}\ 3\ \text{матрицы}\ A\ = ℓ_{31}\times(\text{Строка}\ 1\ \text{матрицы}\ U)\ + ℓ_{32}\times(\text{Строка}\ 2\ \text{матрицы}\ U)\ +1\times(\text{Строка}\ 3\ \text{матрицы}\ U)\ }

Это равенство соответствует равенству A=LU для третьей строки A, где третья строка L содержит Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{31},ℓ_{32},1} . Все строки имеют аналогичный вид независимо от размера матрицы A. Таким образом без перестановки строк мы имеем A=LU.

Второй способ. Умножение столбцов кратно строкам[править]

Суть этого способа вывода формулы в последовательном исключении осуществленном посредством вычитания одного столбца матрицы L из матрицы A количеством раз равного одной строке матрицы U.

Последовательное исключение неизвестных начинается с ведущей строки матриц L и U, которая равна первой строке матрицы A. Ведущую строку умножаем на числа Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{21}} и Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{31}} и, в конечном итоге, на число Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{n1}} . Следующим действием производим ее вычитание из строки 2 и строки 3 и, в конечном итоге, из строки n матрицы A. Если в первом действии, с умножением, мы выбрали числа Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{21}=a_{21}/a_{11}} , Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{31}=a_{31}/a_{11}} и, в конечном итоге, Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{n1}=a_{n1}/a_{11}} , то результом вычитания в столбце 1 будут нули.

Первый шаг удаляет Невозможно разобрать выражение (неизвестная функция «\begin{bmatrix}»): {\displaystyle \begin{bmatrix} 1\times(\text{строка}\ 1) \\ ℓ_{21}\times(\text{строка}\ 1) \\ ℓ_{31}\times(\text{строка}\ 1) \\ℓ_{41}\times(\text{строка}\ 1) \end{bmatrix}} из A, чтобы получить A2=[00000×××0×××0×××]

То есть мы удалили одноранговую матрицу, произведя умножение столбца Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{1}=(1,ℓ_{21},ℓ_{31},ℓ_{41})} на строку 1 матрицы A - первая ведущая строка u1 матрицы math>U</math>.

Следующий шаг - осуществляем подобные операции с матрицей A2, чтобы получить матрицу A3:

Второй шаг удаляет Невозможно разобрать выражение (неизвестная функция «\begin{bmatrix}»): {\displaystyle \begin{bmatrix} 0\times(\text{строка}\ 1) \\ 1\times(\text{строка}\ 1) \\ ℓ_{32}\times(\text{строка}\ 1) \\ℓ_{42}\times(\text{строка}\ 1) \end{bmatrix}} из A2, чтобы получить A3=[0000000000××00××]

Строка 2 матрицы A2 это вторая ведущая строка и одновременно вторая ведущая строка u2 матрицы math>U</math>. Мы удалили столбец Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{1}=(0,1,ℓ_{32},ℓ_{42})} количество раз равное этой второй ведущей строке. Проводя дальшейшие шаги подобным же образом, мы на каждом шаге удаляем столбец Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{j}} матрицы L количество раз равное ведущей строке uj матрицы U. Если произвести обратную операцию сложения этих произведений столбцов Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{j}} матрицы L и ведущих строк uj матрицы U мы получим:

Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle A=ℓ_{1}u_{1}+ℓ_{2}u_{2}+\cdots+ℓ_{n}u_{n}= \begin{bmatrix} & & \\ ℓ_{1} & \cdots & ℓ_{n} \\& & \end{bmatrix} \begin{bmatrix} &u_{1} & \\ & \vdots & \\&u_{n} & \end{bmatrix} =LU }

Выражение Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{1}u_{1}+ℓ_{2}u_{2}+\cdots+ℓ_{n}u_{n}} является сложением одноранговых матрицы.

Третий способ[править]

Исходя из области применения LU-разложение может быть применено только к невырожденной матрице, поэтому далее будем считать что матрица A невырождена. Поскольку и в первой строке матрицы L, так как она является нижней треугольной матрицей, и в первом столбце матрицы U, так как она является верхней треугольной матрицей, все элементы, кроме, возможно, первого, равны нулю, имеем

Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle a_{11} = ℓ_{11} u_{11}}

Если a11=0, то Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{11} = 0} или u11=0. В первом случае целиком состоит из нулей первая строка матрицы L, во втором — первый столбец матрицы U. Следовательно, L или U вырождена, а значит, вырождена A, что приводит к противоречию. Таким образом, если a11=0, то невырожденная матрица A не имеет LU-разложения.

Пусть a110, тогда Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{11} \ne 0} и u110. Поскольку L и U определены с точностью до умножения U на константу и деления L на ту же константу, мы можем потребовать, чтобы Невозможно разобрать выражение (синтаксическая ошибка): {\displaystyle ℓ_{11} = 1} . При этом u11=a11.

Разделим матрицу A на блоки:

A=(a11wTvA),

где v,wT,A имеют размерность соответственно (N1)×1, 1×(N1), (N1)×(N1) (N - число строк и столбов матрицы A).

Аналогично разделим на блоки матрицы L и U:

L=(10vlL), U=(a11wuT0U).

Уравнение A=LU принимает вид

wT=wuT,
v=a11vl,
A=vlwuT+LU.

Решая систему уравнений относительно vl, wu, L, U, получаем:

wu=w,
vl=v/a11,
LU=AvwT/a11.

Окончательно имеем:

L=(10v/a11L),
U=(a11wT0U),
LU=AvwT/a11.

Итак, мы свели LU-разложение матрицы размера N×N к LU-разложению матрицы размера (N1)×(N1).

Разложение A=LU возможно без перестановки и без нулей на месте ведущих элементов если все верхние левые k×k, где k равно от 1 до N подматрицы-блоки матрицы A являются невырожденными.

[Ak***]=[Lk0**][Uk*0*]

То есть Ak=LkUk. Каждая подматрица Ak должна быть невырожденной, чтобы в конечном итоге можно было получить равенство A=LU.

Выражение AvwT/a11 называется дополнением Шура элемента a11 в матрице A[1].

Алгоритм[править]

Один из алгоритмов для вычисления LU-разложения приведён ниже.[3]

Будем использовать следующие обозначения для элементов матриц: A=(aij), L=(lij), U=(uij), i,j=1n; причём диагональные элементы матрицы L: lii=1, i=1n.

Найти матрицы L и U можно следующим образом (выполнять шаги следует строго по порядку, так как следующие элементы находятся с использованием предыдущих):

  1. Цикл i от 1 до n
    1. Цикл j от 1 до n
      1. uij=0, lij=0
      2. lii=1
  2. Цикл i от 1 до n
    1. Цикл j от 1 до n
      1. Если i<=j: uij=aijk=1ilik*ukj
      2. Если i>j: lij=(aijk=1jlik*ukj)/ujj

В итоге мы получим матрицы — L и U.

LDU-разложение[править]

LDU-разложение представление матрицы A в виде произведения трех матриц, A=LDU, где L — нижняя треугольная матрица обратная матрице исключения, D - диагональная матрица а U — верхняя треугольная матрица. LDU-разложение это продолжение LU-разложения, когда диагональные эелементы матриц LU-факторизации определнным образом выносятся в отдельную, диагональную матрицу D.

Например:A=[1404124040]=[100410011][140044000]=LU=[100410011][100040004][140011001]=LDU

См. также[править]

Примечания[править]

  1. 1,0 1,1 Е. Е. Тыртышников. Матричный анализ и линейная алгебра. — 2004-2005.
  2. Левитин, 2006.
  3. Вержбицкий В.М. Основы численных методов. Учебник для вузов. — Высшая школа, 2002. — С. 63-64. — ISBN 5-06-004020-8.

Литература[править]

  • Ортега Дж. Введение в параллельные и векторные методы решения линейных систем. — М.: Мир, 1991. — 376 с. — ISBN 5-03-001941-3.