晚上好,
我想了解为什么我没有得到正确的结果:我假设我知道我在离散数据点上的函数并将其扩展为离散傅里叶变换:
我用它来计算积分:
换句话说,我计算从 FFT(sin(x)) 乘以每个用这个词并通过这些修改后的逆 FFT 回到真实空间.
但是我没有得到正确的结果(分析解决方案是)。我究竟做错了什么?
import numpy as np
import matplotlib.pyplot as plt
from numpy.fft import fft, fftfreq, ifft
pi2 = 2*np.pi
L = pi2
N = 1001 ## should be odd!!
R = 0.2
x = np.linspace(0, L-L/N, N)
f = np.sin(x)
FOU_f = np.zeros(N, dtype=complex)
phi = np.zeros(N, dtype=complex)
FOU_phi = np.zeros(N, dtype=complex)
FOU_f = fft(f, N) ## function to fourier space
for k in range(1, N):
FOU_phi[k] = ( FOU_f[k]/(1j*pi2*k) ) * ( np.exp(1j*pi2*k*R) - np.exp(-1j*pi2*k*R) )
phi = ifft(FOU_phi, N) ## back to real space
analytic_sol = -np.cos(x+R) + np.cos(-R+x)
plt.plot(x, phi, label="test")
plt.plot(x, analytic_sol, label="analytic")
plt.legend()
plt.show()
