2009-06-09 16 views

Respuesta

1

Trate de usar la biblioteca de 'matriz':

http://www.ruby-doc.org/stdlib/libdoc/matrix/rdoc/index.html 
3

Una posibilidad numéricamente más estable que la inversión directa es usar un Cholesky decomposition con el paquete a encontrar here:

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 

Mejor que invirtiendo l es utilizar el método descrito en el artículo de wikpedia vinculado anteriormente.

Si su problema es numéricamente demasiado inestable, entonces considere el Singular Value Decomposition, pero no tengo el código para ello.

3

Si se puede compilar el código, utilice rubí GSL

gem install gsl

La inversa se puede obtener utilizando el módulo de LU

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

0

Hay NMatrix. Hay soporte para varias operaciones, incluidas algunas de BLAS y LAPACK (mediante el uso de ATLAS).

Cuestiones relacionadas