Как вычислить собственные значения без использования внешних пакетов

Я пытаюсь создать приложение в java, которое выполняет несколько модификаций матриц, таких как вычисление обратных величин и определителей. Теперь я также хотел бы включить в приложение возможность вычисления собственных значений и собственных векторов для матриц. Поскольку, насколько мне известно, единственный «надежный» способ вычисления собственных значений - это использование характеристической формулы, заданной следующим образом:

det(A-λI) = 0

Где A — матрица размера nxn, а λ — действительное число. Насколько мне известно, простого способа использования алгебры в Java не существует, а может и вообще нет. Также я хотел бы запрограммировать это сам, поэтому я бы не хотел использовать внешние пакеты, такие как Jama или другие.

Может ли кто-нибудь объяснить мне, как я могу запрограммировать это уравнение на Java или, может быть, подсказать мне другой способ сделать это?


person borisjo    schedule 22.10.2014    source источник
comment
Реализуйте один из множества доступных алгоритмов.   -  person assylias    schedule 22.10.2014
comment
Вам придется реализовать матричные операции самостоятельно. Нет встроенной поддержки, как в Matlab.   -  person Simon    schedule 22.10.2014
comment
Внедрение инструментов численного анализа общеизвестно сложно. Если это классный проект или что-то такое, где точность результатов не критична, можно сделать это самостоятельно. В противном случае вам гораздо лучше использовать библиотеку. math.nist.gov/javanumerics   -  person mattm    schedule 22.10.2014
comment
Это не школьный проект, я просто пытаюсь улучшить свои навыки программирования. Также для своего приложения я предпочитаю использовать свои собственные написанные программы для расчета.   -  person borisjo    schedule 22.10.2014
comment
Полезным справочником по числовым алгоритмам являются книги Numerical Recipes. Возможно, существует Java-версия книги, но это не имеет значения, для ваших целей подойдет любая версия. Просто прочитайте об алгоритмах и создайте свою собственную реализацию. Кстати, я думаю, что написание собственной реализации — это действительно отличный способ научиться.   -  person Robert Dodier    schedule 23.10.2014
comment
Только «твердый» способ? Это единственный способ. Это определение собственных значений — другого нет. Нет возможности использовать алгебру? Вы имеете в виду символическую манипуляцию? Конечно, есть библиотеки.   -  person duffymo    schedule 23.10.2014


Ответы (2)


Один из способов сделать это — взглянуть на Jama и посмотреть, как он рассчитывается там, и интерпретировать это. И не просто копируйте и вставляйте :P мы все знаем, что это может быть заманчиво.

person Azureus Nation    schedule 22.10.2014

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

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

person Martin Johansen    schedule 26.02.2019