Transcript
Page 1: Tvorba učebního textu MATLAB

Č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

Page 2: Tvorba učebního textu MATLAB

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

....................................

Page 3: Tvorba učebního textu MATLAB

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.

Page 4: Tvorba učebního textu MATLAB

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

Page 5: Tvorba učebního textu MATLAB

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.

Page 6: Tvorba učebního textu MATLAB

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.

Page 7: Tvorba učebního textu MATLAB

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í

Page 8: Tvorba učebního textu MATLAB

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.

Page 9: Tvorba učebního textu MATLAB

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.

Page 10: Tvorba učebního textu MATLAB

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

Page 11: Tvorba učebního textu MATLAB

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

Page 12: Tvorba učebního textu MATLAB

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);

Page 13: Tvorba učebního textu MATLAB

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.

Page 14: Tvorba učebního textu MATLAB

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

Page 15: Tvorba učebního textu MATLAB

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

Page 16: Tvorba učebního textu MATLAB

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

Page 17: Tvorba učebního textu MATLAB

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

Page 18: Tvorba učebního textu MATLAB

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

Page 19: Tvorba učebního textu MATLAB

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

Page 20: Tvorba učebního textu MATLAB

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:

Page 21: Tvorba učebního textu MATLAB

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

Page 22: Tvorba učebního textu MATLAB

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.

Page 23: Tvorba učebního textu MATLAB

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.

Page 24: Tvorba učebního textu MATLAB

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.

Page 25: Tvorba učebního textu MATLAB

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.

Page 26: Tvorba učebního textu MATLAB

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>.

Page 27: Tvorba učebního textu MATLAB

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>.


Recommended