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

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')