Power Series¶

Here is an excellent lecture on the power series. Power Series/Euler's Great Formula

So how many terms would you need to get fairly accurate values?

Let's start with the exponential function. $$ e^x =\displaystyle \sum_{k=0}^{\infty} \frac{x^{k}}{k!} =1 + x + \frac{x^{2}}{2} + \frac{x^{3}}{6} + \frac{x^{4}}{24} +\cdots $$

In [ ]:
from sympy import Sum, factorial, oo, symbols
from sympy.abc import k

x = symbols("x")
f = Sum(x**k / factorial(k), (k, 0, oo))
f
Out[ ]:
$\displaystyle \sum_{k=0}^{\infty} \frac{x^{k}}{k!}$
In [ ]:
x = symbols("x")
f = x**k / factorial(k)
sum=[]
for i in range(5):
    sum.append(f.subs({k:i}))
sum
Out[ ]:
$\displaystyle \left[ 1, \ x, \ \frac{x^{2}}{2}, \ \frac{x^{3}}{6}, \ \frac{x^{4}}{24}\right]$
In [ ]:
from sympy import E, N
x = 1
f = 0
for i in range(10):
    f += x**i / factorial(i)
    err = abs(f - E)
    print(f"{i}\t{N(f)}\t{N(err)}")
print(N(E))
0	1.00000000000000	1.71828182845905
1	2.00000000000000	0.718281828459045
2	2.50000000000000	0.218281828459045
3	2.66666666666667	0.0516151617923786
4	2.70833333333333	0.00994849512571190
5	2.71666666666667	0.00161516179237857
6	2.71805555555556	0.000226272903489680
7	2.71825396825397	0.0000278602050769814
8	2.71827876984127	0.00000305861777539409
9	2.71828152557319	3.02885852995501E-7
2.71828182845905

Now, the cosine function. $$ \cos(x)=\displaystyle \sum_{k=0}^{\infty} \frac{\left(-1\right)^{k} x^{2 k}}{\left(2 k\right)!} = 1 - \frac{x^{2}}{2} + \frac{x^{4}}{24} - \frac{x^{6}}{720}+ \frac{x^{8}}{40320}+\cdots $$

In [ ]:
x = symbols("x")
f = Sum((-1) ** (k) * x ** (2 * k) / factorial(2 * k), (k, 0, oo))
f
Out[ ]:
$\displaystyle \sum_{k=0}^{\infty} \frac{\left(-1\right)^{k} x^{2 k}}{\left(2 k\right)!}$
In [ ]:
x = symbols("x")
f = (-1) ** (k) * x ** (2 * k) / factorial(2 * k)
sum=[]
for i in range(5):
    sum.append(f.subs({k:i}))
sum
Out[ ]:
$\displaystyle \left[ 1, \ - \frac{x^{2}}{2}, \ \frac{x^{4}}{24}, \ - \frac{x^{6}}{720}, \ \frac{x^{8}}{40320}\right]$
In [ ]:
from sympy import pi, cos
x = pi / 2
f = 0
for i in range(10):
    if i % 2 == 0:
        if i % 4 == 0:
            f += x**i / factorial(i)
        else:
            f -= x**i / factorial(i)
        err = abs(f - cos(x))
        print(f"{i}\t{N(f)}\t{N(err)}")
print(N(cos(x)))
0	1.00000000000000	1.00000000000000
2	-0.233700550136170	0.233700550136170
4	0.0199689577648782	0.0199689577648782
6	-0.000894522998474775	0.000894522998474775
8	0.0000247372763646520	0.0000247372763646520
0

Likewise, the sine function. $$ \sin(x)=\displaystyle \sum_{k=0}^{\infty} \frac{\left(-1\right)^{k} x^{2 k + 1}}{\left(2 k + 1\right)!} =x - \frac{x^{3}}{6} + \frac{x^{5}}{120} - \frac{x^{7}}{5040}+ \frac{x^{9}}{362880}+\cdots $$

In [ ]:
x = symbols("x")
f = Sum((-1) ** (k) * x ** (2 * k + 1) / factorial(2 * k + 1), (k, 0, oo))
f
Out[ ]:
$\displaystyle \sum_{k=0}^{\infty} \frac{\left(-1\right)^{k} x^{2 k + 1}}{\left(2 k + 1\right)!}$
In [ ]:
x = symbols("x")
f = (-1) ** (k) * x ** (2 * k + 1) / factorial(2 * k + 1)
sum=[]
for i in range(5):
    sum.append(f.subs({k:i}))
sum
Out[ ]:
$\displaystyle \left[ x, \ - \frac{x^{3}}{6}, \ \frac{x^{5}}{120}, \ - \frac{x^{7}}{5040}, \ \frac{x^{9}}{362880}\right]$
In [ ]:
from sympy import sin
x = pi / 2
f = 0
for i in range(10):
    if i % 4 == 1:
        f += x**i / factorial(i)
    elif i % 4 == 3:
        f -= x**i / factorial(i)
    err = abs(f - sin(x))
    print(f"{i}\t{N(f)}\t{N(err)}")
print(N(sin(x)))
0	0	1.00000000000000
1	1.57079632679490	0.570796326794897
2	1.57079632679490	0.570796326794897
3	0.924832229288650	0.0751677707113496
4	0.924832229288650	0.0751677707113496
5	1.00452485553482	0.00452485553481741
6	1.00452485553482	0.00452485553481741
7	0.999843101399499	0.000156898600501277
8	0.999843101399499	0.000156898600501277
9	1.00000354258429	0.00000354258428608242
1.00000000000000