负复指数

Negative complex exponentiation

我想计算复数角度和幅度,我很擅长

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

double pi = 4 * atan(1.0);

int main() {
    double complex z = cexp(I * -1 * pi * 1.2 - 1);
    printf("%f + %f * i\n", creal(z), cimag(z));

    double complex base = clog(z);
    printf("%f + %f * i\n", creal(base), cimag(base));
 
    double arg = carg(base);
    printf(" Angle of z in radian %f and as degree %f \n", arg, arg * 180 / pi);

    double magnitude = cabs(base);
    printf("Magnitude of z %f \n", magnitude);

    return 0;
}

这个程序打印

-0.297621 + 0.216234 * i
-1.000000 + 2.513274 * i
 Angle of z in radian 1.949480 and as degree 111.696984 
Magnitude of z 2.704912

但是,这个结果没有负虚部。 但是所有复数都有正数。 如何获取复平面第三象限的值?

看看cexp(I * -1*pi*1.2-1)。 角度 -1.2*pi 相当于 -1.2pi + 2*pi = 0.8pi。这个角度指向第二象限,其中实部为负,虚部为 .

0.8 * pi ~= 2.51327412287

与您的示例中 clog(z) 的值一样。 一切正常。正角度变为负角度的一些直观解释如下示例:

向右转 200 度与向右转 -160 度的方向相同。

要获得第三象限中的数字,角度必须在 (pi ... 1.5 pi) 加上 2kpi 之间,其中 k 是任意整数。尝试 1.2 * pi.

-0.297621 + -0.216234 * i
-1.000000 + -2.513274 * i
 Angle of z in radian -1.949480 and as degree -111.696984 
Magnitude of z 2.704912