How to define a mathematical series (in Python, using SymPy)
Task
In mathematics, a series is a sum of values from a sequence, typically real numbers. Finite series are written as $a_0+a_1+\cdots+a_n$, or
\[\sum_{i=0}^n a_i.\]Infinite series are written as $a_0+a_1+a_2+\cdots$, or
\[\sum_{n=0}^\infty a_n.\]How can we express series in mathematical software?
Related tasks:
Solution
This answer assumes you have imported SymPy as follows.
1
2
from sympy import * # load all math functions
init_printing( use_latex='mathjax' ) # use pretty math output
We define here the same sequence we defined in the task entitled how to define a mathematical sequence.
1
2
3
4
var( 'n' ) # use n as a symbol
a_n = 1 / ( n + 1 ) # formula for a term
seq = sequence( a_n, (n,0,oo) ) # build the sequence
seq
$\displaystyle \left[1, \frac{1}{2}, \frac{1}{3}, \frac{1}{4}, \ldots\right]$
We can turn it into a mathematical series by simply replacing the word
sequence with the word Sum. This does not compute the answer, but
just writes the series for us to view. In this case, it is an infinite
series.
1
Sum( a_n, (n,0,oo) )
$\displaystyle \sum_{n=0}^{\infty} \frac{1}{n + 1}$
You can compute the answer by appending the code .doit() to the above code,
which asks SymPy to “do” (or evaluate) the sum.
1
Sum( a_n, (n,0,oo) ).doit()
$\displaystyle \infty$
In this case, the series diverges.
We can also create and evaluate finite series by replacing the oo with a number.
1
Sum( a_n, (n,0,10) ).doit()
$\displaystyle \frac{83711}{27720}$
Content last modified on 24 July 2023.
See a problem? Tell us or edit the source.
Contributed by Nathan Carter (ncarter@bentley.edu)