我有一个数值定义它的衰减比高斯要慢得多,但仍比简单的逆幂要快。
我需要为大。的函数调用在计算上是昂贵的,所以我定义了的插值- 称之为的某个巨大范围内-40,并将其用于我的积分。
然而,当我计算傅里叶变换的近似值时,我得到了一些我最初没想到的奇怪振荡。
正如我在上图中所指出的,振荡的“周期”约为 15.7。我的第一个猜测是,这可能是积分抵消的交替性质的产物,但这并不能解释观察到的 15.7 的“周期”。
这与我观察到的结果正好相差 100 倍(是的,我已经检查过我是否正确定义了积分和水平轴)。这怎么可能?
编辑#1:插值细节
我正在使用 Mathematica 的内置 进行Interpolation
插值,它使用三次曲线在连续点之间进行插值(因此在每个点上定义了最多 2 个导数)。我专门在的范围内的步长进行插值。
事实上,现在我写了这个,我意识到它很可能是我有限采样的产物,因为:
我将不胜感激任何进一步的帮助,特别是克服这个问题的好方法。
编辑#2:函数
h[x_?NumericQ, En_?NumericQ, pz_?NumericQ] :=
1./(En^2 + pz^2 + 0.24^2)*
NIntegrate[((Sqrt[
0.316/(1. +
1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.*0.316/(1. +
1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.])*((1. -
x)*0.316/(1. + 1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1. +
x*0.316/(1. +
1.2*((k4 - 0.5*En)^2 + kp + ((1. - x)*pz)^2))^1.))/(((k4 +
0.5*En)^2 +
kp + (x*pz)^2 + (0.316/(1. +
1.2*((k4 + 0.5*En)^2 + kp + (x*pz)^2))^1.)^2)*((k4 -
0.5*En)^2 +
kp + ((1. - x)*
pz)^2 + (0.316/(1. +
1.2*((k4 - 0.5*En)^2 +
kp + ((1. - x)*
pz)^2))^1.)^2)), {k4, -\[Infinity], \[Infinity]}, {kp,
0, \[Infinity]}, Method -> "LocalAdaptive",
MaxRecursion ->
100]; (*LocalAdaptive seems to work slightly faster *)
g[x_]:=h[0.5,x,2.]; (*this is the function*)