2/12/09

Ejericicio resuelto: Suma y Producto de matrices en java

Desarrolle un programa orientado a objetos para realizar la suma y multiplicacion de matrices.

Suma de matrices

Producto de matrices
Respuesta: Primero creamos la clase "matriz.java" que nos permite el manejo de los metodos asi como la creacion de nuestra matriz, ya que el problema no especifica mas detalles se trabajara sobre la base de una matriz cuadrada nxn.


/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class matriz {
    public int n; // dimension de la matriz
    private double[][] x; //array bidimensional
    
    //crea una matriz de "n" elementos con ceros
     public matriz(int n) {
        this.n = n;
        x = new double[n][n];
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                x[i][j]=0.0;
            }
        }
     }
     
     //crea una matriz con un array bidimensional pasado como parametro
     public matriz(double[][] x) {
        this.x=x;
        n=x.length;
    }

     //muestra en pantalla a la matriz 
      public String mostrar(){
        String texto="\n";
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++){
                // tabulador "\t" y se limita el numero de decimales a tres
                texto+="\t "+(double)Math.round(1000*x[i][j])/1000;
            }
            //cuando se alcanza el final de la linea se inserta un  retorno de carro
            texto+="\n";
        }
        texto+="\n";
        return texto;
  }
      
      public  matriz suma(matriz a, matriz b){
        matriz resultado=new matriz(a.n);
        for(int i=0; i<a.n; i++){
            for(int j=0; j<a.n; j++){
                resultado.x[i][j]=a.x[i][j]+b.x[i][j];
            }
        }
        return resultado;
    }
      
      public  matriz producto(matriz a, matriz b){
        matriz resultado=new matriz(a.n);
        for(int i=0; i<a.n; i++){
            for(int j=0; j<a.n; j++){
                for(int k=0; k<a.n; k++){
                    resultado.x[i][j]+=a.x[i][k]*b.x[k][j];
                }
            }
        }
        return resultado;
    }      
}


La clase matriz.java esta compuesta por dos constructores matriz(int n) y matriz(double[][] x), la primera construye una matriz  de n-elementos los cuales inicializa en cero "0", el segundo constructor crea una matriz tomando como elementos los pasados por un array bidimensional.
Ademas la clase cuenta con el metodo mostrar(), la cual devuelve un String previamente formateada. Obviamente la clase tambien cuenta con los metodos suma(matriz a, matriz b) y producto(matriz a, matriz b), que devuelven como resultado una matriz.

Para ejecutar el programa:

/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class Main {
 
    public static void main(String[] args) {                    
        double[][] a1={{2, 0, 1},{3,0,0},{5,1,1}};
        matriz a=new matriz(a1);
        
        double[][] a2={{1, 0, 1},{1,2,1},{1,1,0}};
        matriz b=new matriz(a2);
        
        System.out.println("Matriz A: " + a.mostrar());
        System.out.println("Matriz B: " + b.mostrar());        
        
        matriz re = a.suma(a, b);
        System.out.println("Suma "+re.mostrar());
        matriz re2 = a.producto(a, b);
        System.out.println("Producto "+re2.mostrar());
    }       
}


El resultado:

2 comentarios:

  1. amigo no entiendo algo me dice un error en la parte de la multiplicacion mas especificanmente aki
    matriz resultado=new matriz(a.n);
    no sabe porke gracias

    ResponderEliminar
  2. Hola amigo, quiero preguntar algo, si la calculadora tiene interfaz corre menos rápido que una sin la interfaz?

    ResponderEliminar