0

次の問題があります-カエデの合計を最小限に抑える必要があります。たとえば、私がこれを持っているとします:

EXPESSION:=A[0]+A[1]+A[2]+A[3]+A[4]+A[5];

そして、私はいくつかの機能を使いたい

someFunction(式);

Sumのシンボルを返します(sum(A [i]、i = 0 .. 5)のように);

そのような機能は存在しますか?

4

2 に答える 2

2

さて、既存の式を圧縮するために何かが必要だと思います。被加数、インデックス、およびインデックス範囲を指定する場合、 someFunction は項を減算し、それらの項の (未評価の) 合計を追加できます。

convert_to_Sum:= (ex, summand, index)->
    simplify(ex - sum(summand, index) + Sum(summand, index))
;

例:

ex:= A[0]+A[1]+A[2]+A[3]+A[4]+A[5];
convert_to_Sum(ex, A[i], i= 0..5);
于 2013-06-09T19:53:23.493 に答える
1

Sum(A[i], i= 0..5) Sum は大文字であることに注意してください。これは、式が既に存在する場合を処理しないことを認識しています。これは、主に関心のあるものである可能性があります。

于 2013-06-09T17:57:30.180 に答える