exponenta event banner

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 был бы вектор 1s. Только с шестью столбцами, решение существует, так как уравнения все еще согласуются, но решение не все 1s. Поскольку матрица имеет низкий ранг, существует бесконечно много решений.

Решение для двух решений с использованием обратной косой черты и 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 Hermitian) 4. (BA) * = BA (BA Hermitian)

Псевдоинверсные вычисления основаны на 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 = V1S1 1U1 *.

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

.

См. также

| | | | |

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