Werken met complexe getallen

Java:
Werken met complexe getallen

Hoe te:

Java heeft geen ingebouwde ondersteuning voor complexe getallen, maar we kunnen onze eigen klasse bouwen of een bibliotheek gebruiken. Hier is een snel voorbeeld van hoe je een eenvoudige ComplexNumber klasse kunt maken en gebruiken:

public class ComplexNumber {
    private double real;
    private double imaginary;

    public ComplexNumber(double real, double imaginary) {
        this.real = real;
        this.imaginary = imaginary;
    }

    public ComplexNumber add(ComplexNumber other) {
        return new ComplexNumber(this.real + other.real, this.imaginary + other.imaginary);
    }

    // ToString om complexe getallen weer te geven in a + bi vorm
    @Override
    public String toString() {
        return String.format("%.1f + %.1fi", real, imaginary);
    }

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

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

Voorbeelduitvoer voor de hoofdmethode zal zijn:

Som: 3.0 + 7.0i

Diepere Duik

Voordat hoogtalen zoals Java bestonden, werkten programmeurs rechtstreeks met wiskundige bibliotheken in talen zoals Fortran of C om complexe operaties te beheren. Het concept gaat terug tot de 16e eeuw, toegeschreven aan wiskundigen zoals Gerolamo Cardano en Rafael Bombelli.

In Java is java.lang.Math de plek voor essentiële zaken, maar slaat compleze getallen over, waarschijnlijk omdat niet elke programmeur ze gebruikt. Alternatieven? Gebruik bibliotheken. Apache Commons Math biedt een Complex klasse verpakt met methoden voor manipulatie. Hier is echter waarom het zelf bouwen netjes is: Lichtgewicht, op maat gemaakt voor je exacte behoeften, en geen bibliotheek overhead.

Eén belangrijk detail: let op drijvende komma precisie. Computers kunnen sommige getallen niet exact voorstellen, wat leidt tot afrondingsfouten. Bij het uitvoeren van herhaalde complexe bewerkingen kunnen deze fouten zich opstapelen!

Zie Ook

Voor diepere duiken en meer complexe handelingen, zie: