Calculando determinante, matriz inversa y adjunta 3x3 java

aContinuando con las matrices ahora mostrare el código con el cual podrían calcular la determinante3x3, matriz inversa3x3 y la adjunta3x3 para que entiendan el tema les dejo estos vídeos donde explican como encontrarlas:

Determinante de una matriz 3X3:


Matriz Inversa 3X3





DETERMINANTE, TRANSPUESTA, ADJUNTA E INVERSA DE UNA MATRIZ 3X3









Aquí el código:



import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.util.StringTokenizer;
import java.awt.event.*;
  import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.util.StringTokenizer;
import java.awt.event.*;
public class Matrices3x3 extends JFrame implements ActionListener{
    
    private int X=3,Y=3;
   private JTextField[][] textfield1=new JTextField[100][100]; 
    private JTextField TamanyoX;
    private JLabel intro,total,lm,Matrizinversa;
   private JLabel[][] MI = new JLabel[100][100];
    private JButton boton1,boton2,boton3,boton4,boton5;
    private JPanel contentPane;
    private JComboBox dimension,combo1;


     public Matrices3x3() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
                        
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        setBounds(0,0,400,300);
                
        lm=new JLabel("total det.");
        lm.setBounds(40,240,100,30);
        add(lm);
        
         total=new JLabel("0");
        total.setBounds(100,240,60,30);
        add(total);
        
        
        
        
        boton2=new JButton("Determinante");
        boton2.setBounds(500,210,125,30);
        add(boton2);
        
        boton4=new JButton("M. Inversa");
        boton4.setBounds(500,240,125,30);
        add(boton4);
        
        boton5=new JButton("M. Adjunta");
        boton5.setBounds(500,270,125,30);
        add(boton5);
        boton2.addActionListener(this);                    
                       boton4.addActionListener(this);
                             boton5.addActionListener(this);

       
        for(int i=0;i<100;i++){
        
         MI[i][i]=new JLabel();
                        MI[i][i].setText("");
                        MI[i][i].setBounds(i,i,60,30);
                        add(MI[i][i]);
                        MI[i][i].setVisible(false);
                        
                        Matrizinversa = new JLabel();
                        Matrizinversa.setBounds(i,i,i,i);
                        Matrizinversa.setVisible(false);
        
        }
        
