Operaciones con matrices en Java (suma, resta, multiplicación, matriz identidad)

Hola, hoy os traemos un programa en java que realiza operaciones (suma, resta, multiplicación y matriz identidad) con matrices, en este ejemplo utilizamos matrices cuadradas aleatorias para que sea mas rapido pero podríamos utilizar matrices introducidas por el usuario( en la función rellenar dejo comentado como sería para introducir los datos por el usuario).

La suma y resta de matrices tiene la condición de que las matrices tienen que ser de la misma dimensión, tienen que tener el mismo número de filas y de columnas.
Para efectuar la suma sumamos elemento a elemento:
el elemento (0,0) de la matriz 1 lo sumamos con el elemento (0,0) de la matriz 2 y obtenemos el elemento (0,0) de la matriz suma,
el elemento (0,1) de la matriz 1 lo sumamos con el elemento (0,1) de la matriz 2 y obtenemos el elemento (0,1) de la matriz suma y así sucesivamente.
Para restar seguimos el procedimiento anterior pero cambiando suma por resta.

Para multiplicar matrices las matrices tienen que cumplir la condición de que:
las filas de la matriz 1 = las columnas de la matriz 2
las columnas de la matriz 1 = las filas matriz 2
La matriz resultante tendría la dimensión :
[filas matriz 1 , columnas matriz 2]
Para efectuar la multiplicación efectuamos la operacion:
matrizproducto(0,0) = matriz1(0,0) * matriz2(0,0) + matriz1(0,1) * matriz2(1,0)+matriz1(0,2)*matriz2(2,0)+matriz1(0,3)*matriz2(3,0)
Con esto obtendríamos el elemento (0,0) de la matriz producto.
matrizproducto(0,1) = matriz1(0,0) * matriz2(0,1) + matriz1(0,1) * matriz2(1,1)+matriz1(0,2)*matriz2(2,1)+matriz1(0,3)*matriz2(3,1)
Y asi sucesivamente hasta hayar todos los elementos de la matriz producto

package aplicacion1;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 *
 * @author javi
 */
public class operaciones {

   
    public static void identidad(int dimension){
        int ident[][]=new int[dimension][dimension];
         for(int i=0;i<ident.length;i++){
            for(int j=0;j<ident[i].length;j++){
                if(i==j){
                    ident[i][j]=1;
                }else{
                    ident[i][j]=0;
                }
                System.out.print(ident[i][j]+" ");
            }
            System.out.println(" ");
        }
        
    }
    
    public static int[][] multiplicar(int mat1[][],int mat2[][],int dimension){
        int multi[][]=new int[dimension][dimension];
        System.out.println("Se va a proceder a multiplicar las matrices");
        int suma=0;
        for(int i=0;i<mat1.length;i++){
            for(int j=0;j<mat1[i].length;j++){
                suma=0;
                for(int k=0;k<dimension;k++){
                    suma=suma+mat1[i][k]*mat2[k][j];
                }
                multi[i][j]=suma;
                System.out.print(multi[i][j]+" ");
                
            }
            
            System.out.println(" ");
        }
        return multi;
    }
    
    public static int [][]restar(int mat1[][],int mat2[][],int dimension){
        int resta[][]=new int[dimension][dimension]; 
        System.out.println("Se va a proceder a restar las matrices");
        for(int i=0;i<mat1.length;i++){
            for(int j=0;j<mat1[i].length;j++){
                resta[i][j]=mat1[i][j]-mat2[i][j];
                System.out.print(resta[i][j]+" ");
            }
            System.out.println(" ");
        }
        return resta;
    }
    
    public static int [][]sumar(int mat1[][],int mat2[][],int dimension){
        int suma[][]=new int[dimension][dimension]; 
        System.out.println("Se va a proceder a sumar las matrices");
        for(int i=0;i<mat1.length;i++){
            for(int j=0;j<mat1[i].length;j++){
                suma[i][j]=mat1[i][j]+mat2[i][j];
                System.out.print(suma[i][j]+" ");
            }
            System.out.println(" ");
        }
        return suma;
    }
    
    public static void mostrar(int mat[][],int matriz){
        System.out.println("Mostrando la matriz "+matriz);
        for(int i=0;i<mat.length;i++){
            for(int j=0;j<mat[i].length;j++){
                System.out.print(mat[i][j]+" ");
            }
            System.out.println(" ");
        }
        
    }
    
    public static void rellenar(int mat[][],int matriz){
        for(int i=0;i<mat.length;i++){
            for(int j=0;j<mat[i].length;j++){
                //System.out.println("Dime un valor para la matriz "+matriz+" en la posicion(i "+i+", j "+j+")");
//mat[i][j]=miteclado.nextInt();
                mat[i][j]=(int)(Math.random()*9);
            }
        }
    }
    
    
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner miteclado = new Scanner(System.in);
        boolean salir=false;
        int num=0;
        while(!salir){
            try{
                System.out.println("cuantas filas y columnas quieres que tenga la matriz");
                num=miteclado.nextInt();
                salir=true;
            }catch(InputMismatchException e){
                System.out.println("No puedes introducir otra cosa que no sea un numero");
                miteclado.nextLine();
            }
        }
        salir=false;
        int op=0;
        while(!salir){
            try{
                System.out.println("1-sumar matrices\n2-restar matrices\n3-multiplicar matrices\n4-matriz identidad\n5-salir");
                op=miteclado.nextInt();
                salir=true;
            }catch(InputMismatchException e){
                System.out.println("No puedes introducir otra cosa que no sea un numero");
                miteclado.nextLine();
            }
        }
        int matriz1[][]=new int[num][num];
        int matriz2[][]=new int[num][num];        
        switch(op){
            case 1:{
                rellenar(matriz1,1);
                rellenar(matriz2,2);
                mostrar(matriz1,1);
                mostrar(matriz2, 2);
                sumar(matriz1, matriz2, num);
                
                break;
            }
            case 2:{
                rellenar(matriz1,1);
                rellenar(matriz2,2);
                mostrar(matriz1,1);
                mostrar(matriz2, 2);
                restar(matriz1, matriz2, num);
                break;
            }
            case 3:{
                rellenar(matriz1,1);
                rellenar(matriz2,2);
                mostrar(matriz1,1);
                mostrar(matriz2, 2);
                multiplicar(matriz1, matriz2, num);
                
                break;
            }
            case 4:{
                identidad(num);
                break;
            }
            case 5:{
                break;
            }
                
        }
               
    }
    
}

El resultado seria algo como esto:

cuantas filas y columnas quieres que tenga la matriz
3
1-sumar matrices
2-restar matrices
3-multiplicar matrices
4-matriz identidad
5-salir
3
Mostrando la matriz 1
6 0 0
7 6 8
6 4 5
Mostrando la matriz 2
4 3 7
3 7 0
2 7 4
Se va a proceder a multiplicar las matrices
24 18 42
62 119 81
46 81 62

Espero que les haya gustado 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

DorniSoft Inc.