Maxima CAS: суммирование с символическим верхним пределом n не упрощается, когда верхний предел указывается позже с помощью ev()

Следующие две части кода maxima должны быть эквивалентны:

sum(x[i], i, 1, 2);
ev(%, x[1] = 5, x[2] = 3);

и:

sum(x[i], i, 1, n);
ev(%, n = 2, x[1] = 5, x[2] = 3);

В первом случае maxima знает, как вычислить выражение до 8. Во втором случае это не упрощает и оставляет меня с символической суммой x[i] для i = от 1 до 2.

Почему максимумы не могут распознать второе выражение как такое же, как первое?

Если не считать жесткого кодирования ответа (как в первом фрагменте кода), как мне получить максимумы для полной оценки суммирования с индексированными переменными при оценке суммирования, где верхний предел указывается позже?


person daj    schedule 18.02.2014    source источник
comment
есть предложение сообщества.. может быть, вы хотели бы присоединиться   -  person Sejwal    schedule 15.03.2014
comment
спасибо, я не думаю, что это хорошая идея. Сообщество слишком маленькое, и трафик будет слишком низким. Количество загрузок не является хорошим показателем активной пользовательской базы. Я не удивлюсь, если большинство пользователей используют maxima довольно поверхностно (решите игрушечное уравнение и оставьте его нетронутым на год или удалите его).   -  person daj    schedule 18.03.2014
comment
это полная CAS, и мы всегда можем исследовать все больше и больше и развивать ее с течением времени. Но было бы хорошо делиться и учиться в одном месте. Я использовал Mathematica, и Maxima делает почти все, что делает mathematica.   -  person Sejwal    schedule 18.03.2014
comment
Согласен, я фанат Максима. я просто не думаю, что у него достаточно большое сообщество, чтобы поддерживать вопросы и ответы, независимые от stackoverflow.   -  person daj    schedule 19.03.2014
comment
Сначала давайте попробуем, моя статистика была неправильной, и общее количество загрузок составляет 3 019 298. Приходите, задайте несколько вопросов и проголосуйте за несколько.   -  person Sejwal    schedule 19.03.2014


Ответы (1)


сумма указана в форме существительного (см. шепелявое выражение)

(%i76) expr: sum(x[i], i, 1, n);
                                    n
                                   ====
                                   \
(%o76)                              >    x
                                   /      i
                                   ====
                                   i = 1
(%i77) :lisp $expr

((%SUM SIMP) (($X SIMP ARRAY) $I) $I 1 $N)

Вам нужно сообщить ev, чтобы оценивать существительные

(%i77) ev(expr, n = 2, x[1] = 5, x[2] = 3, nouns);
(%o77)                              x  + x
                                     2    1

и запросить дополнительную пост-оценку

(%i78) ev(expr, n = 2, x[1] = 5, x[2] = 3, nouns, eval);
(%o78)                                 8
person slitvinov    schedule 18.02.2014
comment
Я обнаружил, что simple_sum() или simpsum : true также работает, я предполагаю, что это то, что он делает под капотом. - person daj; 01.03.2014