´ vod do Matlabu U
8. bˇrezna 2012
Obsah 1 Aplikace MATLAB
2
1.1
Popis oken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2
Pracovn´ı adres´aˇr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3
Nastaven´ı cesty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.4
Ikony editorov´eho okna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.5
Pr´ace v aplikaci MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.6
Podprogramy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.7
Datov´e soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.8
Pˇr´ıstup ke statistick´ ym funkc´ım MatStat . . . . . . . . . . . . . . . . . . . . . .
6
´ 2 Uvod do programov´ an´ı v jazyce MATLAB
8
2.1
´ Uvodn´ ı pozn´ amky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.2
Promˇenn´e a operace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.3
Programovac´ı pˇr´ıkazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4
Tiskov´ y v´ ystup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5
Grafick´ y v´ ystup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Pˇ r´ıklady program˚ u v jazyce MATLAB
1
13
1
Aplikace MATLAB
MATLAB je profesion´ aln´ı interaktivn´ı syst´em urˇcen´ y pro technick´e v´ ypoˇcty. Je vyroben a d´ ale ˇ vyv´ıjen firmou The MathWorks, Inc. a je chr´ anˇen americk´ ymi patenty. Skola jej m´ a leg´alnˇe zakoupen a studenti si ho mohou st´ ahnout a pouˇz´ıvat i doma. Je pˇritom tˇreba m´ıt trval´e pˇripojen´ı k internetu. Ke staˇzen´ı je na adrese https://download.cvut.cz/info/info.php kde je tˇreba se pˇrihl´ asit a pak hledat a hledat a · · ·. Doporuˇcujeme starˇs´ı verzi Matlab 2008 (m´ a lepˇs´ı symbolick´e poˇc´ıt´ an´ı). Provoz Matlabu mimo ˇskolu vyˇzaduje trval´e pˇrihl´ aˇsen´ı poˇc´ıtaˇce k internetu (pro pr˚ ubˇeˇzn´e ovˇeˇrov´an´ı hesla). Po spuˇstˇen´ı programu MATLAB se objev´ı integrovan´e okno aplikace:
1.1
Popis oken
V lev´e ˇc´asti aplikace je okno Current folder, kde se zobrazuj´ı podadres´aˇre a soubory pr´ avˇe aktivn´ıho adres´aˇre (jedn´ a se o adres´aˇr, kter´ y je vybr´an a zobrazen v b´ıl´em ok´enku v horn´ım pruhu ikon). 2
Ve stˇredn´ı ˇc´ asti aplikace se nach´ az´ı (nahoˇre) okno Editor, ve kter´em se edituj´ı programy a odkud je tak´e moˇzno je spouˇstˇet. N´ıˇze je pˇr´ıkazov´e okno Command window, ve kter´em je moˇzno interaktivnˇe zad´ avat pˇr´ıkazy a ve kter´em se tak´e objevuj´ı v´ ysledky program˚ u spuˇstˇen´ ych z editoru. V prav´e ˇc´ asti aplikace je otevˇreno okno s hodnotami promˇenn´ ych tzv. Workspace. Pod n´ım je editor promˇenn´ ych Variable editor, v nˇemˇz je moˇzn´e zad´ avat nebo upravovat sloˇzit´e promˇenn´e jako struktury nebo cell-vektory. Okna lze aktivovat nebo skr´ yvat z menu Desktop nebo pˇr´ımo myˇs´ı - pro pˇretaˇzen´ı lze okno uchopit za liˇstu (vˇetˇsinou s ikonami) a t´ahnout. Objev´ı se r´ ameˇcek, kter´ y postupnˇe pˇreskakuje. V okamˇziku, kdy jsme s um´ıstˇen´ım spokojeni, okno pust´ıme a to se usad´ı. Okno lze rovnˇeˇz z integrovan´eho prostˇred´ı vyt´ ahnout kliknut´ım na ˇsipku otoˇcenou ˇsikmo nahoru v prav´e ˇc´asti ikonov´e liˇsty. Po vytaˇzen´ı se ˇsipka otoˇc´ı ˇsikmo dol˚ u a okno se opˇet zasune do aplikace (dokuje).
1.2
Pracovn´ı adres´ aˇ r
Matlab pracuje s tzv. pracovn´ım adres´aˇrem. Do tohoto adres´aˇre ukl´ad´ a v´ ysledky a v tomto adres´aˇri tak´e nejdˇr´ıve hled´ a volan´e soubory. Obsah pracovn´ıho adres´aˇre se ukazuje v oknˇe Current folder. Nastaven´ı pracovn´ıho adres´aˇre je moˇzno prov´est pomoc´ı ikon nad editorem:
Vˇetˇsinou staˇc´ı b´ıl´e ok´enko, kde se ukl´adaj´ı naposledy pouˇzit´e adres´aˇre a odkud je lze opˇet vyvolat. Pokud m´ ame jeˇstˇe nepouˇzit´ y adres´aˇr, dostaneme se k nˇemu pomoc´ı ikony vedle ok´enka (ikona s tˇremi teˇckami), kter´a otevˇre cel´ y adres´aˇrov´ y strom.
1.3
Nastaven´ı cesty
Pokud chceme pouˇz´ıvat i soubory, kter´e nem´ ame pˇr´ımo v pracovn´ım adres´aˇri, mus´ıme je zadat do cesty Path, na kter´e Matlab hled´ a volan´e soubory. To lze prov´est v menu File v poloˇzce Set Path. Po jej´ım v´ ybˇeru se otevˇre dialogov´e okno:
3
Adres´ aˇre lze pˇrid´ avat pomoc´ı tlaˇc´ıtek Add Folder (pˇrid´ an´ı jednoho adres´aˇre) a Add with Subfolders (pˇrid´ an´ı adres´aˇre i s jeho podadres´aˇri) a odstraˇ novat pomoc´ı Remove. D˚ uleˇzit´e!! Pˇred zavˇren´ım okna je tˇreba cestu uloˇzit. Pokud uloˇzena nebude, nastaven´ı plat´ı jen do zavˇren´ı Matlabu.
1.4
Ikony editorov´ eho okna
Pro spouˇstˇen´ı a ladˇen´ı program˚ u jsou d˚ uleˇzit´e ikony v oknˇe editoru. Ikony jsou uvedeny na n´ asleduj´ıc´ım obr´ azku (pro odkazy jsou oˇc´ıslovan´e):
1.5
Pr´ ace v aplikaci MATLAB
Jak jiˇz bylo zm´ınˇeno, v Matlabu existuje dvoj´ı zp˚ usob pr´ ace. • Interaktivn´ı - pracuje se pouze v oknˇe Command window, kde se zad´ avaj´ı (jednoˇra´dkov´e) pˇr´ıkazy a po odklepnut´ı pomoc´ı Enter se ihned obdrˇz´ı odpovˇed’ (pokud nen´ı za pˇr´ıkazem stˇredn´ık nebo pokud pˇr´ıkaz nˇejak´ y v´ ysledek d´ av´a). X Pokud nen´ı zadan´ y pˇr´ıkaz (v´ yraz) pˇriˇrazen promˇenn´e, jeho hodnota je pˇriˇrazena obecn´e promˇenn´e ans. Pod t´ımto jm´enem lze spoˇctenou hodnotu n´ aslednˇe zavolat. X Naposledy zadan´ y pˇr´ıkaz (a pak i starˇs´ı) lze vyvolat kl´avesou ↑ a d´ ale jej editovat. • D´ avkov´ y - jednotliv´e pˇr´ıkazy jsou zapisov´any jako program do editoru. Potom jsou pˇr´ıkazy spuˇstˇeny najednou. Program lze spustit ikonou 12. 4
X V´ ysledky lze z´ıskat troj´ım zp˚ usobem: (i) tiskem nebo grafem z programu, (ii) dotazem na promˇennou po ukonˇcen´ı bˇehu, (iii) sledov´an´ım v´ ysledku v oknˇe Workspace (dvoj´ım kliknut´ım je promˇenn´ a zkop´ırov´ana do okna Variable editor, lze prohl´ıˇzet i promˇenn´e sloˇzit´e). X Pokud program neprojde, ohl´ as´ı v Command window chybu. Ve v´ ypisu chyby je naps´ano m´ısto a pˇr´ıˇcina chyby. Toto hl´ aˇsen´ı je velmi uˇziteˇcn´e. X Pokud chybu neum´ıme z chybov´eho v´ ypisu urˇcit, m´ ame moˇznost program krokovat. M´ısto, kde chceme program po spuˇstˇen´ı zastavit, oznaˇc´ıme myˇs´ı tak, ˇze klikneme na pomlˇcku ( - ) u pˇr´ısluˇsn´eho ˇc´ısla ˇra´dku. Objev´ı se velk´a teˇcka (zelen´ a, pokud program nen´ı uloˇzen, ˇcerven´ a, pokud uloˇzen je). Zastaven´ y program je moˇzno krokovat ikonou 15. Pokud chceme pˇri krokov´an´ı vstoupit do podprogramu, pouˇzijeme ikonu 16. Zastaven´ı krokov´an´ı provedeme ikonou 19. Uˇziteˇcn´e je tak´e prav´e tlaˇc´ıtko myˇsi. objev´ı se menu s dalˇs´ımi pˇr´ıkazy.
1.6
Podprogramy
V programech jazyku MATLAB je moˇzn´e vyuˇz´ıvat podprogramy standardn´ı (obsaˇzen´e v Matlabu) nebo vlastn´ı. Matlab obsahuje velk´e mnoˇzstv´ı vlastn´ıch funkc´ı. Jejich pˇrehled lze dostat tak, ˇze se v Command window zad´ a pˇr´ıkaz help. Objev´ı se klikac´ı seznam oblast´ı funkc´ı s kr´atk´ ym popisem. V nˇem lze d´ ale hledat. Na konkr´etn´ı funkci je moˇzn´e se dot´ azat pˇr´ıkazem help jm´eno (napˇr´ıklad help plot). Lze tak´e vyuˇz´ıt n´ apovˇedu Matlabu, kter´a m˚ uˇze b´ yt vyvol´ana nejl´epe kliknut´ım myˇs´ı na ikonu help (modr´e koleˇcko s otazn´ıkem v horn´ı ˇradˇe ikon). Tady se nach´ az´ı kromˇe n´ avodu i ˇrada pˇr´ıklad˚ u k pouˇzit´ı dan´e funkce. Vlastn´ı podprogramy se p´ıˇs´ı jako samostatn´ y programov´ y soubor se jm´enem souboru a koncovkou .m Volaj´ı se jm´enem (bez koncovky). Mohou m´ıt dvoj´ı charakter. • Skript - skupina pˇr´ıkaz˚ u samostatnˇe uloˇzen´ a. Tam, kam jm´eno souboru ve sv´em programu vloˇz´ıme, se pˇr´ıkazy jednoduˇse zavolaj´ı tak, jako by tam byly vypsan´e. • Anonymn´ı funkce - jednoˇra´dkov´ y z´apis funkce je moˇzno prov´est pˇr´ımo na zaˇc´atku skriptu. Jej´ı tvar je napˇr. n´ asleduj´ıc´ı: f = @(x,a) a*(x-1)ˆ2
vol´an´ı
f(5,1)
• Funkce - skupina pˇr´ıkaz˚ u samostatnˇe uloˇzen´ a vˇcetnˇe hlaviˇcky s form´aln´ımi vstupn´ımi a v´ ystupn´ımi parametry. Vol´ a se jm´enem se skuteˇcn´ ymi parametry, kter´e se pˇred´ avaj´ı do form´ aln´ıch podle poˇrad´ı. Pozn´ amka: Z´ apis i pouˇzit´ı funkc´ı v Matlabu je obdobn´e jako u vˇsech bˇeˇzn´ ych programovac´ıch jazyk˚ u. Promˇenn´e funkce jsou lok´aln´ı. Hodnoty se vrac´ı pˇres v´ ystupn´ı parametry.
5
Pˇ r´ıklad z´ apisu funkce function [m1,m2,v1,v2,co] = momenty(x,y) % % % % % %
[mx,my,vx,vy,co] = momenty(x,y) prvni a druhe momenty souboru x, y mx,my prvn´ ı momenty (pr˚ umˇ ery) vx,vy druh´ e momenty (v´ yb. rozptyly) co druh´ y vz´ ajemn´ y moment (v´ yb. kovariance) x,y datov´ e soubory (v´ ybˇ ery)
mx=mean(x); my=mean(y); vx=var(x); vy=var(y); co=cov(x,y); Pˇ r´ıklad pouˇ zit´ı funkce x = [1 2 2 3 2 3 1 1]; y = [3 5 2 6 1 2 6 3]; [meanX, meanY, varX, varY, covXY] = momenty(x,y)
1.7
Datov´ e soubory
Data se v Matlabu nach´ az´ı ve dvou form´ach - data vstupn´ı, kter´a chceme zpracovat, a data vypoˇcten´ a v programu. Oba druhy dat lze nat´ ahnout do pamˇeti, nebo naopak uloˇzit na disk pomoc´ı pˇr´ıkazu load nebo save. Nejbˇeˇznˇejˇs´ı je n´ asleduj´ıc´ı syntaxe pˇ r´ıkaz load jm´eno load jm´eno.konc load -ascii jm´eno save jm´eno save jm´eno.konc save -ascii jm´eno
1.8
v´ yznam vol´ a se soubor jm´eno.mat ve form´atu Matlab vol´ a se soubor jm´eno.konc vol´ a se soubor v textov´em (ascii) form´atu ukl´ad´ a se soubor jm´eno.mat ve form´atu Matlab ukl´ad´ a se soubor jm´eno.konc ukl´ad´ a se soubor v textov´em form´atu
Pˇ r´ıstup ke statistick´ ym funkc´ım MatStat
ˇ Bal´ıˇcek funkc´ı MatStat byl vytvoˇren k podpoˇre statistick´ ych v´ ypoˇct˚ u pro studenty FD CVUT. Programy, kter´e obsahuje i jejich forma vych´ az´ı ze syst´emu Octave (coˇz je velmi zdaˇril´ a freeware napodobenina Matlabu). Syst´em MatStat obsahuje funkce, kter´e poˇc´ıtaj´ı z´akladn´ı statistick´e u ´ lohy, jako jsou intervaly spolehlivosti, testy parametrick´ ych i nˇekter´ ych neparametrick´ ych hypot´ez, z´ akladn´ı u ´ lohy line´ arn´ı a neline´ arn´ı regrese a anal´ yzu rozptylu. Kromˇe toho je tak´e vybaven funkcemi pro v´ ypoˇcet kvantil˚ u, kritick´ ych hodnot a pravdˇepodobnost´ı “vlevo” a “vpravo” od zadan´eho bodu a ˇradou dalˇs´ıch u ´ loh, demonstruj´ıc´ıch pouˇzit´ı syst´emu Matlab.MatStat 6
Jak se k bal´ıˇ cku MatStat dostat MatStat je moˇzno st´ ahnout z webu www.utia.cz/nagy/skola v ˇc´asti Downloads Matlab files - MatFiles = z´ akladn´ı procedury pro statistick´e v´ ypoˇcty. Po kliknut´ı se zaˇcne stahovat soubor Matlab files.zip. Ten uloˇzte na disk a pamatujte, kam jste ho uloˇzili. Na disku, kde m´ ate povolen z´ apis (nejsp´ıˇse to bude disk F:) si vytvoˇrte pracovn´ı adres´aˇr Stat, tedy F:\Stat asleduj´ıDo tohoto adres´aˇre rozzipujte staˇzen´ y soubor Matlab files.zip. Obsah je zobrazen v n´ c´ım obr´ azku
Jak se na bal´ıˇ cek napojit Ted’ sice m´ ate procedury v poˇc´ıtaˇci, ale Matlab o nich dosud nev´ı. Mus´ıme mu je d´ at na path. Postup je n´ asleduj´ıc´ı: 1. Kliknˇete na poloˇzku File hlavn´ıho menu aplikace a zvolte Set Path ... Otevˇre se pˇr´ısluˇsn´e menu. 2. Kliknˇete na tlaˇc´ıtko Add With Subfolders ... 3. Otevˇre se adres´aˇrov´ y strom. V nˇem najdˇete vytvoˇren´ y adres´aˇr Stat a potvrd’te OK. 4. Vr´ at´ıte se do p˚ uvodn´ıho okna pro nastaven´ı cesty. To ukonˇcete stisknut´ım tlaˇc´ıtka Save (jinak nastavena cesta plat´ı jen do uzavˇren´ı Matlabu). Napojen´ı na bal´ıˇcek MatStat lze otestovat pˇr´ıkazem hlp v oknˇe pˇr´ıkaz˚ u. Pokud je napojen´ı spr´avn´e, objev´ı se menu pro jednotliv´e oblasti funkc´ı. Do konkr´etn´ı oblasti se dostanete zad´ an´ım odpov´ıdaj´ıc´ıho ˇc´ısla oblasti. 7
Jak s bal´ıˇ ckem pracovat Nejl´epe je zvolit adres´aˇr Stat jako pracovn´ı adres´aˇr (current folder). To se provede pomoc´ı tlaˇc´ıtka [...] (ikona s tˇremi teˇckami v horn´ım menu ikon aplikace Matlab). Zvol´ıte adres´aˇr Stat a ten se v´am objev´ı i v mal´em ok´enku vedle pouˇzit´e ikony. Z tohoto ok´enka lze pˇri pˇr´ıˇst´ım sezen´ı adres´aˇr zvolit pˇr´ımo. D˚ uleˇzit´e ale je, ˇze se pracovn´ı adres´aˇr objev´ı i v oknˇe Current folder, ze kter´eho lze tak´e otev´ırat dalˇs´ı programov´e soubory (m-fajly). V naˇsem pˇr´ıpadˇe jsou to statistick´e funkce bal´ıˇcku MatStat.
´ Uvod do programov´ an´ı v jazyce MATLAB
2 2.1
´ Uvodn´ ı pozn´ amky
1. Vˇsechny promˇenn´e jsou matice. Skal´ar je a(1,1). Vektor m˚ uˇze b´ yt ˇra´dkov´ y a(1,5), nebo sloupcov´ y a(5,1). 2. Stˇredn´ık za zadanou promˇennou a=5; zp˚ usob´ı, ˇze nen´ı ˇz´adn´ a odezva po zad´ an´ı. Naopak po zad´ an´ı promˇenn´e s ˇc´ arkou nebo bez niˇceho, tj. a=5, nebo a=5 se hodnota promˇenn´e vyp´ıˇse na obrazovku. 3. help objekt“ zobraz´ı n´ apovˇedu k objektu. ” Ikona ? zavol´ a interaktivn´ı str´ anku HELP. 4. Koment´ aˇr je text zaˇc´ınaj´ıc´ı %. Nehraje ˇz´adnou roli ve v´ ypoˇctech programu. 5. Pˇr´ıkazy je moˇzn´e zapsat do textov´eho souboru s koncovkou .m (batch-file) a spustit je najednou zavol´ an´ım jm´ena souboru v hlavn´ım programu (viz 1/Pr´ace v aplikaci Matlab).
2.2
Promˇ enn´ e a operace
Typy promˇ enn´ ych N´aslednˇe jsou zm´ınˇeny z´ akladn´ı typy promˇenn´ ych, se kter´ ymi budeme pracovat. Jsou vˇsak jen mal´ ym zlomkem z existuj´ıc´ı mnoˇziny promˇenn´ ych. • string slouˇz´ı pro z´ apis textu: a=’ahoj’. Stringy lze spojovat do vektor˚ u: je-li a=’dobry ’; b=’den’ a c=[a,b], pak c=’dobry den’. Uˇziteˇcn´ a je konverze ˇc´ıslo → ˇretˇezec: s=num2str(a), kde s je string a a double. • logick´ e promˇ enn´ e jejichˇz hodnotami je true“ (k´odov´ano jako 1) a false“ (k´odov´ano ” ” jako 0). • double promˇ enn´ e slouˇz´ı pro pˇrirozen´e nebo re´ aln´e promˇenn´e. Jejich definici je moˇzn´e prov´est n´ asledovnˇe:
8
Zad´ an´ım hodnoty: - skal´ ar a=5; - ˇra´dkov´ y vektor a=[3 5 1]; - sloupcov´ y vektor a=[3; 5; 1], coˇz je tot´eˇz jako a=[3 5 1]’ - matice a=[2 3 4; 8 7 6]; • Prvky vektor˚ u nebo matic se zad´ avaj´ı do hranat´ ych z´avorek. • Prvky v ˇra´dku se oddˇeluj´ı ˇc´arkou nebo mezerou. • Stˇredn´ık ukonˇc´ı ˇra´dek matice a pˇrejde na nov´ y. • Transpozice se provede pomoc´ı apostrofu ’. Pomoc´ı dvojteˇcky: - a=5:8 s inkrementem 1 vytvoˇr´ı vektor [5 6 7 8] - a=2:3:10 s inkrementem 3 vytvoˇr´ı vektor [2 5 8] Pomoc´ı funkc´ı - a=zeros(2,3) vytvoˇr´ı matici 2 x 3 nul - a=ones(2,3) vytvoˇr´ı matici 2 x 3 jedniˇcek Operace s promˇ enn´ ymi • V´ ybˇer prvk˚ u matice: a(3:5) v´ ypis 3.,4. a 5. prvku vektoru a. a(:,1) v´ ypis 1. sloupce matice a a(2:3,:) v´ ypis 2. a 3. ˇra´dku matice a. • Operace: + - ∗ / ˆ a+b a a-b ... sˇc´ıt´ an´ı a odeˇc´ıt´an´ı (tyto operace je moˇzn´e prov´est pouze pro stejn´e rozmˇery a a b) a*b ... n´ asoben´ı (pozor na spr´avn´e rozmˇery pˇri n´ asoben´ı matic, respektive vektor˚ u) a/b nebo a\b ... a kr´at inverze b, nebo inverze a kr´at b ˆ... umocnˇen´ı, a=sqrt(b) ... odmocnˇen´ı funkce • Teˇckov´e operace: .∗ ./ ˆ . Znamenaj´ı operace prvek po prvku. Napˇr.: [1 2 3].*[6 5 4] je [1*6 2*5 3*4] [2 3; 4 1].ˆ[5 3; 2 8] je [2ˆ5 3ˆ3; 4ˆ2 1ˆ8] • Operace s matic´ı a skal´ arem: + - * / ˆ Pro matice plat´ı skal´ ar pro vˇsechny prvky matice: [2 3]*4 je [2*4 3*4] • Logick´e operace: == ∼= < <= >
>= & (=and) | (=or) ∼ (=not)
9
Pr´ ace s promˇ enn´ ymi • Pˇr´ıkazy who, whos d´ avaj´ı informaci o definovan´ ych promˇenn´ ych. • [m,n]=size(a), m=size(a,1), n=size(a,2) d´ avaj´ı informaci o rozmˇerech matice a, resp. poˇctu ˇra´dk˚ u, resp. poˇctu sloupc˚ u. • n=length(a) ud´ av´a informaci o d´elce vektoru (vˇetˇs´ı z rozmˇer˚ u matice a) • clear, clear all uvolˇ nuje pamˇet’.
2.3
Programovac´ı pˇ r´ıkazy
• Podm´ınka if if b>c, a=5; else a=0; end Je-li splnˇena podm´ınka b>c, provede se pˇr´ıkaz a=5; jinak pˇr´ıkaz a=0;. • V´ıcen´ asobn´ a podm´ınka if if b>1, a=5; elseif b<-.1, a=-5; else a=0; end Je-li splnˇena podm´ınka b>1, provede se pˇr´ıkaz a=5; a pˇr´ıkaz konˇc´ı. Jinak se testuje podm´ınka b<-1 a provede se pˇr´ıkaz a=-5; nebo pˇr´ıkaz a=0;. • Cyklus for for i=1:5 a(i)=2*i; end Pro i=1,2,3,4,5 se provede pˇr´ıkaz a(i)=2*i;. V´ ysledek: a=[2, 4, 6, 8, 10]. • Cyklus while while i<=5 a(i)=0; i=i+1; end
10
Dokud je splnˇena podm´ınka i≤5, prov´adˇej´ı se pˇr´ıkazy a(i)=0; a i=i+1;, kde i je inkrement. V´ ysledek: a=[0, 0, 0, 0, 0]. • Clc, clear, clear all, clear functions Clc maˇze vˇse v Command window (oknˇe pˇr´ıkaz˚ u). Clear maˇze data v pamˇeti. Clear all maˇze celou pamˇet’ kromˇe nataˇzen´ ych funkc´ı. Clear functions maˇze funkce z pamˇeti. • Close, close all Close zavˇre aktivn´ı okno grafu. Close all zavˇre vˇsechna okna s grafy. • Break, return Break zp˚ usob´ı ukonˇcen´ı cyklu for nebo while. Program pokraˇcuje za t´ımto cyklem. Return zp˚ usob´ı ukonˇcen´ı prov´adˇen´e procedury. • Pause, keyboard, input Pause zp˚ usob´ı zastaven´ı programu (ten pokraˇcuje po stisku libovoln´e kl´avesy) Keyboard zp˚ usob´ı zastaven´ı programu a pˇred´ a ˇr´ızen´ı kl´avesnici - moˇznost kontroly promˇenn´ ych uvnitˇr programu (pokraˇcuje po zad´ an´ı pˇr´ıkazu exit). Input zp˚ usob´ı zastaven´ı programu a ˇcek´a na vstup promˇenn´e (zadat a potvrdit Enter). Napˇr.: a=input(’Zadej hodnotu a: ’); vyp´ıˇse text v apostrofech a zadanou hodnotu pˇriˇrad´ı promˇenn´e a. • Eval Eval(string) spust´ı pˇr´ıkaz, kter´ y je textovˇe zaps´ an v promˇenn´e string. Napˇr. eval(’x=1;’) d´ a pˇr´ıkaz x=1 nebo eval([’x’,num2str(i),’=1;’]) pro i=5 d´ a x5=1. • Nastaven´ı seed pro n´ ahodn´ y gener´ ator Rand(’seed’,cislo) - volba seed se pouˇz´ıv´a pro generov´an´ı pseudon´ahodn´e realizace ˇc´ısel (generuje n´ ahodn´ a ˇc´ısla, ale v kaˇzd´em bˇehu stejnou realizac´ı). Cislo je dlouh´e lich´e cel´e ˇc´ıslo - napˇr. 135731.
2.4
Tiskov´ y v´ ystup
Pro tisk promˇenn´ ych slouˇz´ı pˇr´ıkazy disp (bez form´atu) a fprintf (s form´atem). • disp(a) zobraz´ı hodnotu promˇenn´e a.
11
• disp(’ahoj’) vyp´ıˇse text ahoj. • fprintf(’prvek %d vektoru a je %g\n’,i,a(i)); vyp´ıˇse napˇr.: prvek 5 vektoru a je 4.12
2.5
Grafick´ y v´ ystup
Dvojrozmˇ ern´ y graf je moˇzno vykreslit pˇr´ıkazem plot. Pˇr´ıklady: • plot(y) vykresl´ı hodnoty vektoru y. Na ose x je poˇrad´ı sloˇzky vektoru (index). • plot(x,y) vykresl´ı hodnoty vektoru y proti hodnot´ am vektoru x – tzv. xy-graf. • plot(a) vykresl´ı sloupce matice a. Form´ atov´an´ı grafu: Typ ˇ car (pln´ a) : (teˇckovan´ a) -. (ˇcerchovan´ a) – (ˇc´arkovan´ a)
Typ bod˚ u . (bod) + (plus) o (krouˇzek) x (kˇr´ıˇzek)
Barva r (ˇcerven´ a) g (zelen´ a) b (modr´ a) w (b´ıl´a)
Pro dalˇs´ı moˇznosti zadejte: help plot. Pˇr´ıklady: • plot(x,’or’) vykresl´ı vektor x pomoc´ı ˇcerven´ ych krouˇzk˚ u. • plot(x,y,’r-+’,u,v,’b-x’) vykresl´ı dvˇe kˇrivky (x,y) a (u,v); prvn´ı ˇcervenou plnou ˇc´arou s plusy, druhou modrou plnou ˇc´arou s kˇr´ıˇzky. Trojrozmˇ er´ y graf (zadan´ y matic´ı bod˚ u) se vykresl´ı pˇr´ıkazem mesh. Funkce meshgrid pˇriprav´ı argumenty pro v´ ypoˇcet zobrazovan´e matice. N´asleduj´ıc´ı program vykresl´ı nenormovanou hustotu pravdˇepodobnosti norm´aln´ıho rozdˇelen´ı. x=-1.9:.1:2; y=x’; sig=.6; [xx yy]=meshgrid(x,y); z=1/sig*exp(-.5/sigˆ2*(xx.ˆ2+yy.ˆ2)); mesh(x,y,z);
12
3
Pˇ r´ıklady program˚ u v jazyce MATLAB
%% PRIRAZEN´I HODNOTY PROMENNE −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % − s t r e d n i k p o t l a c i okamzity v y p i s hodnoty % − z o b r a z e n i hodnota − n ap s at promennou bez s t r e d n i k u % − t e x t o v a promenna f u n g u j e j a k o v e k t o r pismenek clc , clear a l l a =5;
% hodnota a j e 5 ; hodnota nebude z o b r a z e n a
b=[3 2 5 ]
% z a d a n i hodnot v e k t o r u + z o b r a z e n i
c =[2 1 3 ] ’ d=[2;1;3]
% z a d a n i hodnot ( s l o u p c o v e h o ) v e k t o r u % t o t e z − s t r e d n i k o d d e l u j e radky m atice
e =[3 4 ; 5 6 ; 7 8 ]
% m atice 3 x2
f =[ c e ] g=[b c ’ d ’ ]
% s p o j e n i matic − musi mit s p r avn e rozmery % j i n y zpusob s p o j e n i matic
h=f ( : )
% n a t a z e n i m atice do v e k t o r u ( po s l o u p c i c h )
i=f ( : , 1 : 2 ) j=g ( [ 3 : 5 6 8 ] )
% vyber sub−m atice − 1 :K=[1 2 3 . . K] % vyber p od vektor u
k=’Navod ’ l =’Matlab ’ m=[k , ’ k ’ , l , ’ u ’ ]
% t e x t o v e promenne
o=z e r o s ( 1 , 5 ) p=on es ( 3 , 4 ) q=rand ( 1 , 2 0 )
% g e n e r o v a n i v e k t o r u 1 x5 z n u l − d e k l a r a c e % g e n e r o v a n i m atice 3 x4 z j e d n i c e k % g e n e r o v a n i v e k t o r u s rovnomerne % r o z d e l e n y m i nahodnymi c i s l y
% s l o z e n i texu ( s l o v a j a k o v e k t o r y pismen )
13
r=randn ( 1 2 , 2 )
% g e n e r o v a n i v e k t o r u s normalne % r o z d e l e n y m i nahodnymi c i s l y
%% OPREACE S PROMENNYMI −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 3∗ a 3∗b a ˆ2
% n a s o b e n i s k a l a r u s kalar em % n a s o b e n i v e k t o r u s kalar em % umocneni na druhou
b∗ c b’∗ c ’ b.∗ c ’ e ∗[b ; c ’ ] b.ˆ2 b .ˆ[2 3 4]
% % % % % %
nasobeni nasobeni nasobeni nasobeni umocneni umocneni
v e k t o r u − .| ( v y s l . j e c i s l o ) v e k t o r u |. − ( v y s l . j e m atice ) prvek po prvku matic v s e c h prvku v e k t o r u b na druhou na druhou , t r e t i a c t v r t o u
%% PRIKAZY −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % −−−> podminka i f clc , clear a l l s=randn % g e n e r o v a n i nahodneho c i s l a s i f s >0 t =’ kladne ’ ; % kladne else t =’ zaporne ’ ; % zap or n e end d i s p ( [ ’ gen er ovan e c i s l o j e ’ , t ] ) % t i s k t e s t o v a n e h o c i s l a % −−−> c y k l u s f o r clc , clear a l l a =[]; f o r i =1:5 a =[a 1/ i ] ; end a % −−−> c y k l u s w h i l e % y=s q r t ( x ) − a l g o r i t m u s : % clc , clear a l l x=91; t e s t =1; y=x ; n=0; w h i l e t e s t >1e−5 n=n+1; yn =.5∗( x/y+y ) ;
% d e k l a r a c e p r azd n e m atice % generovani c i s e l 1 ,2 ,3 ,4 ,5 % t r i k : do p r azd n e m atice s e p r i d a v a % t i s k vysledku − l z e take : disp ( a )
y(0)= x y ( i +1)=.5∗( x/y ( i )+y ( i ) ) % i n i c i a l i z a c e promennych % c y k l u s ( dokud n e n i d os azen o p r e s n o s t i ) % pocitadlo i t e r a c i % v l a s t n i a l g o r i t m u s , r e s p . vyp ocet yn 14
t e s t=abs ( yn−y ) ; y=yn ; end disp ( ’ vysledek ’ ) disp (y) d i s p ( ’ p o c e t kroku ’ ) disp (n)
% t e s t p r e s n o s t i mezi y a yn % nove −> s t a r e % t i s k vysledku
%% SIKOVNE KOUSKY PROGRAMU −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % −−−> V y k r e s l e n´ı f u n k c e j e d n e promenne clc , clear a l l f = @( x ) exp ( −.5∗ x )∗ c o s (5∗ x ) ; % z a p i s anonymni f u n k c e : f=@( x ) p r e d p i s x=0:.1:10; n=l e n g t h ( x ) ; y=z e r o s ( 1 , n ) ; f o r i =1:n y ( i )= f ( x ( i ) ) ; end
% % % %
v e k t o r argumentu f u n k c e delka vektoru x d e k l a r a c e y ( k v u l i r y c h l e j s i m vypoctum ) c y k l u s pro hodnoty f u n k c e
f igu r e (1) plot (x , y)
% vykresleni
% −−−> V y k r e s l e n´ı f u n k c e dvou promennych clc , clear a l l m=1; n=−2; f = @( x , y ) exp ( − . 5 ∗ [ [ x y ] − [m n ] ] ∗ [ 1 0 ; 0 2 ] ∗ [ [ x y ] ’ − [m n ] ’ ] ) ; % z a p i s anonymni f u n k c e x = −5:.1:5; y = −5:.1:5; nx=l e n g t h ( x ) ; ny=l e n g t h ( y ) ; z=z e r o s ( nx , ny ) ; f o r i =1:ny f o r j =1:nx z ( i , j )= f ( x ( i ) , y ( j ) ) ; end end
% % % % % %
v e k t o r argumentu x v e k t o r argumentu y delka vektoru x delka vektoru y d e k l a r a c e z : z=f ( x , y ) c y k l u s pro hodnoty f u n k c e
f igu r e (1) mesh ( x , y , z )
% vykresleni
15
% −−−> Pamatovani p r u b ezn e s p o c i t a n y c h hodnot clc , clear a l l f = @( x ) s i n ( x ) ; y =[]; for x =0:.01: pi y=[y f ( x ) ] ; end f igu r e (1) plot (y) % % % % % %
Poznamka : T r ik ” p r i d a v a n i hodnot do prazdneho v e k t o r u ” j e v e l m i u cin n y . Nemusime predem zn at d e l k u v e k t o r u y a nemusime a n i z a v a d e t i n d e x pro v e k t o r y . Ale p ozor ! Kazde r o z s i r e n i v e k t o r u znamena z r u s i t puvodni vektor , z a l o z i t novy d e l s i a do neho znovu n a k o p i r o v a t vs ech n y hodnoty . To v e l i c e zp om alu j e v´ y pocty .
% −−−> Opakovan´e g e n e r o v ´ a n´ı v´ y bˇe ru a vyb er oveh o prumeru clc , clear a l l m=0; s i g 2 =1; n=10; % r o z s a h vyberu nv=1000; % p o c e t op akovan i vyberu x=m+s q r t ( s i g 2 )∗ randn ( n , nv ) ; % m atice dat s vybery ve s l o u p c i c h mm=mean ( x ) ; % v e k t o r vyberovych prumeru % Z opakovanych vyberu % mean ( m atice ) = v e k t o r pr˚ u meru ze s l o u p c u mx=mean (mm) ; % prumer z vyberovych prumeru s 2x=var (mm) ; % r o z p t y l z vyberovych prumeru fprintf fprintf fprintf disp ( ’ fprintf fprintf
(’ (’ (’ ’) (’ (’
S t r . hod : s ou b or u %g , vyb . prumeru %g \n ’ ,m, mx) Ror p tyl : s ou b or u %g , vyb . prumeru %g \n ’ , s i g 2 , s 2x ) Delka vyberu %d , p o c e t op akovan i vyberu %d\n ’ , n , nv ) Rozp tyl vyb er oveh o prumeru s e ma r o v n a t \n ’ ) r o z p t y l u s ou b or u delenemu d e l k o u vyberu \n ’ )
% −−−> I t e r a t i v n i v y ´ p ocet s e z a s t a v o v a c i m p r avid lem % . . . j a k r y c h l e j d e opakovana odmocnina x k c i s l u j e d n a clc , clear a l l x=10; % p o c a t e c n i hodnota xt = [ ] ; j =0;
% z a l o z e n i v e k t o r u pro u k l a d a n i hodnot % zalozeni pocitadla i t e r a c i 16
f o r i =1:1000 j=j +1; x=s q r t ( x ) ; xt =[ xt x ] ; i f abs ( x −1) <.00001 b r eak end end
% % % % % %
c y k l u s pro i t e r a c e (1000 maximalni p o c e t ) in kr em en t p o c i t a d l a i t e r a c e algoritmu u l o z e n i mezivypoctu zastavovaci pravidlo p r e r u s e n i cyklu f o r
j f igu r e (1) bar ( xt )
% t i s k poctu i t e r a c i % v y k r e s l e n i hodnot mezivypoctu
% −−−> S ou cet bodu na n k o s t k a c h n = 1 , 2 , 3 , . . . clc , clear a l l n=3; % pocet kostek nv=1000000; % p o c e t op akovan i pokusu x=f i x (6∗ rand ( n , nv ) ) + 1 ; i f n==1, mx=x ; e l s e mx=sum ( x ) ; end
% data ( s l o u p e c body pro j e d e n pokus ) % s o u c e t pro j ed n u kos tku % a pro v i c e k o s t e k
[ f , v]= h i s t (mx, n : 6 ∗ n ) ; f=f /nv ; f igu r e (1) bar ( v , f )
% histogram % p r e p o c e t na r e l a t i v n i f r e k v e n c e % graf % h is togr am u
%% PRACE S VEKTORY A MATICEMI −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % −−−> n e j v e t s i sudy prvek v e k t o r u clc , clear a l l nd=100; % pocet c i s e l v=f i x (100∗ rand ( 1 , nd ) ) ; % c e l a c i s l a z i n t e r v a l u ( 0 , 100) mx=−i n f ; % n e j v e t s i hodnota − i n i c i a l i z a c e f o r i =1:nd % cyklus prochazeni c i s e l i f v ( i )/2== f i x ( v ( i ) / 2 ) % n a l e z e n i sudych c i s e l i f v ( i )>mx % n a l e z e n o v e t s i sude nez zatim n e j v e t s i mx=v ( i ) ; % ulozeni c i sl a mi=i ; % ulozeni poradi end end end f p r i n t f ( ’ N e j v e t s i hodnota sudeho c i s l a j e %g . \ n ’ , mx) f p r i n t f ( ’ Tato hodnota b y l a n a l e z e n a na %g−tem m i s t e . \ n ’ , mi ) % −−−> s e r a z e n i prvku v e k t o r u 1 17
clc , clear a l l nd=20; % pocet c i s e l v=f i x (1000∗ rand ( 1 , nd ) ) / 1 0 0 ; % g e n e r o v a n i c i s e l s e dvemi d es . m is ty vv=v ; % pracovni vektor f o r i =1:nd % zacatek cyklu [ yy i i ]=max( vv ) ; % nejvetsi cislo y ( i )=yy ; % ulozeni c i sl a vv ( i i )=− i n f ; % s c h o v a n i c i s l a do d a l s i c h kroku end f p r i n t f ( ’ S e r a z e n i prvku j e n a s l e d u j i c i : \ n ’ ) f p r i n t f ( ’% g\n ’ , y ) % −−−> s e r a z e n i prvku v e k t o r u 2 clc , clear a l l nd=20; % pocet c i s e l v=f i x (1000∗ rand ( 1 , nd ) ) / 1 0 0 ; % g e n e r o v a n i c i s e l s e dvemi d es . m is ty y=v ; % pracovni vektor t e s t =1; % vs tu p do c y k l u w h i l e while tes t t e s t =0; % pokud s e nezmeni , c y k l u s bude ukoncen f o r i =2:nd i f y ( i −1)
n or m aln i = s o u c e t s e s t i rovnomernych r o z d e l e n i na i n t e r v a l u ( − . 5 , . 5 ) clc , clear a l l x=sum ( rand ( 6 , 1 0 0 0 ) − . 5 ) ; % sum s c i t a m a t i c i po s l o u p c i c h % rand −.5 j e rovnomerne na ( − 0.5 , 0 . 5 ) f igu r e (1) , hist (x ,20) % h i s t o g r a m (20 i n t e r v a l u ) t i t l e ( ’ Hustota p r a v d e p o d o b n o s t i n or m aln ih o r o z d e l e n i ’ ) % −−−> c h i ˆ2 = s o u c e t kvad r atu n or m aln ih o clc , clear a l l x=sum ( randn ( 5 , 1 0 0 0 ) . ˆ 2 ) % t e c k o v ´a o p e r a c e = pro kazdy prvek f igu r e (2) , hist (x ,20) t i t l e ( ’ Hustota p r a v d e p o d o b n o s t i c h i ˆ2 r o z d e l e n i ’ ) 18
% −−−> s t u d e n t = n or m aln i / c h i ˆ2 clc , clear a l l x=sum ( randn ( 5 , 1 0 0 0 ) . ˆ 2 ) y=randn ( 1 , 1 0 0 0 ) . / x ; f igu r e (3) , hist (y ,20) t i t l e ( ’ Hustota p r a v d e p o d o b n o s t i s t u d e n t o v a r o z d e l e n i ’ ) % −−−> a l t e r n a t i v n i s p i =.3 clc , clear a l l x=rand ( 1 , 1 0 0 0 ) < . 3 ; % g e n e r o v ´a n´ı z a l t r o z d e l e n i ∗) y=h i s t ( x , 2 ) ; % g e n e r u j i s e c e t n o s t i ∗∗) f i g u r e ( 4 ) , bar ( [ 0 1 ] , y / 1 0 0 0 , . 5 ) % s lou p kovy g r a f a x i s ([ −1 2 0 1 ] ) % n a s t a v e n i os g r a f u t i t l e ( ’ Hustota p r a v d e p o d o b n o s t i a l t e r n a t i v n i h o r o z d e l e n i ’ ) % % ∗) % rand <.3 = 1 j e s t l i z e b y l o z rand gen er ovan o c i s l o mensi nez 0 . 3 a % = 9 j e s t l i ˇz e b y l o geer ovan o c i s l o v e t s i . % P r o t o z e c i s l a mensi nez 0 . 3 l e z i na u s e c e 0 −0.3 a c i s l a v e t s i na % u s e c c e 0.3 −1 , bude p r avdˇe p od ob n ost j e d n e rovna 0 . 3 a n u ly 0 . 7 % % rand ( 1 , 1 0 0 0 ) < . 3 d e l a t o t e z pro kazde z t i s i c e gen er ovan ych c i s e l . % Vys led ek j e ted y v e k t o r n u l a j e d n i c e k , kde n u ly m aj i pr . 0 . 3 a % jednicky 0.7 % % ∗∗) % p r i k a z h i s t s vys tu p n im i argumenty n e k r e s l i , a l e j e n g e n e r u j e % f r e k v e n c e a s t r d y i n t e r v a l u . Ty l z e pak v y u z i t ke k r e s l e n i pomoci % f u n k c e bar = kr es n em i s l o u p k o v e h o g r a f u . % −−−> m u ltin om icke clc , clear a l l p = [ . 2 .1 .1 .3 . 3 ] ; % p r a v d e p o d o b n o s t i j e d n o t l i v y c h hodnot pp=cumsum( p ) % kumulativni soucet pravdepodobnosti x=z e r o s ( 1 , 1 0 0 0 ) ; % deklarace f o r i =1:1000 % op akovan i exp er im en tu x ( i )=sum ( rand>pp )+1; % p r i k l . : .451 >[.2 . 3 . 4 . 7 1]=[0 0 0 1 1 ] end a=h i s t ( x , l e n g t h ( p ) ) f i g u r e ( 5 ) , bar ( 1 : l e n g t h ( p ) , a /1000) t i t l e ( ’ Hustota p r a v d e p o d o b n o s t i m u ltin om ickeh o r o z d e l e n i ’ ) % −−−> b in om icke clc , clear a l l p = . 3 ; n=10; nd=1000;
% pravdep . , p o c e t pokusu , p o c e t e x p e r . 19
x=z e r o s ( 1 , nd ) ; f o r i =1:nd % op akovan i exp er im en tu x ( i )=sum ( rand ( 1 , n) g e o m e t r i c k e clc , clear a l l p = . 3 ; nd=1000; % pravdepodobnost , p o c e t exp er im en tu x=z e r o s ( 1 , nd ) ; f o r i =1:nd % op akovan i exp er im en tu j =0; r=rand
Jak´ a j e pravdˇe podobnost , ˇz e pˇr i hodu dvˇema m in cen i padne s t e j n ´ a % strana ? clc , clear a l l nd=100000; % p o c e t hodu m1=rand ( 1 , nd ) < . 5 ; % g e n e r o v a n i hodu p r v n i mince s prp <0 ,5 m2=rand ( 1 , nd ) < . 5 ; % g e n e r o v a n i hodu druhe mince s prp <0 ,5 n1=sum (m1==m2 ) ; % s t e j n e hodnoty p r a v d e p o d o b n o s t i ? P=n1/nd % v y p o c i t a n a p r avd ep od ob n os t % −−−> V klobouku j s o u 3 b´ı l ´e a 5 modr´ y ch k o r ´a l k˚ u . Postupnˇe , bez % v r a c e n´ı , vyt´ a hneme 2 k o r ´a l k y . Jak´a j e pravdˇe podobnost , ˇz e druh´ y % k o r ´a l e k bude b´ı l y ´? 20
clc , clear a l l Pb=3/8; % t e o r e t i c k a pravdep . v y t a z e n i b i l e h o nd=1000; % p o c e t exp er im en tu n1 =0; f o r i =1:nd % op akovan i exp er im en tu i f rand Haz´ıme dvˇema kos tkam i . Jaka j e pravdˇe podobnost , ˇz e s o uˇc e t bude % sud´ y , j e s t l i ˇz e v´ıme , ˇz e : % ( i ) Na p r v n´ı k o s t c e n ep ad la ˇs e s t k a ? % ( i i ) Ani na j e d n´e k o s t c e n ep ad la ˇs e s t k a ? nd=1000; d i s p ( ’ Uloha ( i ) ’ ) % −−−−−−−−−−− u loh a ( i ) K1=f i x (5∗ rand ( 1 , nd ) ) + 1 ; % p r v n i k o s t k a ( bez s e s t k y ) K2=f i x (6∗ rand ( 1 , nd ) ) + 1 ; % druha k o s t k a ( c e l a ) s=K1+K2 ; % s o u c e t prp obou k o s t e k n1=sum ( f i x ( s /2)∗2== s ) ; % t e s t na sude c i s l o ( f i x u r i z n e d es . c a s t ) Ps1=n1/nd ; % vyp octen a p r avd ep od ob n ost f p r i n t f ( ’ s t a t i s t i c k a pr . sudeho s o u c t u j e %g \n ’ , Ps1 ) f p r i n t f ( ’ t e o r e t i c k a pr . sudeho s o u c t u j e %g\n ’ , . 5 ) disp ( ’ ’) d i s p ( ’ Uloha ( i i ) ’ ) % −−−−−−−−−−−− u loh a ( i i ) K3=f i x (5∗ rand ( 1 , nd ) ) + 1 ; % druha k o s t k a ( bez s e s t k y ) s=K2+K3 ; % s o u c e t prp obou k o s t e k n1=sum ( f i x ( s /2)∗2== s ) ; % t e s t na sude c i s l o Ps2=n1/nd ; % vyp octen a p r avd ep od ob n ost f p r i n t f ( ’ s t a t i s t i c k a pr . sudeho s o u c t u j e %g \n ’ , Ps2 ) f p r i n t f ( ’ t e o r e t i c k a pr . sudeho s o u c t u j e %g\n ’ , 1 3 / 2 5 )
% −−−> Dva s o u p eˇr i s tˇr d a vˇe h ´a z´ı m in c´ı . Vyhr´a v´a ten , komu j a k o p r v n´ı % padne l´ı c . Jak´ a j e pravdˇe podobnost , ˇz e v y h r a j e ten , co z a ˇc a l h ´a z e t ? clc , clear a l l 21
nd=10000; n1 =0; f o r i =1:nd j =0; while 1 j=j +1; x=round ( rand ) ; i f x==1 i f f i x ( j /2)∗2˜= j n1=n1 +1; end b r eak end end end P=n1/nd
% % % % % % % % %
p o c i t a d l o u s p es n ych h er p r v n i h i c y k l u s pro opakovane hry i n d i k a t o r hracu ( l i c h e=p r vn i , sude=druhy ) c y k l u s pro s t r i d a v e h a z e n i kdo zr ovn a h a z i co b y l o hozeno (1= l i c , 0=rub ) kdyz b y l hozen l i c a h o d i l ho p r v n i h r ac p r i c t e s e mu u s p es n a hra
% j e d n a hra k o n c i
% pr . uspechu p r v n i h o
% −−−> Na s k l a d ˇe j e n v´ y robk˚ u . Mezi mimi j e m vadn´ y ch . Ke k o n t r o l e % vybereme ˇc t y ˇr i v´ y robky . Jak´a j e pravdˇe podobnost , ze mezi mimi bude % ˇz´a dn´ y , j e d e n aˇz ˇc t y ˇr i dobr´e v´ y robky ? % −− v´ y bˇe r najednou = bez v r a c e n´ı . clc , clear a l l nd=10000; n=10; % p o c e t vyrobku na s k l a d e m=4; % p o c e t s p atn ych nv=4; % v e l i k o s t vyberu x=[ z e r o s ( 1 ,m) on es ( 1 , n−m) ] ; % vyrobky (0= spatny , 1=dobry ) d=z e r o s ( 1 , nv +1); % d e f i n i c e p o c i t a d l a pro dobre vyrobky f o r i =1:nd % op akovan i pokusu xp=x ; % p r a c o v n i v e k t o r vyrobku f o r k=1:nv % vyber nv vyrobku bez v r a c e n i nx=l e n g t h ( xp ) ; % p o c e t z b y l y c h vyrobku ns s k l a d e j=f i x ( nx∗ rand )+1; % n´a hodny vyber v´ y robku ( j e h o p o r a d i ) v ( k)=xp ( j ) ; % vybrany vyrobek xp=xp ( [ 1 : j −1 j +1:nx ] ) ; % zb ytek vyrobku ( bez vybraneho ) end k=sum ( v ) ; % p o c e t dobrych ve vyberu d ( k+1)=d ( k+1)+1; % p o c i t a d l o vysledku end d i s p ( ’ Vyber bez v r a c e n i ’ ) P1=d/nd % s t a t i s t i c k a p r avd ep od ob n ost % −− v´ y bˇe r p os tu p nˇe s vracen´ım p=m/n ; % pr . dobreho vyrobku ( s t a l e s t e j n a ) c=z e r o s ( 1 , nv +1); % d e f i n i c e p o c i t a d l a pro dobre vyrobky f o r i =1:nd % op akovan i pokusu 22
x=f i x ( rand ( 1 , nv)>p ) ; k=sum ( x ) ; c ( k+1)=c ( k+1)+1; end d i s p ( ’ Vyber s vracenim ’ ) P2=c /nd
% vyber vyrobku s vracenim % p o c e t dobrych ve vyberu % p o c i t a d l o vysledku
% s t a t i s t i c k a p r avd ep od ob n ost
% −−−> Ovˇeˇr te p l a t n o s t vztahu o sˇr e d n i hodnotˇe a r o z p t y l u v y ´ bˇe r ov´e h o % pr˚ u mˇeru % Poznamka : Oznacime− l i Xm = 1/n . suma ( x i ) j a k o vyberovy prumer , pak % z t e o r i e plyne , ze : % E [Xm] = mi ( s t r e d n i hodnot s ou b or u ) a % D[Xm] = s i g ˆ2/ n ( r o z p t y l s ou b or u d e l e n y rozsahem vyberu ) clc , clear a l l nd=1000; % p o c e t op akovan i pokusu nx=100; % p o c e t dat n=50; % v e l i k o s t vyberu mi=5; % s t r e d n i hodnota g e n e r a t o r u dat s g =10; % smerodatna od ch ylka g e n e r a t o r u dat x=s g ∗ randn ( 1 , nx)+mi ; % data d i s p ( ’ S t r e d n i hodnota a r o z p t y l souboru ’ ) mx=mean ( x ) % s t r e d n i hodnota dat s 2x=var ( x ) % r o z p t y l dat f o r i =1:nd v=vyber ( n , x ) ; % f u n k c e vyber z dat ∗) mv=mean ( v ) ; % s t r e d n i hodnota vyberu mm( i )=mv ; % u l o z e n i s t r e d n i hodnoty vyberu end d i s p ( ’ S t r e d n i hodnota a r o z p t y l vyberu ’ ) mmx=mean (mm) % s t r e d n i hodnota vyberovych prumeru s s 2 x=v ar (mm) % r o z p t y l vyberovych prumeru % % ∗) f u n k c e k predchozimu programu f u n c t i o n v=vyber ( nv , x ) % v=vyber ( nv , x ) nahodny vyber nv prvku z v e k t o r u x bez v r a c e n i v=z e r o s ( 1 , nv ) ; f o r k=1:nv % vyber nv prvku bez v r a c e n i nx=l e n g t h ( x ) ; % p o c e t z b y l y c h prvku v x j=f i x ( nx∗ rand )+1; % n´a hodny vyber prvku ( j e h o p o r a d i ) v ( k)=x ( j ) ; % vybrany prvek x=x ( [ 1 : j −1 j +1:nx ] ) ; % zb ytek prvku ( bez vybraneho ) end
% −−−> Ovˇeˇr te p l a t n o s t c e n t r ´a l n i l i m i t n´ı vˇe ty pro z ´a k l a d n´ı s ou b or s % a l t e r n a t i v n´ım r o z dˇe l e n´ım s parametrem p 23
clc , clear a l l nd=100000; % p o c e t op akovan i pokusu n=500; % v e l i k o s t vyberu p =.3; % parametr a l t e r n a t i v n i h o r o z d e l e n i nh=30; % p o c e t i n t e r v a l u pro h i s t o g r a m x=z e r o s ( 1 , nd ) ; f o r i =1:nd % op akovan i pokusu s =0; % p o c i t a n i vyb er oveh o prumeru f o r j =1:n s=s+f i x ( rand < . 3 ) ; end s=s /n ; % vyberovy prumer z Alt r o z d e l e n i x ( i )= s ; % u l o z e n i vyb er oveh o prumeru end f igu r e (1) [ f s ]= h i s t ( x , nh ) ; bar ( s , f ) t i t l e ( ’ Histogram vyberovych prumeru z a l t e r n a t i v n i h o r o z d e l e n i ’ ) % −−−> Hustota p r a v d e p o d o b n o s t i clc , clear a l l nv=10000; % n f =30; % m=2; % s 2 =5; %
a histogram p oˇc e t hodnot z norm . r o z d e l e n i p o c e t i n t e r v a l u pro h i s t o g r a m s t r e d n i hodnota norm . r o z d e l e n i r o z p t a l norm . r o z d e l e n i
x=m+s q r t ( s 2 )∗ randn ( 1 , nv ) ; % gen er ovan e hodnoty z norm . r o z d e l e n i [ f v]= h i s t ( x , n f ) ; % h i s t o g r a m f=f r e k v e n c e , v=s t r e d y i n t . h=(max( v)−min ( v ) ) / n f ; % s i r k a i n t e r v a l u v h is togr am u f=f /nv ; % r e l a t i v n i f r e k v e n c e ( s o u c e t = 1) f=f /h ; % p r i z p . h u s t o t e prav . − v i z Poznamka s=min ( v ) : . 0 1 : max( v ) ; % r o z s a h argumentu pro h u s t o t u pr . g=1/ s q r t (2∗ p i ∗ s 2 )∗ exp ( −1/(2∗ s 2 ) ∗ ( s−m) . ˆ 2 ) ; % h u s t o t a norm . r o z d e l e n i f igu r e (1) % grafy bar ( v , f , . 5 ) , h old on % histogram p l o t ( s , g , ’ r ’ , ’ l i n e w i d t h ’ , 4 ) , h old o f f % n or m aln i r o z d e l e n i % % Poznamka : % Kdyz p ocitam e i n t e g r a l z h u s t o t y pr . numericky , s c i t a m e p l o c h y % o b d e l n i k u f i . h , kde f i j e hodnota f v i −tem i n t e r v a l u k r a t d e l k a % intervalu h, tj . % i n t { f ( x ) dx} = suma{ f i . h} = suma{ f i } . h = 1 % Odtud ted y pro hodnoty f i p l y n e % suma{ f i } = 1/ h % Tak musi byt normovane hodnoty h is togr am u s s i r k o u i n t e r v a l u h , aby 24
% odpovidaly hustote pravdepodobnosti . % −−−> Hustota p r a v d e p o d o b n o s t i clc , clear a l l n=12; % nv=100000; % n f =30; % m=2; % s 2 =5; %
a h i s t o g r a m vyb er oveh o prumeru . r o z s a h vyberu p o c e t op akovan i vyberu p o c e t i n t e r v a l u pro h i s t o g r a m s t r e d n i hodnota s ou b or u r o z p t y l s ou b or u
x=m+s q r t ( s 2 )∗ randn ( n , nv ) ; % gen er ovan a data ( vybery ve s l o u p c i c h ) mx=mean ( x ) ; % v e k t o r vyberovych prumeru ∗) [ f v]= h i s t (mx, n f ) ; % h i s t o g r a m z vyberovych prumeru ∗∗) h=(max( v)−min ( v ) ) / n f ; % s i r k a i n t r v a l u v h is togr am u f=f /nv ; % normovani na s o u c e t f r e k v e n c i = 1 f=f /h ; % normovani na podobnost s hp ∗∗∗) s=min ( v ) : . 0 1 : max( v ) ; % argument pro v y k r e s l e n i hp sv=s 2 /n ; % p r e p o c e t r o z p t y l u pro vyberovy prumer g=1/ s q r t (2∗ p i ∗ sv )∗ exp ( −1/(2∗ sv ) ∗ ( s−m) . ˆ 2 ) ; % hp n or m aln ih o r o z d e l e n i f igu r e (1) % graf bar ( v , f , . 5 ) , h old on % h i s t o g r a m vyberovych prumeru p l o t ( s , g , ’ r ’ , ’ l i n e w i d t h ’ , 4 ) , h old o f f % hp pro vyb er ove prumery % % ∗) % f u n k c e mean z m atice f u n g u j e pro s l o u p c e m atice − v y s l e d e k j e v e k t o r % prumeru ze s l o u p c u m atice % % ∗∗) kdyz ma f u n k c e h i s t v y s t u p n i argumenty , n e k r e s l i h is togr am , a l e % j e n p o c i t a f=f r e k v e n c e , v=s t r e d y i n t e r v a l u , na k t e r y c h s e f r e k v e n c e % p o c i t a l y ; druhy v s t u p n i argument d e f i n u j e p o c e t i n t e r v a l u % % ∗∗∗) % Kdyz p ocitam e i n t e g r a l z h u s t o t y pr . numericky , s c i t a m e p l o c h y % o b d e l n i k u f i . h , kde f i j e hodnota f v i −tem i n t e r v a l u k r a t d e l k a % intervalz h, tj . % i n t { f ( x ) dx} = suma{ f i . h} = suma{ f i } . h = 1 % Odtud ted y pro hodnoty f i p l y n e % suma{ f i } = 1/ h % Tak musi byt normovane hodnoty h is togr am u s s i r k o u i n t e r v a l u h , aby % odpovidaly hustote pravdepodobnosti . % −−−> Histogram pro s o u c e t bodu na n k o s t k a c h a j e h o p or ovn an i % s o d p o v i d a j i c i m normalnim r o z d e l e n i m . clc , clear a l l n=5; % pocet kostek 25
nv=100000; xd=f i x (6∗ rand ( n , nv ) ) + 1 ; x=sum ( xd ) ; k f=n : 6 ∗ n ; n f=l e n g t h ( k f ) ; [ f v]= h i s t ( x , k f ) ;
% p o c e t op akovan i pokusu % m atice dat s vybery ve s l o u p c i c h % data = body na h ozen e k o s t c e % s o u c e t bodu na n k o s t k a c h
% f=f r e k v e n c e a v=s t r e d y i n t e r v a l u pro x , % n f=p o c e t i n t e r v a l u pro h i s t o g r a m
% p or ovn an i h=(max( v)−min ( v ) ) / n f ; f=f /nv ; f=f /h ;
% s i r k a i n t e r v a l u v h is togr am u % normovani f r e k v e n c i na s o u c e t j e d n a % normovani na podobnost s h u s t o t o u pr .
mx=mean ( x ) ; % prumer z gen er ovan ych s o u c t u s x2=var ( x ) ; % r o z p t y l z gen er ovan ych s o u c t u s=min ( v ) : . 0 1 : max( v ) ; % argumenty pro v y k r e s l e n i h u s t o t y pr . g=1/ s q r t (2∗ p i ∗ s x2 )∗ exp ( −1/(2∗ s x2 ) ∗ ( s−mx ) . ˆ 2 ) ; % h u s t o t a norm . r o z d e l e n i s e t ( f i g u r e ( 2 ) , ’ p o s i t i o n ’ , [ 8 0 0 500 600 4 5 0 ] ) p l o t ( s , g , ’ r ’ , ’ l i n e w i d t h ’ , 3 ) , h old on bar ( v , f ) , h old o f f %% KRESLEN´I −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % −−−> p l o t − z a k l a d n i p o u z i t i clc , clear a l l nd=100; % max pro i n t e r v a l k r e s l e n i s = 0 : . 1 : nd ; % body pro k r e s l e n i ( po d e s e t i n e ) x=s i n ( s /nd∗4∗ p i ) ; % funkce x y=2∗ c o s ( s ) . ∗ exp ( −.05∗ s ) ; % funkce y z=3∗ s i g n ( s i n ( s /nd∗3∗ p i ) ) ; % funkce z f i g u r e (11) p l o t ( s , x , ’ r ’ , s , y , ’ b ’ ) , h old on % g r a f ( po h old on s e k r e s l i do p l o t ( s , z , ’ g ’ , ’ l i n e w i d t h ’ , 3 ) , h old o f f % s t e j n e h o obrazku − % − z r u s i s e h old o f f ) a x i s ( [ 1 nd −4 4 ] ) l e g e n d ( ’ s i n u s ’ , ’ tlumeny k o s i n u s ’ , ’ skoky ’ , 0 ) % p o p i s k r i v e k ( p o d l e p o r a d i ) % −−−> p l o t − n a s t a v e n i pro f o r m a t o v a n i g r a f u clc , clear a l l nd=100; s = . 1 : . 1 : nd ; x=s ( 1 0 : 1 0 : nd ) ; % funkce x
26
y=s . ∗ exp ( −.05∗ s ) ; [my i ]=max( y ) ; mx=i / 1 0 ;
% funkce y % maximum f u n k c e (my) a j e h o p oloh a ( i ) % p oloh a maxima v r e ´a l n y c h j e d n o t k a c h
% −−−> g r a f a j e h o f o r m a t o v a n i s e t ( f i g u r e ( 1 2 ) , ’ P o s i t i o n ’ , [ 1 0 0 100 600 6 0 0 ] ) p l o t ( s , y,’−− r ’ , mx, my, ’ o ’ , ’ MarkerEdgeColor ’ , ’ k ’ , ’ LineWidth ’ , 2 , . . . ’ MarkerFaceColor ’ , ’ g ’ , ’ MarkerSize ’ , 1 0 ) t i t l e ( ’ Funkce ’ ’ x∗ exp(−x ) ’ ’ a j e j i maximum ’ , ’ Fon tS ize ’ , 1 6 , . . . ’ FontName ’ , ’ Times ’ ) x l a b e l ( ’ argumenty ’ , ’ Fon tS ize ’ , 1 4 , ’ FontName ’ , ’ Times ’ ) y l a b e l ( ’ f u n k c n i hodnoty ’ , ’ Fon tS ize ’ , 1 4 , ’ FontName ’ , ’ Times ’ ) l e g e n d ( ’ f u n kce ’ , ’ maximum ’ , 0 ) % −−−> p l o t − d a l s i p o u z i t i clc , clear a l l nd=30.4∗ p i ; s = . 1 : . 1 : nd ; a =5; b=10; h = . 0 1 ; x=z e r o s ( 1 , l e n g t h ( s ) ) ; y=x ; f o r i =1: l e n g t h ( s ) x ( i )=a ∗ s i n ( s ( i ) ) ; y ( i )=b∗ c o s ( s ( i ) ) ; a=a+h ; b=b−h ; end f i g u r e (13) plot (x , y)
% p o c e t dat , body pro k r e s l e n i % a , b − p o l o o s y e l i p s y , h − zmena p o l o o s
% x−ova s o u r a d n i c e % y−ova s o u r a d n i c e % zmena p o l o o s
% −−−> 3D g r a f y clc , clear a l l f=@( x , y ) exp ( −.01∗ x ˆ2 −.03∗y ˆ 2 ) ; % d e f i n i c e anonymni f u n k c e x= −10:10; y = −10:10; % meze pro x a y f o r i =1: l e n g t h ( x ) f o r j =1: l e n g t h ( y ) z ( i , j )= f ( x ( i ) , y ( j ) ) ; % m atice hodnot dvourozmerne f u n k c e end end s e t ( f i g u r e ( 1 4 ) , ’ p o s i t i o n ’ , [ 1 0 0 500 400 4 0 0 ] ) , mesh ( x , y , z ) t i t l e ( ’ mesh ’ ) view ( −132 ,62) % f or m at g r a f u ( o t o c e n i , n aklon ) s e t ( f i g u r e ( 1 5 ) , ’ p o s i t i o n ’ , [ 6 0 0 500 400 4 0 0 ] ) w ater f all (x , y , z ) t i t l e ( ’ waterfall ’) s e t ( f i g u r e ( 1 6 ) , ’ p o s i t i o n ’ , [ 1 1 0 0 500 400 4 0 0 ] ) contour (x , y , z ) t i t l e ( ’ con tou r ’ )
27
%% RUZNE −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− % −−−> G r a d i e n t n´ı metodou n a j dˇe t e extr´e m dan´e f u n k c e clc , clear a l l f=@( x , y ) . 0 2 ∗ ( x −1)ˆ2+.1∗( y − 2)ˆ2; % d e f i n i c e anonymni f u n k c e h=.01; % krok h l e d a n i extremu ep s=1e −6; % male c i s l o ( p r i p u s t n a chyba h l e d a n i ) a l =.1; % vaha g r a d i e n t u x=0; y=0; % s t a r t o v a c i bod pro h l e d a n i j =0; % p o c i t a d l o kroku ( i n i c i a l i z a c e ) t e s t =1; % vs tu p do c y k l u while tes t j=j +1; % aktualizace pocitadla d f x =( f ( x+h , y)− f ( x , y ) ) / h ; % gradient x d f y =( f ( x , y+h)− f ( x , y ) ) / h ; % gradient y xn=x−a l ∗ d f x ; % krok h l e d a n i ( pro x ) yn=y−a l ∗ d f y ; % krok h l e d a n i ( pro y ) d=s q r t ( ( xn−x )ˆ2+( yn−y ) ˆ 2 ) ; % d e l k a a k t u a l n i h o kroku p r i h l e d a n i i f d<eps , t e s t =0; end % kdyz d e l k a kroku < eps , konec h l e d a n i x=xn ; y=yn ; % nove −> s t a r e i f j >1e6 , % h led an i nekonverguje d i s p ( ’ Povoleny p o c e t i t e r a c i j e vycerpan ’ ) b r eak end end % vysledky i f t e s t ==0 tx =’ bylo ’ ; else tx =’ nebylo ’ ; end f p r i n t f ( [ ’ Hledane r e s e n i ’ , tx , ’ n a l e z e n o − p o c e t kroku %d . \ n ’ ] , j ) f p r i n t f ( ’ R e s e n i j e [ x , y ] = [%g %g ] . \ n ’ , x , y ) % −−−> I t e r a t i v n i v y ´ p ocet s e z a s t a v o v a c i m p r avid lem % − vyp ocet odmocniny metodou t e c e n − f ( x)=xˆ2−a=0 clc , clear a l l a =10;
% hodnota k odmocneni
xt = [ ] ; j =0; x=a ; t e s t =1;
% % % %
z a l o z e n i v e k t o r u pro u k l a d a n i mezihodnot zalozeni pocitadla i t e r a c i p o c a t e c n i hodnota i t e r a c i pro vs tu p do c y k l u 28
while tes t j=j +1; xn =.5∗( x+a /x ) ; xt =[ xt x ] ; t e s t=abs ( xn−x ) > . 0 0 0 0 1 ; x=xn ; i f j >1000 b r eak end end
% % % % % % % %
c y k l u s pro i t e r a c e (1000 maximalni p o c e t ) in kr em en t p o c i t a d l a i t e r a c e algoritmu u l o z e n i mezivypoctu zastavovaci pravidlo nove −> s t a r e zastavovaci pravidlo p r e r u s e n i cyklu f o r
j ,a,x % t i s k poctu i t e r a c i , z a d a n i a v y s l e d k u f igu r e (1) % v y k r e s l e n i hodnot mezivypoctu bar ( xt ) % % Poznamka : % P r i k a z i f j >1000 , b r eak . . . h l i d a maximalni d ovolen y p o c e t i t e r a c i . % Kdyby a l g o r i t m u s n ekon ver goval , aby vyp ocet s k o n c i l r e g u l a r n e .
29