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);
    }
}