Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
784/1770
Mini-aplikace (dostupná on-line) napsaná v jazyce Python, určená pro vykreslení výkonu střídavého proudu.
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: vykony.py
4 # Datum: 20.04.2011 19:55
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: okmžitá hodnota výkonu je dána součinem okamžitých hodnot
8 # napětí a proudu
9
10
11 # import modulů
12 import pylab as l
13 from pylab import pi # nechce se mi psát l.pi
14
15 # fázový posuv mezi napětím a proudem
16 angle = 50
17
18 # čas -- arange (od, do, krok )
19 t = l.arange(-0.1,1.1,0.001)
20
21 # napětí
22 u = l.sin(2*pi*2*t)
23 # proud
24 i = l.sin(2*pi*2*t+(angle*pi/180))
25
26 l.figure() # nový obrázek
27 l.grid(True) # mřížka zapnuta
28 # vynesení grafů
29 l.plot(t, u,label="u")
30 l.plot(t, i,"--", label="i")
31 l.plot(t, u*i, label="p", linewidth=2)
32 l.axis([-0.1,1.1,-1.2,1.2]) # meze os
33 # popisky
34 l.title("Okamzite hodnoty napeti, proudu a vykonu")
35 l.xlabel("t[s]")
36 l.ylabel("u[V], i[A], p[W]")
37 l.legend() # legendu zobrazit
38 l.show() # vykreslit graf
39
40
41 # vim:nospell:
Více o tomto skriptu naleznete v sekci Technické výpočty.
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: sro.py
4 # Datum: 21.04.2011 10:15
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: frekvenční charakteristika sériového rezonančního obvodu
8 #
9
10 import pylab as l
11 import numpy as n
12 from pylab import pi
13
14 from matplotlib import rcParams #, rc
15 #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
16 ## for Palatino and other serif fonts use:
17 #rc('font',**{'family':'serif','serif':['Palatino']})
18
19 rcParams['text.usetex']=True
20 rcParams['text.latex.unicode']=True
21 L = .8e-3
22 C = 42e-12
23
24 #### první graf + příprava ######
25 R = 10
26
27 # rezonanční kmitočet
28 f0 = 1.0/( 2*pi*l.sqrt(L*C) )
29 # jakost
30 Q = 2*pi*f0*L/R
31 # šířka pásma
32 B = f0/Q
33
34 print "f0 = {0:.5} kHz".format(f0/1000.)
35 print "Q = {0:.5}".format(Q)
36 print "B = {0:.5} kHz".format(B/1000)
37
38
39 f_min = f0 - 2*B
40 f_max = f0 + 2*B
41 f= l.linspace(f_min, f_max, 10000)
42 w=2*pi*f
43
44
45 Z = R + 1j*w*L - 1j/(w*C)
46 l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))
47
48 ###### druhý graf ############
49 R=20
50 Q = 2*pi*f0*L/R
51 Z = R + 1j*w*L - 1j/(w*C)
52 l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))
53
54 ###### třetí graf ############
55 R=50
56 Q = 2*pi*f0*L/R
57 Z = R + 1j*w*L - 1j/(w*C)
58 l.plot(f/1000,n.abs(Z),label="Q = {0:8.5}".format(Q))
59
60 # nadpis
61 l.title(u'Frekvenčni závislost modulu impedance SRO')
62 # meze os
63 l.axis([f_min/1000,f_max/1000,0,max(n.abs(Z))])
64 # popisky os
65 l.xlabel(r'$f[kHz]$',{'fontsize' : 12})
66 l.ylabel(r'$|Z|[\Omega]$',{'fontsize' : 12})
67 # legenda a mřížka
68 l.legend()
69 l.grid(True)
70 # ukaž se!
71 l.show()
Více o tomto skriptu naleznete v sekci Technické výpočty.
Mini-aplikace sloužící pro vykreslení frekvenčních charakteristik dvojbranů RC a RL. (RL si musíte doprogramovat...)
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3 # Soubor: gamaRCRL.py
4 # Datum: on Thu Jun 2 07:41:28 2011
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Vykreslení frekvenční charakteristiky dvojbranu
8
9 import pylab as l
10 import numpy as n
11 from pylab import pi
12
13 from matplotlib import rcParams #, rc
14 #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
15 ## for Palatino and other serif fonts use:
16 #rc('font',**{'family':'serif','serif':['Palatino']})
17
18 rcParams['text.usetex']=True
19 rcParams['text.latex.unicode']=True
20
21
22 R=1000
23 C=33e-9
24
25 fm= 1/(2*pi*R*C)
26 fmin=fm/100
27 fmax=fm*100
28 #f = l.linspace(0,5*fm,1000)
29 f = l.logspace(int(n.log10(fmin))-1,int(n.log10(fmax))+1,num=100)
30 w = 2*pi*f
31 Z1 = R
32 Z2 = 1/(1j*w*C)
33 Z = Z2/( Z1 + Z2 )
34
35 l.figure()
36 ### Amplitudová charakteristika
37 l.subplot(2,1,1)
38 l.grid(True)
39 l.title(u"Frekvenční závislost modulu přenosu")
40 l.xlabel("$f[Hz]$")
41 l.ylabel("$a_u[dB]$")
42 l.semilogx(f, 20*n.log10(abs(Z)) )
43
44
45 [xmin, xmax, ymin, ymax] = l.axis()
46 ymin -= 2
47 ymax += 2
48 l.axis([xmin, xmax, ymin, ymax])
49
50 l.axvline(fm, color='r',linestyle='--')
51 l.axvspan(xmin, fm, color = 'g', alpha=0.05)
52 l.axhline(-3, color='r',linestyle='--')
53
54 l.text(fm,ymin,'$f_m$',va='top', ha='center')
55
56 #### Fázová charakteristika
57 l.subplot(2,1,2)
58 l.grid(True)
59 l.title(u"Frekvenční závislost fázového přenosu")
60 l.xlabel("$f[Hz]$")
61 l.ylabel(r"$\varphi[dB]$")
62 l.semilogx(f, n.rad2deg(n.angle(Z)) )
63
64 [xmin, xmax, ymin, ymax] = l.axis()
65 ymin -= 2
66 ymax += 2
67 l.axis([xmin, xmax, ymin, ymax])
68
69 l.axvline(fm, color='r',linestyle='--')
70 l.axvspan(xmin, fm, color = 'g', alpha=0.05)
71 l.axhline(-45, color='r',linestyle='--')
72
73 l.text(fm,ymin,'$f_m$',va='top', ha='center')
74
75 ###############################################
76
77 l.show()
78
79 print "R = {0} \\Omega; C = {1}; F fm = {2} Hz;".format(R,C, fm)
80 ####################################################################
81 ### Text v grafu
82 #l.text(1000, 0, '$u(t)=sin(2\pi ft)$', {'fontsize' : 20})
83
84
85
86
Více o tomto skriptu naleznete v sekci Technické výpočty.
Opět existuje i online verze, která má sloužit pro kontrolu vašich domácích výpočtů.