Lavorare con i numeri complessi

Java:
Lavorare con i numeri complessi

Come fare:

Java non ha un supporto incorporato per i numeri complessi, ma possiamo creare una nostra classe o usare una libreria. Ecco un esempio rapido di come creare una semplice classe ComplexNumber e utilizzarla:

public class ComplexNumber {
    private double reale;
    private double immaginario;

    public ComplexNumber(double reale, double immaginario) {
        this.reale = reale;
        this.immaginario = immaginario;
    }

    public ComplexNumber add(ComplexNumber altro) {
        return new ComplexNumber(this.reale + altro.reale, this.immaginario + altro.immaginario);
    }

    // ToString per visualizzare i numeri complessi in forma a + bi
    @Override
    public String toString() {
        return String.format("%.1f + %.1fi", reale, immaginario);
    }

    // Test rapido
    public static void main(String[] args) {
        ComplexNumber c1 = new ComplexNumber(2, 3);
        ComplexNumber c2 = new ComplexNumber(1, 4);

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

Il risultato dell’esecuzione del metodo main sarà:

Somma: 3.0 + 7.0i

Approfondimento

Prima dei linguaggi ad alto livello come Java, i programmatori lavoravano direttamente con le librerie matematiche in linguaggi come Fortran o C per gestire operazioni complesse. Il concetto risale al XVI secolo, accreditato a matematici come Gerolamo Cardano e Rafael Bombelli.

In Java, java.lang.Math è la scelta principale per l’essenziale ma omette i numeri complessi, probabilmente perché non tutti i programmatori li usano. Alternative? Utilizzare le librerie. Apache Commons Math fornisce una classe Complex ricca di metodi per la manipolazione. Ecco perché però creare la propria può essere interessante: Leggerezza, su misura per le proprie esatte necessità e nessun sovraccarico da librerie.

Un dettaglio importante: attenzione alla precisione dei numeri in virgola mobile. I computer non possono rappresentare alcuni numeri esattamente, portando a errori di arrotondamento. Eseguendo operazioni complesse ripetitive, questi errori possono accumularsi!

Vedere Anche

Per approfondimenti e operazioni più complesse, controllare: