Att arbeta med komplexa tal

C:
Att arbeta med komplexa tal

Hur man gör:

I C stöds komplexa tal av standardbiblioteket, specifikt <complex.h>. För att använda dem, deklarera variabler med typen double complex (eller float complex för enkel precision). Så här utför du grundläggande operationer:

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

int main() {
    double complex z1 = 1.0 + 2.0*I; // Deklarera ett komplext tal 1+2i
    double complex z2 = 1.0 - 2.0*I; // Deklarera ett annat komplext tal 1-2i
    
    // Addition
    double complex sum = z1 + z2;
    printf("Summa: %.2f + %.2fi\n", creal(sum), cimag(sum)); // Utmatning: Summa: 2.00 + 0.00i

    // Multiplikation
    double complex produkt = z1 * z2;
    printf("Produkt: %.2f + %.2fi\n", creal(produkt), cimag(produkt)); // Utmatning: Produkt: 5.00 + 0.00i

    // Komplex konjugat
    double complex konjugat = conj(z1);
    printf("Konjugat av z1: %.2f + %.2fi\n", creal(konjugat), cimag(konjugat)); // Utmatning: Konjugat av z1: 1.00 - 2.00i
    
    // Magnitud
    double magnitud = cabs(z1);
    printf("Magnitud av z1: %.2f\n", magnitud); // Utmatning: Magnitud av z1: 2.24

    // Fas
    double fas = carg(z1);
    printf("Fas av z1: %.2f\n", fas); // Utmatning i radianer
    
    return 0;
}

Observera att I är en konstant som representerar den imaginära enheten i <complex.h>. Funktioner som creal() och cimag() extraherar reella och imaginära delar, respektive, medan conj() beräknar det komplexa konjugatet. För magnitud och fas (argument) av komplexa tal används cabs() och carg().

Djupdykning

Stödet för komplexa tal i C är relativt nytt, standardiserat i C99. Innan detta var aritmetik med komplexa tal i C besvärlig, ofta krävdes anpassade datastrukturer och funktioner. Inkluderingen av <complex.h> och de komplexa datatyperna gav ett betydande lyft till språkets kapacitet för vetenskapliga och tekniska tillämpningar. Det är dock värt att notera att vissa språk, som Python, erbjuder mer intuitivt stöd för komplexa tal genom inbyggda datatyper och en rikare uppsättning biblioteksfunktioner. Trots detta är prestanda och kontroll som C erbjuder ett föredraget val för uppgifter som kräver högpresterande databehandling, även om det innebär att man måste hantera en något mer omständlig syntax för komplex aritmetik.