domingo, 18 de octubre de 2009

Multiplicacion de Matrices

//José Romero
//Ing. Mecatrónica

public class Matriz {

public int numeroFilas;
public int numeroColumnas;
public double [][]matriz;

/**
* Constructor sin parametros
*/


public Matriz(){

}

/**
* Constructor con parametros
* @param nF numero de Filas
* @param nC numero de columnas
*/

public Matriz(int nF, int nC){
numeroFilas = nF;
numeroColumnas = nC;
matriz = new double[numeroFilas][numeroColumnas];

for (int i = 0; i< numeroFilas; i++)
for (int j = 0; j< numeroColumnas; j++)
matriz[i][j]= 0;

}

/**
* Metodo de suma de matrices
* @param B primer sumando
* @return Matriz resultado de suma
*/

public Matriz suma(Matriz B){
Matriz resultado;
//this hace referncia a un objeto a construir a futuro
if((this.numeroFilas ==B.numeroFilas)&(this.numeroColumnas ==B.numeroColumnas)){
resultado = new Matriz(this.numeroFilas, this.numeroColumnas);
for(int i = 0; i < this.numeroFilas; i++)
for(int j = 0; j < this.numeroColumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j] + B.matriz[i][j];
return resultado;

}
else{
System.out.println("Error en dimensiones de la matriz");
resultado = null;
return resultado;
}
}

public Matriz multiplicacion(Matriz B){
Matriz resultado;

if(this.numeroColumnas==B.numeroFilas){

resultado = new Matriz (this.numeroFilas,B.numeroColumnas);
for (int i = 0; i< numeroFilas; i++)
for (int j = 0; j< numeroColumnas; j++)

resultado.matriz[i][j] = this.matriz[i][j]*B.matriz[j][i];
return resultado;
}

else{
System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES, el numero de columnas de" +
"la matriz A debe ser igual al numero de filas de la matriz B");

resultado=null;
return resultado;

}
}




/**
* Metodo para transponer matrices
* @return Matriz transpuesta
*/

public Matriz transpuesta(){
Matriz resultado;
resultado = new Matriz(this.numeroColumnas, this.numeroFilas);
for(int i = 0; i < this.numeroFilas; i++)
for(int j = 0; j < this.numeroColumnas; j++)
resultado.matriz[j][i] = this.matriz[i][j];
return resultado;
}
/**
* Devuelve el objeto matriz en texto
* @return
*/
public String toString(){
String aux = "[ ";
for (int i = 0; i < numeroFilas; i++){
for(int j = 0; j < numeroColumnas; j++){
aux += matriz[i][j]+ " ";
}

aux +="\n";

}
aux += " ]";


return aux;
}

}

//**********************************************

public class PruebaMatriz {
public static void main(String args[]){
Matriz a = new Matriz(3,2);
a.matriz[0][0]=1; a.matriz[0][1] =2;
a.matriz[1][0]=3; a.matriz[1][1] =4;

System.out.println(a.toString());

Matriz b = new Matriz(2,3);
b.matriz[0][0] = 5; b.matriz[0][1] = 6;
b.matriz[1][0] = 7; b.matriz[1][1] = 8;

System.out.println(b.toString());

Matriz c;
c = a.suma(b);
System.out.println(c.toString());

Matriz d ;
d = a.multiplicacion(b);
System.out.println("Multiplicacion de A*B\n"+d.toString());

/* Matriz c;
c = a.resta(b);
System.out.println(c.toString());*/

c= a.transpuesta();
System.out.println("Trasnpuesta de a\n"+c.toString());

}
}

3 comentarios:

johana dijo...

resultado.matriz[i][j] = this.matriz[i][j]*B.matriz[j][i];
ahi es mas igual jeje porque sino no sale la suma!!!

José Romero dijo...

Si tienes toda la razón gracias se me olvido poner.

Diego Gonzalez dijo...

Tendras cuidado con eso ...
sino nunca te va a salir