📅  最后修改于: 2023-12-03 14:38:55.717000             🧑  作者: Mango
C语言中的<complex.h>头文件提供了复数运算相关的函数和数据类型。复数是由实数和虚数组成的数,可以用 a+bi 的形式表示,其中 a 和 b 都是实数,i 是虚数单位,满足 i^2 = -1。
<complex.h>定义了名为“double complex”的数据类型,表示双精度复数。另外还定义了名为“float complex”和“long double complex”的数据类型,分别表示单精度复数和长双精度复数。
double complex z; // 声明一个双精度复数变量
float complex f;
long double complex ld;
<complex.h>中定义了很多复数运算相关的函数,包括以下常用函数:
double complex cadd(double complex z1, double complex z2); // 返回类型为 double complex
double complex csub(double complex z1, double complex z2); // 返回类型为 double complex
double complex cmul(double complex z1, double complex z2); // 返回类型为 double complex
double complex cdiv(double complex z1, double complex z2); // 返回类型为 double complex
double complex conj(double complex z); // 返回类型为 double complex
double cimag(double complex z); // 返回类型为 double
double creal(double complex z); // 返回类型为 double
double complex cexp(double complex z); // 返回类型为 double complex
double complex clog(double complex z); // 返回类型为 double complex
double complex cpow(double complex z, double complex w); // 返回类型为 double complex
double complex csin(double complex z); // 返回类型为 double complex
double complex ccos(double complex z); // 返回类型为 double complex
double complex ctan(double complex z); // 返回类型为 double complex
#include <stdio.h>
#include <complex.h>
int main() {
double complex z1 = 3.0 + 4.0*I;
double complex z2 = 1.0 - 2.0*I;
// 复数加法
printf("z1 + z2 = %.1f + %.1f*I\n", creal(cadd(z1, z2)), cimag(cadd(z1, z2)));
// 复数减法
printf("z1 - z2 = %.1f + %.1f*I\n", creal(csub(z1, z2)), cimag(csub(z1, z2)));
// 复数乘法
printf("z1 * z2 = %.1f + %.1f*I\n", creal(cmul(z1, z2)), cimag(cmul(z1, z2)));
// 复数除法
printf("z1 / z2 = %.1f + %.1f*I\n", creal(cdiv(z1, z2)), cimag(cdiv(z1, z2)));
// 复数共轭
printf("The conjugate of z1 is %.1f - %.1f*I\n", creal(conj(z1)), cimag(conj(z1)));
// 复数幅角
printf("The angle of z1 is %.1f radians\n", carg(z1));
// 复数绝对值
printf("The absolute value of z2 is %.1f\n", cabs(z2));
// 复数指数函数
printf("e^z1 = %.1f + %.1f*I\n", creal(cexp(z1)), cimag(cexp(z1)));
// 复数对数函数
printf("ln(z1) = %.1f + %.1f*I\n", creal(clog(z1)), cimag(clog(z1)));
// 复数幂函数
printf("z1^z2 = %.1f + %.1f*I\n", creal(cpow(z1, z2)), cimag(cpow(z1, z2)));
// 复数正弦函数
printf("sin(z1) = %.1f + %.1f*I\n", creal(csin(z1)), cimag(csin(z1)));
// 复数余弦函数
printf("cos(z1) = %.1f + %.1f*I\n", creal(ccos(z1)), cimag(ccos(z1)));
// 复数正切函数
printf("tan(z1) = %.1f + %.1f*I\n", creal(ctan(z1)), cimag(ctan(z1)));
return 0;
}
输出结果为:
z1 + z2 = 4.0 + 2.0*I
z1 - z2 = 2.0 + 6.0*I
z1 * z2 = 11.0 - 2.0*I
z1 / z2 = -1.4 - 2.2*I
The conjugate of z1 is 3.0 - 4.0*I
The angle of z1 is 0.9 radians
The absolute value of z2 is 2.2
e^z1 = -13.1 + 15.2*I
ln(z1) = 1.6 + 0.9*I
z1^z2 = -0.0 - 43.6*I
sin(z1) = 3.9 - 27.0*I
cos(z1) = -27.0 - 3.9*I
tan(z1) = -0.0 - 1.0*I
以上程序示例中,使用了<complex.h>头文件中的几个函数,演示了复数运算相关的操作。可以看到,<complex.h>头文件非常方便,使用它可以让我们轻松地进行复数运算。