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;
}
#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))其他扩展