SORU
20 HAZİRAN 2011, PAZARTESİ


Nasıl C karmaşık sayılar ile çalışmak?

Nasıl C karmaşık sayılar ile çalışabilir miyim? complex.h başlık dosyası olmadığını biliyorum, ama bana bunu nasıl kullanılacağı hakkında pek bilgi vermez. Nasıl verimli bir şekilde gerçek ve hayali parçaları erişmek için? Yerel fonksiyonlar modül ve faz almak için var mı?

CEVAP
25 Mart 2012, Pazar


Bu kod size yardımcı olacaktır, ve kendi kendini açıklayıcı sayılır:

#include <stdio.h>      /* Standard Library of Input and Output */
#include <complex.h>    /* Standard Library of Complex Numbers */

int main() {

    double complex z1 = 1.0   3.0 * I;
    double complex z2 = 1.0 - 4.0 * I;

    printf("Working with complex numbers:\n\v");

    printf("Starting values: Z1 = %.2f   %.2fi\tZ2 = %.2f % .2fi\n", creal(z1), cimag(z1), creal(z2), cimag(z2));

    double complex sum = z1   z2;
    printf("The sum: Z1   Z2 = %.2f % .2fi\n", creal(sum), cimag(sum));

    double complex difference = z1 - z2;
    printf("The difference: Z1 - Z2 = %.2f % .2fi\n", creal(difference), cimag(difference));

    double complex product = z1 * z2;
    printf("The product: Z1 x Z2 = %.2f % .2fi\n", creal(product), cimag(product));

    double complex quotient = z1 / z2;
    printf("The quotient: Z1 / Z2 = %.2f % .2fi\n", creal(quotient), cimag(quotient));

    double complex conjugate = conj(z1);
    printf("The conjugate of Z1 = %.2f % .2fi\n", creal(conjugate), cimag(conjugate));

    return 0;
}

ile:

creal(z1):gerçek kısmı (flot crealf(z1), 5 ** uzun çift)

cimag(z1):sanal kısım cimagf(z1) uzun süre çift 8 ** kaydır ()

Bir diğer önemli nokta unutmayın çalışma ile karmaşık sayılar olan fonksiyonları gibi cos(), exp() sqrt() değiştirilmesi gerekir ile karmaşık formlar, örneğin;ccos(), cexp(), csqrt().

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CHISTOSITOJAJA

    CHISTOSITOJA

    27 HAZİRAN 2010
  • Project Mooncircle

    Project Moon

    6 Aralık 2009
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005