Почему inv Matlab является медленным и неточным?

Приложение к принятому ответу (ответам):

Предполагают, что Ваш указатель мог содержать только три значения - 0, 1 и-1, где 1 показывает допустимый указатель,-1 недопустимый и 0 другой недопустимый. Какова вероятность, что Ваш указатель ПУСТОЙ УКАЗАТЕЛЬ, при этом все значения одинаково вероятны? 1/3. Теперь, выньте допустимый случай, таким образом, для каждого недопустимого случая, Вы имеете 50:50 отношение для фиксации всех ошибок. Взгляды хорошее право? Масштабируйте это для 4-байтового указателя. Существуют 2^32 или 4294967294 возможных значения. Из них ТОЛЬКО ОДНО значение правильно, каждый является ПУСТЫМ, и Вас все еще оставляют с 4294967292 другими недопустимыми случаями. Повторно вычислите: у Вас есть тест для 1 из (4294967292 + 1) недопустимые случаи. Вероятность 2.xe-10 или 0 для наиболее практических целей. Такова тщетность ПУСТОЙ проверки.

16
задан Amro 3 July 2013 в 14:49
поделиться

2 ответа

Упомянутая мной неточность связана с методом INV, а не с его реализацией в MATLAB. Вы должны использовать QR, LU или другие методы для решения систем уравнений, поскольку эти методы обычно не требуют возведения в квадрат числа обусловленности рассматриваемой системы. Использование inv обычно требует операции, которая теряет точность из-за возведения в квадрат числа обусловленности исходной системы.

- Loren

32
ответ дан 30 November 2019 в 15:35
поделиться

Я думаю, что суть блога Лорена не в том, что функция MATLAB inv особенно медленнее или более неточна, чем любая другая численная реализация вычисления обратной матрицы; скорее, что в большинстве случаев обратная косая черта сама по себе не нужна, и вы можете действовать другими способами (такими как решение линейной системы с использованием \ - оператора обратной косой черты - вместо вычисления обратного).

19
ответ дан 30 November 2019 в 15:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: