> sum(k^2,k=1..4);
Error, (in sum) summation variable previously assigned, second argument evaluates to k=1..4
> sum('k^2','k'=1..4);
> sum(1/i,i=1..100);
> evalf(%);
Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанную с тем, что переменной k перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса k в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.
4.1.3. Суммы с известным пределом
Особый класс образуют последовательности, у которых существует их предел в аналитическом виде. Ниже представлен ряд последовательностей, у которых переменная индекса задается как 0..n или 1..n (файл sum):
> restart;
> sum(k, k=1..n);
> sum(i/(i+1),i=0..n);
> sum(k*binomial(n,k),k=0..n);
Некоторые из таких сумм выражаются через специальные математические функции.
4.1.4. Суммы бесконечных рядов
Многие суммы
> restart;
> sum(-exp(-k), k);
> sum(k*a^k,k);
> sum(1/k!,k=0..infinity);
> Sum(1/i^2, i=1..infinity) = sum(1/i^2, i=1..infinity);
> Sum(1/n!, n=1..infinity) = sum(1/n!, n=1..infinity);
> evalf(%);
> Sum(1/i^2, i)=sum(1/i^2, i);
4.1.5. Двойные суммы
Могут встречаться множественные суммы по типу «сумма в сумме». Ограничимся приведением примера двойной суммы, имеющей аналитическое значение (файл sum):
> Sum(Sum(k^2, k = 1..m), m = 1..N); factor(simplify(value(%)));
При конкретном значении N такую сумму нетрудно вычислить подстановкой:
> subs(N = 100, %);
Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 9.5/10 позволяют получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.
4.1.6. Пакет вычисления специальных сумм sumtools
Возможности вычисления
> with(sumtools);
Назначение функций данного пакета перечислено ниже:
hypersum(U, L, z, n) и Hypersum(U, L, z, n) — вычисление гиперсумм;
sumtohyper(f, k) и Sumtohyper(f, k) — преобразование сумм в гиперсуммы;
extended_gosper(f, k), extended_gosper(f, k=m..n) и extended_gosper(f, k, j) — реализация расширенного алгоритма Госпера;
gosper(f, k) и gosper(f, k=m..n) — реализация алгоритма Госпера;
hyperrecursion(U, L, z, s(n)) — реализация гиперрекурсионного алгоритма;
hyperterm(U, L,
4.1.7. Примеры вычисления специальных сумм
Приведем примеры на вычисление специальных сумм с помощью функций пакета sumtools (файл sumtools):
> extended_gosper(k*(k/2)!, k);
> extended_gosper(k*(k/2)!,k,2);