如何解决负复数求幂
我想计算复数角度和大小,我很擅长
#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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。