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