2013-05-12 3 views
-1

Я хотел бы определить список, используя цикл for, и мне нужно сделать это, используя функцию n-итерации. у меня есть:Рекурсивное определение вектора

Initialization

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 - номер нижнего индекса.

Вот еще один способ, чтобы идти на ваш вопрос, избегая петли и нижние индексы:

[email protected]; 
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} 

Кроме того, с помощью запоминанием, можно определить y следующим образом:

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

Это будет хранить уже вычисленные значения (проверить ?y после выполнения, например, у [5 ]). Не забудьте указать Cleary, если y меняется.

Очевидно, что для функции, как этот, вы можете рассмотреть следующие вопросы:

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

о, и вы можете захотеть взглянуть на http://mathematica.stackexchange.com –

+0

Да, спасибо, ты прав. В этом случае он отлично работает по-другому, как вы писали, но это был упрощенный случай моей реальной проблемы, просто чтобы попытаться понять, в чем была моя ошибка. Моя проблема заключается в создании последовательности разделов набора данных, поэтому мне нужно рассчитать коэффициент усиления информации для каждого подмножества. Вот почему мне нужно использовать цикл for для применения функции к каждому подмножеству списка. http://stackoverflow.com/questions/16500401/how-to-create-a-succession-of-best-partitions-of-a-dataset Если вы хотите помочь, это было бы здорово ! –

+0

Вы действительно хотите использовать 'Subscript'? –

Смежные вопросы