2013-10-31 28 views
0

我第一次跑這一點:爲什麼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: f(x) = sin(arcsin(x)) 
sage: f(0.5) 
0.500000000000000 
+0

請參閱[關於ask.sagemath的同一問題](http://ask.sagemath.org/question/3152/why-sage-cannot-pass-a-value-of-variable-from-one)。 – kcrisman

回答

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都被分解出來,就這些。

但是,我同意這不會擴大。正在發生的事情是,我們要發送的總和千里馬

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

,然後當它返回通常,它仍然是一個千里馬對象(這可能是一個錯誤?)。但是當我們把它放在函數中時,它就變成了一個Sage對象 - 但我們沒有一個Sage「sum」對象。所以我認爲這是必須解決的問題。

+0

對不起,我應該說它的評價還沒有完成。 – fronthem

相關問題