Java:
Trabajando con números complejos
Cómo hacerlo:
Java no tiene soporte incorporado para números complejos, pero podemos crear nuestra propia clase o usar una biblioteca. Aquí hay un ejemplo rápido de cómo crear una sencilla clase ComplexNumber
y usarla:
public class ComplexNumber {
private double real;
private double imaginario;
public ComplexNumber(double real, double imaginario) {
this.real = real;
this.imaginario = imaginario;
}
public ComplexNumber add(ComplexNumber other) {
return new ComplexNumber(this.real + other.real, this.imaginario + other.imaginario);
}
// ToString para mostrar números complejos en forma de a + bi
@Override
public String toString() {
return String.format("%.1f + %.1fi", real, imaginario);
}
// Prueba rápida
public static void main(String[] args) {
ComplexNumber c1 = new ComplexNumber(2, 3);
ComplexNumber c2 = new ComplexNumber(1, 4);
System.out.println("Suma: " + c1.add(c2));
}
}
La salida de muestra para el método principal será:
Suma: 3.0 + 7.0i
Inmersión profunda
Antes de los lenguajes de alto nivel como Java, los programadores trabajaban directamente con bibliotecas matemáticas en lenguajes como Fortran o C para gestionar operaciones complejas. El concepto se remonta al siglo XVI, acreditado a matemáticos como Gerolamo Cardano y Rafael Bombelli.
En Java, java.lang.Math
es un lugar predilecto para lo esencial pero omite los números complejos, probablemente porque no todos los programadores los usan. ¿Alternativas? Usar bibliotecas. Apache Commons Math proporciona una clase Complex
cargada con métodos para su manipulación. Aquí está por qué crear tu propia clase es interesante: Ligera, adaptada a tus necesidades exactas, y sin la sobrecarga de una biblioteca.
Un detalle importante: ¡cuidado con la precisión de punto flotante! Las computadoras no pueden representar algunos números exactamente, lo que lleva a errores de redondeo. ¡Al realizar operaciones complejas repetitivas, estos errores pueden acumularse!
Ver también
Para inmersiones más profundas y operaciones más complejas, consulta:
- Apache Commons Math
- La clase Complex de JScience
- Tutoriales de Oracle sobre aritmética de punto flotante