Páginas

NIMADRES

Números complejos en java


Los números complejos son una extensión de los números reales y forman el mínimo cuerpo algebraicamente cerrado que los contiene. El conjunto de los números complejos se designa como , siendo  el conjunto de los reales se cumple que . Los números complejos incluyen todas las raíces de los polinomios, a diferencia de los reales. Todo número complejo puede representarse como la suma de un número real y un número imaginario (que es un múltiplo real de la unidad imaginaria, que se indica con la letra i).
Los números complejos son la herramienta de trabajo del álgebra ordinaria, llamada álgebra de los números complejos, así como de ramas de las matemáticas puras y aplicadas como variable compleja, aerodinámica y electromagnetismo entre otras de gran importancia. Además los números complejos se utilizan por doquier en matemáticas, en muchos campos de la física (notoriamente en la mecánica cuántica) y en ingeniería, especialmente en la electrónica y las telecomunicaciones, por su utilidad para representar las ondas electromagnéticas y la corriente eléctrica.
En matemáticas, los números constituyen un cuerpo y, en general, se consideran como puntos del plano: el plano complejo. La propiedad más importante que caracteriza a los números complejos es el teorema fundamental del álgebra, que afirma que cualquier ecuación algebraica de grado n tiene exactamente n soluciones complejas. Contienen a los números reales y los imaginarios puros y constituyen una de las construcciones teóricas más importantes de la inteligencia humana. Los análogos del cálculo diferencial e integral con números complejos reciben el nombre de variable compleja o análisis complejo.

En este programa se muestra un ejemplo de una calculadora simple manejando números complejos en una clase llamada Complejo y su respectiva clase Main donde se muestra un ejemplo de como utilizarla. Las operaciones básicas en este programa son:


  • Suma
(a, b) + (c, d) = (a+c,\, b+d)
  • Resta
(a, b) - (c, d) = (a-c,\, b-d)
  • Multiplicación
(a, b) \cdot (c, d) = (ac - bd, ad + bc)
  • División
\frac{(a, b)}{(c, d)} = {(ac+bd,\,bc-ad) \over c^2+d^2} = \left({ac + bd \over c^2 + d^2}
, {bc - ad \over c^2 + d^2}\right)
public class Complejo{
    private double real;
    private double imaginario;
    public Complejo (){
        real = 0.0;
        imaginario = 0.0;
    }
    public Complejo (double real, double im){
        this.real = real;
        imaginario = im;
    }    
    public void getComplejo(double r, double i){
        real = r;
        imaginario = i;
    }    
    public void setReal(double numeroReal){
        real = numeroReal;
    }    
    public void setImaginario(double numeroImaginario){
        imaginario = numeroImaginario;
    }    
    public double getReal(){
        return real;
    }    
    public double getImaginario(){
        return imaginario;
    }    
    public Complejo suma(Complejo sumando){
        Complejo resultado;
        resultado = new Complejo();         
        resultado.setReal(this.real + sumando.getReal() );         
        resultado.setImaginario(this.imaginario + sumando.getImaginario());      
        return resultado;
    }    
    public Complejo resta (Complejo resta){
        Complejo resultado;
        resultado = new Complejo();         
        resultado.setReal(this.real - resta.getReal() );         
        resultado.setImaginario(this.imaginario - resta.getImaginario());         
        return resultado;
    }    
    public Complejo multiplicacion (Complejo producto){
        Complejo resultado;
        resultado = new Complejo();         
        resultado.getComplejo(((this.real * producto.getReal())-
            (this.imaginario * producto.getImaginario())),
            ((this.real * producto.getImaginario() ) + 
            (this.imaginario * producto.getReal() )));
        return resultado;
    }
    public Complejo division(Complejo divisor){
        Complejo resultado;
        resultado = new Complejo();         
        resultado.getComplejo((((this.real * divisor.getReal()) + 
            (this.imaginario * divisor.getImaginario()))/
            ((divisor.getReal() * divisor.getReal())+
            (divisor.getImaginario() * divisor.getImaginario()))),
            (((this.real * divisor.getImaginario() ) - 
            (this.imaginario * divisor.getReal() ))/((divisor.getReal() * 
            divisor.getReal())+(divisor.getImaginario() * 
            divisor.getImaginario()))));
        return resultado;
    }    
}  
Después se muestra un ejemplo de como utilizar estas operaciones en la clase Main

