سؤال

أحتاج إلى عكس مصفوفة التباين - التباين في Ruby And Vector عن طريق الضرب المصفوفة. ما هي مكتبة روبي العددية / جوهرة يجب أن أستخدمها؟

هل كانت مفيدة؟

المحلول

حاول استخدام مكتبة "مصفوفة":

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

نصائح أخرى

إمكانية أكثر استقرارا عدديا من الانعكاس المباشر هو استخدام تحلل cholesky مع الحزمة التي تجدها هنا:

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

أفضل من Inferting L هو استخدام الطريقة الموضحة في مقالة ويكفيديا المرتبطة أعلاه.

إذا كانت مشكلتك عدديا غير مستقر للغاية، فعدت تحلل القيمة المفرد, ، لكن ليس لدي رمز لذلك.

إذا كنت تستطيع ترجمة التعليمات البرمجية، فاستخدم Ruby-GSL

gem install gsl

يمكن الحصول على معكوس باستخدام وحدة LU

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

هنالك nmatrix.. وبعد هناك دعم لمختلف العمليات، بما في ذلك بعض Blas و Lapack (باستخدام Atlas).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top