pinv

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

Синтаксис

Описание

пример

B = pinv(A) возвращает Pseudoinverse Мура-Пенроуза матрицы 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(ABHermitian)4.(BA)*=BA(BAHermitian)

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

Совет

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

Алгоритмы

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

A=USV*=[U1U2][S1000][V1V2]*A=U1S1V1*.

Псевдоинверс A в таком случае равен:

B=V1S11U1*.

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

.

См. также

| | | | |

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