为什么Sage无法将变量值从一个函数传递给另一个嵌套函数?

时间:2013-10-31 15:57:10

标签: python function sage

第一个我跑了这个:

sage: f(x)=(2/n)*(sin(n*x)*(-1)^(n+1))
sage: sum(f, n, 1, 2) #using summation function
-sin(2*x) + 2*sin(x)

因此,在这种情况下,结果被正确评估。

但如果我试图将第一行和第二行合并在一起:

sage: f(x,k) = sum((2/n)*(sin(n*x)*(-1)^(n+1)), n, 1, k)
#where n = 1,2,3 ... k
sage: f(x,2)
-2*sum((-1)^n*sin(n*x)/n, n, 1, 2)

结果没有完成。

为什么圣人在这种情况下无法评估数学表达式?

另一个试图证明Sage可以将其变量从左功能传递到右功能,即使右功能是嵌套功能:

sage: f(x) = sin(arcsin(x)) 
sage: f(0.5)
0.500000000000000

1 个答案:

答案 0 :(得分:2)

sage: n, k = var('n, k')
sage: f(x,k) = sum((2/n)*(sin(n*x)*(-1)^(n+1)), n, 1, k)
#where n = 1,2,3 ... k
sage: f
(x, k) |--> -2*sum((-1)^n*sin(n*x)/n, n, 1, k)

我不确定你认为这里的错误。 2和因子-1都被考虑在内,这就是全部。

但是,我确实同意这不会扩大。发生的事情是我们将总和发送给Maxima

if algorithm == 'maxima':
    return maxima.sr_sum(expression,v,a,b)

然后通常当它返回时,它仍然是一个Maxima对象(可能是一个bug?)。但是当我们把它放在函数中时,它就变成了一个Sage对象 - 但是我们没有一个Sage“sum”对象。所以我认为这是必须解决的问题。