Каков лучший небольшой пакет C++ для вычислений самого большого собственного значения матрицы? [закрытый]

7
задан Erin 26 June 2010 в 21:24
поделиться

2 ответа

Я не могу предложить вам никаких подробностей, поскольку сам не использовал его, но я думаю, что ARPACK может помочь, и особенно ARPACK ++, который является адаптацией C ++, поскольку исходный пакет находится в Fortran77. Я думаю, что функция MATLAB eigs () использует это, чтобы найти наибольшее собственное значение (и соответствующий собственный вектор). Насколько я знаю, я должен иметь возможность взаимодействовать и с STL.

MATLAB использует подпрограммы Fortran77 DSAUPD, DSEUPD, DNAUPD, DNEUPD, ZNAUPD и ZNEUPD. Похоже, их стоит искать в ARPACK ++.

Посмотрите здесь.

2
ответ дан 7 December 2019 в 18:39
поделиться

По крайней мере, если мне не изменяет память, одной из возможностей может быть Boost::uBlas. Хотя Boost в целом довольно велик, uBlas сам по себе гораздо более разумен. Кроме того, если мне не изменяет память, это библиотека только для заголовков, поэтому использовать ее довольно просто (вам не нужно сначала собирать библиотеку, настраивать компоновщик и т.д.)

Edit: Я должен добавить, что вычисление собственных значений/векторов в целом довольно медленное, даже с довольно оптимизированным кодом. В зависимости от того, что именно вы делаете, часто стоит обратить внимание на методы, которые (для примера) позволяют обойтись вычислением собственного значения только подмножества матрицы (например, Landmark Multidimensional Scaling).

0
ответ дан 7 December 2019 в 18:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: