diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-01 06:23:12 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-07-01 06:23:12 +0000 |
commit | c8e23882574a7cf14c5800369ca1e838eea7fe88 (patch) | |
tree | 172940bc91505bfa398089c7f2b446e4650a51e6 /lib/matrix.rb | |
parent | 59a3d59496607ebeb618fd781d3af9a6bc8c647e (diff) |
* lib/matrix: Add LUP decomposition
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/matrix.rb')
-rw-r--r-- | lib/matrix.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/matrix.rb b/lib/matrix.rb index 5ce130221f..b4ff31a218 100644 --- a/lib/matrix.rb +++ b/lib/matrix.rb @@ -98,6 +98,8 @@ end # Matrix decompositions: # * <tt> #eigen </tt> # * <tt> #eigensystem </tt> +# * <tt> #lup </tt> +# * <tt> #lup_decomposition </tt> # # Complex arithmetic: # * <tt> conj </tt> @@ -122,6 +124,7 @@ class Matrix include Enumerable include ExceptionForMatrix autoload :EigenvalueDecomposition, "matrix/eigenvalue_decomposition" + autoload :LUPDecomposition, "matrix/lup_decomposition" # instance creations private_class_method :new @@ -1187,6 +1190,21 @@ class Matrix end alias eigen eigensystem + # + # Returns the LUP decomposition of the matrix; see +LUPDecomposition+. + # a = Matrix[[1, 2], [3, 4]] + # l, u, p = a.lup + # l.lower_triangular? # => true + # u.upper_triangular? # => true + # p.permutation? # => true + # l * u == a * p # => true + # a.lup.solve([2, 5]) # => Vector[(1/1), (1/2)] + # + def lup + LUPDecomposition.new(self) + end + alias lup_decomposition lup + #-- # COMPLEX ARITHMETIC -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #++ |