我试图在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'功能合并到它的程序中。并且不知道如何解决这个问题。
答案 0 :(得分:1)
Sage shell与Pytyhon shell不同,函数sum
也不同。在Sage中,它试图找到符号总和,这就是为什么第二个参数需要是变量。在您的第一个代码块中,您基本上是在尝试评估
[sum(f, 1, 1, 20), sum(f, 2, 1, 20)]
从数学的角度来看,你如何总结1
?这就是为什么Sage会给你一个错误。请注意,在最后一个代码块中,当您使用变量n
时,Sage能够计算总和。