lu

Описание

пример

[L,U] = lu(A) возвращает верхнюю треугольную матрицу U и матричный L, таким образом A = L*U. Здесь, L является продуктом обратной матрицы сочетаний и нижней треугольной матрицы.

пример

[L,U,P] = lu(A) возвращает верхнюю треугольную матрицу U, нижняя треугольная матрица Lи матрицу сочетаний P, таким образом P*A = L*U. Синтаксис lu(A,'matrix') идентичен.

пример

[L,U,p] = lu(A,'vector') возвращает сочетание информацию в виде вектора p, таким образом A(p,:) = L*U.

пример

[L,U,p,q] = lu(A,'vector') возвращает информацию о сочетании как два векторов-строк p и q, таким образом A(p,q) = L*U.

пример

[L,U,P,Q,R] = lu(A) возвращает верхнюю треугольную матрицу U, нижняя треугольная матрица L, матрицы сочетаний P и Qи масштабирующую матрицу R, таким образом P*(R\A)*Q = L*U. Синтаксис lu(A,'matrix') идентичен.

пример

[L,U,p,q,R] = lu(A,'vector') возвращает информацию о сочетании в двух векторах-строках p и q, таким образом R(:,p)\A(:,q) = L*U.

пример

lu(A) возвращает матрицу, которая содержит строго нижнюю треугольную матрицу L (матрица без единичной диагонали) и верхняя треугольная матрица U как подматрицы. Таким образом, lu(A) возвращает матрицу U + L - eye(size(A)), где L и U определяются как [L,U,P] = lu(A). Матрица A должен быть квадратным.

Примеры

свернуть все

Вычислите LU-факторизацию этой матрицы. Поскольку числа не являются символическими объектами, вы получаете результаты с плавающей точкой.

M = [2 -3 -1; 1/2 1 -1; 0 1 -1];
[L, U] = lu(M)
L =
    1.0000         0         0
    0.2500    1.0000         0
         0    0.5714    1.0000

U =
    2.0000   -3.0000   -1.0000
         0    1.7500   -0.7500
         0         0   -0.5714

Теперь преобразуйте эту матрицу в символьный объект и вычислите LU-факторизацию.

M = sym(M);
[L, U] = lu(M)
L =
[   1,   0, 0]
[ 1/4,   1, 0]
[   0, 4/7, 1]
 
U =
[ 2,  -3,   -1]
[ 0, 7/4, -3/4]
[ 0,   0, -4/7]

Верните нижнюю и верхнюю треугольные матрицы и матрицу сочетаний с помощью трех выходных аргументов.

syms a
[L, U, P] = lu(sym([0 0 a; a 2 3; 0 a 2]))
L =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
U =
[ a, 2, 3]
[ 0, a, 2]
[ 0, 0, a]
P =
     0     1     0
     0     0     1
     1     0     0

Верните информацию о сочетании в качестве вектора при помощи 'vector' флаг.

syms a
A = [0 0 a; a 2 3; 0 a 2];
[L, U, p] = lu(A, 'vector')
L =
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
U =
[ a, 2, 3]
[ 0, a, 2]
[ 0, 0, a]
p =
     2     3     1

Проверяйте это A(p,:) = L*U при помощи isAlways.

isAlways(A(p,:) == L*U)
ans =
  3×3 logical array
     1     1     1
     1     1     1
     1     1     1

Восстановите матрицу сочетания P от вектора p.

P = zeros(3, 3);
for i = 1:3
    P(i, p(i)) = 1;
end
P
P =
     0     1     0
     0     0     1
     1     0     0

Верните информацию о сочетании как два вектора p и q.

syms a
A = [a, 2, 3*a; 2*a, 3, 4*a; 4*a, 5, 6*a];
[L, U, p, q] = lu(A, 'vector')
L =
[ 1, 0, 0]
[ 2, 1, 0]
[ 4, 3, 1]
U =
[ a,  2,  3*a]
[ 0, -1, -2*a]
[ 0,  0,    0]
p =
     1     2     3
q =
     1     2     3

