viernes, 12 de abril de 2013

Aprendiendo SCILAB - Multiplicación de matrices

Este programa realiza la multiplicación de matrices cuadradas de la manera más sencilla posible (con tres loops for).


// ***********************************************************************
// FUNCION: mult_mat( a:vector nxn, b:vector nxn )
// 
// Devuelve una matriz que es producto de las matrices cuadradas a y b
// ***********************************************************************

function ans = mult_matr(a, b)
    dimsA = size(a)  // vector 1x2 de las dimensiones de A
    dimsB = size(b)  // vector 1x2 de las dimensiones de B
    n = dimsA(1)     // dimension de las matrices
    
    // *******************************************************************
    // Las matrices deben ser cuadradas
    // *******************************************************************
    if( dimsA(1)<>dimsA(2) | dimsB(1)<>dimsB(2) ) then
        error("!!!ERROR: Las matrices deben ser cuadradas, tarado!!!")
    end
    
    
    // *******************************************************************
    // Las matrices cuadradas deben tener la misma dimension
    // *******************************************************************
    if ( dimsA(1)<>dimsB(1) ) then
        error("!!!ERROR: Las matrices deben tener la misma dimension!!!");
    end
    
    
    // *******************************************************************
    // Inicia la multiplicacion de las matrices
    // *******************************************************************
    ans = zeros(n,n)  // inicializa la matriz a zeros
    for i=1:n
        for j=1:n
            for k=1:n
                ans(i,j) = ans(i,j) + a(i,k)*b(k,j)
            end
        end
    end
endfunction

0 comentarios:

Publicar un comentario