Символьное суммирование

Symbolic Math Toolbox™ предоставляет две функции для вычисления сумм:

  • sum находит сумму элементов символьных векторов и матриц. В отличие от MATLAB® sum, символический sum функция не работает с многомерными массивами. Для получения дополнительной информации обратитесь к MATLAB sum страница.

  • symsum находит сумму символического ряда.

Сравнение symsum и sum

Вы можете найти определенные суммы, используя оба sum и symsum. sum функция суммирует вход по размерности, в то время как symsum функция суммирует вход по индексу.

Рассмотрим определенную сумму S=k=1101k2. Во-первых, найдите условия определенной суммы путем подстановки значений индекса на k в выражении. Затем суммируйте полученный вектор, используя sum.

syms k
f = 1/k^2;
V = subs(f, k, 1:10)
S_sum = sum(V)
V =
[ 1, 1/4, 1/9, 1/16, 1/25, 1/36, 1/49, 1/64, 1/81, 1/100]
S_sum =
1968329/1270080

Найдите ту же сумму при помощи symsum путем определения индекса и пределов суммирования. sum и symsum возвращает одинаковые результаты.

S_symsum = symsum(f, k, 1, 10)
S_symsum =
1968329/1270080

Вычислительная скорость symsum от sum

Для суммирования определенных рядов, symsum может быть быстрее, чем sum. Для суммирования неопределенного ряда можно использовать только symsum.

Можно продемонстрировать, что symsum может быть быстрее, чем sum путем суммирования больших определенных рядов, таких как S=k=1100000k2.

Для сравнения времени выполнения на компьютере используйте следующие команды.

syms k
tic
sum(sym(1:100000).^2);
toc
tic
symsum(k^2, k, 1, 100000);
toc

Выходные различия формата между symsum и sum

symsum может обеспечить более элегантное представление сумм, чем sum обеспечивает. Продемонстрировать это различие путем сравнения выходов функции для определенного ряда S=k=110xk. Чтобы упростить решение, примите x > 1.

syms x
assume(x > 1)
S_sum = sum(x.^(1:10))
S_symsum = symsum(x^k, k, 1, 10)
S_sum =
x^10 + x^9 + x^8 + x^7 + x^6 + x^5 + x^4 + x^3 + x^2 + x
S_symsum =
x^11/(x - 1) - x/(x - 1)

Покажите, что выходы равны при помощи isAlways. isAlways функция возвращает логический 1 (true), что означает, что выходы равны.

isAlways(S_sum == S_symsum)
ans =
  logical
     1

Для дальнейших расчетов очистите допущения.

assume(x, 'clear')
Для просмотра документации необходимо авторизоваться на сайте