2012-02-08 26 views
0

我測試的代碼關於Maple中的串聯「a || b」?

L:=[2,1]; 
    sum('a||b*L[1]', 'b' = 1 .. 2); 

它返回a1*L[1]+a2*L[1],但我希望的L[1]評估後獲得a1*2+a2*2。 有什麼建議嗎?

謝謝。

編輯:

我還有一個問題。這裏的測試代碼:

L := [2, 1] 
    test := proc (i) local a1; a1 := 1; add(a || b*L[i], b = 1 .. 2) end proc 
    test(1); 

將導致 2 A1 + A2 2無 評估a1這是在功能測試中定義的局部變量。 我期待得到2*1+2*a2。還有什麼想法?

回答

1

您的第一行只是一個等式,其中=,而不是:=的實際分配。所以你沒有去做L的任務。

而且,在調用sum時,不明確的引號被誤用,並且包裝太多。

您也可以使用add而不是sum,依靠add的特殊評估規則,從而擺脫對不明確的引號的需求。

> L:=[2,1];       
           L := [2, 1] 

> add(cat(a,b)*L[1], b = 1 .. 2); 
           2 a1 + 2 a2 

> add((a||b)*L[1], b = 1 .. 2); 
           2 a1 + 2 a2 

> sum('a||b'*L[1], 'b' = 1 .. 2);  
           2 a1 + 2 a2 

> sum('cat(a,b)'*L[1], 'b' = 1 .. 2); 
           2 a1 + 2 a2 
+0

不錯,acer。對不起,我的拼寫錯誤。 – 2012-02-08 18:58:59

相關問題