Upload
ladislav-prskavec
View
253
Download
10
Embed Size (px)
DESCRIPTION
Bakalarska prace
Citation preview
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
MASARYKŮV ÚSTAV VYŠŠÍCH STUDIÍ
Katedra inženýrské pedagogiky
Tvorba učebního textu MATLAB Bakalářská práce
Vedoucí práce: Prof. RNDr. Emanuel Svoboda, CSc.
Vypracoval: Ing. Ladislav Prskavec únor 2003
2
Prohlašuji, že jsem bakalářskou práci zpracoval(a) samostatně a uvedl(a)
veškeré použité prameny a použitou literaturu.
Byl(a) jsem seznámen(a) s tím, že se na moji práci vztahují práva a
povinnosti vyplývající ze zákona č.121/2000 Sb., zejména se skutečností, že MÚVS
ČVUT má právo na uzavření licenční smlouvy o užití této práce jako školního díla
podle § 60 odst. 1 autorského zákona, a s tím, že pokud dojde k užití této práce
mnou nebo bude poskytnuta licence o užití jinému subjektu, je MÚVS ČVUT
oprávněn ode mě požadovat přiměřený příspěvek na úhradu nákladů, které na
vytvořené dílo vynaložil a to podle okolnosti až do jejich skutečné výše.
Souhlasím s prezenčním zpřístupněním na katedře inženýrské pedagogiky
MÚVS ČVUT.
V Praze dne 28.01.2003 Ing. Ladislav Prskavec
....................................
3
Anotace
Tento text pojednává o tvorbě textu pro nový předmět, který je zaměřen na řešení
problémů pomocí počítačového algebraického systému MATLAB. Text je zaměřen
na základy práce, snaží se o jednouchý, ucelený a názorný výklad s možností
rozšíření problematiky na další moduly MATLABu. Část textu se věnuje výuce
předmětu, kde je MATLAB vyučován, a jsou zde mé zkušenosti se studenty a
výsledky jejich práce s hodnocením.
Annotation
This thesis deals with creating text for new subject that it aimed at problem solving
by computer algebra system MATLAB. Text is aimed at basis work with it. It tries
about simple, compact and illustration interpretation with possibility extension to
more toolbox of MATLAB. Part of text presents education’s experiences with
students and it presents results of exercises with classifications.
4
Obsah
1 Úvod ...................................................................................................................5
2 Příprava na tvorbu učebního textu .....................................................................6
2.1 Posouzení a hodnocení ..............................................................................6
2.2 Požadavky na nový text..............................................................................6
3 Tvorba učebního textu........................................................................................7
3.1 Co je Matlab ?.............................................................................................7
3.2 Systém MATLAB ........................................................................................7
3.3 Dokumentace..............................................................................................8
3.4 Základní funkce ..........................................................................................9
3.5 Výuka........................................................................................................20
3.6 Učitel - zadání a vyhodnocení ..................................................................20
3.7 Žák - pochopení zadání a vypracování úloh.............................................22
4 Závěr ................................................................................................................25
5 Literatura ..........................................................................................................26
5
1 Úvod Tato práce si klade za cíl vytvořit text pro výuku předmětů, kde je používán
počítačový algebraický systém MATLAB [19], zvláště pak bude použit pro výuku
nového předmětu, který je v návrhu poslední přestavby studia na ČVUT FEL pro
obor silnoproudá elektrotechnika. Vytvořený text je zaměřen na základy práce
s MATLABem a je určen pro všechny studenty elektrotechniky.
MATLAB je integrované prostředí pro vědeckotechnické výpočty, modelování,
návrhy algoritmů, simulace, analýzu a prezentaci dat, měření a zpracování signálů,
návrhy řídicích a komunikačních systémů. MATLAB je nástroj, jak pro pohodlnou
interaktivní práci, tak pro vývoj širokého spektra aplikací.
Program existuje řadu let a prošel dlouhým vývojem. Vlastní Matlab není jen v jedné
linii základního programu, ale používá se spousta rozšíření (toolbox). Nejznámější a
asi nejpoužívanější je Simulink.
Simulink je program pro simulaci a modelování dynamických systémů, který využívá
algoritmy Matlabu pro numerické řešení nelineárních diferenciálních rovnic.
Poskytuje uživateli možnost rychle a snadno vytvářet modely dynamických soustav
ve formě blokových schémat a rovnic.
V poslední době se také rozšířila nabídka výrobce [19] o produkt FEMLAB švédské
společnosti COMSOL. FEMLAB je nadstavba MATLABu, která využívá jeho
matematických funkcí a grafického prostředí k modelování a k simulaci úloh z
technické praxe v oblasti strojírenství, chemie, elektromagnetismu a z dalších
oblastí fyziky. FEMLAB usnadňuje pochopení řady fyzikálních a technických
procesů díky názorné grafice, snadné změně vstupních parametrů a možnosti
simulace dané úlohy. Na řešení je možné v krátké době pohledět z několika zorných
úhlů a efektivně tak najít optimální variantu.
Výhoda Matlabu je nejen v jeho velkých možnostech, ale i v tom, jak je široce
rozšířen v průmyslu a jeho verze existují pro řadu operačních systémů (Unix, Linux,
Windows, Open VMS, IRIX, Solaris, Macintosh, HP-UX a další). Matlab je komerční
software, ale existuje i jeho GNU (general public license) varianta Octave [22]. Není
to samozřejmě to samé, ale syntaxe příkazů a práce s tímto produktem je stejná
jako v Matlabu, chybí další nadstavby a vylepšení, ale pro samotné výpočty je to
velmi zajímavý nástroj. Hlavně je zdarma a tak přístupnější studentům i pro domácí
použití. Studenti mají možnost také výhodně si pořídit studentskou verzi Matlabu,
kde je rovněž velmi výhodná cena proti komerční verzi.
6
2 Příprava na tvorbu učebního textu Tvorbu nového učebního textu jsem rozdělil do dvou částí. V 2.1 se zabývám
problematikou existence stávajících textů a manuálu k Matlabu a jejich hodnocení
s přihlédnutím na subjektivní pohled z hlediska elektrotechniky. V 2.2 si stanovuji
požadavky na nově vytvářený text.
V části 3 následuje tvorba jednotlivých kapitol textu, který je zaměřen na základy
práce s Matlabem a postihuje rozsah znalostí potřebných pro vypracování úloh.
2.1 Posouzení a hodnocení
Vzhledem k tomu, že výrobce produkuje přibližně každý rok nějaký update
programu, přibudou nové funkce, vylepšení a nové nadstavby, bylo potřeba vytvořit
nový text pro výuku, který bude aktuální. Prostudoval jsem dostupnou literaturu
v češtině a slovenštině [6],[9],[10] a později jsem se dostal i k zahraniční literatuře,
kde jednoznačně dominuje asi jako nejlepší kniha [8].Napsaná je velmi dobře a
podrobně. Důležité bylo nalézt také vhodné příklady, které by byli bližší studentům
elektrotechniky a ty jsem našel v knize [11], která je koncipována jako text pro
strojaře a příbuzné obory. To co jsem nenašel v žádném textu je přímo
specializovaná kniha pro elektrotechniky se zaměřením na Matlab.
2.2 Požadavky na nový text
Ze zkušeností, které jsem čerpal z výuky Matlabu a z dostupné literatury, jsem si
stanovil tyto požadavky:
1 přehlednost
2 ucelenost
3 rozšiřitelnost
4 jednoduchost a názornost
Přehlednost textu je důležitá, aby se při studiu neztrácel přehled probírané
problematiky a zároveň se dalo při pozdějším nahlédnutí lehce najít příslušné heslo
či ukázka řešení problému. Ucelenost je v tom, že problémy nejsou jenom
nastíněny, ale obsahují přehledné a srozumitelné řešení. Rozšiřitelnost textu je
v tom, že stačí jednoduše připsat další kapitolu o novém toolboxu či rozšířit některé
tabulky s funkcemi. Jednoduchost a názornost je v tom, jak jsou problémy dány a
předvedeny na příkladech, od jednoduchých úloh až ke složitějším úlohám.
7
3 Tvorba učebního textu
3.1 Co je Matlab ?
MATLAB® [4] je vysoce výkonný jazyk pro technické výpočty. Integruje výpočty,
vizualizaci a programování do jednoduše ovladatelného prostředí, kde problémy a
řešení jsou vyjádřeny pomocí dobře známých matematických vztahů. Typické
použití zahrnuje:
• Matematiku a výpočty
• Tvorba algoritmů
• Získávání dat
• Modelování a simulace
• Analýza dat, výzkum a vizualizace
• Vědecká a inženýrská grafika
• Tvorba aplikací, včetně grafického rozhraní
MATLAB je interaktivní systém,který umožňuje práci s poli, které není potřeba
dimenzovat. To umožňuje řešit mnoho technických problémů s použitím formulací
pomocí vektorů a matic. Ve zlomku času se dají napsat programy podobně jako v C
nebo ve Fortranu.
Jméno MATLAB je zkratka z slov „matrix laboratory“. MATLAB byl vyvinut před lety
s podněty od mnoha uživatelů. V univerzitním prostředí je to standardní instruktážní
nástroj v úvodních a pokročilých kursech matematiky, techniky a vědy. V průmyslu
je to vysoce produktivní nástroj pro výzkum, výrobu a analýzu.
3.2 Systém MATLAB
Systém MATLAB se skládá z pěti hlavních částí:
Vývojové prostředí. Tato sada nástrojů a prostředků pomáhá v práci s funkcemi a
soubory. Mnoho těchto nástrojů má grafické uživatelské prostředí. To zahrnuje
plochu MATLABu, příkazové okno, historii příkazů, editor, ladící software a prohlížeč
helpu, plochy, souborů a vyhledávácí cesty.
Knihovna matematických funkcí MATLABu. To je obrovská sada výpočetních
algoritmů v rozsahu od elementárních funkcí jako suma, sin, cos a komplexní
8
aritmetika k více sofistikovaným funkcím jako je inverze matice, vlastní čísla matice,
Besselovy funkce a rychlá Fourierova transformace.
Jazyk MATLAB. To je pokročilý jazyk pro práci s maticemi a poli s možností řízení
výpočtu. Jazyk umožňuje práci s datovými strukturami, s vstupem a výstupem. Je
zahrnuta podpora objektového programování. To umožňuje dvě věci, jak velmi
rychle udělat jednoduchý program tak vytvářet složité komplexní aplikace.
Grafika. MATLAB má rozsáhlé prostředky pro zobrazení vektorů a matic jako grafy,
právě tak jako možnosti popisu a tisku těchto grafů. MATLAB má mnoho funkcí pro
2D a 3D vizualizaci dat, zpracování obrazu, animací a prezentací grafiky.
Rozhraní MATLABu pro aplikační programy (API). Tato knihovna nám umožňuje
psát programy v C a ve Fortranu, které komunikující s MATLABem. To zahrnuje
prostředky pro volání podprogramů z MATLABu (dynamické linky), volání
výpočetního jádra MATLABu, a umožňuje čtení a zápis MAT souborů.
Obr. 3.1 Úvodní obrazovka
3.3 Dokumentace
Dokumentace je ve dvou podobách jako on-line help a ve formátu pro tisk (pdf),
online dokumentace obsahuje taky mnoho příkladů. Dokumentace MATLABu je
rozdělena do těchto hlavních částí (názvy jsou dle dokumentace v angličtině):
• Development Environment - Poskytuje kompletní informace o pracovní ploše
MATLABu.
9
• Mathematics - V této části jsou popsány matematické a statistické
schopnosti MATLABu.
• Programming and Data Types - Popisuje jak psát skripty a funkce v jazyku
MATLABu.
• Graphics - V této části jsou popsány možnosti grafického výstupu MATLABu.
• 3-D Visualization - Tato část popisuje použití pohledů, světla a průhlednosti
a dalších grafických možností ve 3D.
• Creating Graphical User Interfaces - Zde je popsáno jak vytvářet grafické
rozhraní.
• External Interfaces/API - Popisuje propojení MATLABu s programy v jazyce
C a Fortran, Java třídy a objekty, COM objekty, datové soubory, sériový port
I/O a DDE.
3.4 Základní funkce
• pro přerušení prováděného příkazu CTRL+C
• klávesy šipka nahoru/dolu umožňují pohyb po historii příkazů
• editace řádku se provádí šipkami vlevo/vpravo, klávesami delete, backspace
• klávesa ESC vymaže celý řádek
• proměnné v MATLABu musí začínat písmenem a mohou mít až 31 znaků
• rozlišují se malá a velká písmena
• příkaz ukončený středníkem (;) se nevypisuje na obrazovku
3.4.1 Jednoduchá matematika
V tab.1 jsou základní operace a pro běžné matematické operace, s tím rozdílem, že
MATLAB pracuje stejně s čísly tak se proměnnými, které mu nadefinujeme (např.
a=5, b=3). Pro kombinace proměnných a reálných čísel zapisujeme 5*a. Pokud
zapomene symbol pro násobení, nastane chyba.
10
Operace Symbol Příkladsčítání, a+b + 3+22odčítání, a-b - 90-54násobení, a·b * 3.14*0.85dělení, a÷b / nebo \ 56/8=8\56mocnění, ab ^ 2^8
Tab. 1
V tab.2 jsou různé předem nadefinované proměnné, které se využijí při výpočtu.
Kromě známých pi (Ludolfovo číslo) a komplexních jednotek (i nebo j) jsou tam
další, které souvisí s numerickou matematikou počítačů (eps, realmin, realmax, inf,
NaN, flops). Důležité jsou inf (nekonečno) a Nan (neplatná numerická operace) se
kterými se můžeme při výpočtech častěji setkat. Přetypování speciálních
proměnných je možné a jejich hodnota se obnoví po vymazání proměnné se
stejným názvem (clear nebo clear proměnná).
Nejdůležitější část každého počítačového algebraického systému (PAS) jako je
MATLAB je nápověda (help). Příkazy pro práci s nápovědou jsou v tab. 3, dále
v programu funguje standardní nápověda, kterou vyvoláme přes menu (help >
MATLAB help).
Speciální proměné Popisans proměnná k uložení výsledkupi poměr obvodu a poloměrueps nejmenší použitelné čísloflops počet operacíinf označení pro nekonečno (např. 1/0)Nan (nebo) nan označení nedefinované hodnoty (např. 0/0)i (a) j komplexní jednotkanargin počet vstupních parametrů funkcenargout počet výstupních parametrů funkcerealmin nejmenší použitelné kladné realné číslorealmax největší použitelné kladné realné číslo
Tab. 2
Příkaz Popishelp nápověda, výpis příkazů a funkcíhelp příkaz nápověda konkrétního příkazuhelpwin nápověda v oknělookfor hledá klíčové slovo v helpuinfo informace o Matlabu a fa Mathworks
Tab. 3
11
Komplexní funkce Popisabs absolutní hodnota nebo velikostangle fázový úhel v radiánechconj komplexně sdruženýimag imaginární část kompexního číslareal reálná část kompexního číslaunwrap konverze na stejný fázový úhel (ϕ+2πn)isreal je true pro reálná polecplxpair setřídí vektor podle velikostí realných částí
Tab. 4
Exponenciální funkce Popisexp exponenciální fcelog logaritmická fce se základem e (e=2.7183)log10 logaritmická fce se základem 10log2 logaritmická fce se základem 2pow2 mocnina na druhou o základě 2sqrt druhá odmocninanextpow2 nejbližší vyšší druhá mocnina
Tab. 5
Pro práci s komplexními čísly slouží funkce v tab.4, komplexní číslo se zapisuje ve
tvaru a+j*b nebo a+i*b. Obdobně jako pro práci s komplexními čísly jsou k dispozici
další funkce, které bychom mohli potřebovat, po podrobném prostudování
nápovědy, zjistíte, že nechybí téměř nic. A co chybí si můžete sami naprogramovat.
V další tabulkách jsou funkce pro prácí s exponenciálními funkcemi (tab.5), funkce
pro transformaci souřadnic (tab.6), různé funkce pro práci s zlomky, prvočísly či
permutacemi (tab.7).
Transformace souřadnic
Popis
cart2sph z kartézských do sférickýchcart2pol z kartézských do polárních, cylindrickýchpol2cart z polárních do kartézskýchsph2cart z sférických do kartézských
Tab. 6
12
Funkce Popisfactor rozklad na prvočíslaisprime je true pro prvočíslaprimes seznam prvočíselgcd největší společný dělitellcm nejmenší společný násobekrat aproximace zlomkemrats vyjádření zlomkemperms permutacenchoosek n nad k
Tab. 7
3.4.2 Formátování, práce s vstupem a výstupem
Pro zobrazení čísel používán příkaz format (tab.8 – ukázka formátování čísla PI
pro různé druhy formátů). MATLAB si uchovává přesnou reprezentaci čísel
v paměti, ale jak je chceme zobrazit a pracovat s nimi je na uživateli.
V pracovní ploše vidíme aktuálně definované proměnné, které si můžeme vypsat
také pomocí příkazu who (vypíše seznam existujících jmen) a whos (opět seznam
jmen, s velikostí).
Pro práci s MATLABem jsou možné dva přístupy, buď jednoduše zadáváme příkazy
v okně příkazů (command window) a počítáme. To má nevýhodu v tom, že pokud
chceme tento výpočet zopakovat, tak musíme vše napsat znovu. Proto se používá
spíše druhý způsob a to je vytváření souborů s příponou .m (m-file). Je to textový
soubor, který obsahuje sled příkazů v MATLABu.
Pokud chceme napsat speciální funkci musíme ji vytvořit jako samostatný soubor a
musí mít tuto syntaxi.
Zápis funkce:
function [out1, out2, ...]=jmeno_fce (in1, in2, ...) příkazy end;
Potom funkci můžeme volat:
[x1,x2]=jmeno_fce(a,b,c); [x1,x2]=jmeno_fce(2,6,32);
13
Matlab příkaz piformat short 3.1416format long 3.14159265358979format short e 3.1416e+000format long e 3.141592653589793e+000format short g 3.1416format long g 3.14159265358979format hex 400921fb54442d18format bank 3.14format + +format rat 355/113
Tab. 8
M-file vytvoříme jednoduše pomocí menu (File > New > M-file). Otevře se okno
editoru, kde se dají psát příkazy, které spustíme stiskem klávesy F5, nebo přes
menu (Debug > Run). Příkazy se provedou a výpis uvidíme v okně příkazů, pokud
jsme výstup nepřesměrovali např. do souboru. M-file se dá spustit také zadáním
jména souboru (bez přípony .m) v okně příkazů. Důležité je aby byl soubor
v aktuálním adresáři, to si zjistíme pomocí příkazů z tab.10. Použijeme cd pro
aktuální adresář a dir pro výpis souborů. Pro výpis obsahu souboru můžeme
použít příkaz type.
Funkce Popisdisp(proměnná) zobrazení proměnnéecho on, off ve skriptu vypis příkazů do příkazového oknainput výzva k vložení hodnotykeyboard dočasné použití klávesnice, návrat returnpause čeka na stisk jakékoliv klávesypause(n) čekat n sekundwaitforbuttonpress čeká dokud nestiknete tlačítko myši nebo klávesu
Tab. 9
V tab.9 jsou příkazy, které se využijí při psaní skriptů (m-file). Pro psaní můžeme
využít znalosti z programování příkazy typu if-then, cykly apod. tu také existují. Stačí
jednoduše v okně příkazů napsat help if a vypíše se část helpu s ukázkou
syntaxe tohoto příkazu, obdobně můžeme postupovat u ostatních.
14
Manipulace se soubory Popiscd (nebo) pwd zobrazí aktuální cestup = cd aktuální cesta v řetezci pdelete soubor.m vymaže soubor.mdir (nebo) ls zobrazí soubory v aktuálním adresářid = dir soubory v aktuální cestě ve struktuře dexist('cow','file') kontroluje existenci souboru cow.mexist('dname','dir') kontroluje existenci adresáře dnamep = matlabroot aktuální cesta k programu Matlab v řetezci ptype cow vypíše soubor cow.mwhat vypíše soubory *.mwhich cow zobrazí cestu k souboru cow.m
Tab. 10
3.4.3 Práce s vektory a maticemi
MATLAB je maticová laboratoř a proto jsou tu všechna čísla reprezentovaná jako
vektory a matice.
a = [1;2;3;4;5] - sloupcový vektor
c = [1,2,3,4,5] - řádkový vektor
b = [1,2,3,4,5]’ - transpozice řádkového vektoru
Rozdíl je v tom zda pracujeme s nimi jako s vektory a maticemi jak to známe
z algebry nebo jako s poli známé nám z programování. Obě možnosti jsou možné a
je potřeba je často zkombinovat. Důležité je ale stále si uvědomovat ten rozdíl.
V tab.11 jsou uvedeny příkazy pro konstrukci pole či vektoru, případně matice pokud
použijeme tuto konstrukci např. v cyklu. Často budeme využívat definici hodnot x
pro tvorbu grafů funkcí.
Konstrukce pole Popisx=[2 2*pi sqrt(2) 2-3j] vytvoří řádkový vektor x obsahující specifické hodnotyx=prvni:posledni vytvoří řádkový vektor x začínající na prvni, přičítá
jedničku, končí hodnotou poslednix=prvni:prirustek:posledni vytvoří řádkový vektor x začínající na prvni, přičítá se
prirustek, končí na poslednix=linspace(prvni,posledni,n) vytvoří řádkový vektor x začínající na prvni, končící
posledni, pole obsahuje n prvkůx=logspace(prvni,posledni,n) vytvoří řádkový vektor x začínající na 10prvni, končící
10posledni, pole obsahuje n prvků Tab. 11
Pokud máme matici či vektor vytvořený můžeme s ním provádět různé operace:
a(2) - zjištění hodnoty 2 prvku vektoru a
15
c(5)=x(2,3) - hodnotu z druhého řádku a třetího sloupce matice x dej do pátého
prvku vektoru c
x (2:5, 1:2) - vytvoření matice s kterou budeme dále pracovat
y=x(3,:) - vyjmi třetí řádek, ulož do proměnné y a vypiš
diag(y) - prvky na diagonále
Dataa=[a1 a2 ... an], b=[b1 b2 ... bn],
c - skalárskalární součet a+c = [a1+c a2+c ... an+c]skalární součin a*c = [a1*c a2*c ... an*c]pole - sčítání a+b = [a1+b1 a2+b2 ... an+bn]pole - součin a.*b = [a1*b1 a2*b2 ... an*bn]pole - dělení zprava a./b = [a1/b1 a2/b2 ... an/bn]pole - dělení zleva a.\b = [a1\b1 a2\b2 ... an\bn]pole - mocnění a.^c = [a1^c a2^c ... an^c]
c.^a = [c^a1 c^a2 ... c^an]a.^b = [a1^b1 a2^b2 ... an^bn]
Operace prvek po prvku
Tab. 12
Další operace jsou specifické pro práci s poli (tab.12), kdy se provádějí operace
prvek po prvku jako u programování. Musí se dát pozor a nezaměnit s maticovými
operacemi.
det - determinant matice
inv - inverze matice
´ - operátor transpozice (apostrof)
.’ - transpozice prvek po prvku (sdružená transpozice, rozdílná od transpozice v komplexních číslech)
sqrtm - maticová odmocnina
expm - maticová exponenciála
logm - logaritmus matice
poly - charakteristický polynom
size - rozměry matice
roots - vlastní čísla charakteristického polynomu
max - maximální prvek matice
* - maticové násobení
.* - násobení prvek po prvku
^ - maticové mocnění
.^ - mocnění prvek po prvku
\, / - dělení zleva, zprava
16
.\ - dělení zleva prvek po prvku
./ - dělení zprava prvek po prvku
kron - Kroknerovo tenzorové násobení
3.4.4 Práce s grafikou
Pro práci s grafikou je asi nejdůležitější funkce plot. Pomocí této funkce nakreslit
graf je velmi jednoduché.
x=linspace(0,2*pi,30); % definice hodnot x y=sin(x); % výpočet hodnot y plot(x,y); title(’Sin(x)’); % vykreslení a přidání nadpisu
0 2 4 6 8 10 12 14-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Sin(x)
Obr. 3.2 – Funkce Sin(x)
Pokud chceme použít plot(x,y,’b:p’,x,z,’c-’,x,z,’m+’) v rozšířené
formě využijeme tab.13, kde jsou definice různých barev, symbolů a čar, které lze
použít.
Symbol Barva Symbol Ukazatel Symbol Styl čáryb modrá . bod - plnág zelená o kruh : tečkovanár červená x kříž -. čerchovanác modrozelená + plus -- čárkovanám fialová * hvězday žlutá s čtvereck černá d diamandw bílá v trojúhelník (dolu)
^ trojúhelník (nahoru)> trojúhelník (vpravo)< trojúhelník (vlevo)p pentagramh hexagram
Tab. 13
17
Pro práci s grafikou lze použít dalších mnoho funkcí, lze kreslit ve 3D (plot3), ale
to není náplň tohoto učebního textu, nesnažíme se o manuál, protože ten dodává
výrobce, ale o určitý styl práce o pochopení programu a umění ho využívat na více
než jedno procento.
Ukázku některých těchto dalších funkcí pro práci s grafikou naleznete v této části i
s příklady.
uhel=[45 0 90 150 230 300]; velikost=[5 7 10 6 12 8]; rad_uhel=uhel*pi/180; % převod na radiány [x,y]=pol2cart(rad_uhel,velikost); compass(x,y); t=0:0.01:2*pi; polar(t,abs(sin(2*t).*cos(2*t)));
Obr. 3.3 – Ukázka kreslení pomocí funkce compass a funkce polar
z=peaks; subplot(1,2,1); [C,h]=contour(z,10); clabel(C,h); axis square subplot(1,2,2); [C,h]=contourf(z,10); caxis([-10,10]); axis square
Obr. 3.4 – Ukázka příkazu contour a countourf, s použitím příkazu subplot
18
x=0:0.25:10; subplot(2,1,1) stairs(x,sin(x)); subplot(2,1,2) stem(x,sin(x))
Obr. 3.5 Ukázka příkazu stairs (schody) a stem (stonek)
Y=[6 3 2;9 6 4;7 5 4;5 6 5;4 3 2]; bar3(Y) xlabel('Osa x'), ylabel('Osa y'), zlabel('Osa z'), axis normal
Obr. 3.6 Ukázka příkazu bar3
19
clear; clc; t=0:pi/50:10*pi; plot3(t.*sin(t),t.*cos(t),t) xlabel('osa x') ylabel('osa y') title('Prubeh funkce') grid
Obr. 3.7 Ukázka příkazu plot3
x=[-pi/2:pi/20:pi/2]; y=x; [X,Y]=meshgrid(x,y); Z=cos(X.^2+Y.^2); subplot(1,2,1); mesh(x,y,Z); axis square; subplot(1,2,2); surf(x,y,Z); axis square;
Obr. 3.8 Ukázka příkazu mesh a surf
20
3.5 Výuka
Výuku MATLABu jsem rozdělil do tří částí. V první části je teoretické seznámení
s celou šířkou látky, kde mohou studenti, kteří problematiku znají, zjistit zda pro ně
má smysl navštěvovat cvičení a zda jim nestačí vypracovat zadanou práci. Také
v první části zadám práci, která se odevzdá na konci semestru. Zadání postihuje
celou šíři dovedností s MATLABem a obsahuje několik úloh.
V druhé části se věnuji na cvičení postupně každé důležité části MATLABu, na
různých příkladech si procvičujeme práci s jednotlivými částmi a funkcemi.
Probereme většinu toho, co potřebují k tomu, aby mohli velmi dobře zvládnout
zadanou práci a dovedli se zorientovat pokud mají nový problém, který by chtěli
řešit. Neopomeneme také zdůraznit chyby a úskalí práce s počítačovým
algebraickým systémem.
Třetí část je samostatná práce na zadané práci a její kontrola. Zadaná práce není
jen o tom získat potřebné dovednosti, ale taky uplatnit své technické schopnosti a
dovednosti. Vyžaduje se po studentech, aby se drželi správných technických
postupů a náležitostí. Zvláště je to vidět u různého přístupu žáků k práci.
Předpokladem pro zvládnutí práce s MATLABem je základní znalost programování.
Dále pak znalost matematiky a to zvláště algebry pro práci s maticemi. Studenti by
měli vědět něco o numerických metodách řešení úloh a případně je vhodné
zahrnout krátké seznámení se základními numerickými metodami používanými
v MATLABu.
3.6 Učitel - zadání a vyhodnocení
Důležité je snažit se o to aby zadání bylo co možná nejméně komplikované a
přehledně rozčleněno, aby studenti snáze pochopili. Ukázka zadání je v 3.6.1 a
následují v 3.6.2 všeobecné pokyny, které mají usnadnit práci učiteli i žákům, kteří
jsou dost vytížení různými dalšími pracemi. Hodnocení práce bylo stanoveno na
základě toho zda dokázali studenti dodržet všechny formální stránky zadání,
funkčnost úloh, případné inovace. Nové nápady či originalita řešení byla hodnocena
body navíc.
3.6.1 Zadání
1 Vypracujete úlohu, která bude kreslit zadané funkce f1, f2, f3, f4. Výsledný
obrázek bude obsahovat plochu rozdělenou na 4 menší části (subplot), které
obsahují následující grafy:
21
1.1 Graf funkcí f1, f2, f3 odlišené barvou, stylem čáry a označením bodů. Graf
obsahuje legendu (název funkce např. Sin(x)), popis os (např. napětí (V)),
grafu (např. Obr.1) a případně mřížku.
1.2 Graf funkce f4 v logaritmickém měřítku (loglog, semilogx, semilogy).
Graf obsahuje legendu (název funkce např. Sin(x)), popis os (např. napětí
(V)), grafu (např. Obr.1) a případně mřížku.
1.3 Graf funkce, jehož hodnoty jsou uloženy v souboru data_XX.dat. Graf
obsahuje legendu (název funkce např. Sin(x)), popis os (např. napětí (V)),
grafu (např. Obr.1) a mřížku. (kde XX označuje vaše číslo úlohy, první sloupec
jsou hodnoty osy x (čas) a druhý sloupec osy y (napětí)).
1.4 Graf funkce f1, f2. Popisky grafu vylepšíte pomocí funkce text s příslušnými
popiskami (např. text(’\leftarrow Sin(x)’)), graf popis os (např.
labelx(’napětí(V)’)), grafu (např. title(’Obr.1’)) a případně
mřížku.
Funkce zvolte podle uvážení s ohledem na toto zadání:
f1 - trigonometrická funkce (např. Sin(x)-Cos(2x))
f2 - racionálně lomená funkce nebo polynom (např. x4-x3+3x2-5x-7)
f3 - jiná trigonometrická funkce (např. Sin(2x)-Cos(x2))
f4 - funkce dobře zobrazitelná v logaritmických souřadnicích (např. log, exp, tan, ...)
2 Proveďte modifikaci úlohy 1 tak, aby před spuštěním vykreslení se program
uživatele zeptal, co chce zobrazit (zobraz f1, zobraz f2, zobraz f3, zobraz f4,
zobraz f1,f2, zobraz f3, f4) a pak zobrazí grafy dle jeho volby. Pokud si uživatel
nevybere, tak se zobrazí obrázek dle předchozího zadání (úloha č.1).
Nezapomeňte, že plocha pro kreslení by měla být maximálně využita, žádný
subplot, pokud budete kreslit jeden graf. Nezapomeňte na popis os, grafu a
mřížku.
3 Dále proveďte modifikaci úlohy č.1 pomocí GUI builderu (guide) a jednotlivé
volby z klávesnice nahraďte tlačítky.
4 Proveďte tuto úlohu obdobně jako úlohu č.1, ale aspoň dva grafy pomocí
plot3, contour, surf nebo mesh, další dva grafy nakreslete pomocí bar,
fill3, stairs nebo stem. Před spuštěním kreslení se program uživatele
otáže, co chce zobrazit (zobraz f1, zobraz f2, zobraz f3, zobraz f4, zobraz f1,f2,
zobraz f3, f4) a pak zobrazí grafy dle jeho volby. Pokud si uživatel nevybere, tak
22
se zobrazí obrázek se všemi grafy. Pokud nechcete použít vstup z klávesnice,
použijte GUI. Nezapomeňte, že plocha pro kreslení by měla být maximálně
využita žádný subplot, pokud budete kreslit jeden graf. Nezapomeňte na
popis os, grafu a mřížku.
5 Vypracujte úlohu, která provede Gaussovu eliminaci matice po jednotlivých
krocích, které vypíše. Pro ukázku zvolte matici 4. řádu, algoritmus musí
fungovat pro jakoukoliv matici libovolného řádu, kontrola singularity matice není
nutná, pokud použijete náhodnou matici (rand). Mělo by to fungovat jak pro
čtvercovou matici n,n tak pro matici s pravou stranou. Celý program by měl být
jeden soubor ke spuštění a funkce, která bude provádět vlastní Gaussovu
eliminaci.
3.6.2 Všeobecné pokyny
Jednotlivé úlohy pojmenujte podobně student_1.m, student_2.m, student_3.m,
student_4.m, student_5.m (např. novakj3_1.m). Funkce pojmenujte libovolně.
Všechny úlohy plně funkční předvedete na posledních dvou cvičeních. Pro
odevzdaní si připravte všechny úlohy také v zip souboru s vaším emailovým
jménem (student.zip). Termín odevzdání dne 15.6. a 22.6. 20xx.
Jméno studenta… …
Novák Jan 12… …
Číslo úlohy
Tab. 3.14
3.7 Žák - pochopení zadání a vypracování úloh
Pro ty studenty, kteří se zúčastňovali pravidelně cvičení, by neměl být problém
v řešení úloh. Při odevzdání úloh jsem u některých řešení zaznamenal, že studenti
kteří i když nebyli ani na jednom cvičení vypracovali zadání výborně. Část studentů
vůbec nepochopila některé části zadání a ani se mnou své problémy nekonzultovali.
Část odevzdávala šest úloh místo pěti, některým něco chybělo nebo to nefungovalo.
Jeden student dokonce odevzdal zadaní z minulého roku a ani se nesnažil se
informovat o novém zadání. Nejzajímavější bylo, že nikdo se neozval na dotaz, zda
něčemu ze zadání nerozumí a ani později žádný emailový dotaz nepřišel.
23
3.7.1 Ukázky odevzdaných prací jednotlivých úloh
-3 -2 -1 0 1 2 3 4 5-4
-2
0
2
4
6
8
10
12
14
x
yf1f2f3
Obr. 3.9
Na obr.3.9 je ukázka toho jak to nemá vypadat. Popis os by měl obsahovat více
údajů nebo aspoň popis osa x,y, ale lépe veličinu a jednotku (např. čas (s)).
Legenda f1, f2, f3 je také nedostačující. Na první pohled má být z legendy zřejmé co
je to za graf jako je na obr.3.10.
V úloze kde zobrazovali studenti graf měřené funkce někteří ani nepochopili co
zobrazují a odevzdali graf, kde měli dvě série hodnot, ani si neuvědomili, že jedna
ze sérií jsou hodnoty osy x a druhá hodnoty osy y.
Studentům se to zdá u některých mých poznámek, že je to bazírování na
nepodstatných věcech, ale až časem pochopí jak důležité mohou být tyto maličkosti.
Zkušený technik musí z grafu vidět všechno podstatné bez toho, aby musel číst
nějaký doprovodný text nebo studovat tabulky s hodnotami. Ze svých zkušeností
z práce ve firmě, která se zabývá měření a poradenstvím v energetice jak může být
toto důležité. Zprávy nikdo moc podrobně nečte, nejdůležitější mít vše podstatné
v závěru a v obrázcích a grafech, aby se s toho dal vytvořit nějaký konkrétní názor
na měřenou problematiku.
24
-3 -2 -1 0 1 2 3 4 5-4
-2
0
2
4
6
8
10
12
14
Graf funkci f1, f2, f3
Cas (s)
Ampl
itud
a (-
)
Sin(x)-2*Cos(2x)Cos(4x)+8x2
Obr. 3.10
V dalších letech jsem obměnil způsob zadávání práce a mnohem více jsem při
výuce se soustředil na opakování těch důležitých návyků, které po studentech
vyžaduji a přineslo to lepší výsledky.
25
4 Závěr V závěru se chci věnovat nejenom zhodnocení práce, ale také tu poukázat na
zkušenosti, které jsem získal při výuce studentů. Když jsem začal učit první
předmět, který se věnoval MATLABu, převzal jsem materiály od předchozího
vyučujícího a snažil se je inovovat. Postupně jsem získal zkušenosti a začal jsem
pronikat do možností celého MATLABu a rozhodl jsem se předávat více zkušeností
studentům, kteří měli o něj zájem a používali své znalosti v dalším studiu. Rozšířil
jsem počet hodin, který je MATLABu věnován, trochu jsem ubral na nástavbě
Simulink v prvním předmětu a přesunul tuto další část do dalšího předmětu. Změnil
jsem systém zadávaní prací pro hodnocení studentů. Rozšířil jsem použití internetu
ve výuce. Zadání a vyhodnocení prací se obejde bez přímé účasti studenta. Ale
samozřejmě se mi to vrátilo v tom, že ne všichni studenti pochopili zadání správně a
s některými bylo dost práce, aby to bylo vůbec schopné hodnocení. Tento text není
učebnice, ale spíše jakási příručka a pomůcka pro studenta, který si nemusí
zapisovat spoustu údajů, které se dají najít jinde. Tento text by nemusel vzniknout,
pokud by všichni studenti uměli dobře anglicky a zároveň by byla finančně dostupná
kvalitní literatura jako jsou knihy [5],[7],[8],[10],[11]. Proto ale je tu tento text, který
slouží jako pomůcka k výkladu a jeho hlavní výhodou je, že je v něm zahrnuto to
nejdůležitější co budou potřebovat a co se na nich bude vyžadovat v dalších letech
studia, případně jim to ukáže cestu k dalšímu samostudiu. Do budoucna bych chtěl
přeměnit tento vyučovací text v plně fulltextový text přístupný na internetu.
26
5 Literatura
[1] Drahovzal J., Kilián O., Kohoutek R.: Didaktika odborných předmětů, ISBN
80-85931-35-4, Paido, Brno, 1997
[2] Švec V., Filová H., Šimoník O.: Praktikum didaktických dovedností, ISBN 80-
210-1365-6, Masarykova univerzita, Brno, 2000
[3] Maňák J.: Nárys didaktiky, ISBN 80-210-1661-2, Masarykova univerzita,
Brno, 1999
[4] Mathworks Inc.: MATLAB R13 HELP, Mathworks Inc., 2002
Skripta a knihy o Matlabu.
[5] Dabney James B., Harman Thomas L.: Mastering SIMULINK 4, Prentice-Hall ,
2001, ISBN 0-13-017085-2.
[6] Dušek F.: Matlab a Simulink úvod do používání, Univerzita Pardubice,
Bratislava, 2000, ISBN 80-7194-273-1.
[7] Hanselman D., Littlefield B.: Mastering MATLAB 5, Prentice-Hall , 1998,
ISBN 0-13-243767-8.
[8] Hanselman D., Littlefield B.: Mastering MATLAB 6, Prentice-Hall , 2001,
ISBN 0-13-019468-9.
[9] Kozák Š., Kajan S.: Matlab – Simulink I učebnice zaměřená na hlavní modul
Matlab, STU v Bratislavě, Bratislava, 1999, ISBN 80-227-1213-2.
[10] Kozák Š.: Matlab – Simulink II učebnice zaměřená na Control System
Toolbox, STU v Bratislavě, Bratislava, 1999, ISBN 80-227-1235-3.
[11] Palm W. J. III: Introduction To Matlab 6 For Engineers, McGraw-Hill, 2001,
ISBN 0-07-234983-2.
Články a materiály dostupné na internetu o Matlabu.
[12] Control Tutorials for Matlab [online] [cit. 11. března 2002] Dostupné na
internetu: <http://www.engin.umich.edu/group/ctm/>.
[13] Dr. Hadi Saadat Homepage [online] [cit. 11.dubna 2002] Dostupné na
internetu: <http://people.msoe.edu/~saadat/index.html>.
27
[14] GUI Programs with MATLAB for Electric Machines, Control Systems and
Electric Circuits courses [online] [cit. 11.dubna 2002] Dostupné na internetu:
< http://people.msoe.edu/~saadat/matlabgui.htm>.
[15] Humusoft – Web Pages [online] [cit. 11. března 2002] Dostupné na
internetu: <http://www.humusoft.cz>.
[16] Introduction to MATLAB and SIMULINK [online] [cit. 11.dubna 2002]
Dostupné na internetu: <http://people.msoe.edu/~saadat/Matlab.htm>.
[17] Konference MATLAB 2001-1999 [online] [cit. 14. dubna 2002] Dostupné na
internetu: <http://www.humusoft.cz/matlab01/sbor01.htm>.
[18] Mathtools – The technical computing portal [online] [cit. 16. dubna 2002]
Dostupné na internetu: <http://www.mathtools.net>.
[19] Mathworks – MATLAB Web Pages [online] [cit. 11. března 2002] Dostupné
na internetu: <http://www.mathworks.com>.
[20] MATLAB Tutorials [online] [cit. 11. března 2002] Dostupné na internetu:
<http://www.math.siu.edu/matlab/tutorials.html>
[21] Matlab Web Server [online] [cit. 11. března 2002] Dostupné na internetu:
<http://mws.felk.cvut.cz/>.
[22] GNU Octave [online] [cit.13. června 2002] Dostupné na internetu:
<http://www.octave.org>.