Лучшая бесплатная кроссплатформенная библиотека для Matrix, Vector и esp высшего уровня. SparseMatrix операции? - PullRequest
3 голосов
/ 01 октября 2010

Наши платформы:

  • Windows, Linux, Mac OSX.

Бесплатно:

  • Совместимость с LGPL

Поддержка операций высокого уровня:

  • Eigensystems, SVD, QR, LU, обратный, псевдообратный (он же инверсия Мура-Пенроуза), ...

Поддерживает много типов матриц, а также хорошо выполняет небольшие матрицы, например, 3x3:

  • Разреженный, Симметричный, ... (а также операции с ними !, например, pseudoInverse ())

И, конечно, это должно быть

  • Эффективное
  • активное развитие в последние месяцы

Было бы неплохо связать снова LAPACK, MKL, ATLASи т. д.

Что действительно близко, так это Armadillo , который не поддерживает разреженные контейнеры. Eigen3 также отлично, но не предоставляет псевдообратную или разреженную матрицы (только для сохранения места).

Я также посмотрел:

  • newmat11, boost:: uBlas, gsl, IT ++

Ответы [ 3 ]

4 голосов
/ 27 февраля 2011

Эйген - лучший!Это намного лучше, чем boost :: ublas, вы можете написать C = A * B вместо C = prod (A, B), как в ublas, и я проверил скорость, это намного быстрее, чем ublas.

0 голосов
/ 29 июня 2016

NewMat11 - это хорошая, простая в использовании и довольно легкая матричная библиотека для высокоуровневых матричных операций (Eigensystems, SVD, QR, LU, reverse).Вы можете легко объявить и построить матрицу из массива как:

Matrix M(numRows,numCols);
M << array;

Доступ к элементам матрицы как:

M.element(i,j);

Взять транспонирование:

M.t();

Взять обратное:

M.i();

Умножается только на *:

M*M

И может довольно легко выполнять другие операции, такие как: SVD, QR, LU и т. Д.

Предоставление псевдо-обратная операция (обратная Мура-Пенроуза) явно не является обязательной для библиотеки, потому что вы можете легко вычислить ее, используя операции транспонирования и инверсии, как показано ниже:

если строка> столбец, то псевдообратная (решение наименьших квадратов) может быть вычислено как: M_PseudoInv = (M T M) -1 M T

, если строка

T (MM T ) -1
0 голосов
/ 13 апреля 2011

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

...