问题描述
我怎么能在C复数起作用?我看到有一个 complex.h
头文件,但它并没有给我关于如何使用它的信息。如何访问实部和虚部中的有效的方法?是否有本地函数来获取模块和相位?
How can I work with complex numbers in C? I see there is a complex.h
header file, but it doesn't give me much information about how to use it. How to access real and imaginary parts in an efficient way? Is there native functions to get module and phase?
推荐答案
这code可以帮助你,这是相当不言自明的:
This code will help you, and it's fairly self-explanatory:
#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;
}
&NBSP;
搭配:
with:
creal(Z1)
:获得真正的一部分(海军报 crealf(Z1)
,长期双 creall(Z1)
)
cimag(Z1)
:获取的虚部(浮法 cimagf(Z1)
,长期双 cimagl(Z1)
)
另一个重要的一点与复数时记住的是,如 COS()
, EXP()
功能和的sqrt()
必须有其复杂的形式,如更换 CCOS()
, cexp()
, csqrt()
。
Another important point to remember when working with complex numbers is that functions like cos()
, exp()
and sqrt()
must be replaced with their complex forms, e.g. ccos()
, cexp()
, csqrt()
.
这篇关于如何在C复数起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!