那么如何写代码计算e^(-i*2*pi*j*k/n)?
这里i是虚数单位,pi=3.1415。j、k、n是int参数。
3 个解决方案
#1
C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!
#2
或者是泰勒展开
#3
e^x = 1+x+x^2/2!+x^3/3!+……+x^n/n!+……
由于这里含有虚数和pi,是否应该分解为:
e^(-i*2*pi*j*k/n)=(e^(j*k/n))^(-i*2*pi)
先对(e^(j*k/n))展开,设等于=et,然后 计算 et^(-i*2*pi)?
好像很麻烦了。
#1
C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!
#2
或者是泰勒展开
#3
e^x = 1+x+x^2/2!+x^3/3!+……+x^n/n!+……
由于这里含有虚数和pi,是否应该分解为:
e^(-i*2*pi*j*k/n)=(e^(j*k/n))^(-i*2*pi)
先对(e^(j*k/n))展开,设等于=et,然后 计算 et^(-i*2*pi)?
好像很麻烦了。