class Matriz_densa

Public Instance Methods

*(other) click to toggle source

Sobrecarga del operador * para operar con matrices densas y dispersas

# File lib/Matriz_densa.rb, line 64
def * (other) 
   aux_m = Array.new
   @filas.times do |i|
      aux_m[i] = Array.new                      
      @cols.times do |j|                        
         aux_m[i][j] = 0;
      end
   end
   if other.is_a?(Matriz_dispersa) 
      @filas.times do   |i|               
         other.cols.times do |j|                        
            other.filas.times do |k|
               if other.matriz[k.to_s+"_"+j.to_s] != nil        
                  aux_m[i][j] += @matriz[i][j] * other.matriz[k.to_s+"_"+j.to_s]
               end      
            end
         end
      end
   elsif other.is_a?(Matriz_densa)
      @filas.times do   |i|               
         other.cols.times do |j|                        
            other.filas.times do |k|    
               aux_m[i][j] += @matriz[i][k] * other.matriz[k][j]        
            end
         end
      end
   end
   Matriz.new(aux_m).comprobar()
end
+(other) click to toggle source

Sobrecarga del operador + para operar con matrices densas y dispersas

# File lib/Matriz_densa.rb, line 6
def + (other)
   aux_m = Array.new
   @filas.times do |i|
      aux_m[i] = Array.new                      
      @cols.times do |j|                        
         aux_m[i][j] = 0;
      end
   end
   if other.is_a?(Matriz_dispersa)
      @filas.times do   |i|               
         @cols.times do |j|             
            if other.matriz[i.to_s+"_"+j.to_s] != nil
               aux_m[i][j] = @matriz[i][j] + other.matriz[i.to_s+"_"+j.to_s]
            else
               aux_m[i][j] = @matriz[i][j]
            end
         end
      end
   elsif other.is_a?(Matriz_densa)
      @filas.times do   |i|               
         @cols.times do |j|                     
            aux_m[i][j] = @matriz[i][j] + other.matriz[i][j]
         end
      end
   end 
   Matriz.new(aux_m).comprobar()
end
-(other) click to toggle source

Sobrecarga del operador - para operar con matrices densas y dispersas

# File lib/Matriz_densa.rb, line 35
def - (other)
   aux_m = Array.new
   @filas.times do |i|
      aux_m[i] = Array.new                      
      @cols.times do |j|                        
         aux_m[i][j] = 0;
      end
   end
   if other.is_a?(Matriz_dispersa)
      @filas.times do   |i|               
         @cols.times do |j|                     
            if other.matriz[i.to_s+"_"+j.to_s] != nil
               aux_m[i][j] = @matriz[i][j] - other.matriz[i.to_s+"_"+j.to_s]
            else
               aux_m[i][j] = @matriz[i][j]
            end
         end
      end
   elsif other.is_a?(Matriz_densa)
      @filas.times do   |i|               
         @cols.times do |j|                     
            aux_m[i][j] = @matriz[i][j] - other.matriz[i][j]
         end
      end
   end
   Matriz.new(aux_m).comprobar()
end
max() click to toggle source

Calcula el máximo de una matriz densa

# File lib/Matriz_densa.rb, line 95
def max()

   aux_max = @matriz[0][0]

   @filas.times do |i|          
      @cols.times do |j|
         if aux_max < @matriz[i][j]
            aux_max = @matriz[i][j]
         end
      end
   end

   aux_max
end
min() click to toggle source

Calcula el mínimo de una matriz densa

# File lib/Matriz_densa.rb, line 111
def min()

   aux_min = @matriz[0][0]

   @filas.times do |i|                  
      @cols.times do |j|
         if aux_min > @matriz[i][j]
            aux_min = @matriz[i][j]
         end
      end
   end

   aux_min
end