Wolfram-Cloud / Mathematica,有效地处理递归函数

时间:2017-01-22 13:44:58

标签: recursion wolfram-mathematica wolfram-language

我正在使用Чебышёв-polynomials,递归定义的多项式。对于非常可能的情况,你以前从未见过它们:

f[0,x_]  := 1;
f[1,x_]  := x;
f[n_,x_] := 2 * x * f[n-1, x] - f[n-2, x];
Plot[{f[9, x],f[3, x]},{x, -1, 1}]

我发现自己在问,因为我经常使用python,如果有办法在wolfram-cloud中构建一系列函数,那么就可以简化这个过程。

因此,我必须只计算每次f[n]一次,这样我就可以相当多地改善运行时间,并允许我扩展n的范围。

1 个答案:

答案 0 :(得分:2)

使用memoization

在这种情况下,memoization比平常更棘手,因为我们使用函数,而不是函数值。

Clear[cheb]
cheb[0] = 1 &;
cheb[1] = # &;
cheb[n_] := cheb[n] = Evaluate@Expand[2 # cheb[n - 1][#] - cheb[n - 2][#]] &

Evaluate确保Function的内部在提供和参数之前得到评估。