Статистика и матричная алгебра в Ruby - PullRequest
5 голосов
/ 09 июня 2009

Мне нужно инвертировать матрицу дисперсии и ковариации в Ruby и векторное умножение матрицы Какую числовую библиотеку Ruby / Gem мне следует использовать?

Ответы [ 4 ]

3 голосов
/ 09 июня 2009

Численно более стабильная возможность, чем прямая инверсия, заключается в использовании разложения Холецкого с пакетом, который вы найдете здесь :

require 'Cholesky.rb'
require 'pp'
# m is the covariance matrix you want to invert (it is positive semidefinite)
l = m.cholesky
li = l.inverse
lit = li.transpose
# lit*li is approximately the inverse and the next line shows this
pp lit*li*m

Лучше, чем инвертировать l, - использовать метод, описанный в статье в Википедии, связанной выше.

Если ваша проблема численно слишком нестабильна, рассмотрите Разложение по сингулярному значению , но у меня нет кода для нее.

3 голосов
/ 20 января 2011

Если вы можете скомпилировать код, используйте ruby-gsl

gem install gsl

Обратное можно получить с помощью модуля LU

inverse=GSL::Linalg::LU.invert(matrix)

1 голос
/ 09 июня 2009

Попробуйте использовать библиотеку 'matrix':

http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html
0 голосов
/ 24 марта 2015

Существует NMatrix . Существует поддержка различных операций, в том числе BLAS и LAPACK (с использованием ATLAS).

...