Mathematica只用4个积分运行得很慢。记忆化?

时间:2015-04-22 05:31:51

标签: wolfram-mathematica memoization

在玩傅里叶积分时,我注意到我的计算花费了太长的时间来计算。我只有两组分段函数,两个函数和两个积分。我不认为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}]

1 个答案:

答案 0 :(得分:1)

您的代码有几个问题如下所示:

  1. 您尚未定义w,例如f[x_]尚未完全评估
  2. 您定义f[t_],然后f[x_],它会覆盖第一个定义
  3. 您误导Piecewise。它应该类似于pw = Piecewise[{{Sin[x]/x, x < 0}, {1, x == 0}}, -x^2/100 + 1]