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

Материал из testwiki
Перейти к навигации Перейти к поиску

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

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

Этот метод является одной из разновидностей метода Гаусса.

Применения

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

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

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.

Вывод формулы

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

Поскольку и в первой строке матрицы L, и в первом столбце матрицы U, все элементы, кроме, возможно, первого, равны нулю, имеем

a11=l11u11

Если a11=0, то l11=0 или u11=0. В первом случае целиком состоит из нулей первая строка матрицы L, во втором — первый столбец матрицы U. Следовательно, L или U вырождена, а значит, вырождена A, что приводит к противоречию. Таким образом, если a11=0, то невырожденная матрица A не имеет LU-разложения.

Пусть a110, тогда l110 и u110. Поскольку столбец L и строка U определены с точностью до умножения строки U на константу и деления столбца L на ту же константу, мы можем потребовать, чтобы l11=1. При этом u11=a11.

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

A=(a11wTvA),

где v,wT,A имеют размерность соответственно (N1)×1, 1×(N1), (N1)×(N1).

Аналогично разделим на клетки матрицы 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).

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

Алгоритм

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

Будем использовать следующие обозначения для элементов матриц: 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.

См. также

Примечания

Шаблон:Примечания

Литература

Шаблон:Вектора и матрицы