participal Eigenvalues Java (JAMA)

Я просто перенес свой код из MATLAB в Java, и мне нужно собственное разложение матрицы, в частности, мне нужен только первый k значения не полное разложение.

Однако в JAMA класс собственного разложения вычисляет полное собственное разложение. Я пытался изменить его, но он выдает некоторые ошибки. Есть ли другая подобная библиотека?

В MATLAB рассматриваемая функция eigs(k,A)

2 ответа

Так что он просто возвращает массив всех собственных значений. Вы хотите вернуть массив только с первыми k значениями массива. Есть много способов сделать это в Java. Одним из них является преобразование массива в ArrayList, получение подсписка этого списка и обратное преобразование в массив.

double[] mySubArray = new double[k];
for (int i=0; i < k; i++) {
        subArray[i] = myFullArray[i];
    }

Кстати, это библиотека, на которую он ссылается: http://math.nist.gov/javanumerics/jama/doc/

Может быть, вы можете попробовать другой пакет с именем EigenDecomposition в http://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/linear/EigenDecomposition.html, есть некоторые методы, такие как getImagEigenvalue(int i)Вы можете получить iСобственное значение этим.

В случае, если вы не можете найти какие-либо существующие коды, я думаю, вам следует обратиться к этому тезису или, возможно, к этой статье.

Другие вопросы по тегам