不用欧拉公式如何写代码计算e^(-i*2*pi*j*k/n)?

时间:2022-02-03 07:18:38
因为想弄懂DFT的原始过程,不用欧拉公式。
那么如何写代码计算e^(-i*2*pi*j*k/n)?
这里i是虚数单位,pi=3.1415。j、k、n是int参数。

3 个解决方案

#1


C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!

#2


引用 1 楼  的回复:
C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!

或者是泰勒展开

#3


引用 2 楼  的回复:
引用 1 楼 的回复:

C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!

或者是泰勒展开


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


引用 1 楼  的回复:
C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!

或者是泰勒展开

#3


引用 2 楼  的回复:
引用 1 楼 的回复:

C标准库中的exp的参数是double,肯定不能用它实现。matlab中的exp可以接受复数参数。另,楼主可以重载exp,使其可以接受复数参数,不过这个重载函数的实现肯定会用到欧拉公式!

或者是泰勒展开


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)?

好像很麻烦了。