2014-01-17 41 views
0

我有一个非常简单的问题。我不经常使用Mathematica,并且遇到一个任务。我需要计算该任务: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}] 

我需要计算“总和... /总和...” 26次,其中“c”开始于3,而在另一个步骤是(3 + 2) - > 5等等(例如2个步骤)。我设法用Table函数实现这个任务。

问题是,我也需要“我”从1到54,但在一步它应该只计算5个数字:第一个计算i = 1,2,3,4,5;第二个计算i = 3,4,5,6,7等等。在总和函数中,我将T实现为5,所以在第一步中一切正常,但我不知道如何创建“i”重叠的循环。我希望有人能理解我的“伟大”解释。

+0

你可以简单地让你的'T'的'函数返回C'名单你需要的'我',例如'T [c = 3] = {1,2,3,4,5}','T [c = 5] = {3,4,5,6,7}'。 –

+0

谢谢,但是当我写T [c = 3] = {1,2,3,4,5}时出现了:Set :: write:5 [3]中的标记整数被保护。 >> – seniorita

+0

这并不意味着字面意思,如果我把你搞糊涂,对不起。 对于'c'的通用值,'i'的值是什么? –

回答

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}

如此反复,如果你写Tc+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}] 
+0

非常感谢!完美的作品! – seniorita