exponenta event banner

лютеций

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

Описание

пример

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

пример

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

пример

[L,U,P] = lu(A,outputForm) прибыль P в форме, указанной outputForm. Определить outputForm как 'vector' возвратиться P в качестве вектора перестановки, такого, что A(P,:) = L*U.

пример

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

[L,U,P,Q,D] = lu(S) также возвращает матрицу диагонального масштабирования D такой, что P*(D\S)*Q = L*U. Обычно масштабирование строк приводит к более разреженной и стабильной факторизации.

[___] = lu(S,thresh) задает пороговые значения для стратегии поворота, используемой lu с использованием любой из предыдущих комбинаций выходных аргументов. В зависимости от указанного количества выходных аргументов, значения по умолчанию и требований для thresh входные данные различны. См. раздел thresh описание аргумента для получения подробной информации.

пример

[___] = lu(___,outputForm) прибыль P и Q в форме, указанной outputForm. Определить outputForm как 'vector' возвратиться P и Q в качестве векторов перестановки. В предыдущих синтаксисах можно использовать любую комбинацию входных аргументов.

Примеры

свернуть все

Вычислите факторизацию LU матрицы и изучите результирующие факторы. Факторизация LU - это способ разложения матрицы A на верхнюю треугольную матрицу U, нижнюю треугольную матрицу L и матрицу P перестановки так, что PA = LU. Эти матрицы описывают шаги, необходимые для выполнения гауссова исключения на матрице до тех пор, пока она не окажется в уменьшенной строковой эшелонной форме. Матрица L содержит все множители, и матрица P перестановки учитывает перестановки строк.

Создайте матрицу 3 на 3 и рассчитайте коэффициенты логической единицы.

A = [10 -7 0
     -3  2 6
      5 -1 5];
[L,U] = lu(A)
L = 3×3

    1.0000         0         0
   -0.3000   -0.0400    1.0000
    0.5000    1.0000         0

U = 3×3

   10.0000   -7.0000         0
         0    2.5000    5.0000
         0         0    6.2000

Умножьте коэффициенты для воссоздания A. С помощью синтаксиса с двумя входами lu включает матрицу перестановок P непосредственно в L фактор, такой, что L быть возвращенным действительно P'*L и, таким образом, A = L*U.

L*U
ans = 3×3

   10.0000   -7.0000         0
   -3.0000    2.0000    6.0000
    5.0000   -1.0000    5.0000

Можно указать три выхода, чтобы отделить матрицу перестановки от умножителей в L.

[L,U,P] = lu(A)
L = 3×3

    1.0000         0         0
    0.5000    1.0000         0
   -0.3000   -0.0400    1.0000

U = 3×3

   10.0000   -7.0000         0
         0    2.5000    5.0000
         0         0    6.2000

P = 3×3

     1     0     0
     0     0     1
     0     1     0

P'*L*U
ans = 3×3

   10.0000   -7.0000         0
   -3.0000    2.0000    6.0000
    5.0000   -1.0000    5.0000

Решите линейную систему, выполнив факторизацию логической единицы и используя факторы для упрощения задачи. Сравните результаты с другими подходами, используя оператор обратной косой черты и decomposition объект.

Создайте магическую квадратную матрицу 5 на 5 и решите линейную систему Ax = b со всеми элементами b равно 65, магическая сумма. Поскольку 65 является магической суммой для этой матрицы (все строки и столбцы добавляют к 65), ожидаемое решение для x является вектором 1s.

A = magic(5);
b = 65*ones(5,1);
x = A\b
x = 5×1

    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

Для универсальных квадратных матриц оператор обратной косой черты вычисляет решение линейной системы с использованием разложения LU. Разложение LU выражается A как произведение треугольных матриц, и линейные системы, включающие треугольные матрицы, легко решаются с помощью формул подстановки.

Чтобы воссоздать ответ, вычисленный обратной косой чертой, вычислите разложение LU A. Затем используйте коэффициенты для решения двух треугольных линейных систем:

y = L\(P*b);
x = U\y;

Такой подход предварительного вычисления матричных коэффициентов до решения линейной системы может улучшить производительность, когда будет решено множество линейных систем, поскольку факторизация происходит только один раз и не требует повторения.

[L,U,P] = lu(A)
L = 5×5

    1.0000         0         0         0         0
    0.7391    1.0000         0         0         0
    0.4783    0.7687    1.0000         0         0
    0.1739    0.2527    0.5164    1.0000         0
    0.4348    0.4839    0.7231    0.9231    1.0000

U = 5×5

   23.0000    5.0000    7.0000   14.0000   16.0000
         0   20.3043   -4.1739   -2.3478    3.1739
         0         0   24.8608   -2.8908   -1.0921
         0         0         0   19.6512   18.9793
         0         0         0         0  -22.2222

