Trabalhando com números complexos

Java:
Trabalhando com números complexos

Como Fazer:

Java não tem suporte embutido para números complexos, mas podemos criar nossa própria classe ou usar uma biblioteca. Aqui está um exemplo rápido de como criar uma classe ComplexNumber simples e usá-la:

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 exibir números complexos no formato a + bi
    @Override
    public String toString() {
        return String.format("%.1f + %.1fi", real, imaginario);
    }

    // Teste rápido
    public static void main(String[] args) {
        ComplexNumber c1 = new ComplexNumber(2, 3);
        ComplexNumber c2 = new ComplexNumber(1, 4);

        System.out.println("Soma: " + c1.add(c2));
    }
}

A saída de amostra para o método principal será:

Soma: 3.0 + 7.0i

Aprofundamento

Antes de linguagens de alto nível como Java, programadores trabalhavam diretamente com bibliotecas matemáticas em linguagens como Fortran ou C para gerenciar operações complexas. O conceito remonta ao século 16, creditado a matemáticos como Gerolamo Cardano e Rafael Bombelli.

Em Java, java.lang.Math é o recurso para o essencial, mas omite números complexos, provavelmente porque nem todo programador os usa. Alternativas? Use bibliotecas. O Apache Commons Math fornece uma classe Complex repleta de métodos para manipulação. Aqui está o motivo pelo qual criar a sua própria classe é interessante: Leveza, sob medida para suas necessidades exatas e sem sobrecarga de biblioteca.

Um detalhe importante: cuidado com a precisão de ponto flutuante. Computadores não conseguem representar alguns números exatamente, levando a erros de arredondamento. Ao realizar operações complexas repetitivas, esses erros podem se acumular!

Veja Também

Para aprofundamentos e operações mais complexas, confira: