pinv

Псевдоинверсия Мура-Пенроуза

Синтаксис

Описание

пример

B = pinv(A) возвращает Псевдоинверсию Мура-Пенроуза матричного A.

B = pinv(A,tol) задает значение для допуска. pinv сингулярные значения обработок A это меньше, чем допуск как нуль.

Примеры

свернуть все

Сравните решения системы линейных уравнений, полученных обратной косой чертой (\) и pinv.

Если прямоугольная матрица коэффициентов A имеет низкий ранг, затем задача наименьших квадратов минимизации norm(A*x-b) имеет бесконечно много решений. Два решения возвращены x1 = A\b и x2 = pinv(A)*b. Различающими свойствами этих решений является тот x1 имеет только rank(A) ненулевые компоненты и norm(x2) меньше, чем для любого другого решения.

Создайте 8 6 матрица, которая имеет rank(A) = 3.

A = magic(8); 
A = A(:,1:6) 
A = 8×6

    64     2     3    61    60     6
     9    55    54    12    13    51
    17    47    46    20    21    43
    40    26    27    37    36    30
    32    34    35    29    28    38
    41    23    22    44    45    19
    49    15    14    52    53    11
     8    58    59     5     4    62

Создайте вектор для правой стороны системы уравнений.

b = 260*ones(8,1)
b = 8×1

   260
   260
   260
   260
   260
   260
   260
   260

Номер, выбранный для правой стороны, 260, является значением 8 8 волшебной суммы для A. Если бы A были все еще 8 8 матрица, то одно решение для x было бы вектором 1 с. Только с шестью столбцами существует решение, поскольку уравнения все еще сопоставимы, но решение не составляет всю 1 с. Поскольку матрица имеет низкий ранг, существует бесконечно много решений.

Решите для двух из решений с помощью обратной косой черты и pinv.

x1 = A\b
Warning: Rank deficient, rank = 3, tol =  1.882938e-13.
x1 = 6×1

    3.0000
    4.0000
         0
         0
    1.0000
         0

x2 = pinv(A)*b
x2 = 6×1

    1.1538
    1.4615
    1.3846
    1.3846
    1.4615
    1.1538

Оба из этих решений точны, в том смысле, что norm(A*x1-b) и norm(A*x2-b) находятся на порядке ошибки округления. Решение x1 является особенным, потому что это имеет только три ненулевых элемента. Решение x2 является особенным потому что norm(x2) меньше, чем это для какого-либо другого решения, включая norm(x1).

norm(x1)
ans = 5.0990
norm(x2)
ans = 3.2817

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

свернуть все

Введите матрицу.

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

Допуск сингулярного значения, заданный как скаляр. pinv сингулярные значения обработок, которые меньше, чем tol как нули во время расчета псевдоинверсии.

Допуском по умолчанию является max(size(A))*eps(norm(A)).

Пример: pinv(A,1e-4)

Больше о

свернуть все

Псевдоинверсия Мура-Пенроуза

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

Для любого матричного A, псевдообратный B существует, уникален, и имеет те же размерности как A'. Если A является квадратным и не сингулярным, затем pinv(A) просто дорогой способ вычислить inv(A). Однако, если A не является квадратным, или является квадратным и сингулярным, затем inv(A) не существует. В этих случаях, pinv(A) имеет некоторых (но не все) свойств inv(A):

1.  ABA=A2.  BAB=B3.  (AB)*=AB(AB    Эрмитов)4.  (BA)*=BA(BA    Эрмитов)

Псевдообратный расчет основан на svd(A). Вычисление обрабатывает сингулярные значения меньше, чем tol как нуль.

Советы

  • Можно заменить большую часть использования pinv примененный векторный b, как в pinv(A)*b, с lsqminnorm(A,b) получить решение методом наименьших квадратов минимальной нормы системы линейных уравнений. lsqminnorm обычно более эффективно, чем pinv, и это также поддерживает разреженные матрицы.

Алгоритмы

pinv использует сингулярное разложение, чтобы сформировать псевдоинверсию A. Сингулярные значения по диагонали S это меньше, чем tol обработаны как нули и представление A становится:

A=USV*=[U1  U2][S1000][V1  V2]*A=U1S1V1*.

Псевдоинверсия A затем равно:

B=V1S11U1*.

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

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

| | | | |

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