我想使用for循环定义一个列表,我需要使用n-iterate的函数来完成它。 我有:
初始化
In[176]: Subscript[y, 0] = {1, 2, 3}
Out[180]: {1,2,3}
功能:
In[181]: F[n_] := For[l = 1, l++, l <= 3, Subscript[y, n + 1][[l]] :=Subscript[y, n][[l]]+ n]
我调用了函数
F[0]
我得到了:
In[183]: Subscript[y, 1]
Out[183]: Subscript[0, 1]
我应该{1,2,3}
。
任何人都知道它为什么不能正常工作?
答案 0 :(得分:0)
我很难重现你的错误,问题。
我了解您要将n
添加到向量中,其中n
是下标的编号。
这是另一种方法来解决你的问题,避免循环和下标:
Clear@y;
y[0] = {1, 2, 3};
y[n_Integer] : =y[n - 1] + n
(由于Plus
为Listable
,您只需将n
添加到向量中,即可避免For
)
然后使用,例如
来调用它y[0]
{1,2,3}
或
y[5]
{16,17,18}
或者,使用memoization,您可以按如下方式定义y
:
y[n_Integer] := y[n] = y[n - 1] + n
然后,这将存储已经计算的值(在执行例如y [5]之后检查?y
)。如果Clear
发生变化,请不要忘记y
y
。
显然,对于这个函数,您可能需要考虑:
y[n_Integer] := y[0] + Total[Range[n]]