Проверяйте это A(p, q) = L*U при помощи isAlways.

isAlways(A(p, q) == L*U)
ans =
  3×3 logical array
     1     1     1
     1     1     1
     1     1     1

Верните нижнюю и верхнюю треугольные матрицы, матрицы сочетаний и матрицу масштабирования.

syms a
A = [0, a; 1/a, 0; 0, 1/5; 0,-1];
[L, U, P, Q, R] = lu(A)
L =
[ 1,       0, 0, 0]
[ 0,       1, 0, 0]
[ 0, 1/(5*a), 1, 0]
[ 0,    -1/a, 0, 1]
U =
[ 1/a, 0]
[   0, a]
[   0, 0]
[   0, 0]
P =
     0     1     0     0
     1     0     0     0
     0     0     1     0
     0     0     0     1
Q =
     1     0
     0     1
R =
[ 1, 0, 0, 0]
[ 0, 1, 0, 0]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]

Проверяйте это P*(R\A)*Q = L*U при помощи isAlways.

isAlways(P*(R\A)*Q == L*U)
ans =
  4×2 logical array
     1     1
     1     1
     1     1
     1     1

Верните информацию о сочетании как векторы p и q при помощи 'vector' флаг. Кроме того, вычислите матрицу масштабирования R.

syms a
A = [0, a; 1/a, 0; 0, 1/5; 0,-1];
[L, U, p, q, R] = lu(A,'vector')
L =
[ 1,       0, 0, 0]
[ 0,       1, 0, 0]
[ 0, 1/(5*a), 1, 0]
[ 0,    -1/a, 0, 1]
U =
[ 1/a, 0]
[   0, a]
[   0, 0]
[   0, 0]
p =
     2     1     3     4
q =
     1     2
R =
[ 1, 0, 0, 0]
[ 0, 1, 0, 0]
[ 0, 0, 1, 0]
[ 0, 0, 0, 1]

Проверяйте это R(:,p)\A(:,q) = L*U при помощи isAlways.

isAlways(R(:,p)\A(:,q) == L*U)
ans =
  4×2 logical array
     1     1
     1     1
     1     1
     1     1

Возвращает треугольные матрицы в качестве подматриц, задавая один или нет выходных аргументов.

syms a
A = [0 0 a; a 2 3; 0 a 2];
lu(A)
ans =
[ a, 2, 3]
[ 0, a, 2]
[ 0, 0, a]

Проверьте, что получившаяся матрица равна U + L - eye(size(A)), где L и U определяются как [L,U,P] = lu(A).

[L,U,P] = lu(A);
U + L - eye(size(A))
ans =
[ a, 2, 3]
[ 0, a, 2]
[ 0, 0, a]

Входные параметры

свернуть все

Вход, заданный как числовая или символьная матрица.

Подробнее о

свернуть все

LU-факторизация матрицы

LU-факторизация выражает m n матрицей A как P *  A = L * U. Здесь L является m -by m нижней треугольной матрицей, U является m -by n верхней треугольной матрицей, а P является матрицей сочетаний.

Вектор сочетания

Вектор сочетания p содержит номера, соответствующие обменам строками в матрице A. Для m -by m матрицы, p представляет следующую матрицу сочетаний с индексами i и j в диапазоне от 1 до m.

Pij=δpi,j={1 если j=pi0 если jpi

Совет

  • Вызывающие lu для числовых аргументов, которые не являются символьными объектами, MATLAB® lu функция.

  • The thresh опция, поддерживаемая MATLAB lu функция не влияет на символьные входы.

  • Если вы используете 'matrix' вместо 'vector', затем lu возвращает матрицы сочетаний, как это происходит по умолчанию.

  • L и U являются несингулярными тогда и только тогда, когда A является несингулярным. lu также может вычислить LU-факторизацию сингулярной матрицы A. В этом случае L или U является сингулярной матрицей.

  • Большинство алгоритмов для вычисления LU-факторизации являются вариантами Гауссова исключения.

См. также

| | | | | |

Введенный в R2013a
Для просмотра документации необходимо авторизоваться на сайте