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:
- Apache Commons Math
- JScience’s Complex klasse
- Oracle’s tutorials over floating-point arithmetic