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

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