2013-10-30 75 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