Symbolic Math Toolbox™ provides two functions for calculating sums:
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
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
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')