Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

在java或C++裡要如何處理複數(Complex)?

Fortran裡可將變數宣告為複數Complex, 然後就可以處理複數的運算, 在java或C++中沒有複數的宣告, 要如何處理複數問題?

2 Answers

Rating
  • Anonymous
    2 decades ago
    Favorite Answer

    C++ 內建 complex 型別

    #include<complex>

    complex<Type> Name ( 實數, 虛數 ) ;

    // 說明

    1.

    使用 complex 需 #include <complex>

    complex 具有 .real( ), .imag( ) 來存取實虛數的成員函式.

    2.

    對於 complex ,

    若使用遞增( ++ )需自己提供多載運算子

    但 complex 的 += 已經是 Standard C++ 的一部份,

    不需要多載.

    Source(s): C++ Primer
  • 順民
    Lv 4
    2 decades ago

    以下摘錄自 香港學網 : C/C++ : 初階教學 : 結構

    =========================================

    「 複 數 」 (Complex Number) 包 含 兩 部 份 : 「 實 數 」 (Real Number) 和 「 虛 數 」 (Imaginary Number) , 例 如 a+ib , 其 中 a 是 實 數 部 份 , b 是 虛 數 部 份 , 其 結 構 如 下 :

    struct complex {

    double r, i;

    };

    r 代 表 real , i 代 表 imaginary 。

    以 下 是 複 數 的 基 本 運 算 :

    加 與 減 :

    (a + ib) +/- (c + id) = (a +/- c) + i(b +/- d)

    乘 :

    (a + ib) * (c + id) = ( a*c - b*d + i(b*c + a*d) )

    除 :

    (a + ib) / (c + id) = ( (a*c + b*d)/den + i(b*c - a*d)/den )

    den = c*c + d*d

    (den: denominator 分母)

     

    例 子 :

    struct complex {

    double r, i;

    };

    struct complex complex_add(struct complex x, struct complex y) {

    struct complex result;

    result.r = x.r + y.r;

    result.i = x.i + y.i;

    return result;

    }

    struct complex complex_sub(struct complex x, struct complex y) {

    struct complex result;

    result.r = x.r - y.r;

    result.i = x.i - y.i;

    return result;

    }

    struct complex complex_mul(struct complex x, struct complex y) {

    struct complex result;

    result.r = (x.r * y.r) - (x.i * y.i);

    result.i = (x.i * y.r) + (x.r * y.i);

    return result;

    }

    struct complex complex_div(struct complex x, struct complex y) {

    struct complex result;

    double den;

    den = y.r * y.r + y.i * y.i;

    result.r = (x.r * y.r + x.i * y.i) / den;

    result.i = (x.i * y.r - x.r * y.i) / den;

    return result;

    }

    void complex_print(struct complex x) {

    printf("%g + i%g", x.r, x.i);

    }

    main() {

    struct complex x = {1,2}, y = {3,4};

    printf("x = "); complex_print(x);

    printf("\ny = "); complex_print(y);

    printf("\nx+y = "); complex_print( complex_add(x, y) );

    printf("\nx-y = "); complex_print( complex_sub(x, y) );

    printf("\nx*y = "); complex_print( complex_mul(x, y) );

    printf("\nx/y = "); complex_print( complex_div(x, y) );

    }

    執 行 結 果 :

    x = 1 + i2

    y = 3 + i4

    x+y = 4 + i6

    x-y = -2 + i-2

    x*y = -5 + i10

    x/y = 0.44 + i0.08

Still have questions? Get your answers by asking now.