P = 5×5

     0     1     0     0     0
     1     0     0     0     0
     0     0     0     0     1
     0     0     1     0     0
     0     0     0     1     0

y = L\(P*b);
x = U\y
x = 5×1

    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

decomposition объект также полезен для решения линейных систем с помощью специализированных факторизаций, так как вы получаете множество преимуществ производительности при предварительном вычислении матричных коэффициентов, но вам не нужно знать, как использовать факторы. Использовать объект разложения с 'lu' для повторного создания тех же результатов.

dA = decomposition(A,'lu');
x = dA\b
x = 5×1

    1.0000
    1.0000
    1.0000
    1.0000
    1.0000

Вычислите факторизацию LU разреженной матрицы и проверьте идентичность L*U = P*S*Q.

Создайте матрицу разреженного смежности 60 на 60 графа связности геодезического купола Бакминстера-Фуллера.

S = bucky;

Вычисление факторизации LU S использование синтаксиса разреженной матрицы с четырьмя выходами для возврата матриц перестановки строк и столбцов.

[L,U,P,Q] = lu(S);

Перестановка строк и столбцов S с P*S*Q и сравнить результат с умножением на треугольные коэффициенты L*U. 1-норма их разницы находится в пределах ошибки округления, указывая, что L*U = P*S*Q.

e = P*S*Q - L*U;
norm(e,1)
ans = 2.4425e-15

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

Создайте случайную матрицу 1000 на 1000.

A = rand(1000);

Вычислить факторизацию LU с помощью информации о перестановках, хранящейся в виде матрицы P. Сравнение результата с информацией перестановки, сохраненной в виде вектора p. Чем больше матрица, тем эффективнее память - использовать вектор перестановки.

[L1,U1,P] = lu(A);
[L2,U2,p] = lu(A,'vector');
whos P p
  Name         Size                Bytes  Class     Attributes

  P         1000x1000            8000000  double              
  p            1x1000               8000  double              

Использование вектора перестановки также экономит время выполнения в последующих операциях. Например, можно использовать предыдущие факторизации логической единицы для решения линейной системы Ax = b. Хотя решения, полученные из вектора перестановки и матрицы перестановки, эквивалентны (вплоть до округления), решение, использующее вектор перестановки, обычно требует немного меньше времени.

Сравните результаты вычисления факторизации LU разреженной матрицы с перестановками столбцов и без них.

Загрузить west0479 матрица, которая является вещественно-значной 479 на 479 разреженной матрицей.

load west0479
A = west0479;

Расчет факторизации логической единицы A путем вызова lu с тремя выходами. Создание шпионских графиков L и U факторов.

[L,U,P] = lu(A);
subplot(1,2,1)
spy(L)
title('L factor')
subplot(1,2,2)
spy(U)
title('U factor')

Figure contains 2 axes. Axes 1 with title L factor contains an object of type line. Axes 2 with title U factor contains an object of type line.

Теперь рассчитайте факторизацию логической единицы A использование lu с четырьмя выходами, которые переставляют столбцы A для уменьшения числа ненулей в факторах. Результирующие факторы гораздо скуднее, чем если бы перестановки столбцов не использовались.

[L,U,P,Q] = lu(A);
subplot(1,2,1)
spy(L)
title('L factor')
subplot(1,2,2)
spy(U)
title('U factor')

Figure contains 2 axes. Axes 1 with title L factor contains an object of type line. Axes 2 with title U factor contains an object of type line.

Входные аргументы

свернуть все

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

Типы данных: single | double
Поддержка комплексного номера: Да

Разреженная входная матрица. S может быть квадратным или прямоугольным по размеру.

Типы данных: double
Поддержка комплексного номера: Да

Поворотные пороги для разреженных матриц, задаваемые как скалярный или двухэлементный вектор. Допустимые значения находятся в интервале [0 1]. Способ указания thresh зависит от количества выходов, указанных в вызове lu:

  • Для трех выходов или менее, thresh должен быть скаляром, а значением по умолчанию является 1.0.

  • Для четырех или более выходов thresh может быть скалярным или двухэлементным вектором. Значение по умолчанию: [0.1 0.001]. При указании thresh как скаляр, то это только заменяет первое значение в векторе.

На высоком уровне этот ввод позволяет достичь компромисса между точностью и общим временем выполнения. Меньшие значения thresh имеют тенденцию приводить к более редким факторам LU, но решение может стать неточным. Большие значения могут привести к более точному решению (но не всегда), а обычно к увеличению общего объема работы и использования памяти.

