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 $$
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
x = symbols("x")
f = x**k / factorial(k)
sum=[]
for i in range(5):
sum.append(f.subs({k:i}))
sum
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 $$
x = symbols("x")
f = Sum((-1) ** (k) * x ** (2 * k) / factorial(2 * k), (k, 0, oo))
f
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
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 $$
x = symbols("x")
f = Sum((-1) ** (k) * x ** (2 * k + 1) / factorial(2 * k + 1), (k, 0, oo))
f
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
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