2009-06-09 7 views

Antwort

1

Versuchen Sie, die 'Matrix' Bibliothek:

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

Eine numerisch stabile Möglichkeit als direkte Inversion ist ein Cholesky decomposition mit dem Paket verwenden Sie here finden:

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 

Besser als Umkehren l ist die Methode, die in dem oben verlinkten Wikipedia-Artikel beschrieben wird.

Wenn Ihr Problem numerisch zu instabil ist, dann denken Sie an die Singular Value Decomposition, aber ich habe keinen Code dafür.

3

Wenn Sie Code kompilieren können, verwenden rubin GSL

gem install gsl

Die inverse kann LU erhalten werden Modul

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

0

Es gibt NMatrix. Es gibt Unterstützung für verschiedene Operationen, einschließlich einiger von BLAS und LAPACK (durch Verwendung von ATLAS).