странное поведение клена при вычислении суммы по модулю - PullRequest
0 голосов
/ 08 марта 2011

Я определил простую функцию:

c(n) = 2 * floor((n mod 24) / 12)

Я хочу вычислить сумму c (0) + c (1) + ... + c (n) с помощью Maple, но суммы, которые вычисляет Maple, неверны. Вот скриншот примера, показывающего явно неправильную сумму: http://i.stack.imgur.com/BpmB2.png

Я не знаю, чего мне здесь не хватает ...

Спасибо, что уделили время

1 Ответ

2 голосов
/ 08 марта 2011

Эта проблема известна как преждевременная оценка.Что происходит, так это то, что sum использует обычную модель оценки Maple, которая включает в себя оценку аргументов вызовов процедур перед выполнением вычисления в теле процедуры.

Посмотрите, в частности, на приведенный ниже результат простого вызова creneau(i).Этот результат - то, что sum видит в качестве аргумента в вашем примере.Другими словами, операция mod произошла преждевременно, потому что вызов creneau(i) был оценен преждевременно.

creneau := n -> (2*floor((n mod 24)/12)):

creneau(38);

                           2

oops := creneau(i);

                            /1   \
                     2 floor|-- i|
                            \12  /

eval(oops, i=38);

                           6


add(oops, i=38..38);

                           6

sum(oops, i=38..38);

                           6

sum(creneau(i), i=38..38);

                           6

sum('creneau(i)', i=38..38);

                           2

add(creneau(i), i=38..38);

                           2

Обычный способ исправить это - использовать add вместо sum (поскольку add имеет так называемые "специальные правила оценки") или заключить первый аргумент в sum с помощью так называемых кавычек не оценки или задержки.

К сожалению, в 2DВ режиме математического ввода символ суммирования с довольно печатным изображением (Sigma) выглядит одинаково как для sum, так и для add.Это делает эту ошибку все труднее обнаружить.

Я бы даже предположил, что вы вставили суммирование 2D Math из палитры "Выражение" стандартного графического интерфейса пользователя Maple, которая, к сожалению, имеет sum, но не add.для новых ошибок пользователя такого рода.

См. также справочную страницу на специальных правилах оценки .

acer

...