Обращение матриц — функции inv, pinv MatLab
RADIOMASTER
Лучшие смартфоны на Android в 2022 году
Серия iPhone от Apple редко чем удивляет. Когда вы получаете новый iPhone, общее впечатление, скорее всего, будет очень похожим на ваше предыдущее устройство. Однако всё совсем не так в лагере владельцев устройств на Android. Существуют телефоны Android всех форм и размеров, не говоря уже о разных ценовых категориях. Другими словами, Android-телефон может подойти многим. Однако поиск лучших телефонов на Android может быть сложной задачей.
1465 0
Документация Схемотехника CAD / CAM Статьи
MathCAD 12 MatLab OrCAD P CAD AutoCAD MathCAD 8 — 11
- Главная /
- База знаний /
- CAD / CAM /
inv(X) — возвращает матрицу, обратную квадратной матрице X. Предупреждающее сообщение выдается, если X плохо масштабирована или близка к вырожденной.
Пример:
» inv(rand(4,4))
ans =
2.2631
-2.3495-0.4696-0.6631
-0.76201.2122
1.7041 -1.2146
-2.04081.4228 1.5538 1.3730
1.3075 -0.0183-2.54830.6344
На практике вычисление явной обратной матрицы не так уж необходимо. Чаще операцию обращения применяют при решении системы линейных уравнений вида Ах=b. Один из путей решения этой системы — вычисление x=inv(A)*b.
Но лучшим с точки зрения минимизации времени расчета и повышения точности вычислений является использование оператора матричного деления х=А\b. Эта операция использует метод исключения Гаусса без явного формирования обратной матрицы.
В = pinv(A)
— возвращает матрицу, псевдообратную матрице А (псевдообращение матрицы
по Муру-Пенроузу). Результатом псевдообращения матрицы по Муру-Пенроузу
является матрица В того же размера, что и А’, и удовлетворяющая условиям
А*В*А=А и В*А*В=В. Вычисление основано на использовании функции svd(A) и
приравнивании к нулю всех сингулярных чисел, меньших величины tol;
Пример:
» pinv(rand(4,3))
ans =
-1. 3907-0.0485-0.24931.8640
-0.87751.1636 0.6605 -0.0034
2.0906 -0.5921-0.2749-0.5987
Нравится
Твитнуть
Теги MatLab САПР
Сюжеты MatLab
Знакомство с матричной лабораторией MATLAB MatLab
8193 0
Визуализация и графические средства MatLab
9702 0
Техническая документация по системе MatLab
6219 0
Комментарии (0)
Вы должны авторизоваться, чтобы оставлять комментарии.Вход
О проекте Использование материалов Контакты
Новости Статьи База знаний
Радиомастер
© 2005–2022 radiomaster.ru
При использовании материалов данного сайта прямая и явная ссылка на сайт radiomaster.ru обязательна. 0.2106 s
inv (Справочник по функциям MATLAB)
inv (Справочник по функциям MATLAB)Справочник по функциям MATLAB | Перейти к функции: | Поиск  Справочная служба |
инв | Примеры См. также |
Обратная матрица
Синтаксис
Y = инв(Х)
Описание
Y = инв(Х)
возвращает обратную квадратную матрицу х
. Предупреждающее сообщение печатается, если X
плохо масштабируется или почти одинарно.
На практике редко требуется формировать явную обратную матрицу. Частое неправильное использование inv
возникает при решении системы линейных уравнений Ax = b. Один из способов решить эту проблему —
x
=
inv(A)
* b
. Лучшим способом, как с точки зрения времени выполнения, так и с точки зрения числовой точности, является использование оператора деления матрицы x 9.0032 =
А\б
. Это дает решение с использованием метода исключения Гаусса без образования обратного. Для получения дополнительной информации см. \
и /
. Примеры
Вот пример, демонстрирующий разницу между решением линейной системы путем обращения матрицы с inv(A)
* b
и решением ее напрямую с A\b
. Матрица A
порядка 100 построена так, что ее число обусловленности cond(A)
, это 1.e10
, а его норма, norm(A)
, это 1
. Точное решение x
представляет собой случайный вектор длины 100, правая часть которого равна b
=
A
* x
. Таким образом, система линейных уравнений плохо обусловлена, но непротиворечива.
На ноутбуке 386SX с тактовой частотой 20 МГц операторы
тик ,
y = inv(A)*b, toc
ошибка = норма (у-х)
разрешение = норма (A * y-b)
производить
прошедшее_время =
9.6600
ошибка =
2.4321э-07
разрешение =
1.8500э-09
в то время как заявления
тик, z = A\b, тик
ошибка = норма (г-х)
разрешение = норма (A * z-b)
производить
прошедшее_время =
3.9500
ошибка =
6.6161э-08
разрешение =
9.1103э-16
Вычисление решения с
y
=
inv(A)
* b
занимает почти в два с половиной раза больше времени, чем с z
=
A\b
. Оба дают вычисленные решения с примерно одинаковой ошибкой, 1.e-7
, отражающий номер состояния матрицы. Но размер остатков, полученных путем подстановки вычисленного решения обратно в исходные уравнения, отличается на несколько порядков. Прямое решение дает невязки порядка машинной точности, даже если система плохо обусловлена.
Поведение этого примера типично. Использование A\b
вместо inv(A)
* b
в два-три раза быстрее и дает погрешности порядка машинной точности относительно величины данных. Алгоритм
Команда inv
использует подпрограммы ZGEDI
и ZGEFA
от LINPACK. Для получения дополнительной информации см. Руководство пользователя LINPACK . Диагностика
Из inv
, если матрица вырожденная,
Matrix отличается исключительной точностью работы.
На машинах с арифметикой IEEE это только предупреждающее сообщение. Затем inv
возвращает матрицу, в которой каждому элементу присвоено значение Inf
. На машинах без арифметики IEEE, таких как VAX, это считается ошибкой.
Если обратное было найдено, но недостоверно, отображается это сообщение.
Предупреждение. Матрица близка к единственной или плохо масштабирована.
Результаты могут быть неточными. RCOND = ххх
См. также
\
Матричное левое деление (обратная косая черта) /
Правое деление матрицы (косая черта)
det
Определитель матрицы
LU
матричная факторизация LU
номер
Уменьшенная эшелонированная форма строки
Ссылки
[1] Донгарра, Дж. Дж., Дж. Р. Банч, К. Б. Молер и Г. У. Stewart, Руководство пользователя LINPACK , SIAM, Филадельфия, 1979 г.
[ Предыдущая | Служба поддержки | Следующий ]
линейная алгебра.
Почему inv Matlab работает медленно и неточно? спросил
Изменено
7 лет, 1 месяц назад
Просмотрено
9к раз
Я читал в нескольких местах (в документе и в этом сообщении в блоге: http://blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/), что использование inv в Matlab не рекомендуется, потому что это медленно и неточно.
Пытаюсь найти причину этой неточности. На данный момент Google не дал интересных результатов, поэтому я подумал, что кто-то здесь может мне помочь.
Спасибо!
- matlab
- линейная алгебра
- численный анализ
- обратная матрица
Неточность, о которой я упоминал, связана с методом INV, а не с его реализацией в MATLAB. Вы должны использовать QR, LU или другие методы для решения систем уравнений, поскольку эти методы обычно не требуют возведения в квадрат числа обусловленности рассматриваемой системы.
Использование inv обычно требует операции, которая теряет точность из-за возведения в квадрат числа обусловленности исходной системы. --Loren
Я думаю, что смысл блога Лорен не в том, что функция MATLAB inv
особенно медленнее или неточнее, чем любая другая численная реализация вычисления обратной матрицы; скорее, в большинстве случаев сама инверсия не нужна, и вы можете действовать другими способами (например, решить линейную систему, используя \
— оператор обратной косой черты — вместо вычисления инверсии).
3
inv()
, безусловно, медленнее, чем \
, если только у вас нет нескольких правосторонних векторов для решения. Однако совет MathWorks относительно неточности связан с чрезмерно консервативной оценкой результата численной линейной алгебры. Другими словами, inv()
НЕ является неточным. Ссылка уточняет дальше: http://arxiv.