0

我第一次运行这个:

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 可以将其变量从左函数传递到右函数,即使右函数是嵌套函数:

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

1 回答 1

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 对象(这可能是一个错误?)。但是当我们把它放到函数中时,它就变成了一个 Sage 对象——但是我们没有一个 Sage “sum”对象。所以我认为这是必须解决的问题。

于 2013-10-31T17:25:18.947 回答