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-by-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 функция.

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

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

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

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

Смотрите также

| | | | | |

Введенный в R2013a