import java.util.*;
public class Main{
    private static Scanner teclado = new Scanner (System.in);
    public static int Menu(){
        int opcion;
        System.out.println();
        System.out.println("calculadora de numeros complejos");
        System.out.println();
        System.out.println("1)SUMAR");
        System.out.println("2)RESTAR");
        System.out.println("3)MULTIPLICAR");
        System.out.println("4)DIVIDIR");
        System.out.println("5)SALIR");
        System.out.println();
        System.out.print(" OPCION: ");
        opcion = teclado.nextInt();
        return opcion;
    }
    public static void main(String args[]){        
        Complejo calculadora,complejo1,complejo2,resultado;
        Process p;
        calculadora = new Complejo();
        double real, imag;
        int opcion;
        do{
            opcion = Menu();
            
            switch(opcion){
                case 1: 
                    System.out.print("Escribe el primer real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el primer imaginario: ");
                    imag = teclado.nextDouble();                    
                    complejo1 = new Complejo (real, imag);    
                    System.out.print("Escribe el segundo real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el segundo imaginario: ");
                    imag = teclado.nextDouble();                    
                    complejo2 = new Complejo (real, imag);                    
                    resultado = complejo1.suma(complejo2);
                    if (resultado.getImaginario() < 0.0)
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ -resultado.getImaginario());
                    else
                       System.out.println("El resultadoultado es: " + 
                       resultado.getReal() +"+ i"+ resultado.getImaginario());
                    break;
                case 2:
                    System.out.print("Escribe el primer real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el primer imaginario: ");
                    imag = teclado.nextDouble();    
                    complejo1 = new Complejo (real, imag);    
                    System.out.print("Escribe el segundo real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el segundo imaginario: ");
                    imag = teclado.nextDouble();
                    complejo2 = new Complejo (real, imag);
                    resultado = complejo1.resta(complejo2);                    
                    if (resultado.getImaginario() <0.0)
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ -resultado.getImaginario());
                    else
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ resultado.getImaginario());
                    break;
                case 3:
                    System.out.print("Escribe el primer real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el primer imaginario: ");
                    imag = teclado.nextDouble();    
                    complejo1 = new Complejo (real, imag);    
                    System.out.print("Escribe el segundo real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el segundo imaginario: ");
                    imag = teclado.nextDouble();
                    complejo2 = new Complejo (real, imag);
                    resultado = complejo1.resta(complejo2);
                    resultado = complejo1.multiplicacion(complejo2);
                    if (resultado.getImaginario() <0.0)
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ -resultado.getImaginario());
                    else
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ resultado.getImaginario());
                    break;
                case 4:
                    System.out.print("Escribe el primer real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el primer imaginario: ");
                    imag = teclado.nextDouble();    
                    complejo1 = new Complejo (real, imag);    
                    System.out.print("Escribe el segundo real: ");
                    real = teclado.nextDouble();
                    System.out.print("Escribe el segundo imaginario: ");
                    imag = teclado.nextDouble();
                    complejo2 = new Complejo (real, imag);
                    resultado = complejo1.resta(complejo2);
                    resultado = complejo1.division(complejo2);
                    if (resultado.getImaginario() <0.0)
                      System.out.println("El resultadoultado es: "+ 
                      resultado.getReal() +"+ i"+ -resultado.getImaginario());
                    else
                      System.out.println("El resultadoultado es: " + 
                      resultado.getReal() +"+ i"+ resultado.getImaginario());
                    break;
                case 5:
                    System.out.println("adios");
                    break;
                default: 
                    break;
            }
        }while(opcion!=5);
    }
}


9 comentarios:

  1. Excelente programa amigo sigue adelante y te felicito por el blog es bastante interesante y como estudiante de sistemas me ayuda muchisimo.
    SUERTE

    ResponderEliminar
    Respuestas
    1. gracias, creo que vale mas un comentario de agradecimiento que las mismas publicaciones, esto demuestra que por lo menos ayuda a algunas personas.
      Seguiremos trabajando para subir mas ejemplos.
      Saludos

      Eliminar
  2. Excelente, me has ayudado bastante, sobre todo con eso de la implementacion en el main, no lo habia encontrado. Gracias c:

    ResponderEliminar
  3. sii pero deberias agregar comentarios par algunos novatos para que entiendan mejor que hace cada cosa pero bn hecho :)

    ResponderEliminar
  4. que compilador utilizaste para correr este programa

    ResponderEliminar
  5. Me ayudo para mi tarea, sin embargo era en C++ por lo que tuve que modificar algunas cosas. Lastima la implementacion del main no es igual u.u

    ResponderEliminar
  6. muy bueno pero como son esos metodos de complejo1.resta(Complejo 2) alguien me puede explicar? estoy acostumbrado a cosas de num1-num2 o asi jajaja, pero esto me parecio muy interesante y mas como puede hacer division de complejos con una instruccion asi

    ResponderEliminar
    Respuestas
    1. creas una variable unica de tipo complejo solo eso y esa la puedes llamar

      Eliminar
  7. muchas gracias , ahora tengo una base para hacer ejercicios similares , buena suerte!!

    ResponderEliminar