#!/usr/bin/env python
# -*- coding: utf8 -*-
# Soubor:  sro.py
# Datum:   21.04.2011 10:15
# Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
# Licence: GNU/GPL 
# Úloha:   frekvenční charakteristika sériového rezonančního obvodu
# 

import pylab as l
import numpy as n
from pylab import pi

from matplotlib import rcParams #, rc
#rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatino and other serif fonts use:
#rc('font',**{'family':'serif','serif':['Palatino']})

rcParams['text.usetex']=True
rcParams['text.latex.unicode']=True
L = .8e-3
C = 42e-12

####  první graf + příprava ######
R = 10

# rezonanční kmitočet
f0 = 1.0/( 2*pi*l.sqrt(L*C) )
# jakost
Q = 2*pi*f0*L/R
# šířka pásma
B = f0/Q

print "f0 = {0:.5} kHz".format(f0/1000.)
print "Q = {0:.5}".format(Q)
print "B = {0:.5} kHz".format(B/1000)


f_min = f0 - 2*B
f_max = f0 + 2*B
f= l.linspace(f_min, f_max, 10000)
w=2*pi*f


Z = R + 1j*w*L - 1j/(w*C)  
l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))

###### druhý graf ############
R=20
Q = 2*pi*f0*L/R
Z = R + 1j*w*L - 1j/(w*C)  
l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))

###### třetí graf ############
R=50
Q = 2*pi*f0*L/R
Z = R + 1j*w*L - 1j/(w*C)  
l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))

# nadpis
l.title(u'Frekvenčni závislost modulu impedance SRO')
# meze os
l.axis([f_min/1000,f_max/1000,0,max(n.abs(Z))]) 
# popisky os
l.xlabel(r'$f[kHz]$',{'fontsize' : 12})
l.ylabel(r'$|Z|[\Omega]$',{'fontsize' : 12})
# legenda a mřížka
l.legend()
l.grid(True)
# ukaž se!
l.show()
