class Matrizdensa

Public Class Methods

new(*args) click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 3
def initialize(*args) #args recogerá en un array las filas de nuestra matriz.
    @matriz = Array.new()
    for i in args do
        if i.size == args.size then #controlamos que es una matriz cuadrada.
          @matriz.push(i)
        else
          raise "La matriz debe ser cuadrada"
        end
    end
    @dimension = args.size #Guardamos en una variable de instancia la dimension de la matriz.
end

Public Instance Methods

*(other) click to toggle source

MULTIPLICACIÓN

# File lib/matrixfamily/matrizdensa.rb, line 42
def *(other)
        matriz3 = Array.new(@dimension) {|i|   #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque.
        Array.new(@dimension) {|j|
                (0...@dimension).inject(0) do |resultado, k|  #El inject(0) inicializa a 0 el primer argumento (resultado).
                resultado + @matriz[i][k] * other[k][j]   #Operacion para realizar la multiplicacion de matrices.
                end
        }
}
end
+(other) click to toggle source

SUMA

# File lib/matrixfamily/matrizdensa.rb, line 24
def +(other)
        matriz3 = Array.new(@dimension) {|i|   #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque.
        Array.new(@dimension) {|j|
        @matriz[i][j] + other[i][j]
        }
}
end
-(other) click to toggle source

RESTA

# File lib/matrixfamily/matrizdensa.rb, line 33
def -(other)
        matriz3 = Array.new(@dimension) {|i|   #creamos un array de arrays, de dimension @dimension, y cuyo contenido en la posicion[i][j] será el resultado del bloque.
        Array.new(@dimension) {|j|
        @matriz[i][j] - other[i][j]
        }
}
end
[](*ij) click to toggle source

RECIBE ARGUNMENTOS

# File lib/matrixfamily/matrizdensa.rb, line 16
def [] (*ij)
        return @matriz[*ij] if ij.size == 1  #si el numero de argumentos es solo 1, entonces devolvemos toda la fila indicada.
            @matriz[ij.first][ij.last]  #si son 2, devuelveme el elemento indicado.

end
array() click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 52
def array
        @matriz
end
coerce(other) click to toggle source
# File lib/matrixfamily/matrizdensa.rb, line 56
def coerce(other)
        [self, other]
end