exponenta event banner

лютеций

Факторизация логической единицы

Описание

пример

[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

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

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 выражает матрицу m-на-n A как P * A = L * U. Здесь L является m-на-m нижней треугольной матрицей, U является m-на-n верхней треугольной матрицей, а P является матрицей перестановки.

Вектор перестановки

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

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

Совет

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

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

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

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

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

См. также

| | | | | |

Представлен в R2013a