2014-01-17 71 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