用Python计算傅里叶系数?

用Python计算傅里叶系数?,python,fft,numerical-methods,numerical-integration,dft,Python,Fft,Numerical Methods,Numerical Integration,Dft,我试图计算以下的傅立叶系数 其中V_{pot}是此形式的前一个def函数。 我真的不知道我能用什么数值方法,但是我从辛普森的scipy库规则开始 将numpy导入为np 从scipy.integrate导入simps Nf=200 IVp=np.零(2*Nf) snn=np.零(np) 定义f(k): 对于范围(0,NP)内的i: sn=(i-1)*H snn[i]=sn 返回值(1/SF)*np.cos(np.pi*k*sn/SF)*Vpot(sn) 对于范围(0.2*Nf)内的k: Fu

我试图计算以下的傅立叶系数

其中V_{pot}是此形式的前一个def函数。

我真的不知道我能用什么数值方法,但是我从辛普森的scipy库规则开始

将numpy导入为np
从scipy.integrate导入simps
Nf=200
IVp=np.零(2*Nf)
snn=np.零(np)
定义f(k):
对于范围(0,NP)内的i:
sn=(i-1)*H
snn[i]=sn
返回值(1/SF)*np.cos(np.pi*k*sn/SF)*Vpot(sn)
对于范围(0.2*Nf)内的k:
Func=f(k)
y1=np.数组(Func,dtype=float)
I=simps(y1,snn)
我犯了这个错误:

IndexError: tuple index out of range

您的任务可以通过

Nf = 200
s = np.linspace(0, Sf, Nf+1);
V_s = Vpot(s)
I = [ simps(s, np.cos(np.pi*k*s/Sf)*V_s ) / Sf  for k in range(0,2*Nf) ]

但实际上,请研究如何通过进行此操作。

好吧,有一系列选项可供选择。关于您的错误,请始终提供完整的回溯。请更改您的代码,使其实际运行。将积分离散化,将离散积分视为离散余弦变换或离散傅里叶变换的一部分,应用
fft
ifft
方法。好的,谢谢,我能够计算积分,我将看到FFT相关的方法,因为积分有相当大的误差。首先确保公式正确地转换为代码,包括所有常数和参数。辛普森方法的阶数为4,在较低的频率下应能给出良好的结果。对于更高的频率,你进入了采样定理的领域。我比较了
simps
scipy.integrate.quad
,得到了两种不同的积分。您可以在()中看到完整的代码,我不确定我在看什么。距离计算从一些相关的区域输入计算螺旋上的点?以某种方式交替?你能给出一个模型计算的更多的几何物理描述吗?好的,找到你解释螺旋结构的帖子。我认为在下半部分的角度上加pi可能有错误。