2013-08-22 2 views
2

Было несколько questions, запрашивающих общие рамки математики/статистики для Scala.Как решить большую разреженную линейную систему от Scala

Меня интересует только одна конкретная проблема - решение большой разреженной линейной системы. По сути, я ищу эквивалент scipy.sparse.linalg.spsolve.

В настоящее время я изучаю breeze-math из ScalaNLP Breeze, который выглядит так, как будто это выполнит эту работу, за исключением того, что фокус этой библиотечной коллекции является естественной обработкой языка, поэтому для него это немного странно.

Saddle также выглядит многообещающим, но не очень зрелым, и, глядя на его зависимости, EJML, похоже, не имеет разреженной функциональности, в то время как Apache commons math сделал, но это было flaky.

У кого-нибудь есть достаточно простое и эффективное решение, которое в настоящее время доступно?

+0

Любые полезные предложения от избирателей к закрытию? – mitchus

+2

[Colt] (http://acs.lbl.gov/software/colt/api/cern/colt/matrix/linalg/Algebra.html) по-прежнему остается моей библиотекой для такого рода вещей (но я знаю, что я должен дать Breeze еще одну попытку на днях). –

+1

Я уверен, что доводчики приведут «Вопросы, предлагающие нам порекомендовать или найти инструмент, язык blah blah blah». Лично я считаю, что это вполне разумный вопрос. –

ответ

2

Хотя ScalaNLP Breeze говорит, что это для НЛП, библиотека линейной алгебры является довольно общей и не специализируется на НЛП. С учетом этого вы можете легко сделать что-то вроде этого:

val A = new CSCMatrix[Int]() 
    val B = new CSCMatrix[Int]() 

    val x = A \ B 
Смежные вопросы