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