【发布时间】:2017-01-22 13:44:58
【问题描述】:
我目前正在使用Чебышёв-多项式,递归定义的多项式。对于您以前从未见过的很可能的情况:
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 的范围。
【问题讨论】:
-
在 Mathematica 中解决这个问题的典型方法是记忆化。 reference.wolfram.com/language/tutorial/…
-
有什么原因你没有使用内置函数
ChebyshevT吗?我天真的期望是,使用它会大大改善运行时间,而您只需付出很少的努力。 -
@HighPerformanceMark 问的很公平,所以我想 a) 学习一些有关语法的知识 b) 实际上想自己玩弄多项式,所以我能更好地掌握它。跨度>
-
@Szabolcs 这是否也适用于函数或仅适用于特定值。还有一种方法可以预先运行它的某些部分,所以它不会超时。那么我可以在多个计算中分解它吗?
-
@Szabolcs 我必须伪造自己。它实际上没有。我尝试制作一个工作样本并尝试在没有任何输出或简化多项式的情况下计算运行时间。所以我抑制了多项式
f[27,x]的输出,并尝试计算一次,然后在不输出的情况下访问它。两次我都检查了之前的时间减去计算之后的时间。而且每次耗时3.1秒。要么暗示查找它需要很长时间并且它是预先计算的(在一本新书中),要么它实际上计算了两次。
标签: recursion wolfram-mathematica wolfram-language