奇函数的离散傅里叶变换
Discrete Fourier transform for odd function
我有一个初始函数 u(x,0) = -sin(x)
,我想导出 u(x,t) = $\sum_{k \geq 1} a_{k} sin (kx)$
形式的奇校验解的 FFT 系数。我尝试根据 $\exp{ikx}$
使用函数的正常扩展,但它给解决方案增加了一些错误。
任何人都可以建议我如何使用 numpy.fft.fft
过滤整个解决方案中保持奇数的傅里叶系数的过程吗?
如果函数本质上是奇数(如正弦函数),则只有 fft
函数的虚部不为零。我认为你的问题是你的函数不是周期性的,你应该排除最后一点:
import numpy as np
x=np.linspace(-np.pi,np.pi,50,endpoint=False)
y=-np.sin(x)
yf=np.fft.fft(y)
even_part=yf.real
odd_part=yf.imag
这里只有 odd_part[1]
是非零的。
如果你的函数不奇怪并且你想强制它,你可以使用 sdt
正如我在评论中提到的那样,或者在左侧添加你的函数的反函数然后使用 fft
.
还有一点,如果你的输入不复杂,那么使用rfft
会更快更省时
我有一个初始函数 u(x,0) = -sin(x)
,我想导出 u(x,t) = $\sum_{k \geq 1} a_{k} sin (kx)$
形式的奇校验解的 FFT 系数。我尝试根据 $\exp{ikx}$
使用函数的正常扩展,但它给解决方案增加了一些错误。
任何人都可以建议我如何使用 numpy.fft.fft
过滤整个解决方案中保持奇数的傅里叶系数的过程吗?
如果函数本质上是奇数(如正弦函数),则只有 fft
函数的虚部不为零。我认为你的问题是你的函数不是周期性的,你应该排除最后一点:
import numpy as np
x=np.linspace(-np.pi,np.pi,50,endpoint=False)
y=-np.sin(x)
yf=np.fft.fft(y)
even_part=yf.real
odd_part=yf.imag
这里只有 odd_part[1]
是非零的。
如果你的函数不奇怪并且你想强制它,你可以使用 sdt
正如我在评论中提到的那样,或者在左侧添加你的函数的反函数然后使用 fft
.
还有一点,如果你的输入不复杂,那么使用rfft