2013-05-12 39 views
-1

我想定义一个使用for循环的列表,并且需要使用n迭代函数来完成。 我:一个向量的递归定义

初始化

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

我有麻烦重新创建你的错误,问题。

我知道您想将n添加到您的矢量中,其中n是下标的数量。

这里的另一种方式,必须在你的问题中去,避免了环和下标:

Clear[email protected]; 
y[0] = {1, 2, 3}; 
y[n_Integer] : =y[n - 1] + n 

(如PlusListable,你可以再补充n的载体,避免了For

然后用它来调用它,例如

y[0] 
{1,2,3} 

y[5] 
{16,17,18} 

或者,使用记忆化,可以定义y如下:

y[n_Integer] := y[n] = y[n - 1] + n 

这将然后存储已计算出的值(执行例如Y [5之后检查?y ])。不要忘记Cleary,如果y更改。

显然,对于一个功能,因为这一个,你可能要考虑:

y[n_Integer] := y[0] + Total[Range[n]] 
+0

哦,你可能想看看http://mathematica.stackexchange.com – 2013-05-12 12:17:33

+0

是的,谢谢,你是对的。在这种情况下,它可以用你写的另一种方式正常工作,但这是我真正的问题的一个简化例子,只是试图了解我的错误。 我的问题是创建一个数据集的分区继承,所以我需要计算每个子集信息增益。这就是为什么我需要使用for循环将函数应用于列表的每个子集。 http://stackoverflow.com/questions/16500401/how-to-create-a-succession-of-best-partitions-of-a-dataset 如果你想帮忙,那会很棒! – 2013-05-12 13:53:41

+0

你真的想用'Subscript'吗? – 2013-05-12 17:27:11