Wolfram-Cloud/Mathematica,有效使用递归函数
Wolfram-Cloud/Mathematica, effective working with recursive functions
我目前正在使用 Чебышёв 多项式,递归定义的多项式。对于您之前从未见过的极有可能的情况:
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]
一次,这让我可以大大改进 运行-time 并且还可以扩展 n.
的范围
使用memoization.
在这种情况下,记忆比平时更棘手,因为我们使用的是函数,而不是函数值。
Clear[cheb]
cheb[0] = 1 &;
cheb[1] = # &;
cheb[n_] := cheb[n] = Evaluate@Expand[2 # cheb[n - 1][#] - cheb[n - 2][#]] &
Evaluate
确保 Function
的内部甚至在提供和参数之前就得到评估。
我目前正在使用 Чебышёв 多项式,递归定义的多项式。对于您之前从未见过的极有可能的情况:
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]
一次,这让我可以大大改进 运行-time 并且还可以扩展 n.
使用memoization.
在这种情况下,记忆比平时更棘手,因为我们使用的是函数,而不是函数值。
Clear[cheb]
cheb[0] = 1 &;
cheb[1] = # &;
cheb[n_] := cheb[n] = Evaluate@Expand[2 # cheb[n - 1][#] - cheb[n - 2][#]] &
Evaluate
确保 Function
的内部甚至在提供和参数之前就得到评估。