Werken met complexe getallen

C:
Werken met complexe getallen

Hoe:

In C worden complexe getallen ondersteund door de Standaard Bibliotheek, specifiek <complex.h>. Om ze te gebruiken, verklaar je variabelen met het type double complex (of float complex voor enkele precisie). Hier is hoe je basisoperaties uitvoert:

#include <stdio.h>
#include <complex.h>

int main() {
    double complex z1 = 1.0 + 2.0*I; // Verklaar een complex getal 1+2i
    double complex z2 = 1.0 - 2.0*I; // Verklaar een ander complex getal 1-2i
    
    // Optelling
    double complex som = z1 + z2;
    printf("Som: %.2f + %.2fi\n", creal(som), cimag(som)); // Output: Som: 2.00 + 0.00i

    // Vermenigvuldiging
    double complex product = z1 * z2;
    printf("Product: %.2f + %.2fi\n", creal(product), cimag(product)); // Output: Product: 5.00 + 0.00i

    // Complex Toegevoegd
    double complex toegevoegd = conj(z1);
    printf("Toegevoegd van z1: %.2f + %.2fi\n", creal(toegevoegd), cimag(toegevoegd)); // Output: Toegevoegd van z1: 1.00 - 2.00i
    
    // Magnitude
    double magnitude = cabs(z1);
    printf("Magnitude van z1: %.2f\n", magnitude); // Output: Magnitude van z1: 2.24

    // Fase
    double fase = carg(z1);
    printf("Fase van z1: %.2f\n", fase); // Output in radialen
    
    return 0;
}

Merk op dat I een constante is die de imaginaire eenheid in <complex.h> vertegenwoordigt. Functies zoals creal() en cimag() extraheren respectievelijk de reële en imaginaire delen, terwijl conj() het complex toegevoegde berekent. Voor de magnitude en fase (argument) van complexe getallen worden cabs() en carg() gebruikt.

Diepgaand

De ondersteuning voor complexe getallen in C is relatief recent, omdat het gestandaardiseerd werd in C99. Voor deze tijd was rekenen met complexe getallen in C omslachtig, waarbij vaak aangepaste gegevensstructuren en functies nodig waren. De opname van <complex.h> en de complexe datatypes leverde een aanzienlijke verbetering op voor de mogelijkheden van de taal voor wetenschappelijke en technische toepassingen. Het is echter vermeldenswaard dat sommige talen, zoals Python, intuitievere ondersteuning bieden voor complexe getallen door ingebouwde datatypes en een rijkere set bibliotheekfuncties. Ondanks dit blijft de prestatie en controle die C biedt een voorkeurskeuze voor taken op het gebied van high-performance computing, zelfs als dat betekent omgaan met een iets uitgebreidere syntax voor complexe rekenkunde.