Symbolic Math Toolbox™ обеспечивает две функции для вычисления сумм:
symsum
и sum
Можно найти определенные суммы и при помощи sum
и при помощи symsum
. Функция sum
суммирует вход по размерности, в то время как функция symsum
суммирует вход по индексу.
Рассмотрите определенную сумму Во-первых, найдите условия определенной суммы путем заменения индексными значениями 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
путем подведения итогов большого определенного ряда такой как
Чтобы сравнить время выполнения на вашем компьютере, используйте следующие команды.
syms k
tic
sum(sym(1:100000).^2);
toc
tic
symsum(k^2, k, 1, 100000);
toc
symsum
и sum
symsum
может обеспечить более изящное представление сумм, чем sum
обеспечивает. Продемонстрируйте это различие путем сравнения функциональных выходных параметров для определенного ряда Чтобы упростить решение, примите 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')