Mathematica中的表和求和函数

时间:2014-01-17 14:54:15

标签: sum wolfram-mathematica overlap

我有一个非常简单的问题。我不经常使用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”重叠的循环。我希望有人能理解我的“伟大”解释。

1 个答案:

答案 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,(最小ic-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}]