Ejemplo calculando determinante, matriz inversa y adjunta 2x2 java

En este ejemplo muestro un código en java con el que podrán calcular el determinante, matriz inversa y matriz adjunta para lo cual solo deberían de entender la lógica en como se resuelven así:

Determinante
Si A= a    b
        c    d
Si A/delim{|}A{|}) 
seria:
delim{|}{A}{|}  = ad - bc

Matriz inversa
En esta matriz debemos comprobar que existe la inversa la cual existiría si el determinante es diferente de 0|A| = 3·4 - 2·0 = 12 ==> existe la inversa
2º) Hallamos la matriz adjunta transpuesta, con este método práctico:■ Intercambiamos entre sí los elementos de la diagonal principal, y■ Cambiamos el signo de los elementos de la diagonal secundaria (dejándolos en su lugar)
3º) Dividimos la matriz adjunta transpuesta por el determinante de la matriz original, y así obtenemos la inversa A⁻¹ 


     [4 -2]
     [ 0 1]
A⁻¹ = –––––
       4

A⁻¹ = [1 -1/2] ◄ RESPUESTA
     [ 0 1/4]





Matriz adjunta
Matriz algo simple en la cual de manera simplificada:
I a b I
I c d I
entonces la matriz adjunta será:
I d -c I
I -b a I
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 Matrices2x2 extends JFrame implements ActionListener{
    private JTextField[][] textfield1=new JTextField[100][100]; 
     private int X=0,Y=0;
    private JLabel total,lm,Matrizinversa;    
   private JLabel[][] MI = new JLabel[100][100];
    private JButton boton2,boton3,boton4,boton5;
    private JPanel contentPane;


     public Matrices2x2() {
        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");
        lm.setBounds(235,240,100,30);
        add(lm);
        
         total=new JLabel("0");
        total.setBounds(300,240,60,30);
        add(total);
        
        boton2=new JButton("Determinante");
        boton2.setBounds(350,210,125,30);
        add(boton2);
        
        boton4=new JButton("M. Inversa");
        boton4.setBounds(350,240,125,30);
        add(boton4);
        
        boton5=new JButton("M. Adjunta");
        boton5.setBounds(350,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<2;x++){
                 System.out.println("for x");
                 A=80;
                for( y=0; y<2;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) {
     
    //determinage 2x2
     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){}
                            }
                        }
                   String aa =textfield1[0][0].getText();
                   double a= Double.parseDouble(aa);
                   double b= Double.parseDouble(textfield1[0][1].getText());
                   double c= Double.parseDouble(textfield1[1][0].getText());
                   double d= Double.parseDouble(textfield1[1][1].getText());
                   Total = a*d-b*c;
                   total.setText(String.valueOf(Total));
                   add(total);
                }
                //Matriz inversda2x2
     if (e.getSource()==boton4)
                {
                   
                    double Total,Tinversa =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){}
                            }}
                              String aa =textfield1[0][0].getText();
                             double a= Double.parseDouble(aa);
                             double b= Double.parseDouble(textfield1[0][1].getText());
                             double c= Double.parseDouble(textfield1[1][0].getText());
                             double d= Double.parseDouble(textfield1[1][1].getText());
                            Total = a*d-b*c;
                       if(Total!=0)
                    
                    {
                       
                        Tinversa=(a*d-b*c);
                        //MI[0][0]=new JLabel();
                        Matrizinversa = new JLabel(".");
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,145,70,30);
                        Matrizinversa.setVisible(true);
                        add(Matrizinversa);
                        
                        
                        MI[0][0].setText(String.valueOf(d/Tinversa)+"");
                        MI[0][0].setBounds(220,180,60,30);
                        MI[0][0].setVisible(true);
                        add(MI[0][0]);
                        
                        
                        MI[1][0]=new JLabel();
                        MI[1][0].setText(String.valueOf(-c/Tinversa));
                        MI[1][0].setBounds(280,180,60,30);
                        add(MI[1][0]);
                        
                        MI[0][1]=new JLabel();
                        MI[0][1].setText(String.valueOf(-b/Tinversa));
                        MI[0][1].setBounds(220,210,60,30);
                        add(MI[0][1]);
                        
                        
                        MI[1][1]=new JLabel();
                        MI[1][1].setText(String.valueOf(a/Tinversa));
                        MI[1][1].setBounds(280,210,60,30);
                        add(MI[1][1]);
        
                    }else
                    {
                      total.setText("Error det. da 0");
                             add(total);
                    
                    }
              
               
                }
               
                
              //Matriz adjunta 2x2
     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){}
                            }
                        }
                        String aa =textfield1[0][0].getText();
                        
                        double a= Double.parseDouble(aa);
                        double b= Double.parseDouble(textfield1[0][1].getText());
                       double c= Double.parseDouble(textfield1[1][0].getText());
                          double d= Double.parseDouble(textfield1[1][1].getText());
                        Matrizinversa = new JLabel(".");
                        Matrizinversa.setText("Resultado:");
                        Matrizinversa.setBounds(220,145,70,30);
                        Matrizinversa.setVisible(true);
                        add(Matrizinversa);
                        
                        MI[0][0].setText(String.valueOf(d));
                        MI[0][0].setBounds(220,180,60,30);
                        MI[0][0].setVisible(true);
                        add(MI[0][0]);
                        
                        
                        MI[1][0]=new JLabel();
                        MI[1][0].setText("-"+String.valueOf(b));
                        MI[1][0].setBounds(280,180,60,30);
                        add(MI[1][0]);
                        
                        MI[0][1]=new JLabel();
                        MI[0][1].setText("-"+String.valueOf(c));
                        MI[0][1].setBounds(220,210,60,30);
                        add(MI[0][1]);
                        
                        
                        MI[1][1]=new JLabel();
                        MI[1][1].setText(String.valueOf(a));
                        MI[1][1].setBounds(280,210,60,30);
                        add(MI[1][1]);
        
                                                        }
                      
                      
       }
         
    public static void main(String[] ar) {
        Matrices2x2 formulario=new Matrices2x2();
        formulario.setBounds(0,0,500,400);
        formulario.setVisible(true);
    }
}










Comentarios

Populares

Buscar en este blog