2013-10-30 25 views
1

我試圖在Sage中進行求和列表。這些命令是:Sage程序中的「TypeError:需要求和變量」和變量範圍

sage: var('n') 
sage: var('x') 
sage: f = (2/n)*(sin(n*x)*(-1)^(n+1)) 
sage: funclist = [sum(f,n,1,20) for n in range(1,3)] 

,但它是錯誤:

TypeError: need a summation variable 

但是當我試圖在Python Shell中一些類似的事情。沒有任何問題。

>>> x=1 
>>> [pow(x,2) for x in range(1,9)] 
[1, 4, 9, 16, 25, 36, 49, 64] 

,並返回到聖人,有沒有問題,如果我喜歡這個賢者上運行程序:

sage: var('n') 
sage: var('x') 
sage: sum(f,n,1,20) 
-1/2*sin(4*x) + 2/3*sin(3*x) - sin(2*x) + 2*sin(x) 

我不知道怎麼賢者結合了「和」功能納入其計劃。並不知道如何解決這個問題。

回答

1

Sage shell與Pytyhon shell不同,功能sum也不同。在Sage中,它試圖找到一個符號總和,這就是爲什麼第二個參數需要是變量。在你的第一個代碼塊,你基本上是試圖評估

[sum(f, 1, 1, 20), sum(f, 2, 1, 20)] 

從數學角度看,你怎麼總結了1?這就是Sage給你一個錯誤的原因。請注意,在最後一個代碼塊中,當您使用變量n時,Sage能夠計算總和。

+0

對於交叉引用,一個非常類似的答案在http://ask.sagemath.org/question/3149/sage-showed-typeerror-need-a-summation-variable接受 – kcrisman