lu выбирает стратегию поворота, основываясь сначала на количестве выходных аргументов, а затем на свойствах факторизуемой матрицы. Во всех случаях установка порогового значения (значений) в1.0 приводит к частичному повороту при установке для них значения 0 вызывает выбор шарниров только на основе разреженности результирующей матрицы. Все значения L имеют абсолютное значение 1/min(thresh) или меньше.

  • Три или меньше выходных аргументов - алгоритм выбирает диагональную ось вращения, если она удовлетворяет уравнению

    A(j,j) >= thresh * max(abs(A(j:m,j)))
    В противном случае выбирается строка, содержащая элемент с наибольшим абсолютным значением.

  • Симметричная стратегия поворота - если S - квадратная разреженная матрица с большей частью симметричной структурой и большей частью ненулевой диагональю, затем lu использует симметричную стратегию поворота. Для этой стратегии алгоритм выбирает диагональную ось вращения j если оно удовлетворяет неравенству:

    A(i,j) >= thresh(2) * max(abs(A(j:m,j)))
    Если диагональный ввод не проходит этот тест, то lu выбирает строку разрежения i удовлетворение неравенства:
    A(i,j) >= thresh(1) * max(abs(A(j:m,j)))

  • Несимметричная стратегия поворота - если S не удовлетворяет требованиям для симметричной стратегии поворота, то lu использует несимметричную стратегию. В этом случае lu выбирает строку разрежения i удовлетворение неравенства:

    A(i,j) >= thresh(1) * max(abs(A(j:m,j)))
    Значение 1.0 для thresh(1) приводит к обычному частичному повороту. Записи в L имеют абсолютное значение 1/thresh(1) или меньше. Второй элемент thresh входной вектор не используется с несимметричной стратегией.

Примечание

В некоторых редких случаях неправильная факторизация приводит к P*S*QL*U. Если это происходит, увеличить thresh максимум до 1.0 (регулярное частичное поворот) и повторите попытку.

Форма выходов перестановки, указанная как 'matrix' или 'vector'. Этот флаг определяет, lu возвращает перестановки строк P и перестановки столбцов Q как матрицы перестановок или векторы перестановок.

В качестве матриц выходные данные P и Q удовлетворяют этим удостоверениям:

  • Три выхода - P удовлетворяет P*A = L*U.

  • Четыре выхода - P и Q удовлетворить P*S*Q = L*U.

  • Пять выходов - P, Q, и D удовлетворить P*(D\S)*Q = L*U.

В качестве векторов выходные сигналы P и Q удовлетворяют этим удостоверениям:

  • Три выхода - P удовлетворяет A(P,:) = L*U

  • Четыре выхода - P и Q удовлетворить S(P,Q) = L*U

  • Пять выходов - P, Q, и D удовлетворить D(:,P)\S(:,Q) = L*U.

Пример: [L,U,P] = lu(A,'vector')

Выходные аргументы

свернуть все

Нижний треугольный коэффициент, возвращаемый в виде матрицы. Форма L зависит от того, будут ли перестановки строк P возвращаются в отдельном выводе:

  • Если третий выход P указывается, то L возвращается в виде единичной нижней треугольной матрицы (то есть нижней треугольной матрицы с 1s на главной диагонали).

  • Если третий выход P не указан, то L возвращается как перестановка строки нижней треугольной матрицы единицы. В частности, это продукт P'*L выходов P и L возвращено в трех случаях вывода.

Верхний треугольный коэффициент, возвращаемый в виде верхней треугольной матрицы.

Перестановка строки, возвращаемая как матрица перестановки или, если 'vector' параметр указывается как вектор перестановки. Используйте эти выходные данные для улучшения числовой стабильности расчета.

Посмотрите outputForm для описания идентификаторов, удовлетворяющих этим выводам.

Перестановка столбца, возвращаемая как матрица перестановки или, если 'vector' параметр указывается как вектор перестановки. Этот вывод используется для уменьшения заполнения (числа ненулевых значений) коэффициентов разреженной матрицы.

Посмотрите outputForm для описания идентификаторов, удовлетворяющих этим выводам.

Масштабирование строк, возвращаемое в виде диагональной матрицы. D используется для масштабирования значений в S такой, что P*(D\S)*Q = L*U. Обычно, но не всегда, масштабирование строк приводит к более разреженной и стабильной факторизации.

Алгоритмы

Факторизация LU вычисляется с использованием варианта гауссова исключения. Вычисление точного решения зависит от значения номера условия исходной матрицы cond(A). Если матрица имеет большое число условий (оно почти единичное), то вычисленная факторизация может быть неточной.

Факторизация LU является ключевым шагом в получении обратного с inv и определитель с det. Это также основа для решения линейного уравнения или матричного деления, полученного с помощью операторов \ и /. Это обязательно означает, что численные ограничения lu также присутствуют в этих зависимых функциях.

Расширенные возможности

..

См. также

| | | | | | |

Представлен до R2006a