C 标准库<complex.h>

<complex.h>C標準ライブラリ内のヘッダファイルであり、複素数演算をサポートするためのものです。

<complex.h>C99標準で導入され、複素数を定義および操作するための型、マクロ、関数のセットを提供します。

1、复数类型

<complex.h>以下の複素数型が定義されています:

  • float complex:単精度複素数。

  • double complex:倍精度複素数。

  • long double complex:長倍精度複素数。

これらの型は実際にはC標準ライブラリで定義されたマクロであり、それぞれ以下のように展開されます。_Complex float、_Complex doubleと_Complex long double。


2、复数常量

<complex.h>虚数単位を表すために、以下のマクロが定義されています。i:

  • I:虚数単位を表すi,即sqrt(-1)。

实例

double complex z = 3.0 + 4.0 * I; // 表示复数 3 + 4i

3、複素数操作関数

<complex.h>複素数を操作するための関数群を提供します。これには、算術演算、三角関数、指数関数、対数関数などが含まれます。以下は一般的な関数の一部です:

算术运算

函数 描述
creal(z) 返回复数zの実部
cimag(z) 返回复数zの虚部
cabs(z) 返回复数zのモジュラス(絶対値)
carg(z) 返回复数zの偏角(位相)
conj(z) 返回复数zの共役複素数
cproj(z) 返回复数zの投影

三角函数

函数 描述
csin(z) 返回复数zの正弦値
ccos(z) 返回复数zの余弦値
ctan(z) 返回复数zの正接値

指数関数と対数関数

函数 描述
cexp(z) 返回复数zの指数値
clog(z) 返回复数zの自然対数

幂函数

函数 描述
cpow(z1, z2) 返回复数z1のz2次幂

平方根函数

函数 描述
csqrt(z) 返回复数zの平方根

4、实例

以下は使用するものです<complex.h>の例であり、複素数の定義と操作方法を示しています:

实例

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

int main() {
    // 定义复数
    double complex z1 = 3.0 + 4.0 * I;
    double complex z2 = 1.0 - 2.0 * I;

    // 算术运算
    double complex sum = z1 + z2;
    double complex product = z1 * z2;

    // 输出结果
    printf("z1 = %.2f + %.2fi\n", creal(z1), cimag(z1));
    printf("z2 = %.2f + %.2fi\n", creal(z2), cimag(z2));
    printf("Sum = %.2f + %.2fi\n", creal(sum), cimag(sum));
    printf("Product = %.2f + %.2fi\n", creal(product), cimag(product));

    // 絶対値と偏角
    printf("|z1| = %.2f\n", cabs(z1));
    printf("Phase of z1 = %.2f radians\n", carg(z1));

    // 指数函数
    double complex exp_z1 = cexp(z1);
    printf("exp(z1) = %.2f + %.2fi\n", creal(exp_z1), cimag(exp_z1));

    return 0;
}

输出结果:

z1 = 3.00 + 4.00i
z2 = 1.00 + -2.00i
Sum = 4.00 + 2.00i
Product = 11.00 + -2.00i
|z1| = 5.00
Phase of z1 = 0.93 radians
exp(z1) = -13.13 + -15.20i

5、注意事项

  • <complex.h>C99以降のバージョンでのみ使用可能です。

  • 複素数型と関数の使用には、以下のインクルードが必要です:<complex.h>头文件。

  • 複素数演算の性能は、特に大量の計算を伴う場合、実数演算よりも低くなる可能性があります。


6、複素数演算の数学的背景

複素数の一般形式は次になりますa + bi,其中:

  • aは実部、bは虚部。

  • i虚数単位であり、以下を満たします:i² = -1。

複素数の絶対値(モジュラス)は:

|z| = sqrt(a² + b²)

複素数の偏角(位相)は:

arg(z) = atan2(b, a)

複素数の指数形式は次になります:

exp(z) = exp(a) * (cos(b) + i * sin(b))
其他扩展