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

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • Skrillex

    Skrillex

    6 NİSAN 2010
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011