Symbolic Summation
Symbolic Math Toolbox™ provides two functions for calculating sums:
Comparing symsum
and sum
You can find definite sums by using both sum
and
symsum
. The sum
function sums the input over a
dimension, while the symsum
function sums the input over an index.
Consider the definite sum First, find the terms of the definite sum by substituting the index values
for k
in the expression. Then, sum the resulting vector using
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
Find the same sum by using symsum
by specifying the index and the
summation limits. sum
and symsum
return identical
results.
S_symsum = symsum(f, k, 1, 10)
S_symsum = 1968329/1270080
Computational Speed of symsum
versus sum
For summing definite series, symsum
can be faster than
sum
. For summing an indefinite series, you can only use
symsum
.
You can demonstrate that symsum
can be faster than
sum
by summing a large definite series such as
To compare runtimes on your computer, use the following commands.
syms k
tic
sum(sym(1:100000).^2);
toc
tic
symsum(k^2, k, 1, 100000);
toc
Output Format Differences Between symsum
and sum
symsum
can provide a more elegant representation of sums than
sum
provides. Demonstrate this difference by comparing the function
outputs for the definite series To simplify the solution, assume 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)
Show that the outputs are equal by using isAlways
. The
isAlways
function returns logical 1
(true
), meaning that the outputs are equal.
isAlways(S_sum == S_symsum)
ans = logical 1
For further computations, clear the assumptions.
assume(x, 'clear')