              //colocando textfield
              int x=0,y=0,A,B=40;    
             for(x=0; x<3;x++){
                 System.out.println("for x");
                 A=80;
                for( y=0; y<3;y++){
                   System.out.println("for y");
                  System.out.println("1");
                        textfield1[x][y] =new JTextField("0");
                           System.out.println("2");      
                             textfield1[x][y].setBounds(B,A,30,20);
                              System.out.println("3");
                                add(textfield1[x][y]);
                   A=A+40;
                   
                }                
                   B=B+40;           
                }
        
    }
    
    public void actionPerformed(ActionEvent e) {
     
    //determinante 3x3
     if (e.getSource()==boton2) { 
           double Total=0;
           for(int gh=0;gh<=100;gh++){
             for(int gh2=0;gh2<=100;gh2++)
              { try{
                  MI[gh][gh2].setVisible(false);
                  Matrizinversa.setVisible(false);
                }catch(Exception ee){}
                            }
                                              }
             /* aqui muestro el orden de los nombres de la variables a las cuales les asigno los numeros 
               !a00 a10 a20! l2a00 l2a10
               !a01 a11 a21! l2a01 l2a11
               !a02 a12 a22! l2a02 l2a12
             */
                 
           double a00 = Double.parseDouble(textfield1[0][0].getText());
           double a01 = Double.parseDouble(textfield1[0][1].getText());
           double a02 = Double.parseDouble(textfield1[0][2].getText());
           double a10 = Double.parseDouble(textfield1[1][0].getText());
           double a11 = Double.parseDouble(textfield1[1][1].getText());
           double a12 = Double.parseDouble(textfield1[1][2].getText());
           double a20 = Double.parseDouble(textfield1[2][0].getText());
           double a21 = Double.parseDouble(textfield1[2][1].getText());
           double a22 = Double.parseDouble(textfield1[2][2].getText());
           
           
           double l2a00 = Double.parseDouble(textfield1[0][0].getText());
           double l2a10 = Double.parseDouble(textfield1[1][0].getText());
           double l2a02 = Double.parseDouble(textfield1[0][2].getText());
           double l2a01 = Double.parseDouble(textfield1[0][1].getText());
           double l2a12 = Double.parseDouble(textfield1[1][2].getText());
           double l2a21 = Double.parseDouble(textfield1[2][1].getText());
             /*  
               !a00 a10 a20! l2a00 l2a10
               !a01 a11 a21! l2a01 l2a11
               !a02 a12 a22! l2a02 l2a12
             */
           Total=a00*a11*a22 + a10*a21*l2a02 +a20*l2a01*l2a12;
           
           Total=Total+(a02*a11*a20)*-1 + (a12*a21*l2a00)*-1 + (a22*l2a01*l2a10)*-1;
            
              total.setText(String.valueOf(Total));
              add(total);
                }
                //Matriz inversa 3x3
     if (e.getSource()==boton4){//
         
                         for(int gh=0;gh<=100;gh++){
                      for(int gh2=0;gh2<=100;gh2++)
                       {
                           try{
                               MI[gh][gh2].setVisible(false);
                               Matrizinversa.setVisible(false);
                                                          }catch(Exception ee){}
                            }}
          /*
                                     !a00 a10 a20! l2a00 l2a10
                                     !a01 a11 a21! l2a01 l2a11
                                     !a02 a12 a22! l2a02 l2a12
             */
             double Total=0;
             double a00 = Double.parseDouble(textfield1[0][0].getText());
             double a01 = Double.parseDouble(textfield1[0][1].getText());
             double a02 = Double.parseDouble(textfield1[0][2].getText());
             double a10 = Double.parseDouble(textfield1[1][0].getText());
             double a11 = Double.parseDouble(textfield1[1][1].getText());
             double a12 = Double.parseDouble(textfield1[1][2].getText());
             double a20 = Double.parseDouble(textfield1[2][0].getText());
             double a21 = Double.parseDouble(textfield1[2][1].getText());
             double a22 = Double.parseDouble(textfield1[2][2].getText());
 
             double l2a00 = Double.parseDouble(textfield1[0][0].getText());
             double l2a10 = Double.parseDouble(textfield1[1][0].getText());
             double l2a02 = Double.parseDouble(textfield1[0][2].getText());
             double l2a01 = Double.parseDouble(textfield1[0][1].getText());
             double l2a12 = Double.parseDouble(textfield1[1][2].getText());
             double l2a21 = Double.parseDouble(textfield1[2][1].getText());
              
              Total=a00*a11*a22 + a10*a21*l2a02 +a20*l2a01*l2a12;
           
              Total=Total+(a02*a11*a20)*-1 + (a12*a21*l2a00)*-1 + (a22*l2a01*l2a10)*-1;
                                      
                                      
              double[][] c = new double[X][X];
              //,c01,c02,c10,c11,c12,c20,c21,c22;
            
           if(Total!=0) {
                         c[0][0]=a11*a22-a21*a12;
                         c[1][0]=(a10*a22-a20*a12)*-1;
                         c[2][0]=a10*a21-a20*a11;
                                             c[0][1]=(a01*a22-a21*a02)*-1;
                                             c[1][1]=a00*a22-a20*a02;
                                             c[2][1]=(a00*a21-a20*a01)*-1;
                                                                  c[0][2]=a01*a12-a11*a02;
                                                                  c[1][2]=(a00*a12-a10*a02)*-1;
                                                                  c[2][2]=a00*a11-a10*a01;
                     int lx=160, ly=180;
                     //String a = TamanyoX.getText();
                    
                     X=3;//Integer.parseInt(a);
                        
                   
                     for(int i=0; i<3;i++){
                        ly=180; 
                        for(int i2=0; i2<3;i2++){
                        MI[i][i2] = new JLabel();
                        MI[i][i2].setBounds(i,i2,100,30);
                        MI[i][i2].setVisible(false);
                        add(MI[i][i2]);
                                       
                        Matrizinversa = new JLabel("lol");
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,120,70,30);
                        Matrizinversa.setVisible(false);
                        add(Matrizinversa);
                                }
                            }
                       
                  for(int i=0; i<3;i++){
                          ly=180; 
                    for(int i2=0; i2<3;i2++){
                       
                       
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,150,70,30);
                        Matrizinversa.setVisible(true);
                        add(Matrizinversa);
                        
                         
                        MI[i][i2].setText(String.valueOf(c[i][i2]/Total));//+"/"+String.valueOf(Total));
                        MI[i][i2].setBounds(lx,ly,100,30);
                        MI[i][i2].setVisible(true);
                        add(MI[i][i2]);
                        ly=ly+100;
                        MI[i][i2].setVisible(true);
                         }
                        lx=lx+120;
                        
                                        }
                         
                      
             }else
                    {
                      total.setText("Error det. da 0");
                      add(total);
                    
                    }
                    
                    //
               
                }
               
                
              //Matriz adjunta 3x3
     if (e.getSource()==boton5) 
                    {
                     //
                     
                    for(int gh=0;gh<=100;gh++){
                      for(int gh2=0;gh2<=100;gh2++)
                       {
                           try{
                               MI[gh][gh2].setVisible(false);
                               Matrizinversa.setVisible(false);
                                                          }catch(Exception ee){}
                            }}
                            
                         
                     /*
                                     !a00 a10 a20! l2a00 l2a10
                                     !a01 a11 a21! l2a01 l2a11
                                     !a02 a12 a22! l2a02 l2a12
                     */

                     double a00 = Double.parseDouble(textfield1[0][0].getText());
                     double a01 = Double.parseDouble(textfield1[0][1].getText());
                     double a02 = Double.parseDouble(textfield1[0][2].getText());
                     double a10 = Double.parseDouble(textfield1[1][0].getText());
                     double a11 = Double.parseDouble(textfield1[1][1].getText());
                     double a12 = Double.parseDouble(textfield1[1][2].getText());
                     double a20 = Double.parseDouble(textfield1[2][0].getText());
                     double a21 = Double.parseDouble(textfield1[2][1].getText());
                     double a22 = Double.parseDouble(textfield1[2][2].getText());
 
                     double l2a00 = Double.parseDouble(textfield1[0][0].getText());
                     double l2a10 = Double.parseDouble(textfield1[1][0].getText());
                     double l2a02 = Double.parseDouble(textfield1[0][2].getText());
                     double l2a01 = Double.parseDouble(textfield1[0][1].getText());
                     double l2a12 = Double.parseDouble(textfield1[1][2].getText());
                     double l2a21 = Double.parseDouble(textfield1[2][1].getText());
              
                     double[][] c = new double[X][X];
                         //,c01,c02,c10,c11,c12,c20,c21,c22;
                         
                                            
                         c[0][0]=a11*a22-a21*a12;
                         c[0][1]=(a10*a22-a20*a12)*-1;
                         c[0][2]=a10*a21-a20*a11;
                                             c[1][0]=(a01*a22-a21*a02)*-1;
                                             c[1][1]=a00*a22-a20*a02;
                                             c[1][2]=(a00*a21-a20*a01)*-1;
                                                                  c[2][0]=a01*a12-a11*a02;
                                                                  c[2][1]=(a00*a12-a10*a02)*-1;
                                                                  c[2][2]=a00*a11-a10*a01;
                     int lx=220, ly=180;
                    // String a = TamanyoX.getText();
                     X=3;//Integer.parseInt(a);
                    for(int i=0; i<3;i++){
                           ly=180; 
                      for(int i2=0; i2<3;i2++){
                        MI[i][i2] = new JLabel();
                        MI[i][i2].setBounds(i,i2,100,30);
                        MI[i][i2].setVisible(false);
                        add(MI[i][i2]);
                                       
                        Matrizinversa = new JLabel("lol");
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,150,70,30);
                        Matrizinversa.setVisible(false);
                        add(Matrizinversa);
                                }
                            }
                     
                   for(int i=0; i<3;i++){
                           ly=180; 
                     for(int i2=0; i2<3;i2++){
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,150,70,30);
                        Matrizinversa.setVisible(true);
                        add(Matrizinversa);
                        
                        MI[i][i2].setText(String.valueOf(c[i][i2])/*+"/"+String.valueOf(Total)*/);
                        MI[i][i2].setBounds(lx,ly,100,30);
                        MI[i][i2].setVisible(true);
                        add(MI[i][i2]);
                        System.out.println("i= "+i+" i2= "+i2);
                        ly=ly+60;
                        MI[i][i2].setVisible(true);
                       }
                        lx=lx+80;
                    }
                     
                    //   
                    }
                      
                      
       }
         
    public static void main(String[] ar) {
        Matrices3x3 formulario=new Matrices3x3();
        formulario.setBounds(0,0,720,600);
        formulario.setVisible(true);
    }
}





Descarga el código:



Por esta pagina puedes confirmar los resultados de las matrices 3x3:



 Java

Comentarios

Entradas más populares de este blog

Solucion al error collation desconocida: 'utf8mb4_0900_ai_ci'

Ejemplo de suma Pascal