Символьная математическая 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')