lunes, 30 de marzo de 2009

OPERACIONES CON MATRICES EN JAVA

public class Matriz {
int numeroFilas;
int numeroColumnas;
double [][] matriz;

public Matriz(){}
/**
* Constructor de matrices
* @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;
}

/**
* Imprime los objetos de la clase matriz
* @return Un string que contien a la matriz
*/
public String imprimir(){
String aux = "";

for(int i=0; i for(int j=0; j aux= aux + matriz[i][j] + " ";
}
aux = aux + "\n";
}
return aux;
}

public String imprimir2(){
String aux ="";
aux=aux+"y1="+ matriz[0][0];
aux=aux+"\n";
aux=aux+"y2="+matriz[1][0];
return aux;
}

/**
* Metodo para sumar matrices
* @param B La matriz sumando
* @return Retorna otra matriz
*/
public Matriz suma(Matriz B){

if ((this.numeroFilas == B.numeroFilas)&(this.numeroColumnas==B.numeroColumnas)){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j]+B.matriz[i][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden sumar las matrices");
return r;
}
}

public Matriz resta(Matriz B){

if ((this.numeroFilas == B.numeroFilas)&(this.numeroColumnas==B.numeroColumnas)){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j]-B.matriz[i][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden restar las matrices");
return r;
}
}

public Matriz multiplica(Matriz B){
if(this.numeroFilas==B.numeroColumnas){
Matriz r = new Matriz(this.numeroFilas,this.numeroColumnas);
int j;
int k;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j for(k=0; k r.matriz[i][j]+=this.matriz[i][k]*B.matriz[k][j];
return r;
}
else{
Matriz r = new Matriz (1,1);
System .out.println("No se pueden multiplicar las matrices");
return r;
}
}

public Matriz clonar(){
Matriz r= new Matriz(this.numeroFilas, this.numeroColumnas);
int j;
for(int i = 0; i < this.numeroFilas; i++)
for(j = 0; j r.matriz[i][j]=this.matriz[i][j];
return r;
}
public Matriz transpueta(){
Matriz r = new Matriz(this.numeroColumnas,this.numeroFilas);
int j;
for (int i = 0; i < r.numeroFilas; i++)
for(j = 0; j < r.numeroColumnas;j++)
r.matriz[i][j] = this.matriz[j][i];
return r;
}

public Matriz inversa(){
Matriz result=new Matriz(this.numeroFilas,this.numeroColumnas);
double tmp;//variable temporal
Matriz I=new Matriz(this.numeroFilas,this.numeroColumnas*2);
for(int i = 0; i for(int j = 0; j I.matriz[i][j]=0.0;


for(int i = 0; i for(int j = 0; j I.matriz[i][j]=this.matriz[i][j];
if (i==j)
I.matriz[i][j+this.numeroFilas]=1.0;
}
}

for(int i=0; i<(this.numeroFilas); i++){
tmp=I.matriz[i][i];
for(int j=0;j<(this.numeroColumnas*2);j++)
I.matriz[i][j]/=tmp;
for(int k=0;k if(k!=i){
tmp=I.matriz[k][i];
for(int j=0;j<(this.numeroColumnas*2);j++)
I.matriz[k][j]-=tmp*I.matriz[i][j];
}
}
}

for(int i = 0; i < this.numeroFilas; i++)
for(int j = 0; j result.matriz[i][j]=I.matriz[i][j+this.numeroColumnas];
return result;
}


public static void main(String args[]){
Matriz m= new Matriz(3, 3);
m.matriz[0][0]=1;
m.matriz[1][1]=3;
m.matriz[2][2]=5;
System.out.println("LA MATRIZ M ES: ");
System.out.println(m.imprimir());
Matriz copia;
copia= m;
System.out.println("LA COPIA DE M ES: ");
System.out.println(copia.imprimir());
m.matriz [0][0]= 100;
System.out.println("LA MATRIZ M MODIFICADA ES: ");
System.out.println(m.imprimir());
System.out.println("LA COPIA DE M MODIFICADA ES: ");
System.out.println(copia.imprimir());
copia=m.clonar();
m.matriz [0][0]= 1;
System.out.println("LA MATRIZ M ES: ");
System.out.println(m.imprimir());
System.out.println("LA MATRIZ CLON DE M ES: ");
System.out.println(copia.imprimir());


Matriz b = new Matriz(3,3);
b.matriz[0][0] = 1; b.matriz[0][1]=2; b.matriz[0][2]=3;
b.matriz[1][1] = 4; b.matriz[1][2] = 5;
b.matriz[2][2] = 6;
System.out.println(b.imprimir());

Matriz resultado;
resultado = m.suma(b);
System.out.println("LA SUMA ES: ");
System.out.println(resultado.imprimir());

resultado = m.resta(b);
System.out.println("LA RESTA ES: ");
System.out.println(resultado.imprimir());

resultado = b.transpueta();
System.out.println("LA TRANSPUESTA DE B ES: ");
System.out.println(resultado.imprimir());

resultado = m.transpueta();
System.out.println("LA TRANSPUESTA DE M ES: ");
System.out.println(resultado.imprimir());

resultado = m.multiplica(b);
System.out.println("LA MULTILPLICACION ES: ");
System.out.println(resultado.imprimir());

resultado=m.inversa();
System.out.println("LA INVERSA DE M ES: ");
System.out.println(resultado.imprimir());

resultado=b.inversa();
System.out.println("LA INVERSA DE B ES: ");
System.out.println(resultado.imprimir());

Matriz d=new Matriz(2,2);
d.matriz[0][0]=1;d.matriz[0][1]=1;
d.matriz[1][0]=-1;d.matriz[1][1]=2;
System.out.println("LA MATRIZ D ES: ");
System.out.println(d.imprimir());

Matriz c=new Matriz(2,2);
c.matriz[0][0]=1;
c.matriz[1][0]=0;
System.out.println("LA MATRIZ C ES: ");
System.out.println(c.imprimir());

Matriz resultante;
resultante=d.inversa();
System.out.println("LA INVERSA DE D:");
System.out.println(resultado.imprimir());

resultante=d.multiplica(c);
System.out.println("LA MULTIPLICACIÓN DE D Y C ES: ");
System.out.println(resultado.imprimir());

resultante=d.inversa().multiplica(c);
System.out.println("LA MULTIPLICACIÓN CON LA INVERSA DE D ES: ");
System.out.println(resultado.imprimir2());


}

}

19 comentarios:

  1. el codigo esta completo.. buen trabajoes un buen aporte pa un estudiante

    ResponderEliminar
  2. felicitaciones es un trabajo largo pero entendible bien compañero

    ResponderEliminar
  3. El programa esta extenso pero funciona; simplemente tocaría ver si es posible calcular la matriz inversa por otro método.

    ResponderEliminar
  4. Me parese que es un buen progrma, uanuque seria mejor que describas lo que estas haciendo poniendo comentarios,

    ResponderEliminar
  5. ahora lo has mejorado.. esta muy bien buen trabajo

    ResponderEliminar
  6. el programa esta bien estructurado, pero creo que podrias separar los programas para que se entienda mejor....

    ResponderEliminar
  7. es un buen programa si nos puede servir mucho en nuestros estudios...
    esta un poco claro seria mejor que añadas comentarios

    ResponderEliminar
  8. Hola, copio el codigo a netbeans, pero me marca que me falta el metodo main y no se como ponerlo, es que no se programar en java... te agradeceria mucho tu ayuda.

    Gracias.

    ResponderEliminar
  9. lo inicie en Jgrasp y me marca un error al iniciar, ocasionado unos 100 errores mas, intentare resolverlo i publico la solucion

    ResponderEliminar
  10. HOLA TU EJERCICO ESTA SUPER, Y TE PREGUNTO SI POR FA ME PUEDES AYUDAR CON ESTE EJERCICIO: De una matriz cuadrada mostrar las las areas: triangular inferior, triangular superior,diagonal principal y secundaria. gracias si me puedes ayudar o al que lo pueda hacer es urgentee!!!!!!!!!!!!!!!!!

    ResponderEliminar
  11. HOLA!! DIME Y SI SOLO QUIERO LA MULTIPLICACION DE LAS MATRICES A Y B, PERO QUE SE LLENEN ALEATORIAMENTE COMO LO MODIFICARÍAS?

    ResponderEliminar
  12. cuando copio el codigo a netbens me salen muchos errores

    ResponderEliminar
  13. esta muy bueno tu codigo..........

    ResponderEliminar
  14. Hola jorge, buen ejemplo el que compartes :) Integré tu condigo con una Interfaz de Calculadora de Matrices que encontré por ahí, espero que también les sirva para complementar el ejercicio como lo hice jeejej :) xO xO

    ResponderEliminar
  15. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. Hola Jorge Cevallos

      Elimine mis dos comentarios, pero sigo viendo información personal mía (mi nombre Xavier Carbó Duran), podrías porfavor eliminarla.


      Lo que veo es esto:
      Xavier Carbó Duran12 de abril de 2014, 11:34
      Este comentario ha sido eliminado por el autor.

      Xavier Carbó Duran12 de abril de 2014, 11:36
      Este comentario ha sido eliminado por el autor.


      Muchas gracias de antemano Jorge Cevallos

      Un saludo

      Eliminar
  16. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  17. Hola Jorge Cevallos

    Elimine mis dos comentarios, pero sigo viendo información personal mía (mi nombre Xavier Carbó Duran), podrías porfavor eliminarla.


    Lo que veo es esto:
    Xavier Carbó Duran12 de abril de 2014, 11:34
    Este comentario ha sido eliminado por el autor.

    Xavier Carbó Duran12 de abril de 2014, 11:36
    Este comentario ha sido eliminado por el autor.


    Muchas gracias de antemano Jorge Cevallos

    Un saludo

    ResponderEliminar