Použití jazyka Python pro realizaci výpočtů a aplikací Počítače byly původně určeny pouze pro matematické výpočty. V následujícím textu jsou publikovány praktické příklady ilustrující spojení počítačových předmětů (programování a programové vybavení) s předměty elektrotechnické specializace (základy elektrotechniky) a matematiky. Pro každý program je uveden výsledek běhu programu s vloženými vstupními daty. Následující ukázka použití jazyka Python ilustruje vzájemně propojování vyučování odborných předmětů na naší škole.
Výpočet kvadratické rovnice Příklad: program pro realizaci výpočtu kvadratické rovnice: print "program pro vypocet kvadraticke rovnice " import math # připojení matematické knihovny a = float (raw_input("zadej a ")) # vstup hodnoty a b = float (raw_input("zadej b ")) # vstup hodnoty b c = float (raw_input("zadej c ")) # vstup hodnoty c d= b*b - 4*a*c # výpočet diskriminantu d1=math.sqrt(d) # vyvolání funkce druhé odmocniny x1 = ((-1)*b +d1)/(2*a) # výpočet kořene x1 x2 = ((-1)*b -d1)/(2*a) # výpočet kořene x2 print "x1= ",x1 # výstup kořene x1 print "x2= ",x2 # výstup kořene x2
Zde je výsledek z běhu programu: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.0.3 >>> ======================== RESTART ================================ >>> program pro vypocet kvadraticke rovnice zadej a 1 zadej b 5 zadej c 4 x1= -1.0 x2= 0.333333333333 >>>
Výše uvedený program neřeší situaci, kdy diskriminant vyjde záporně. Python nemůže odmocnit záporné číslo a program skončí chybou: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback
1
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.0.3 >>> ======================== RESTART ================================ >>> program pro vypocet kvadraticke rovnice zadej a 3 zadej b 3 zadej c 3 Traceback (most recent call last): File "E:\Python23\kv.py", line 7, in -topleveld1=math.sqrt(d) ValueError: math domain error >>>
Kromě knihovny math lze použít knihovnu pro práci s komplexními čísly cmath. Tím se podstatně zjednoduší některé výpočty, například výpočet kvadratické rovnice, kdy není potřeba rozhodovat, zda determinant je záporný či nikoliv. Veškeré funkce knihovny math zde mají své protějšky (například sqrt – sqrt apod.) Jednoduchou modifikací předchozího programu pro výpočet kvadratické rovnice zajistíme jeho spolehlivou činnost i při záporném diskriminantu: print "program pro vypocet kvadraticke rovnice " import cmath a = float(raw_input("zadej a ")) b = float (raw_input("zadej b")) c = float (raw_input("zadej c")) d= b*b - 4*a*c d1=cmath.sqrt(d) x1 = (-1*b +d1)/(2*a) x2 = (-1 +b -d1)/(2*a) print "x1= ",x1 print "x2= ",x2
Zde je výsledek: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.0.3 >>> ======================== RESTART ================================ >>> program pro vypocet kvadraticke rovnice zadej a 3 zadej b 3 zadej c 3 x1= (-0.5+0.866025403784j) x2= (0.4-1.03923048454j) >>>
2
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výpočet soustavy lineárních rovnic Důležitou úlohou v numerické matematice je řešení soustavy lineárních rovnic. Často je tato úloha řešena pomocí Cramerova pravidla. Příklad: řešení matice 3x3: import string print "program pro vypocet soustavy 3 linearnich rovnic o trech neznamych" print "program pro vypocet soustavy rovnic - cramerovo pravidlo" print "zadej matici po jednotlivych radcich vcetne pravych stran " print "jednotliva data jsou oddelena carkami " a1=raw_input("zadej prvni radek ") a2=raw_input("zadej druhy radek ") a3=raw_input("zadej treti radek ") ay1=string.split(a1,",") # rozdělení 1. řádku podle čárky ay2=string.split(a2,",") # rozdělení 2. řádku podle čárky ay3=string.split(a3,",") # rozdělení 3. řádku podle čárky a11=float (ay1[0]) # převod řetězce ne číslo typu real a12=float (ay1[1]) a13=float (ay1[2]) b1=float (ay1[3]) a21=float (ay2[0]) a22=float (ay2[1]) a23=float (ay2[2]) b2=float (ay2[3]) a31=float (ay3[0]) a32=float (ay3[1]) a33=float (ay3[2]) b3=float (ay3[3]) def determinant (a11,a21,a31,a12,a22,a32,a13,a23,a33): a=a11*a22*a33+a12*a23*a31+a13*a21*a32-a13*a22*a31a12*a21*a33 a=a-a11*a23*a32 return (a) # funkce pro výpočet determinantu deta=determinant(a11,a21,a31,a12,a22,a32,a13,a23,a33) deta1=determinant(b1,b2,b3,a12,a22,a32,a13,a23,a33) #vyvolání funkce deta2=determinant(a11,a21,a31,b1,b2,b3,a13,a23,a33) deta3=determinant(a11,a21,a31,a12,a22,a32,b1,b2,b3) x=deta1/deta y=deta2/deta z=deta3/deta print "vysledek x= ",x,"y= ",y,"z=",z print print print "konec programu "
Výpis běhu programu: program pro vypocet soustavy 3 linearnich rovnic o trech neznamych program pro vypocet soustavy rovnic - cramerovo pravidlo zadej matici po jednotlivych radcich vcetne pravych stran jednotliva data jsou oddelena carkami zadej prvni radek 1,2,3,5 zadej druhy radek 5,-1,-7,8 zadej treti radek 7,-2,-1,23 vysledek x= 3.18181818182 y= -1.0 z= 1.27272727273 konec programu
3
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Šifrovací metody Pod pojmem šifrování si představme kódování zprávy tak, aby její význam byl k dispozici pouze příjemci této zprávy. V praxi je již zmíněný pojem obtížně realizovatelný, neboť lze předpokládat, že i jiný subjekt se pokusí zprávu dekódovat. O tom, zda se mu to podaří, či ne rozhoduje několik faktorů: 1) kvalita šifry z hlediska možných útoků 2) dostupnost špičkové výpočetní techniky (rychlý superpočítač) 3) schopný tým analytiků a programátorů Z literatury jsou známy případy použití různých metod. Historicky nejstarším prvkem je tzv. Caesarova šifra. Z doby druhé světové války uvedeme dva příklady různého přístupu k šifrování. V Německu se používal k šifrování stroj Enigma. Zmíněný stroj pracoval na elektromechanickém principu: pomocí relé a krokových mechanismů se natáčely mechanické kódové kotoučky, které prováděly vlastní kódování zprávy zapsané z klávesnice tohoto stroje. Na svoji dobu to bylo velmi pokročilé zařízení. Pro dekódování této šifry silou byl zkonstruován elektronkový počítač pod označením ABC. Ještě před jeho spuštěním do operačního provozu se Spojeneckým vojskům se podařilo získat jeden stroj Enigma. Analýzou tohoto zařízení byla šifra prolomena. Druhý způsob šifrování použila americké armáda zhruba ve stejném období. Použila k němu řeč kmene indiánů Navajo. V té době tuto řeč ovládalo cca 100 příslušníků tohoto kmene. Je zajímavé, že tato v principu jednoduchá šifrovací metoda nebyla rozluštěna během celé druhé světové války. Šifrování pomocí posunutí: Jedná se v principu o jednoduchou šifru, kde posunutí určuje, za jaký znak se má původní znak nahradit. Příklad: při posunutí o 1 se původní text ahoj změní na bipk. Tato šifra je jednoduchá, její realizace se dá provést rychle. Má však jeden zásadní problém. Její rozluštění je při použití například českého jazyka jednoduché, neboť v tomto jazyku je v libovolném textu statisticky největší výskyt samohlásek e, a. Tím se dá text poměrně rychle rozluštit. Tato šifra však dává upokojivé výsledky při použití ostatních znaků například čísel. Příklad použití: x="" print "sifrovani textu pomoci posunuti" a= int(raw_input("zadej hodnotu posunuti ")) b=raw_input("zadej text") for i in range (len(b)): y= ord(b[i]) #převod znaku na ASCII f=int(y)+a #výpočet posunutí v ASCII v=chr(f) #převod kódu ASCII na znak x=x+v #skládání do výstupní proměnné print "vstupni text :",b # výsledný tisk print "vysledny text:",x
4
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výpis běhu programu: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.0.3 >>> ======================== RESTART ================================ >>> sifrovani textu pomoci posunuti zadej hodnotu posunuti 2 zadej textahoj vstupni text : ahoj vysledny text: cjql >>>
Program využívá skutečnosti, která je definována tabulkou ASCII. Zde jsou všem znakům přiřazena pořadová čísla (adresy). Například po znaku a následuje znak b, po znaku b znak c atd.. Vstupní text musíme nejprve převést na pořadová čísla. To nám zabezpečí funkce ord. Tato funkce však vrací hodnotu typu řetězec. Použitím funkce int získáme z řetězce číslo. K tomuto číslu přičteme hodnotu posunutí a převedeme ho zpět pomocí funkce chr na znak. Znaky výstupního řetězce postupně načítáme do výsledného řetězce pomocí funkce chr. Příklad: program pro dešifrování: x="" print "desifrovani textu pomoci posunuti" a= int(raw_input("zadej hodnotu posunuti ")) b=raw_input("zadej text") for i in range (len(b)): y= ord(b[i]) # převod znaku na kód ASCII f=int(y)-a # výpočet v=chr(f) # zpětný převod na znak x=x+v print "vstupni text :",b print "vysledny text:",x
Výpis běhu programu: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. ****************************************************************
5
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
IDLE 1.0.3 >>> ======================== RESTART ================================ >>> desifrovani textu pomoci posunuti zadej hodnotu posunuti 2 zadej textcjql vstupni text : cjql vysledny text: ahoj >>>
Program pracuje oproti předchozímu inverzně. Přečte znak, převede ho na číslo, pak z něj odečte hodnotu posunutí, převede zpět na znak. Toto udělá pro každý znak vstupního řetězce. Dobré možnosti při kódování zabezpečuje funkce XOR. Je to funkce nonekvivalence (součet modulo 2).
X
Y
Výstup
0
0
0
0
1
1
1
0
1
1
1
0
Příklad: program, který šifruje na základě použití funkce XOR: a="abcdefghijkl" klic= "bcdesg" x1="" x2="" print print " vstupni text ",a print " klic ",klic print "data prevedena do ASCII" for i in range(len(a)): d=ord (a[i]) c=str (d) x1=x1+c print x1 for i in range(len(klic)): t=ord (klic[i]) r=str (t) x2=x2+r print x2 e=int(x1)^int(x2) # provedení funkce XOR f=e^int(x2) g=str(e) # převedení na znak h=str(f) print print "vysledek =",g print print "pro kontrolu xor s vysledkem ma dat puvodni text" print h print "konec programu"
6
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výpis běhu programu: Python2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 1.0.3 >>> ======================== RESTART ================================ >>> vstupni text abcdefghijkl klic bcdesg data prevedena do ASCII 979899100101102103104105106107108 9899100101115103 vysledek = 979899100101102094918429092648507 pro kontrolu xor s vysledkem ma dat puvodni text 979899100101102103104105106107108 konec programu >>>
Popis: program postupně převede jednotlivé vstupní znaky na číselný kód ASCII, totéž provede i s klíčem. Následně provede funkci XOR mezi klíčem a vstupními daty. Z funkce vyplývá poměrně zajímavý výsledek. Tím je, že nové provedení funkce xor mezi výslednými daty a původním klíčem dává zpět původní data.
Převod mezi dvěma hodnotami Příklad: následující program převádí mezi stupni celsia a stupni kelvina: print "prevod stupňů celsia na stupně kelvina" a=float(raw_input("zadej hodnotu ve stupních celsia ")) print "hodnota ve stupních kelvina je ",a+273.15
Výsledek běhu programu: Python2.6(r26:66721, Oct 2 2008,11:35:03)[MSC v.1500 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> prevod stupnu celsia na stupne kelvina zadej hodnotu ve stupních celsia 0 hodnota ve stupních kelvina je 273.15 >>>
7
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Použití programovacího jazyka Python pro základní elektrotechnické výpočty a) sériové řazení odporů print "vypocet seriove kombinace odporu " a= int(raw_input("zadej pocet soucastek ")) suma=0 print for i in range (a): b=float(raw_input("zadej hodnotu soucastky v ohmech ")) suma = suma+b print print " vysledna hodnota odporu je ",suma," ohmů"
Výsledek běhu programu: Python2.6(r26:66721, Oct 2 2008,11:35:03)[MSC v.1500 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** vypocet seriove kombinace odporu zadej zadej zadej zadej
pocet soucastek 3 hodnotu soucastky hodnotu soucastky hodnotu soucastky
v ohmech 5 v ohmech 100 v ohmech 120
vysledna hodnota odporu je >>>
225.0
ohmù
b) paralelní řazení odporů print "vypocet paralelni kombinace odporu " a= int(raw_input("zadej pocet soucastek ")) suma=0 print for i in range (a): b=float(raw_input("zadej hodnotu soucastky v ohmech ")) c=1/b suma = suma+c print print " vysledna hodnota odporu je ",1/suma," ohmů"
8
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výsledek běhu programu: Python2.6(r26:66721, Oct2 2008, 11:35:03)[MSC v.1500 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet paralelni kombinace odporu zadej zadej zadej zadej
pocet soucastek 3 hodnotu soucastky hodnotu soucastky hodnotu soucastky
v ohmech 6 v ohmech 6 v ohmech 6
vysledna hodnota odporu je >>>
2.0
ohmù
c) výpočet impedance (cívka) import math print "vypocet impedance civky " l= float(raw_input("zadej hodnotu civky v H ")) f= float(raw_input("zadej hodnotu frekvence v Hz ")) z=2*math.pi*f*l print print " impedance je ",z," ohmů"
Výsledek běhu programu: Python2.6(r26:66721, Oct2 2008, 11:35:03)[MSC v.1500 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet impedance civky zadej hodnotu civky v H 5e-3 zadej hodnotu frekvence v Hz 2e6 impedance je >>>
9
62831.8530718
ohmù
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
d) výpočet impedance (kondenzátor) import math print "vypocet impedance a admitance kondenzatoru " c= float(raw_input("zadej hodnotu kondenzatoru v F ")) f= float(raw_input("zadej hodnotu frekvence v Hz ")) y=2*math.pi*f*c z=1/y print print " impedance je ",z," ohmù" print "admitance je ",y," S"
Výsledek běhu programu: Python2.6(r26:66721,Oct 2 2008,11:35:03)[MSC v.1500 32 bit (Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet impedance a admitance kondenzatoru zadej hodnotu kondenzatoru v F 5e-6 zadej hodnotu frekvence v Hz 1000 impedance je 31.8309886184 ohmù admitance je 0.0314159265359 S >>>
e) výpočet přechodového jevu RC import math print " vypocet prechodoveho jevu prubeh napeti a proudu" print "při nabijeni a vybíjení kondenzátoru" u=float(raw_input("zadej hodnotu stejnosměrného napětí ve V ")) r=float(raw_input("zadej hodnotu odporu v ohmech ")) c=float(raw_input("zadej hodnotu kondenzatoru ve F ")) cas=float(raw_input("zadej dobu sledování v sec. ")) cas1=float(raw_input("zadej krok sledování ")) t=0.00000000 tau=r*c i=u/r print print " ","cas"," ","U"," ","I" print print "0.0 ","0.00000000000"," ",u/r while t<=cas: t=t+cas1 uvyst=u*(1-(math.exp(-1.0*(t/tau)))) ivyst=i*(math.exp(-1.0*(t/tau))) print t," ",uvyst," ",ivyst
10
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výsledek běhu programu: Python2.6(r26:66721, Oct 2 2008,11:35:03)[MSC v.1500 32 bit(Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet prechodoveho jevu prubeh napeti a proudu při nabijeni a vybíjení kondenzátoru zadej hodnotu stejnosměrného napětí ve V 10 zadej hodnotu odporu v ohmech 1 zadej hodnotu kondenzatoru ve F .5 zadej dobu sledování v sec. 9 zadej krok sledování .1 cas 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5
11
U 0.00000000000 1.81269246922 3.29679953964 4.51188363906 5.50671035883 6.32120558829 6.98805788088 7.53403036058 7.98103482005 8.34701111778 8.64664716763 8.89196841638 9.09282046711 9.25726421786 9.39189937375 9.50212931632 9.59237796022 9.66626730040 9.72676277553 9.77629228144 9.81684361111 9.85004423180 9.87722660097 9.89948164255 9.91770252951 9.93262053001 9.94483435579 9.95483419057 9.96302136284 9.96972445255 9.97521247823 9.97970569364 9.98338442727 9.98639631962 9.98886224852 9.99088118034
I 10.0 8.18730753078 6.70320046036 5.48811636094 4.49328964117 3.67879441171 3.01194211912 2.46596963942 2.01896517995 1.65298888222 1.35335283237 1.10803158362 0.907179532894 0.742735782143 0.608100626252 0.497870683679 0.407622039784 0.333732699603 0.273237224473 0.223707718562 0.183156388887 0.149955768205 0.122773399031 0.100518357446 0.0822974704902 0.0673794699909 0.0551656442076 0.0451658094261 0.0369786371648 0.0302755474538 0.0247875217667 0.020294306363 0.0166155727317 0.0136036803755 0.0111377514784 0.00911881965555
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 >>>
12
9.99253414192 9.99388747239 9.99499548567 9.99590265021 9.99664537372 9.99725346430 9.99775132676 9.99815894206 9.99849266925 9.99876590196 9.99898960598 9.99917275934 9.99932271264 9.99944548401 9.99954600070 9.99962829681 9.99969567517 9.99975083990 9.99979600497 9.99983298299 9.99986325804 9.99988804515 9.99990833912 9.99992495442 9.99993855788 9.99994969544 9.99995881411 9.99996627985 9.99997239227 9.99997739671 9.99998149399 9.99998484856 9.99998759505 9.99998984369 9.99999168471 9.99999319202 9.99999442610 9.99999543647 9.99999626370 9.99999694098 9.99999749548 9.99999794948 9.99999832117 9.99999862549 9.99999887465 9.99999907864 9.99999924565 9.99999938239 9.99999949435 9.99999958601 9.99999966105 9.99999972249 9.99999977280 9.99999981398 9.99999984770 9.99999987531
0.00746585808377 0.0061125276113 0.00500451433441 0.0040973497898 0.00335462627903 0.00274653569972 0.00224867324179 0.00184105793668 0.00150733075095 0.00123409804087 0.00101039401837 0.000827240655566 0.000677287364909 0.000554515994322 0.000453999297625 0.000371703186841 0.000304324830084 0.000249160097315 0.000203995034112 0.000167017007902 0.000136741960657 0.000111954848426 9.16608773625e-05 7.50455791508e-05 6.14421235333e-05 5.03045560711e-05 4.11858870754e-05 3.37201523414e-05 2.76077257204e-05 2.26032940698e-05 1.85060119758e-05 1.51514411214e-05 1.24049507996e-05 1.015631471e-05 8.31528719104e-06 6.80798134398e-06 5.57390369269e-06 4.5635263679e-06 3.73629937989e-06 3.05902320502e-06 2.50451637233e-06 2.05052457561e-06 1.67882753e-06 1.37450772792e-06 1.12535174719e-06 9.21360083457e-07 7.54345834984e-07 6.17606133558e-07 5.05653134834e-07 4.13993771879e-07 3.3894943262e-07 2.77508324224e-07 2.27204599277e-07 1.86019392669e-07 1.52299797447e-07 1.24692527858e-07
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
f) výpočet nezatíženého děliče napětí print " vypocet vystupniho napeti na nezatizenem delici napeti" r1=float(raw_input("zadej hodnotu r1 v ohmech ")) r2=float(raw_input("zadej hodnotu r2 v ohmech ")) u=float(raw_input("zadej hodnotu vstupniho napeti ve V ")) uvyst=u*r2/(r1+r2) print print "Vystupni hodnota napeti je ",uvyst,"V"
Výsledek běhu programu: Python2.6(r26:66721, Oct2 2008,11:35:03)[MSC v.1500 32 bit (Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet vystupniho napeti na nezatizenem delici napeti zadej hodnotu r1 v ohmech 6 zadej hodnotu r2 v ohmech 6 zadej hodnotu vstupniho napeti ve V 10 Vystupni hodnota napeti je >>>
5.0 V
g) výpočet zatíženého děliče napětí print "zatizeny delic napeti" print u=float(raw_input("zadej napajeci napeti ve r1=float(raw_input("zadej odpor R1 v ohmech r2=float(raw_input("zadej odpor R2 v ohmech rz=float(raw_input("zadej odpor RZ v ohmech
V ")) ")) ")) "))
r=r1+(r1*rz)/(r2+rz) i=u/r uv = u* (r2*rz)/(r1*r2+rz*r2+r1*rz) print print "vystupni proud ",i,"A" print "vystupni napeti ",uv,"V" print print “konec vypoctu“
13
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Výsledek běhu programu: Python2.6(r26:66721, Oct2 2008,11:35:03)[MSC v.1500 32 bit (Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> zatizeny delic napeti zadej zadej zadej zadej
napajeci odpor R1 odpor R2 odpor RZ
napeti ve V 10 v ohmech 10000 v ohmech 10000 v ohmech 80000
vystupni proud 0.000529411764706 A vystupni napeti 4.70588235294 V konec vypoctu >>>
h) výpočet rezonance import math print "vypocet rezonancniho kmitoctu " c= float(raw_input("zadej hodnotu kondenzatoru v F ")) l= float(raw_input("zadej hodnotu civky v H ")) f=1/(2*math.pi*math.sqrt(l*c)) print print " rezonancni kmitocet je ",f,"Hz" print
Výsledek běhu programu: Python2.6 r26:66721,Oct 2 2008,11:35:03)[MSC v.1500 32 bit (Intel)]on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE 2.6.2 >>> ============================== RESTART ================================ >>> vypocet rezonancniho kmitoctu zadej hodnotu kondenzatoru v F 1e-6 zadej hodnotu civky v H 1e-8 rezonancni kmitocet je 1591549.43092 Hz >>>
14
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10
Použitá literatura: Skalická, Škop Python, učební texty SPŠE, V Úžlabině 320, rok 2007 Skalická,Škop Python - rozšířené vydání, učební texty SPŠE, V Úžlabině 320, rok 2008 Škop Výuka programování na střední škole, Závěrečná práce studia DPS, Pedf UK, rok 2008
15
© Střední průmyslová škola elektrotechnická, V Úžlabině 320 Praha 10