Численно более стабильная возможность, чем прямая инверсия, заключается в использовании разложения Холецкого с пакетом, который вы найдете здесь :
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, - использовать метод, описанный в статье в Википедии, связанной выше.
Если ваша проблема численно слишком нестабильна, рассмотрите Разложение по сингулярному значению , но у меня нет кода для нее.