Есть ли эквивалент пряжи для «npm dedupe»?

Здесь нет проблемы с Eigen.

На самом деле для второго примера выполнения Matlab и Eigen дали тот же результат. Пожалуйста, запомните из основной линейной алгебры, что собственный вектор определяется с точностью до произвольного масштабного коэффициента. (Т. Е. Если v является собственным вектором, то то же самое справедливо для альфа * v, где альфа является ненулевым комплексным скаляром.)

. Обычно библиотеки различных линейных алгебр вычисляют разные собственные векторы, но это не означает что один из двух кодов ошибочен: это просто означает, что они выбирают другое масштабирование собственных векторов.

EDIT

Основная проблема с точным воспроизведением масштабирования, выбранного Matlab, заключается в том, что eig(A,B) - это драйвер , который в зависимости от разных свойств A и B может вызывать разные библиотеки / подпрограммы и применять дополнительные шаги, такие как балансировка матриц и т. д. Быстро проверив ваш пример, я бы сказал, что в этом случае Matlab выполняет следующее условие:

  • all(imag(V(end,:))==0) (последний компонент каждого собственного вектора вещественный)

, но не налагая других ограничений. Это, к сожалению, означает, что масштабирование не является уникальным и, вероятно, зависит от промежуточных результатов алгоритма обобщенного собственного вектора. В этом случае я не могу дать вам совет о том, как точно реплицировать matlab: требуется знание внутренней работы matlab.

Как общее замечание, в линейном алгебры обычно не слишком много касается масштабирования собственных векторов, так как это обычно совершенно не имеет значения для решаемой задачи, когда собственные векторы просто используются как промежуточные результаты.

Единственный случай, когда масштабирование должно быть точно определяется, когда вы собираетесь дать графическое представление собственных значений.

21
задан Aurora0001 23 November 2016 в 15:53
поделиться