inv

Обратная матрица

Синтаксис

Описание

пример

Y = inv(X) вычисляет обратную форму квадратной матрицы X.

  • X^(-1) эквивалентно inv(X).

  • x = A\b вычисляется по-другому, чем x = inv(A)*b и рекомендуется для решения систем линейных уравнений.

Примеры

свернуть все

Вычислите обратную матрицу 3 на 3.

X = [1 0 2; -1 5 0; 0 3 -9]
X = 3×3

     1     0     2
    -1     5     0
     0     3    -9

Y = inv(X)
Y = 3×3

    0.8824   -0.1176    0.1961
    0.1765    0.1765    0.0392
    0.0588    0.0588   -0.0980

Проверьте результаты. В идеале Y*X создает матрицу тождеств. Начиная с inv выполняет инверсию матрицы, используя расчеты с плавающей точкой, на практике Y*X близок к матрице тождеств, но не точно равен ей eye(size(X)).

Y*X
ans = 3×3

    1.0000    0.0000   -0.0000
         0    1.0000   -0.0000
         0   -0.0000    1.0000

Рассмотрим, почему решает линейную систему путем инвертирования матрицы с помощью inv(A)*b уступает решению непосредственно с помощью оператора обратной косой черты, x = A\b.

Создайте случайную матрицу A порядка 500, который построен так, чтобы его число обусловленности, cond(A), есть 1e10, и его норма, norm(A), есть 1. Точное решение x является случайным вектором длины 500, и правая сторона b = A*x. Таким образом, система линейных уравнений плохо обусловлена, но последовательна.

n = 500; 
Q = orth(randn(n,n));
d = logspace(0,-10,n);
A = Q*diag(d)*Q';
x = randn(n,1);
b = A*x;

Решить линейную систему A*x = b путем инвертирования матрицы коэффициентов A. Использование tic и toc для получения времени выполнения.

tic
y = inv(A)*b; 
t = toc
t = 0.0119

Найдите абсолютную и остаточную ошибку вычисления.

err_inv = norm(y-x)
err_inv = 4.7546e-06
res_inv = norm(A*y-b)
res_inv = 4.8705e-07

Теперь решите ту же линейную систему, используя оператор обратной косой черты \.

tic
z = A\b;
t1 = toc
t1 = 0.0074
err_bs = norm(z-x)
err_bs = 3.9765e-06
res_bs = norm(A*z-b)
res_bs = 3.5785e-15

Вычисление обратной косой чертой быстрее и имеет на несколько порядков меньшую ошибку. Тот факт, что err_inv и err_bs оба имеют порядок 1e-6 просто отражает число обусловленности матрицы.

Поведение этого примера типично. Использование A\b вместо inv(A)*b это в два-три раза быстрее и создает невязки по порядок машинной точности относительно величины данных.

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

свернуть все

Входная матрица, заданная как квадратная матрица. Если X плохо масштабируется или почти сингулярна, тогда inv вычисление теряет числовую точность. Использовать rcond или cond для проверки числа обусловленности матрицы.

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

Подробнее о

свернуть все

Обратная матрица

A матрицы X является инвертируемым, если существует матрица Y того же размера, что и XY=YX=In, где In является n-by- n единичная матрица. Матрица Y называется обратной X.

Матрица, которая не имеет обратной, сингулярна. Квадратная матрица сингулярна только, когда ее определяющий в точности равен нулю.

Совет

  • Редко необходимо сформировать явную обратную матрицу. Частое неправильное использование inv возникает при решении системы линейных уравнений Ax = b. Один из способов решения уравнения - это x = inv(A)*b. Лучшим способом с точки зрения как времени выполнения, так и числовой точности является использование матричного оператора обратной косой черты x = A\b. Это создает решение с использованием Гауссова исключения, не образуя обратное. Посмотрите mldivide для получения дополнительной информации.

Алгоритмы

inv выполняет LU-разложение матрицы входа (или LDL-разложение, если вход матрица Эрмитова). Затем он использует результаты, чтобы сформировать линейную систему, решение которой является обратной матрицей inv(X). Для разреженных входов, inv(X) создает разреженную матрицу тождеств и использует обратную косую черту, X\speye(size(X)).

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

.

См. также

| | |

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