在玩傅里叶积分时,我注意到我的计算花费了太长的时间来计算。我只有两组分段函数,两个函数和两个积分。我不认为Mathematica需要花这么长时间来计算这些。特别是,我的计算速度慢慢下降了么多?如何改善计算时间?将使用一些组合的memoization帮助(:=,我不太明白)?
减少积分的限制有点帮助,但不如我想的那么多。
我的代码如下:
MM = 50;
qf = 10;
(*First Set*)
f[t_] = Piecewise[{{1, t <= 0.5}, {0, t > 0.5}}];
A[w_] = qf Sin[w/2]/(Pi w);
B[w_] = qf (1 - Cos[w/2])/(Pi w);
f[x_] = Integrate[A[w] Cos[w x], {x, 0, MM}];
g[x_] = Integrate[B[w] Sin[w x], {x, 0, MM}];
Plot[f[x], {x, 0, 1}]
Plot[g[x], {x, 0, 1}]
Plot[f[x] + g[x], {x, 0, 1}]
(*Second Set*)
ff[t_] = Piecewise[{{1, t <= 0.5}, {0, t > 0.5}}];
AA[w_] = qf (Sin[w] - Sin[w/2])/(Pi w);
BB[w_] = -qf (Cos[w] - Cos[w/2])/(Pi w);
ff[x_] = Integrate[AA[w] Cos[w x], {x, 0, MM}];
gg[x_] = Integrate[BB[w] Sin[w x], {x, 0, MM}];
Plot[ff[x], {x, 0, 1}]
Plot[gg[x], {x, 0, 1}]
Plot[ff[x] + gg[x], {x, 0, 1}]
答案 0 :(得分:1)
您的代码有几个问题如下所示:
w
,例如f[x_]
尚未完全评估f[t_]
,然后f[x_]
,它会覆盖第一个定义Piecewise
。它应该类似于pw = Piecewise[{{Sin[x]/x, x < 0}, {1, x == 0}}, -x^2/100 + 1]