Symbolic evaluation of Fourier series coefficients

Symbolic evaluation of Fourier series coefficients#

from sympy import *
init_printing(pretty_print=True,use_latex=True)
%matplotlib inline
import matplotlib.pyplot as plt
f,t,T,G = symbols('f t T G')
f = G*t
print('f = ', f)
f =  G*t
plot((f.subs(G,25),(t,0,1)),((f-25).subs(G,25),(t,1,2)),((f-50).subs(G,25),(t,2,3)), ylabel='f = 25 t [V]',xlabel='t [sec]',xlim = (0,3))
../_images/3ef92b83e01e61cae2f5b0d70bdad873132c6b2b56b6aadd679c73ed8bbf9e26.png
<sympy.plotting.backends.matplotlibbackend.matplotlib.MatplotlibBackend at 0x724ebbea3290>
c0 = integrate(f,(t,0,T))*(1/T)
print(c0) 
print(c0.subs([(G,25),(T,1)]))
G*T/2
25/2
a1 = (2/T)*integrate(f*sin(2*pi*t),(t,0,T))
print(a1)
print(a1.subs([(T,1),(pi, 3.14),(G,25)]))
2*G*(-T*cos(2*pi*T)/(2*pi) + sin(2*pi*T)/(4*pi**2))/T
-7.96178343949045
a,b = [],[]
for n in range(10):
    a.append((2/T)*integrate(f*sin(n*pi*t),(t,0,T)))
    b.append((2/T)*integrate(f*cos(n*pi*t),(t,0,T)))
a[9], b[9]
../_images/a7040d5f75846fde02c3dabace5ff4411b7d26370edcca5511a9b80714c20ea6.png
c = []
for n in range(1,10):
    print(a[n])
    expr = (a[n]**2 + b[n]**2)
    expr = expr.subs([(T,1),(pi, 3.14),(G,25)])
    # print expr
    # val = lambdify(t,expr,'numpy')
    c.append(expr)
2*G*(-T*cos(pi*T)/pi + sin(pi*T)/pi**2)/T
2*G*(-T*cos(2*pi*T)/(2*pi) + sin(2*pi*T)/(4*pi**2))/T
2*G*(-T*cos(3*pi*T)/(3*pi) + sin(3*pi*T)/(9*pi**2))/T
2*G*(-T*cos(4*pi*T)/(4*pi) + sin(4*pi*T)/(16*pi**2))/T
2*G*(-T*cos(5*pi*T)/(5*pi) + sin(5*pi*T)/(25*pi**2))/T
2*G*(-T*cos(6*pi*T)/(6*pi) + sin(6*pi*T)/(36*pi**2))/T
2*G*(-T*cos(7*pi*T)/(7*pi) + sin(7*pi*T)/(49*pi**2))/T
2*G*(-T*cos(8*pi*T)/(8*pi) + sin(8*pi*T)/(64*pi**2))/T
2*G*(-T*cos(9*pi*T)/(9*pi) + sin(9*pi*T)/(81*pi**2))/T
plt.figure()
plt.bar(range(1,10),c)
plt.xlabel('n')
plt.ylabel('Fourier coefficients $a_n^2 + b_n^2$')
Text(0, 0.5, 'Fourier coefficients $a_n^2 + b_n^2$')
../_images/845ad25a6231c7fb5c4b2a11108bbd0bdbc0de02e342ca6fa84bafcedb3f6830.png