我有一个非常简单的问题。我不经常使用Mathematica而且我遇到了一项任务。我需要计算这个任务:
T=5;
y (* it represents 54 numbers*);
h = 2;
c (*starting at 3, see below*);
Table[Sum[(y[[i]]*((i - c)/h)*((i - c)/h)), {i, T}]/
Sum[((i - c)/h)*((i - c)/h), {i, T}], {c, 3, 54, 2}]
我需要计算“sum ... / sum ...”26次,其中“c”从3开始,而在另一步骤中它是(3 + 2) - > 5等等(例如2步)。我设法用Table函数实现这个任务。
问题是,我还需要“i”从1到54,但是在一步中它应该只计算5个数字:第一个计算i = 1,2,3,4,5;第二次计算i = 3,4,5,6,7等等。在sum函数中我将T实现为5,所以在第一步中一切正常,但我不知道如何创建“i”重叠的循环。我希望有人能理解我的“伟大”解释。
答案 0 :(得分:0)
您可以将T
写为c+2
,但您的表太长了,即
z = Table[c, {c, 3, 54, 2}]
{3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47, 49,51,53}
z + 2
{5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49, 51,53,55}
再次,如果您将T
写为c+2
,(最小i
为c-2
)。 。
Table[Sum[(y[[i]]*((i - c)/h)*((i - c)/h)), {i, c - 2, c + 2}]/
Sum[((i - c)/h)*((i - c)/h), {i, c - 2, c + 2}], {c, 3, 54, 2}]
。 。 。您需要y
来表示55个数字的列表,而不是54个。
例如,这样可行: -
y = Array[RandomInteger[10] &, 55];
Table[Sum[(y[[i]]*((i - c)/h)*((i - c)/h)), {i, c - 2, c + 2}]/
Sum[((i - c)/h)*((i - c)/h), {i, c - 2, c + 2}], {c, 3, 54, 2}]