“TypeError:需要一个求和变量”和Sage程序中的变量范围

时间:2013-10-30 10:19:01

标签: function scope sage

我试图在Sage中制作一个总结清单。命令是:

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,如果我像这样在Sage上运行程序没有问题:

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)

我不知道Sage如何将'sum'功能合并到它的程序中。并且不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

Sage shell与Pytyhon shell不同,函数sum也不同。在Sage中,它试图找到符号总和,这就是为什么第二个参数需要是变量。在您的第一个代码块中,您基本上是在尝试评估

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

从数学的角度来看,你如何总结1?这就是为什么Sage会给你一个错误。请注意,在最后一个代码块中,当您使用变量n时,Sage能够计算总和。