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

в Matlab, обратном Matlab, можно написать:

Для наименьших квадратов (более эффективно)

x = A\b.--------------------------------1

Но для ковариационной матрицы (Qxx) неизвестных параметров (x) я обычно делаю,

Qxx==inv(A) --------------------------2

Как я могу написать это эффективно, как (1)?


person Shahgee    schedule 09.04.2012    source источник
comment
Не уверен, что понимаю вопрос. Если вам явно нужна обратная матрица, вам нужно вызвать inv. Если нет (как в случае решения системы линейных уравнений), то вам и не нужно.   -  person Oliver Charlesworth    schedule 09.04.2012
comment
Что вы подразумеваете под «эффективнее»? Инвертирование матрицы, как правило, является плохим способом решения практически любой проблемы — что именно вы пытаетесь сделать?   -  person James    schedule 09.04.2012


Ответы (2)


Вы имеете в виду что-то вроде:

Qxx = A \ eye(size(A));

?

Реальный вопрос: что вы делаете с обратным? Если вы просто повторно умножаете его на какой-то другой вектор c, вы можете просто сделать...

A \ c

вместо Qxx * c

person Chris A.    schedule 09.04.2012

Если вам действительно нужна обратная функция, вы не сможете превзойти функцию inv.

Для обсуждения функции inv, для чего ее следует использовать, см. >эта статья Лорен об искусстве Matlab. Как вы отмечаете в исходном вопросе, и Лорен отмечает в связанной статье, и я чувствую необходимость усилить здесь; если вам на самом деле не нужна инверсия, то вам лучше избегать этого шага. Но это не всегда возможно.

Если вам действительно нужна инверсия, просто используйте функцию inv.

person Pursuit    schedule 09.04.2012
comment
Если вам действительно нужна обратная функция, вы не сможете превзойти функцию inv. Это совсем не то, что я взял из этой ссылки и обсуждения. - person Chris A.; 09.04.2012
comment
Правда немного переформатировал. Исходное утверждение стоит само по себе, все остальное действительно размышляет, когда это действительно требуется. - person Pursuit; 10.04.2012