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);
tocsymsum и sumsymsum может обеспечить более элегантное представление сумм, чем 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')