2009-06-09 12 views

Trả lời

1

Hãy thử sử dụng 'ma trận' thư viện:

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

Một khả năng số lượng ổn định hơn so với đảo ngược trực tiếp là sử dụng một Cholesky decomposition với gói bạn tìm 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 

Tốt hơn so với đảo ngược l là sử dụng phương pháp được mô tả trong bài viết wikpedia được liên kết ở trên.

Nếu sự cố của bạn không ổn định về số lượng thì hãy xem xét Singular Value Decomposition, nhưng tôi không có mã cho nó.

3

Nếu bạn có thể biên dịch mã, sử dụng ruby-GSL

gem install gsl

Điều ngược lại có thể thu được bằng LU mô-đun

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

0

NMatrix. Có hỗ trợ cho các hoạt động khác nhau, bao gồm một số từ BLAS và LAPACK (bằng cách sử dụng ATLAS).