class Math::SparseMatrix
Clase que permite representar un vector de vectores dispersos, es decir, una matriz dispersa
Attributes
matrix[R]
Public Class Methods
new(h = {})
click to toggle source
# File lib/matrix_disp.rb, line 173 def initialize(h = {}) @matrix = Hash.new({}) for k in h.keys do @matrix[k] = if h[k].is_a? SparseVector h[k] else @matrix[k] = SparseVector.new(h[k]) end end end
Public Instance Methods
+(other)
click to toggle source
método que permite la suma de matrices dispersas
# File lib/matrix_disp.rb, line 210 def +(other) resultado = SparseMatrix.new for i in other.matrix.keys do resultado.matrix[i] = other[i] end for i in @matrix.keys do for j in @matrix[i].keys do if other.matrix[i][j] == nil resultado.matrix[i] = @matrix[i] else resultado.matrix[i][j] = @matrix[i][j]+other.matrix[i][j] end end end resultado end
-(other)
click to toggle source
método que permite la resta de matrices dispersas
# File lib/matrix_disp.rb, line 227 def -(other) resultado = SparseMatrix.new for i in other.matrix.keys do resultado.matrix[i] = other[i] end for i in @matrix.keys do for j in @matrix[i].keys do if other.matrix[i][j] == nil resultado.matrix[i] = @matrix[i] else resultado.matrix[i][j] = @matrix[i][j]-other.matrix[i][j] end end end resultado end
[](i)
click to toggle source
método que permite la indexación de elementos de la matriz por columnas
# File lib/matrix_disp.rb, line 184 def [](i) @matrix[i] end
[]=(i,other)
click to toggle source
método que permite la asignación de elementos de la matriz por columnas
# File lib/matrix_disp.rb, line 188 def []=(i,other) for y in other.keys do puts "---- other[#{y}] #{other[y]}" @matrix[i][y] = other[y] puts "---- matrix[#{i}][#{y}] #{@matrix[i][y]}" end end
col(j)
click to toggle source
método que muestra por pantalla una columna de la matriz
# File lib/matrix_disp.rb, line 202 def col(j) c = {} for r in @matrix.keys do c[r] = @matrix[r].vector[j] if @matrix[r].vector.keys.include? j end SparseVector.new c end
imp()
click to toggle source
método que muestra por pantalla la matriz dispersa
# File lib/matrix_disp.rb, line 196 def imp for i in @matrix.keys do puts "#{i} ---- #{@matrix[i].to_s}" end end
max()
click to toggle source
método que permite calcular el elemento máximo de una matriz dispersa
# File lib/matrix_disp.rb, line 262 def max max = 0 for i in @matrix.keys do for j in @matrix[i].keys do if @matrix[i][j].is_a? Fraccion tmp = Fraccion.new(max,1) if @matrix[i][j] > tmp max = @matrix[i][j].to_f end else if @matrix[i][j] > max max = @matrix[i][j] end end end end max end
min()
click to toggle source
método que permite calcular el elemento mínimo de una matriz dispersa
# File lib/matrix_disp.rb, line 281 def min min = 9999999999999999999 for i in @matrix.keys do for j in @matrix[i].keys do if @matrix[i][j].is_a? Fraccion tmp = Fraccion.new(min,1) if @matrix[i][j] < tmp min = @matrix[i][j].to_f end else if @matrix[i][j] < min min = @matrix[i][j] end end end end min end
traspuesta()
click to toggle source
método que permite calcular la traspuesta de una matriz dispersa
# File lib/matrix_disp.rb, line 244 def traspuesta resultado = SparseMatrix.new for i in @matrix.keys do for j in @matrix[i].keys do tmp = SparseVector.new for x in @matrix.keys do for y in @matrix[x].keys do if j == y tmp[i] = @matrix[x][y] end end end resultado.matrix[j] = tmp end end resultado end