Поиск артефактов Maven всегда пуст

1120 Нет, это не беспокоит. Эта матрица, вероятно, просто не работает с этой конкретной реализацией алгоритма собственного вектора. Эффективное и стабильное вычисление общего собственного вектора нетривиально , в конце концов.

Библиотека Matrix адаптирована из JAMA, матричного пакета Java , в котором говорится, что она выполняет численные вычисления , а не символьные вычисления :

Не охвачено. JAMA ни в коем случае не является полной средой линейной алгебры ... она сосредоточена на принципе математической функциональности, необходимой для выполнения числовой линейной алгебры

Алгоритм QR: численные вычисления

Взгляд на Исходный код для Matrix::EigenvalueDecomposition , я обнаружил, что он называет использование QR-алгоритма . Я не до конца понимаю тонкости математики, но думаю, я мог бы понять , почему это вычисление не удается. Механизм вычисления работает следующим образом:

На k-м шаге (начиная с k = 0) мы вычисляем QR-разложение A k = Q k R k ... При определенных условиях [4] sup> матрицы A k сходятся к треугольной матрице, форме Шура группы A. Собственные значения треугольной матрицы перечислены на диагонали, и проблема собственных значений решена.

В «псевдо» Ruby это концептуально означает:

working_matrix = orig_matrix.dup
all_q_matrices = []
loop do
  q, r = working_matrix.qr_decomposition
  all_q_matrices << q
  next_matrix = r * q
  break if difference_between(working_matrix, next_matrix) < accuracy_threshold
end
eigenvalues = working_matrix.diagonal_values

Для собственных векторов оно продолжается:

при сходимости, AQ = QΛ, где Λ - это диагональная матрица собственных значений, к которым сходится A, и где Q - это совокупность всех ортогональных преобразований подобия, необходимых для того, чтобы туда попасть. Таким образом, столбцы Q являются собственными векторами.

В «псевдо» Ruby, продолжение:

eigenvectors = all_q_matrices.inject(:*).columns

Ошибка с плавающей точкой в ​​численных вычислениях

Мы можем видеть, что итерация численных вычислений производится для вычисления приближенного Собственные значения, и в качестве побочного эффекта, набор приближенных Q матриц собраны. Затем эти аппроксимированные Q матрицы составляются вместе для формирования собственных векторов.

Составление аппроксимаций - это то, что, вероятно, вызвало крайне неточные результаты. Пример катастрофической отмены в Math StackExchange показывает простое квадратичное вычисление с относительной погрешностью 400% . Вы могли бы представить, как алгоритм итеративной матрицы с повторяющимися арифметическими операциями может работать намного хуже.

Зерно соли

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

28
задан Dan Billings 21 October 2010 в 17:48
поделиться

2 ответа

Хорошо, я решил это навсегда.

Я использовал Artifactory для создания файла settings.xml для меня, и по умолчанию он указывал мне на репозиторий "libs-Releases".

Вместо этого я хочу, чтобы мой репозиторий «релизы» указывал на гораздо более крупный виртуальный репозиторий «удаленные репозитории».

Все, что для этого потребовалось, - это простое изменение параметров функции «Создать настройки». Need to change the "Releases" repository to a big one.  We can use "Snapshots to point to our own builds"

4
ответ дан 28 November 2019 в 03:15
поделиться

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

0
ответ дан 28 November 2019 в 03:15
поделиться