You are on page 1of 71

Modelovan MATLABem 2

Doprovodn y ucebn text ke cvicenm


Plze n, Listopad 2007 Hana Kockova
Ludek Hynck
Contents
Introduction 4
1 Maticov y prstup k resen uloh 5
1.1 Zadavan - generovan matic . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Skladan matic, v yber podmatic . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Prvkove a maticove operace . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Specialn matice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Prklady k procvicen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Gracke uzivatelske rozhran 13
2.1 Dals prkazy pro praci s objekty a nastaven . . . . . . . . . . . . . . . . . 14
2.1.1 Gracke okno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.2 Osy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Uzivatelske rozhran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Uzivatelske menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Dialogove objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3

Retezce A prace s textem 20
3.1 Spojovan retezcu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Porovnavan retezcu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Vyhledavan v retezcch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4 Konverze retezcu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 Prehled dalsch uzitecn ych funkc . . . . . . . . . . . . . . . . . . . . . . . 21
4 Souborov y vstup a v ystup 24
4.1 Z akladn prace se soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Ulozen a nacten dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Formatovane cten a zapis . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3.1 Binarn soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.2 Textove soubory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.4 Dialogova okna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Anal yza dat a zpracovan signalu 28
5.1 Generovan signalu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2 Anal yza dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Zpracovan signalu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.4 Filtry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5.5 Shrnut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1
6 Prace s obrazky, audio a video v ystup 32
6.1 Prace s obrazky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
6.2 Zvukov y zaznam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6.3 Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
7 Maticova anal yza 36
7.1 Maticova anal yza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.2 LU a QR rozklad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7.3

Rdke matice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
8 Numericka integrace a derivace 40
8.1 Integrace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8.1.1 Funkce MATLABu . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.2 Derivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.2.1 Aproximace derivace diferencemi . . . . . . . . . . . . . . . . . . . 42
9 Pocatecn ulohy ODR 44
9.1 Obycejne diferencialn rovnice . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.2 Numericke metody pro resen ODR . . . . . . . . . . . . . . . . . . . . . . 44
9.2.1 Eulerova metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
9.2.2 Metody Runge-Kuttova typu . . . . . . . . . . . . . . . . . . . . . . 45
9.3 Pocatecn uloha pro ODR v MATLABu . . . . . . . . . . . . . . . . . . . . 46
9.3.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.3.2 Parametry funkce: . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
9.3.3 ODE pro nonsti problem . . . . . . . . . . . . . . . . . . . . . . 47
9.3.4 ODE pro sti problem . . . . . . . . . . . . . . . . . . . . . . . . 47
9.3.5 ODE pro moderately sti problem . . . . . . . . . . . . . . . . . . 47
9.3.6 Volan ODE, zobrazen v ysledku . . . . . . . . . . . . . . . . . . . . 47
9.3.7 Parametry integrace . . . . . . . . . . . . . . . . . . . . . . . . . . 48
10 Okrajove ulohy ODR 50
10.1 Okrajove ulohy pro obycejne diferencialn rovnice . . . . . . . . . . . . . . 50
10.2 Metoda strelby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
10.3 Metoda konecn ych diferenc . . . . . . . . . . . . . . . . . . . . . . . . . . 51
10.3.1 Linearn ODR prvnho radu . . . . . . . . . . . . . . . . . . . . . . 51
10.3.2 Nelinearn ODR prvnho radu . . . . . . . . . . . . . . . . . . . . . 52
10.3.3 ODR druheho radu . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10.4 Funkce MATLABu pro okrajovou ulohu ODR . . . . . . . . . . . . . . . . 57
11 Parcialn diferencialn rovnice 58
11.1 Metoda konecn ych diferenc . . . . . . . . . . . . . . . . . . . . . . . . . . 58
11.1.1 Explicitn metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
11.1.2 Implicitn metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
2
11.2 Funkce MATLABu pro parabolickou PDR . . . . . . . . . . . . . . . . . . 61
12 Metoda konecn ych prvku 63
12.1 Prkazy MATLABu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
13 Aplikace v biomechanice 69
References 70
3
Introduction
Tento ucebn slouz jako doprovodn y text k cvicen predmetu Modelovan MATLABem 2.
Doplnenm jsou prilozene prklady.
4
1 Maticov y prstup k resen uloh
MATLAB je programovac jazyk vysoke urovne zahrnujc datove struktury zalozene na
maticch, vlastn datove typy, rozsahle mnozstv ruzn ych funkc a mimo jine i prostred,
ve kterem si sami muzete vytvaret dals funkce a skripty. Tam, kde se v ostatnch pro-
gramovacch jazycch pracuje s csly, MATLAB umoz nuje praci rovnou s cel ymi maticemi.
Mimo jine ma MATLAB jiz mnozstv preddenovan ych specialnch matic usnad nujcch
programatorovi praci. MATLAB ma take velmi dobre zpracovan y system napovedy. Stac
napr. na prkazovem radku napsat help a zskame seznam vsech nainstalovan ych knihoven
(toolboxu). Dals vyhledavan je uz intuitivn.
1.1 Zadavan - generovan matic
Matice je mozne zadavat nekolika zpusoby:
prmo v yctem jednotliv ych prvku
nactenm z externho souboru
generovanm pomoc specialnch funkc MATLABu
pomoc vlastnch funkc a M-skriptu
Obecne pro matice plat:
zadavame je do hranat ych zavorek
csla v radku oddelujeme carkou ci mezerou, csla v sloupci strednkem
vytvorenou matici muzeme priradit do zvolene promenne, jinak se automaticky uloz
do ans (answer)
k jednotliv ym prvkum matice pristupujeme pres indexy zapsane v kulat ych zavorkach
za n azvem prslusne matice oddelene carkou. Index je vzdy prirozene cslo (tedy
zacn ame cslovat od 1). K poslednmu prvku muzeme pristupovat pres preddenovanou
promennou end.
Generovan vektoru:
v = v1:krok:vn - generuje prvky od hodnoty v1 do hodnoty vn s krokem
v = v1:vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1
v = linspace(od,do,pocet prvku) - linearn delen prvku
v = logspace(od,do,pocet prvku) - logaritmicke delen prvku
V yber prvku pomoc relacnch operatoru:
v1 = v>b - v ysledkem vektor nul a jednicek, podle toho jestli prslusn y prvek spl nuje
podmnku
5
v1 = v(v>b) - v ysledkem vektor prvku vektoru v spl nujcch danou podmnku
v1 = nd(v>b) - v ysledkem vektor indexu prvku vektoru v spl nujcch danou podmnku
Prkazy pro zjisten velikosti vektoru a matice:
length(v) - vrac delku vektoru v
size(M) - vrac velikost matice M (dvojici [pocet radku;pocet sloupcpocet radkuu])
1.2 Skladan matic, v yber podmatic
Z existujc matice je mozno pomoc tzv. dvouteckove konvence vybrat libovolnou pod-
matici, vektor ci prvek.
1.3 Prvkove a maticove operace
Prvkove operace provadme pomoc operatoru . Napr. nasoben matic po prvcch
odpovda operaci, kdy se nasob pouze prvky na odpovdajcch pozicch
N3 = B1.*B2
N4 = M.

2
Maticove operace aneb respektujeme pravidla linearn algebry
transpozice matice
M trans = M
hermitovska transpozice matice - jsou-li prvky matice komplexn csla, v transpono-
vane matici jsou nahrazeny prvky komplexne sdruzen ymi
M Htrans = M.
sctan, odectan matic - sctame, odectame matice shodn ych rozmeru
S = M2 + M3 R = M2 - M3
nasoben matic - respektujeme pravidla pro nasoben matic
N1 = A1*A2 N2 = A2*A1
delen matic - opet pozor na rozmery jednotliv ych matic, v MATLABu je mozne
pouzt zpetne lomeno
A/B nen totez, jako B\A:
A = [1 2 3; 4 5 6]; B = [1 1 1; 0 1 0];
D1 = A/B D2 = B/A
D3 = A\B D4 = B\A
Nebo-li plat:
A/B = AB
1
A\ B = A
1
B
Pozn. tvorba inverzn matice (pro ctvercove matice)
6
inv(A)
A

(1)
I/A
I/A = A \ I A = A/I = I \ A
umoc novan A

n
1.4 Specialn matice
Jako parametr maj tyto funkce vzdy pocet radku a sloupcu pozadovane v ysledne matice.
V prpade ctvercove matice stac zadat pouze jeden parametr.
rand(m,n) - matice nahodn ych csel z intervalu < 0; 1 >, rovnomerne rozdelen
randn(m,n) - matice nahodn ych csel z intervalu < 0; 1 >, normaln rozdelen
eye(m,n) - jednotkova matice
ones(m,n) - matice nul
zeros(m,n) - matice jednicek
diag(v) - diagonaln matice s vektorem v na hlavn diagonale
1.5 Prklady k procvicen
Vsechny prklady reste bez pomoci cyklu. Vyuzijte funkce: linspace, length, size, nd, rep-
mat, mod. V yznam funkc, ktere neznate, naleznete v napovede (napr help repmat).
Prklad: Vyreste soustavu
4x 6y + 5z = 2
8x + y 3z = 3
x + y + z = 4
7

Resen:
_

_
x
y
z
_

_
=
_

_
4 6 5
8 1 3
1 1 1
_

_
\
_

_
2
3
4
_

_
b = [2;3;4;];
A = [4 -6 5; 8 1 -3; 1 1 1];
x = b\A
Prklad: Pomoc specialnch matic vygenerujte nasledujc matici:
M =
_

_
7 1 1 1 0 0 5
1 1 1 0 1 0 5
1 1 4 0 0 1 5
0... 0... 0... 0... 0... 0... 0...
_

_
a vyberte
druh y radek
r =
_
1 1 1 0 1 0 5
_
posledn sloupec
s =
_

_
5
5
5
0...
_

_
podmatici
P =
_

_
1 1 0 1
1 4 0 0
_

_
8

Resen:
M = [diag([6 2 3]) + ones(3), eye(3), 5 ones(3, 1); rand(1, 7)]
r = M(2,:)
s = M(:,end)
P = M(2:3,2:5)
Prklad: Rozdelte vektor v nahodn ych csel mezi 0 a 1 na v1 a v2, kde vsechny prvky
v1< 0.5, vsechny prvky v2> 0.5

Resen:
n=10;
v = rand(1,n)
v1 = v(v>0.5)
v2 = v(v<0.5)
indexy v1 = v>0.5 %... (logicky vyraz vraci 0 nebo 1; na mste, kde je splnen logicky vyraz,
bude ve vysledku 1, jinde 0)
indexy v2 = v<0.5
Prklad: Napiste funkci pro vykreslen pravidelneho n- uhelnku. n je vstupn parametr.

Resen:
function uhelnik(n)
r = 1;
= linspace(0,2*pi,n+1);
x = r*cos();
y = r*sin();
plot(x,y)
Prklad: Spoctete delku sroubovice (nebo trycht yre).

Resen:
r = 1; % polomer
n = 20; % pocet zavitu
t = 0:0.1:2*pi*n;
k = linspace(0,10,length(t)); % konstanta umernosti pro trychtyr
x = r*k.*cos(t);
y = r*k.*sin(t);
z = t;
9
plot3(x,y,z)
delka = sum(((x(2:end)-x(1:end-1)).

2 + (y(2:end)-y(1:end-1)).

2 + (z(2:end)-z(1:end-1)).

2).

(1/2))
Prklad: Vypiste tabulku hodnot goniometrick ych funkc a vykreslete funkci tg(x).

Resen:
% pres stupne
x d = 0:15:180;
ys d = sind(x d)
yc d = cosd(x d)
yt d = tand(x d)
plot(yt d)
% pres radiany
x p = 0:pi/12:pi;
ys p = sin(alfa p)
yc p = cos(alfa p)
yt p = tan(alfa p)
plot(yt p)
Prklad: Na racku veznch hodin doplachtil mravenec Ferda. Prochaz se po n tam a
zpet. Napiste funkci, ktera vykresl trajektorii Ferdovy chuze. Delka racky a rychlost
Ferdy budou vstupnmi parametry funkce.

Resen:
function d=ferda(l,v)
% cas a uhel
t1=l/v;
t=0:t1/100:t1;
=-t/3600*2*pi+pi/2;
10
% hodiny
gure
plot(l*cos(0:0.1:2*pi),l*sin(0:0.1:2*pi),b-)
hold on
% chuze tam
x=v*t.*cos();
y=v*t.*sin();
d=sum(sqrt((x(2:end)-x(1:end-1)).

2+(y(2:end)-y(1:end-1)).

2));
comet(x,y)
% chuze zpet
=-(t+t1)/3600*2*pi+pi/2;
x=(l-v*t).*cos();
y=(l-v*t).*sin();
d=d+sum(sqrt((x(2:end)-x(1:end-1)).

2+(y(2:end)-y(1:end-1)).

2));
comet(x,y)
Prklad: Funkce popisujc cyklicke zatezovan
1. Vykreslete pilu
2. Vykreslete zuby

Resen:
ad 1)
t1=0:0.1:10;
plot(t1,asin(sin(t1)))
t2=0:1:20;
plot(t2,mod(t2,2),r)
11
ad 2)
zub x = oor(0.5*[0:n*4-1]);
zub y = repmat([0 h h 0],1,n);
plot(zub x,zub y)
12
2 Gracke uzivatelske rozhran
GUI je zkratka pro Graphical User Interface, neboli gracke uzivatelske rozhran. System
oken a tlactek se denuje (vlastno)rucne psanem M-skriptu nebo vytvar interaktivne
mys v nastroji pripravenem v MATLABu - tzv. guide, kter y spustme z prkazove r adky
prkazem guide. Dals praci s nm prenechame samostudiu zalozenem na poznatcch z
MATL1.
MATLAB denuje gracke objekty jako zakladn gracke jednotky sveho grackeho systemu.
Tyto jednotky jsou usporadany ve stromove strukture, zahrnuj root (obrazovku), gure
(gracke okno), axes (osy), line (caru), patch (vyplnen y mnoho uhelnk), surface (plochu),
image (fotograi), text (textove pole), uicontrol (ovladac prvky) a uimenu (uzivatelske
menu). Nze postavene objekty ded vsechny vlastnosti objektu postaveneho v ys, pribraj
dals a ty spolu se zdeden ymi predavaj sv ym potomkum.
Kazd y grack y objekt ma svul identikator (odkaz, ukazatel, tzv. handle - ovladac),
kter y se objektu prirad v okamziku jeho vytvoren. Tento odkaz je tvoren prirozen ym
nebo kladn ym realn ym cslem a muzeme jej priradit do zvolene promenne. Pomoc tohoto
identikatoru se na dan y objekt odkazujeme. Muzeme tak menit jeho vlastnosti, napr. typ
krivky, barvu pozad atd. Identikator objektu root ma vzdycky hodnotu 0, pro objekty
gure jsou vyhrazena prirozena csla, identikatory ostatnch objektu jsou realna csla.
V teto kapitole se budeme venovat objektu gure a zejmena jeho potomkum uimenu a
uicontrol. Potomkum objektu axes byla venovana cvicen v MATL1.
Root je korenem hierarchie. Odpovda obrazovce poctace. Je jedin y, vsechny dals
objekty jsou jeho potomky.
13
Figure jsou samostatna gracka okna. Muze jich existovat libovoln y pocet a vsechny
jsou potomky objektu root. Vsechny dals gracke objekty jsou potomky objektu
gure. Generovany jsou funkc gure.
Axes denuj oblast v grackem okne. Jsou potomky objektu gure a dals objekty
jako line, text, patch (atd.) jsou jejich potomky. Generovany jsou funkc axes.
Uimenu jsou uzivatelska menu, ktera umoz nuj v objektu gure vytvorit vlastn menu.
Jsou potomky objektu gure. Generovany jsou funkc uimenu.
Uicontrol jsou ovladac prvky, ktera vykonavaj prslusne funkce. Jsou potomky ob-
jektu gure. Generovany jsou funkc uicontrol.
2.1 Dals prkazy pro praci s objekty a nastaven
Pokud jsme si zapomneli identikator na dan y (vytvoren y) objekt ulozit do promenne a
zjistili jsme, ze se bez nej neobejdeme, lze jej zskat pomoc funkc gcf, gca a gco. Stac
dan y objekt aktualizovat napr. mys.
gcf - vrac hodnotu ukazatele na aktualn gracke okno (objekt gure)
gca - vrac hodnotu ukazatele na aktualn osy (objekt axes)
gco - vrac hodnotu ukazatele na aktualn objekt (uicontrol, line, patch, ...)
delete(h) - funkce, ktera smaze grack y objekt s ukazatelem h.
delete(gcf) - smaze aktualn gracke okno. Tmto zpusobem muzeme smazat aktualn osy
nebo aktu aln grack y objekt.
[x,y] = ginput - umoz nuje vybrat body z grackeho okna (z os) pomoc mysi. Nacta body
do stisku klavesy enter. Souradnice uklada do vektoru x, y.
[x,y] = ginput(n) - nacta n bodu
2.1.1 Gracke okno
gure
Samostatne jej otevreme prkazem gure z prkazoveho radku MATLABu. Hodnoty iden-
tikatoru pro tento objekt jsou prirozena csla. Toto okno se take otevre automaticky s
kazd ym prkazem pro kreslen, coz souvis s v yse popsan ym objektov ym prstupem MAT-
LABu. V tomto grackem okne je take mozne pomoc mnozstv nastroju, ktere jsou
umsteny na panelech u hornho okraje okna, menit vlastnosti vykreslovan ych objektu,
napr. menit barvy a tlous

tky krivek, fonty a velikosti popisu os, rozsahy os, apod.


Nektere vlastnosti:
Units - volba jednotek
Position - vektor ctyr csel [x, x, y, y] udavajc polohu a velikost objektu. (x, y) jsou
14
souradnice leveho dolnho rohu, (x + x, y + y) jsou souradnice praveho hornho rohu
MenuBar - odkaz na panel se standardnm menu
Name - nazev grackeho okna (zobrazen y v zahlav okna)
2.1.2 Osy
axes
Vykreslme prkazem axes z prkazoveho radku MATLABu. Otevre se zakladn okno spolu
s vykreslen ymi osami. Mertka os muzeme libovolne menit pomoc funkce axis([x min,
x max, y min, y max]), jejz parametry udavaj minimaln a maximaln hodnoty na osach
x, y (pro 3D prpady axis([x min, x max, y min, y max, z min, z max])).
V ycet vybran ych vlastnost:
LineWidth - zmena tloustky cary
Visible - viditelnost os
Fontsize - zmena velikosti psma
2.2 Uzivatelske rozhran
uicontrol
Prkaz uicontrol napsan y na prkazovem radku otevre gracke okno s tlactkem. To po-
moc nastaven jeho vlastnost (set) umstujeme, volme velikost, typ, prpadne barvu a
15
prirazujeme mu funkci. Vlastnosti samozrejme ded po objektu gure a pribra dals speci-
cke.
Vlastnosti lze take nastavovat pomoc prostred inspektor. Toto prostred daneho ob-
jektu otevreme pres ukazatel na tento objekt: inspector (h).
Style - typ uzivatelskeho rozhran (viz. nze)
String - popis rozhran
CallBack - odkaz na funkci vykonavajc cinnost pridelenou rozhran uzivatelem
Value - cselna hodnota rozhran, u rozhran typu zapnuto/vypnuto a typu slider
Typy rozhran
V MATLABu je denovano nekolik druhu uzivatelsk ych rozhran (ovladacch prvku).
Volme je pres vlastnost Style.
Pushbutton - po stisknut vykonava cinnost prirazenou mu pomoc callback
Togglebutton - prepnac, Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
Radiobutton - zaskrtavac pole, Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
Checkbutton - zaskrtavac pole, Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
Slider - posuvna lista, Value je realne cslo z intervalu < 0, 1 >, hodnota odpovda
pozici listy.
Listbox - seznam vce polozek, kazde muzeme priradit funkci pomoc CallBack, polozky
popisujeme vlastnost String
Popupmenu - rozbalovc seznam polozek, kazde muzeme priradit funkci pomoc Call-
Back, povinn y popis polozek denovan y vlastnost String,
Edit - pole, do ktereho je mozne zapisovat (editovat), vhodne pro zadavan vstupnch
hodnot, predavame dal pomoc String
Text - pole pro umsten textu, vhodne pro popisy ostatnch prvku a vypisovan
v ysledku
Frame - pouze ramecek
Pri volan CallBack venujte pozornost predavan parametru. Musme predavat hodnoty
ukazatelu na objekty (rozhran, osy, ...). Je nekolik mo nost a to jako vnitrn parametry
volane funkce, pres vlastnost grackeho okna UserData, zavedenm globalnch promenn ych.
Vsechny moznosti jsou ukazany na nasledujcm prkladu.
Prklad: Nadenujte GUI, ve kterem bude mozne menit barvu pozad vykreslovan ych os
pomoc rozhran slider. Tri rozhran pro tri barevne slozky (viz. obr.)
16
(Tip na vylepsen prkladu: vypisovat do textoveho rozhran aktualn nastaven RGB)

Resen: Naleznete v souborech


gui param global.m, gui param global fce.m
gui param.m, gui param fce.m
gui param userdata.m, gui param userdata fce.m
2.3 Uzivatelske menu
uimenu
Prkaz uimenu napsan y na prkazovem radku otevre gracke okno s neviditelnou polozkou
v liste se standardnmi menu. Tato polozka je pripravena pro denovan dalsch menu.
Vlastnost Label priradme polozce nazev a pomoc CallBack pridelme funkci.
Pokud nehceme standardn menu, stac nastavit set(gcf, menubar, none).
Nektere vlastnosti:
Label - nazev polozky menu
CallBack - nazev funkce vykonavajc cinnost pridelenou rozhran uzivatelem
Separator - oddelovac cara
Accelerator - znak pro klavesovou zkratku
Prklad: jednoducha ukazka menu
f = gure(MenuBar,None);
m = uimenu(f,Label,Konec,CallBack,delete(f));
17
Pozn. Je mozne vytvaret i menu do sebe vnorena.
2.4 Dialogove objekty
errordlg(hlaseni) - zobraz dialogove okno s chybovov ym hlasenm, zobraz text hlaseni,
kter y je zadan jako parametr typu retezec
warndlg(hlaseni) - zobraz dialogove okno s varovn ym hlasenm, zobraz text hlaseni,
kter y je zadan jako parametr typu retezec
Pozn. vce viz. MATLAB - Help.
Prklad: Naprogramujte podle obrazku vykreslen funkce sin(x). Vyuzijte guide.
Prklad: Naprogramujte podle obrazku interpolaci se zadavanm interpolacnch bodu
mys.

Resen: Naleznete v souborech


interpol.m, interpol fce.m, nactidata.m
18
19
3

Retezce A prace s textem

Retezec muze b yt znak nebo pole znaku. Zadavame je do apostrofu, k jednotliv ym znakum
lze pristupovat pres indexy.
Vytvoren retezce: retezec = Toto je retezec
Vytvoren prazdneho retezce: prazdny retezec =
Vytvoren prazdneho retezce o n mezerach: prazdny retezec = blank(n)
3.1 Spojovan retezcu
Podobne jako se spojuj vektory:
[retez1 retez2 retez3] = retez1 retez2retez3
Pomoc funkce strcat(retez1, , retez2, retez3) dostaneme retez1retez2retez3.
Tato funkce slep retezce za sebe, ignoruje mezery.


Retezce do sloupce, pokud jsou stejne dlouhe, pomoc strednku [retez1; retez2;
retez3]
Pomoc funkce strvcat(retez1, retezec2, retezecek3) muzeme radit pod sebe retezce
ruzn ych delek. Rozdly jsou doplneny mezerami.
3.2 Porovnavan retezcu
Pomoc relacnch operatoru (<, >, =, ...) se porovnavaj na zaklade hodnot v
ASCII kodu. V ysledkem je logicka hodnota. a<b 1(true), a>b 0(false).
Takto lze porovnavat retezce stejn ych delek nebo jeden znak s retezcem. V ysledkem
je pak vektor nul a jednicek.
Pomoc funkce strcmp(s1,s2). V ysledkem je 1, pokud jsou retezce shodne, jinak 0.
Funkce strncmp(r1, r2, n) umozn porovnat prvnch n znaku z obou retezcu.
3.3 Vyhledavan v retezcch
Funkce ndstr(r1, r2) vyhledava krats retezec v delsm, vrac indexy prvku, kde byl
podretezec nalezen.
ndstr(bar, barova zidle barometr mlecny bar) = [1, 14, 30]
Funkce strmatch(r1, pole retezcu) vrac indexy radku z promenne pole retezcu, na
kter ych se vyskytuje retezec zacnajc retezcem r1.
20
3.4 Konverze retezcu
Funkce double(s) prevad znak na cselnou hodnotu, kterou ma v ASCII kodu.
double(retezec) = [114 101 116 101 122 101 99]
Funkce char(x) je opacna k funkci predchoz, prevad cselnou hodnotu na znak. Opet
podle ASCII kodu.
char([114 101 116 101 122 101 99]) = retezec
Funkce int2str(N) prevad celocselnou hodnotu na retezec.
Funkce num2str(N) prevad cselnou hodnotu na retezec.
Funkce str2num(s) opak num2str
Posledn tri jmenovane funkce se hojne vyuzvaj pri zskavan parametru z grackeho
uzivatelskeho prostred (pri komunikaci s GUI).
3.5 Prehled dalsch uzitecn ych funkc
ischar(s) - je-li s textov y retezec, ma hodnotu 1 (true), jinak 0 (false)
isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1, jinak 0
isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstra nuje mezery na konci retezce
eval(s) - prevede retezec na v yraz a provede ho
upper(s) - vsechna mala psmena v retezci prevede na velka
lower(s) - vsechna velka psmena v retezci prevede na mala
Prklad: Pomoc dialogoveho okna napiste oznamen o v ysledku nejakeho v ypoctu ve
tvaru:
Vysledek je 42 jednotek.

Resen:
msgbox([Vysledek je num2str(42) jednotek.])
Prklad: Napiste funkci, ktera prekonvertuje retezec na csla (hodnoty ASCII kodu) a
secte jej.

Resen:
% jednodussi varianta
21
function hodnota = konvert(retez)
hodnota = sum(double(retez));
% slozitejsi varianta
function konvert(varargin)
if nargin == 0
display(neni zadan retezec)
else
retez = []
for i=1:nargin
retez = [retez varargin{i}]
end
hodnota = sum(double(retez));
msgbox([Hodnota zadaneho retezce je: num2str(hodnota) .])
end
Prklad: Tri specicky zapojene resistory se odlisuj barvou, ktera urcuje hodnotu jejich
odporu. Celkov y odpor zapojen se vypocte podle vzorce
R = (10R1 + R2)10
R3
. Napiste funkci, ktera spocte v yslednou hodnotu pro tri zadane
barvy.
black 0 bla
brown 1 br
red 2 r
orange 3 o
yellow 4 y
blue 5 blu
green 6 gre
violet 7 v
gray 8 gra
white 9 w
Table 1: Tabulka barev a hodnot
22

Resen:
najdete v souborech resistor.m, muj resistor.m
Namety na dals prklady: Vytvorit pole zanamu typu student.jmeno, student.rocnik apod.
a vyhledavat v nem nebo radit.
23
4 Souborov y vstup a v ystup
4.1 Zakladn prace se soubory
V prostred MATLAB se rd nasledujcmi prkazy psan ymi na prkazovem radku:
cd - zmena aktualnho adresare
pwd - v ypis aktualnho pracovnho adresare vcetne cele cesty
dir - v ypis obsahu pracovnho adresare
d = dir - do promenne d typu struktura uloz podrobnosti o adresari
ls - v ypis obsahu pracovnho adresare
matlabroot jm souboru - v ypse cestu k adresari, kde je MATLAB nainstalovan y
type - v ypis obsahu souboru na obrazovku
4.2 Ulozen a nacten dat
Zopakujeme si i prkazy z MATL1
diary - uloz (historii) posloupnost prkazu, ktera je uvozena prkazem diary on a konc diary
o do souboru diary.
save - uloz obsah pracovnho prostoru promenn ych (workspace) do souboru matlab.mat v
binarnm kodu
save jmeno.souboru - uklada v binarnm kodu cel y obsah pracovnho prostoru do nami zv-
oleneho souboru (nov y zaloz, existujc prepse)
save jmeno.souboru promenna - uklada v binarnm kodu do nami zvoleneho souboru pouze
zvolene promenne
save jmeno.souboru promenna format - uklada do nami zvoleneho souboru (nov y zaloz, ex-
istujc prepse) zvolene promenne ve zvolenem formatu
lze pouzt i zapis save(soubor.muj,promenna,format)
load - nacte obsah matlab.mat do pracovnho prostoru
load jmeno.souboru - nacte obsah souboru jmeno.souboru do pracovnho prostoru, pokud je
soubor bin arn
load jmeno.souboru promenna - pokud je soubor binarn, nacte z nej pouze zvolenou promennou
load soubor.txt - nacten ASCII souboru do matice. Soubor mus mt stejn y pocet radku a
sloupcu, i retezce nacte jako csla.
lze pouzt i zapis load(soubor.muj)
importdata(soubor) - nacta ruzne typy dat, sam vybere, do jakeho typu promenne
Prklad: Ulozte obsah vaseho aktalnho pracovnho prostoru (alespo n 4 libovolne promenne),
smazte obsah pracovnho prostoru a nactete zpet 2 promenne z ulozeneho souboru. (opakovan
24
z MATL1)
4.3 Formatovane cten a zapis
Hod se napr. pro formatovan textov ych souboru, ktere jsou vstupnmi daty v ypoctov ych
programu. Zakladem je prace s identikatorem otevreneho souboru. Vsechny nasledujc
prkazy pracuj s identikatorem otevreneho souboru. Jin ymi slovy soubor, se kter ym
chceme pracovat, mus b yt otevren pomoc funkce fopen. Tmto prkazem otevreme soubory
binarn i textove, prace s nimi je pak rozdlna.
d = fopen(soubor.muj) - otevre soubor pro cten, identikator uloz do promenne d. d
je cele kladne cslo vets nez 2. Pokud soubor nebyl z nejakeho duvodu otevren, d = -1.
Muzeme pridat dals parametr, kter y urcuje, v jakem rezimu je soubor otevren:
d = fopen(soubor.muj, r) - pouze pro cten
d = fopen(soubor.muj, w) - pouze pro zapis, nov y soubor vytvor, existujc prepse
d = fopen(soubor.muj, a) - pripisuje na konec souboru, neexistujc vytvor
d = fopen(all) - vrac identikatory vsech uzivatelem aktualne otevren ych souboru
fclose(d) - uzavre soubor s identikatorem d. Vrac hodnotu 0, pokud se podarilo soubor
zavrt, pokud ne, ma hodnotu -1.
d = fclose(all) - uzavre vsechny aktualne otevrene soubory
feof(d) - test konce souboru, vrac 1, pokud naraz na znak konce souboru, jinak 0
fscanf(d, %...%..., [n,m]) - cte po znacch z otevreneho souboru. Pokud msto m napseme
inf, cte do konce souboru. Za znak % pseme kolik znaku ma b yt nacteno a jejich typ.
Zkratky pro typ jsou uvedeny v nasledujc tabulce.
fprintf(d, %...%..., prom1,prom2) - zapisuje po znacch do souboru. Za znak % pseme ko-
lik znaku ma b yt nacteno a jejich typ. Zkratky pro typ jsou uvedeny v nasledujc tabulce.
Formatovn y text pseme do apostrofu, za nej pak carkou oddelujeme zapisovane promenne.
fprintf(d, %...%...\n\r, prom1,prom2) - muzeme pripojit znak pro konec radku, \n pro
unix, \r\n pro windows.
%c posloupnost znaku
%d cela csla
%f realna csla
%s posloupnost bl ych znaku (mezer)
25
Prklad: Prklady formatovaneho zapisu do souboru
fprintf(le,NODE / %8d%16.3f%16.3f\n, uzel ID, uzel sour(1), uzel sour(2));
A = [1 2 3 4; 5 6 7 8];
fprintf(f2, %8.4f %8.4f \r\n,A);
4.3.1 Binarn soubory
fwrite(d, A) - zapse binarne promennou A do souboru s identikatorem d. Pro kazde
cslo vyhrad 1 bit a rad je do sloupce pod sebe.
fwrite(d, A, prec) - parametr prec urcuje format a velikost zapisovane promenne.
A = fread(d) - nacte data ze souboru do matice A v binarnm formatu.
A = fread(d, pocet) - nacte predepsan y pocet bitu ze souboru do matice A.
A = fread(d, pocet, prec) - nacte data ze souboru podle predepsaneho formatu ulozeneho
v prec.
Pozn. Pro spravne nacten je treba znat, v jakem formatu byl soubor zapsan.
fseek(d, oset, origin) - priprav nasledujc cten ze souboru pres fread. Parametr oset
udava format cten, origin nastavuje, odkud zacne cten.
4.3.2 Textove soubory
fgets(d) - nacte z otevreneho souboru cel y radek vcetne znaku pro konec radku
fgetl(d) - nacte z otevreneho souboru cel y radek bez znaku pro konec radku
Prklad: Napiste funkci, jejz vstupem je jmeno textoveho souboru, kter y je na disku a
obsahuje text po radkach, z nichz nektere zacnaj klcov ym slovem NODE. Funkce vytvor
nov y soubor bez uzlu (bez radku, ktere zacnaj klcov ym slovem NODE), jmeno souboru
vrat jako retezec. Testovac vstupn soubor je chroupak vstup.inc.

Resen: Najdete v souboru konvertor 1.m.


function vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jm,r);
vystupni=fopen(konvertor1 vystup.inc,w);
while feof(vstupni);
radek=fgets(vstupni);
if length(radek)<4 | ( strcmp(radek(1:4),NODE))
26
fprintf(vystupni,radek);
end
end
fclose(all);
vystupni jm=konvertor1 vystup.inc;
Dals ukazky prace s binarnm i textov ym souborem jsou v souborech pokus.m, pokusny soubor.txt
4.4 Dialogova okna
[jmeno, cesta]=uigetle - otevre dialogove okno pro otevren souboru, jmeno a cestu k
souboru uloz do promenn ych typu retezec
[jmeno, cesta]=uiputle - otevre dialogove okno pro ulozen souboru, jmeno a cestu k
souboru uloz do promenne typu retezec
Obe funkce muzeme pouzt s parametrem specikujcm typ souboru a nazvem dialogu:
[jmeno, cesta]=uiputle(.txt,nazev dialogu)
Prklad: Prepiste funkci z predchozho prkladu na skript. Pro v yber souboru pouzijte
funkci uigetle, pro v yber v ystupnho pouzijte uiputle.

Resen: Najdete v souboru konvertor 2.m.


27
5 Anal yza dat a zpracovan signalu
datafun - Data analysis and Fourier transforms
signal - Signal processing toolbox
sigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty, musme nejaka zskat:
zadat v yctem konkretn posloupnost csel
generovat pomoc funkc MATLABu
nacst ze souboru (*.txt, *.bin, ...)
vytvorit vlastn generator
5.1 Generovan signalu
Signal muze b yt
jednokanalov y
pr. x = randn(1,100);
vcekanalov y
pr. X = [x 2x x/]
Typy sign alu podle tvaru
bl y sum - zcela nahodn y signal. Takov y muzeme vygenerovat pomc funkce randn.
pr. randn(n,1)
vlnove signaly - signaly na bazi funkce sinus
y = sin(t) = sin(2ft)
y = sin(2 pi 50 t) + sin(2 pi 120 t)
pulsy - generujeme na urcitemcasovem intervalu, pak je skladame. Existuj preddenovane
funkce pro tvorbu pulsu:
sawtooth(t,w) - zub pily, t je pozadovan y casov y interval, koecient umsten vrcholu,
w< 0; 1 >
square(t,d) - ctverce, t je pozadovan y casov y interval, koecient umsten srky
ctverce v procentech periody, d< 0; 100 >
Mezi dals, jejichz zakladem je sinusovka, patr napr. pulstran a sinc.
Poznamka:

Stabn kultura. obvykle se jednokanalov y signal generuje ve sloupci, snadno


se pak rozsiruje na vcekanalov y. Jednotlive signaly jsou ulozeny po sloupcch.
28
5.2 Anal yza dat
Zopakujeme a prohloubme znalosti statistiky z MATL1.
m = max(x) - nejvets prvek vektoru, u matice vrac vektor nejvetsch prvku z jednotliv ych
sloupcu
[m,I] = max(x) pokud je vc prvku s maximaln hodnotou, hodnotu uloz do promenne m,
do I uloz index prvnho nalezeneho nejvetsho prvku
m = min(x) - nejmens prvek vektoru, u matice vrac vektor nejmensch prvku z jednotliv ych
sloupcu
[m,I] = min(x) pokud je vc prvku s manimaln hodnotou, hodnotu uloz do promenne m,
do I uloz index prvnho nalezeneho nejmensho prvku
mean - sredn hodnota
median - median, plat
_
x
1
0
P(x)dx =
_

x
1
P(x)dx = 0.5
var - rozptyl
std - smerodatna odchylka
sort - rad prvky podle velikosti
sort(x,ascend) - vzestupne
sort(x,descend) - sestupne
sum - soucet sech prvku
prod - soucin prvku
hist - histogram, sloupcov y graf cetnosti
pie - kolacov y graf
Poznamka: u vetsiny funkc je mozne zadat nepovinn y parametr DIM, kter y v prpade
matice urc, jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcch (DIM
= 1).
5.3 Zpracovan signalu
cov - kovariance vektoru, jej hodnota urcuje, jak moc kmita signal kolem stredn hodnoty
xcorr - korelace signalu. V ystupn vektor c delky 2N-1 urcuje, jak y je vzajemn y vztah
mezi signaly x a y delky N.
c = xcorr(x,y)
je-li c(i) >> 0 nebo c(i) << 0 pak signaly jsou v danem mste podobne
je-li c(i) 0i signaly nekoreluj, napr. dva ble sumy
podle hodnot c lze odhadnout periodicnost signalu
29
t - fast fourier transformation
prklad viz. Help
prevod signalu z casove oblasti do frekvencn
funguje nejefektovneji pro 2
n
prvku
y = t(x,2
n
)
5.4 Filtry
Podle typu signalu, kter y zpracovavame delme ltry na
spojite, zpracovavaj spojit y vstupn signal Laplaceova transformace do frekvencn
oblasti,
diskretn, zpracovavaj diskretn vstupn signal Z-transformace do frekvencn oblasti.
Podle zpusobu reprezentace
FIR - konecne (nite impulse response lters)
IIR - nekonecne (innite impulse response lters)
Typy ltru podle propustnosti - tvaru frekvencn oblasti
doln propust (low pass)
horn propust (high pass)
pasmova propust (band pass)
pasmova zadrz (band stop)
Filter design - vypocten koecientu a, b (numerator, denominator), vstupem jsou mezn
frekvence a rad ltru.

Rad ltru urcuje pocet prvku vektoru koecientu a, b. Prklady
funkc pro vypocten parametru a, b:
pro FIR ltry - potrebuj jen koecienty b
r1
rls
pro IIR ltry - potrebuj koecienty a i b
bessel
butter
cheby1
Vykreslen charakteristiky zvoleneho (spocteneho ltru)
freqs(a,b) - pro analogov y ltr
freqz(a,b) - pro diskretn ltr
Filter implementation - samotne ltrovan
y = lter(b,a,x)
30
5.5 Shrnut
1. zskat signal
2. zjistit jeho frekvencn charakteristiky
3. navrhnout ltr - urcit, ktere frekvence se odltruj, rad ltru
4. spocten koecientu pro zvolen y typ ltru, prpadne zkontrolovat jeho frekvencn
charakteristiku
5. ltrovan signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (gracke uzivatelske prostred)
pro navrhovan ltru a ltrovan signalu
FDATool - nastroj pro navrhovan a anal yzu ltru
SPTool - nastroj pro zpracovan digitalnho signalu
31
6 Prace s obrazky, audio a video v ystup
Probrane funkce najdete v nasledujcch knihovnach MATLABu:
images - Image processing toolbox
imdemos - Image processing toolbox - demos and sample examples
audiovideo - Audio and video support
6.1 Prace s obrazky
Soubor funkc podporujcch praci s obrazky je postaven na objektech.
image - funkce, ktera vytvor grack y objekt
I = image(C) - do promenne I uloz ukazatel na objekt, kazd y prvek pole C predstavuje
barvu obelnkoveho pole v obrazku.
Pr. I = image(100*rand(5,3))
Jak se orientovat v obrazku, jak urcit polohu daneho bodu/msta/pixelu.
Pixelov y souradnicov y system - koresponduje s indexovanm matice
Prostorov y souradnicov y system - pixel je reprezentovan obdelnkem, ma nejakou
plochu. Souradn y system pak zacna hodnotou 0.5 pro osu x i y, osa x roste, jak je
zvykem (vodorovne doprava), osa y narusta svisle dolv. Celocselne souradnice pak
odpovdaj stredu prslusneho pixelu, ale porad souradnic je prehozene. pixel(5, 3)
x = 3, y = 5.
imread - funkce pro nacten dat z grackeho souboru do pole MATLABu (do pracovnho
prostoru). Podporuje tyto gracke formaty: bmp, cur, gif, hdf, ico, jpg/jpeg, pbm, pcx,
png, pnm, ppm, ras, tif/ti, xwd. Takto nactene obrazky se do MATLABu ukladaj ve
forme pole (matice) s rozmery shodn ymi s rozmery obrazku (poctem pixelu).
A = imread(obrazek.pripona) - A je matice o rozmerech m x n x 3
Prklad: misa = imread(Obr\misan.jpg)
[X,map] = imread(obrazek.pripona) - X je matice m x n, map je mapa barev velikosti
pocet barev x 3
Prklad:[caroda pix,caroda map] = imread(Obr\image007.gif)
V MATLABu (resp. v Image processing toolboxu) jsou ctyri zakladn druhy/typy obrazku:
Binarn - logicke pole nul a jednicek, 0 pro cernou bravu, 1 pro blou. Pozice hodnoty v
poli odpovda pixelu na obrazku.
Indexove - obrazek se nacte do dvou matic. Prvn je pole csel (muze b yt typ logical,
32
uinit8, unit16, single, double), hodnoty pixlu jsou prmo indexy do barevne mapy.
Intensitn - pro cernoble obrazky, hodnoty v matici odpovdaj stupni sedi (intenzite sede
barvy)
Truecolor - obrazek nacten do 3-rozmerne matice velikosti m x n x 3, kde m a n jsou
pocty pixelu ve smeru x a y, prvky odpovdaj hodnotam barevn ych slozek pro R (cervena)
v prvnm rezu, G (zelena) ve druhem rezu, a B (modra) ve tretm.
imshow - vykresl obrazek v grackem okne (ve gure)
imshow(misa)
imshow(Obr\misan.jpg)
imshow(caroda pix, caroda map)
imwrite - uloz obrazek do souboru
imwrite(misa, misa2.jpg)
imwrite(caroa pix, caroda map, caroda.gif)
iminfo - vypse informace o obrazku
iminfo(misa)
getimage - nacte obrazek z aktualnho grackeho okna
Jsou-li obr azky stejne velikosti, muzeme s nimi provadet ruzne kejkle
imadd - soucet dvou obrazku
imadd(Im1, Im2)
imdivide - delen obrazku
imdivide(Im1, Im2)
imlincomb - linearn kombinace n obrazku, koecienty ovliv nuj jejich intenzitu
imlincomb(koef1, Im1, koef2, Im2, .... , koefn, Imn)
Pomoc nastroje imtool muzeme snadno menit napr. v yrez, jas, kontrast, barevne rozlozen
....
Matlab je take schopen pracovat s MRI daty.
Jak zskat 3D pohled, vytvorit obal rezu, objem, jak menit ruzne uhly pohledu a nasvcen,
je ukazano v prkladu hlava.m. Pracuje se s ukazkov ymi daty MATLABu, ktere lze nacst
prkazem load mri.
6.2 Zvukov y zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker).
sound(y,Fs) - y je vektor prehravaneho signalu, pro kter y mus platit -1<=y(i)<=1, Fs je
33
frekvence prehravan. Pokud nen Fs uvedena, pouzije se prednastavena hodnota 8192Hz.
Pokud je y velikosti n x 2, prehrava se stereo.
Prklady zvuku v MATLABu, ktere lze nacst pomoc funkce load do pracovnho prostoru
promenn ych a pak s nimi libovolne pracovat: gong, chirp, train, splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapse zvukov y signal do souboru
wavwrite(y,Fs,jmeno.wav)
wavplay - prehraje audio signal
wavplay(y,Fs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukov y zaznam ze vstupnho zarzen
6.3 Video
aviread - cte .avi soubory. Podobne jako u obrazku, mohou b yt dva typy videozaznamu.
Indexov y, kter y je urcen y polem indexu a barevnou mapou, nebo truecolor denovan y
3D polem.
mov = aviread(jm souboru)
[index, map] = aviread(jm souboru)
aviinfo - v ypis informac o .avi souboru
avile - vytvor a otevre nov y .avi soubor
avile(jmeno.avi)
getframe - vytvar ramecek z os pro pouzit pri tvorbe videa
F = getframe(gca) - aktualn osy uklada do promenne F
addframe - spoj ramecky do videa
M = addframe(M,F) - dals ramecky pridava do souboru. V promenne M je ulozen y odkaz
na soubor otevren y pomoc avile
movie - prehraje video denovane matic, sloupce jsou tvoreny jednotliv ymi ramecky (snmky)
movie(M)
Schema, jak vytvorit a prehrat video v prostred MATLAB:
34
for i = 1:pocet snimku
prikazy kresleni
F(i) = getframe(gca)
end
movie(F)
Schema, jak vytvorit video zaznam a ulozit ho do souboru:
M = avile(videozaznam.avi);
for i = 1:pocet snimku
prikazy kresleni
F = getframe(gca)
M = addframe(M,F) end
close(M);
35
7 Maticova anal yza
matfun - Matrix function - numerical linear algebra
sparfun - Sparse matrices
7.1 Maticova anal yza
Opakovan z MATL1
size(A) - rozmery matice
length(v) - delka vektoru
det(A) - determinant ctvercove matice
inv(A) - inverzn matice, A je ctvercova
rank(A) - hodnost matice
poly(A) - koecienty charakteristickeho polynomu ctvercove matice
E = eig(A) - vlastn csla ctvercove matice ve vektoru E
[V,D] = eig(A) - D je diagonaln matice vlastnch csel, V je matice vlastnch vektoru (po
sloupcch)
Funkce matice
Vypocetli bychom podle predpisu
f(A) = Tf(J)T
1
J - Jordanuv kanonick y tvar matice A
T - transformacn matice tvorena vlastnmi vektory matice A
expm(A) - e
A
exponenciela
logm(A) - logaritmus
sqrtm(A) - odmocnina
pinv - pseudoinverzn matice
B = pinv(A), B je takova, ze plat A*B*A=A, B*A*B=B
vyuzit pri resen preurcen ych soustav
7.2 LU a QR rozklad
lu - rozklad ctvercove matice na doln a horn troj uhelnkovou matici. Pouzva se pri resen
soustav linearnch rovnic.
[L,U] = lu(A)
[L,U,P] = lu(A)
36
Syntaxe pro resen soustavy Ax=b:
[L,U] = lu(A)
y = L\ b
x = U\ y
Prklad:

Reste soustavu:
_

_
1 1 1
1 2 3
1 3 6
_

_
_

_
x1
x2
x3
_

_
=
_

_
3
1
4
_

Resen:
A = pascal(3);
b = [3; 1; 4];
[L,U] = lu(A)
y = L\ b
x = U\ y
qr - rozklad na ortogonaln a horn troj uhelnkovou matici. Pouzva se pri resen preurcen ych
soustav linearnch rovnic.
[Q,R] = qr(A)
[Q,R,E] = qr(A)
Syntaxe pro resen preurcene soustavy Ax=b:
[Q,R] = qr(A)
y = Q*b
x = R\ y
Poznamka. Parametr P, resp. E, u funkce lu, resp. qr, vyjadruje pocet pouzit ych permu-
tac - proh azen sloupcu. Plat P*A = L*U, A*E = Q*R
Prklad:

Reste soustavu
_

_
1 2 3
4 5 6
7 8 9
10 12 12
_

_
_

_
x1
x2
x3
_

_
=
_

_
1
3
5
7
_

_
37

Resen:
A = [1 2 3; 4 5 6; 7 8 9; 10 11 12];
b = [1; 3; 5; 7];
[Q,R] = qr(A)
y = Q*b
x = R\ y
7.3

Rdke matice
Jsou to specialn matice, ktere maj velk y pocet nulov ych prvku. Do pameti se ukladaj
pouze nenulove prvky s prslusn ymi indexy. Snizuje se tak v ypocetn cas a setr pamet.
sparse - denovan rdke matice nekolika zpusoby
S = sparse(A)
A =
_

_
0 0 0 4
1 0 0 2
0 0 1 0
_

_
S =
(1, 4) 4
(2, 1) 1
(2, 4) 2
(3, 3) 1
S = sparse(i,j,s,m,n) i je vektor radku a j vektor sloupcu indexu pozic, na kter ych
se vyskytuje nenulov y prvek rdke matice. s je vektor nenulov ych prvku. m,n jsou
rozmery cele matice. Predchoz prklad by se zapsal
S = sparse([1 2 2 3], [4 1 4 3], [4 1 2 1], 3, 4)
full(A) - zobraz celou strukturu rdke matice
spdiags - vytvor rdkou matici s prvky na diagonalach
S = spdiags(B,d,m,n) B je matice nenulov ych prvku, d je vektor diagonal, na ktere maj
b yt prvky umsteny, m, n jsou rozmery celkove matice.
d(i) = 0 hlavn diagonala
d(i) < 0 vedlejs diagonaly pod hlavn diagonalou
d(i) > 0 vedlejs diagonaly nad hlavn diagonalou
38
Prklad: Vygenerujte rdkou diagonaln matici ve tvaru:
_

_
1 1 0 0 0
1 2 1 0 0
0 1 3 1 0
0 0 1 4 1
0 0 0 1 5
_

Resen:
B = [ [ -1*ones(4,1); 0] (1:5) [0; ones(4,1) ]];
S = spdiags(B,[-1,0,1],5,5)
full(S) %kontrola
39
8 Numericka integrace a derivace
8.1 Integrace
K numericke integraci pristupujeme, kdyz:
funkcn predpis nezname, funkce, kterou integrujeme, je zadana tabulkou
funkcn predpis je prlis slozit y
Poznamka. quadrature - stanoven plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu < a, b >.
Princip: interval rozdelme na nekolik podintervalu. Delen muze b yt s konstantnm krokem
(ekvidistantn) nebo s promenn ym krokem (neekvidistantn). Na kazdem takto zvolenem
podintervalu spocteme funkcn hodnoty v krajnch bodech a pomoc nich jiz zvolenou
metodou obsah obrazce, napr. lichobeznku, kter y je tvoren y krajnmi body podintervalu
a jejich funkcnmi hodnotami (x
k
, x
k+1
, f(x
k
), f(x
k+1
)). Celkov y integral je pak soucet
vsech podoblast.
Figure 1: Schema pro obdelnkove pravidlo
Newton-Cotesovy vzorce
metody s ekvidistantnm delenm uzlu
1. Obdelnkove pravidlo - podoblast nahrazena obdelnkem
h
N1

k=0
f(x
k
+ h/2)
2. Lichobeznkove pravidlo - podoblast nahrazena lichobeznkem
h
_
1/2f(x
0
) +
N1

k=0
f(x
k
) + 1/2f(x
N
)
_
40
3. Simpsonova pravidlo - integral pod parabolou
N mus b yt sude cslo
h/3 [f(x
0
) + 4f(x
1
) + 2f(x
2
) + 4f(x
3
) + ... + 2f(x
N2
) + 4f(x
N1
) + f(x
N
)]
Prklad. Spoctete numericky integral funkce y = sin(x) na intervalu < 0, >, vykres-
litete a vybarvete jednotlive plosky.
Prklad. Naprogramujte numerickou integraci funkce e
x
na intervalu < 1; 1, 2 > pomoc
Newton-Cotesov ych vzorcu. Porovnejte s presn ym resenm.
8.1.1 Funkce MATLABu
quad(@fce,a,b) - integral Simpsonov ym pravidlem funkce fce na intervalu a, b.
quadl(@fce,a,b) - integral Lobattov ym pravidlem funkce fce na intervalu a, b.
quadv(@fce,a,b) - integral funkce komplexn promenne na intervalu a, b.
dblquad(@fce,x
min
,x
max
,y
min
,y
max
) - dvojn y integral
triplequad(@fce,x
min
,x
max
,y
min
,y
max
,z
min
,z
max
) - trojn y integral
Prklad. Spoctete
_
1
0
_
/2
/2
(ysin(x) + xcos(y))dxdy.

Resen:
% denovani funkce
function z = funkce1
z = x*cos(y) + y*sin(x)
>> dblquad(@funkce1,0,1,/2,/2)
Prklad. Vypoctete delku krivky parametricky zadane pro parametr t < 0, 3 >.
x = sin(2t)
y = cos(t)
z = t

Resen:
l =
_
3
0
_
dx
2
+ dy
2
+ dz
2
dt
% funkce pro vypocet delky
function l=had(t)
41
l = sqrt(4*(cos(2*t)).

2 + (sin(t)).

2 + 1);
>> quad(had,0,3*)
8.2 Derivace
Necht f je funkce spojita na intervalu < a, b > a ma na < a, b > spojite prvn ctyri
derivace. Muzeme provest aproximaci Taylorov ym polynomem, pro dostatecne mala h
plat
f(x h) = f(x) hf

+
1
2
h
2
f

(x)
1
6
h
3
f

(x) + O(h
4
).
Odtud plyne
f(x + h) f(x h)
2h
= f

(x) +
1
6
h
2
f

(x) + O(h
4
).
Uveden y vztah dava numerickou metodu pro priblizn y v ypocet f

(x) z hodnot funkce f.


Klademe
f

(x)
f(x + h) f(x h)
2h
s chybou aproximace radu h
2
.
Pozn. Postup je nestabiln pro velmi mala h.
Pokud mame funkci s prlis slozit ym zapisem, aproximujeme ji nejprve polynomem a pak
teprve poctame pribliznou hodnotu derivace teto aproximace.
8.2.1 Aproximace derivace diferencemi
Nejcasteji pouzvane vzorce pro v ypocet diference:
prav a diference
D
P
f =
f(x
0
+ h) f(x
0
)
h
leva diference
D
L
f =
f(x
0
) f(x
0
h)
h
centraln diference
D
C
f =
f(x
0
+ h) f(x
0
h)
2h
Prklad: Aproximujte derivci funkce y = sin(x) na intervalu < 0, 2 > pravou, levou a
centraln diferenc.
42

Resen: h = 0.5;
x = 0:h:2*pi;
y = sin(x);
for i=1:n-1
Df P(i) = (y(i+1)-y(i))/h;
end
for i=2:n
Df L(i) = (y(i)-y(i-1))/h;
end
for i=2:n-1
Df C(i) = (y(i+1)-y(i-1))/(2*h);
end
Df P Df L Df C
di(x) - rozdl sousednch prvku vektoru x: [x
2
x
1
, x
3
x
2
, ..., x
n
x
n1
] v ysledn y vektor
ma n-1 prvku
Prklad. Vykreslete funkci y = sin(x) na intervalu < 1, 2 > a jej derivaci.

Resen:
h = 0.1;
x = 0:h:2*pi;
y = sin(x);
dx = di(x);
dy = di(y);
df = dy./dx;
plot(x,y,b,x(0:end-1),df,r)
legend(f(x),f(x))
43
9 Pocatecn ulohy ODR
9.1 Obycejne diferencialn rovnice
Obycejna diferencialn rovnice (ODR) obsahuje jednu nebo vc derivac zavisle promenne
y podle nezavisle promenne t, obvykle oznacovane jako cas. Derivace y podle t se znac y

,
druha derivace y

atd. y(t) muze b yt i vektor o slozkach y


1
, y
2
, y
3
, ...
y

= f(t, y)
ODR ma nekonecn y pocet resen liscch se o integrac konstantu. Pridat pocatecn podmnky
omez pocet resen na jedno konkretn.
y

= f(t, y)
y(t
0
) = y
0
9.2 Numericke metody pro resen ODR
Budeme se zab yvat resenm pocatecnch uloh pro ODR. Princip resen- diskretizace promenn ych.
Hledame priblizne resen podle nasledujcho postupu. Generuje se diskretn mnozina
x
0
= a, x
1
, x
2
, ..., x
n
a stanov se y
0
= b, y
1
, y
2
, ..., y
n
, ktera aproximuj presne resen v
uzlech ste [x
0
, x
1
, ...].
krok metody: h
n
= x
n+1
x
n
konstantn
promenn y
metody
jednokrokove - resen y
n+1
vyjadreno pomoc y
n
vcekrokove - resen y
n+1
vyjadreno pomoc y
n
, y
n1
, ..., y
n+1k
(k-krokova metoda).
metody (z pohledu konvergence)
prvnho radu
vyssch radu y
n+1
= y
n
+ (x
n
, y
n
; h
n
; f), je prrustkova funkce
9.2.1 Eulerova metoda
nejjednoduss, linearn rekurentn vztah
jednokrokova
44
prvnho radu
geometrick y smysl: na intervalu < x
n
, x
n+1
> se pohybujeme po tecne k presnemu
resen rovnice y

= f(x, y), ktere prochaz bodem (x


n
, y
n
)
predpis metody:
y
n+1
= y
n
+ h
n
f(x
n
, y
n
)
Prklad: Naprogramujte Eulerovu metodu a vyreste x

= t x s pocatecn podmnkou
x(0) = 1 na intervalu < 0; 0, 6 >. V ysledek porovnejte s presn ym resenm. Volte krok
h = 0.2 a h = 0.1.

Resen:
Kod v MATLABu naleznete v souboru Euler.m
9.2.2 Metody Runge-Kuttova typu
jednokrokove
vyssho radu
univerzalnejs a uzitecnejs nez Taylorovy metody
princip: sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce f
vypoctan ych v nekolika strategicky volen ych bodech (x, y) rozlozen ych kolem krivky
resen y = y(x) na intervalu < x
n
, x
n+1
>
Predpis metody:
y
n+1
= y
n
+ h
n
r

i=1

i
k
i
n = 0, 1, ...
kde
k
1
= f(x
n
, y
n
)
k
i
= f(x
n
+
i
h
n
, y
n
+
i
h
n
k
i1
) i > 0
V kazdem kroku metody se spocte nejdrv k
1
, k
2
, ..., k
r
, pak y
n+1
.
Prklady metod Runge-Kutta
2.radu - modikovana Eulerova metoda
k
1
= f(x
n
, y
n
)
k
2
= f(x
n
+ h
n
/2, y
n
+ h
n
/2)
y
n+1
= y
n
+ h
n
k
2
45
4. radu - klasicka Rungova-Kuttova metoda
k
1
= f(x
n
, y
n
)
k
2
= f(x
n
+ h
n
/2, y
n
+ h
n
/2k
1
)
k
3
= f(x
n
+ h
n
/2, y
n
+ h
n
/2k
2
)
k
4
= f(x
n+1
, y
n
+ h
n
k
3
)
y
n+1
= y
n
+ h
n
k
1
+ 2k
2
+ 2k
3
+ k
4
6
9.3 Pocatecn uloha pro ODR v MATLABu
Pro resen pocatecnch uloh pro obycejn ych diferencialnch rovnic je v MATLABu imple-
mentovan system ODE, kter y res ODR prvnho radu a soustavy ODR prvnho radu. ODR
vyssch radu je proto treba prevest na soustavy prvnho radu.
Vsechny implementovane metody jsou s promenn ym casov ym krokem.
y
n
= f(t, y, y

, ..., y
n1
)
Zavedeme substituci:
y

= y
1
y

= y

1
= y
2
y

= y

2
= y
3
...
y
n
= y

n1
= f(t, y
1
, y
2
, ..., y
n1
)
9.3.1 Syntaxe
[t,Y] = odesolver(odefun,tspan,y0)
[t,Y] = odesolver(odefun,tspan,y0,options)
kde odesolver je jedna z funkc ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb (viz.
help)
9.3.2 Parametry funkce:
odefun - prava strana diferencialn rovnice. Vsechny funkce pro ODR res rovnice ve tvaru
y

= f(t, y)
tspan - vektor urcujc interval integrace [t
0
,t
f
].

Resic predpoklada, ze pocatecn podmnka
je v case tspan(1) a integruje od tspan(1) do tspan(end).
y0 - vektor pocatecnch podmnek
46
options - nastaven integracnch vlastnost, denuj se pomoc funkce odeset (viz. dale)
t - sloupcov y vektor casov ych bodu
Y - matice resen. Kazd y radek matice odpovda nalezenemu resen y v prslusnem casovem
okamziku. Pocet sloupcu odpovda radu resene ODR.
9.3.3 ODE pro nonsti problem
ode45 - zalozen na explicitn metode Runge-Kutta (4,5), jednokrokova metoda, vhoda jako
prvn pokus pro vetsinu uloh
ode23 - zalozen na explicitn metode Runge-Kutta (2,3), jednokrokova metoda muze b yt
efektivnejs nez ode45
ode113 - vcekrokova metoda, podrobnosti viz. MATLAB-Help
9.3.4 ODE pro sti problem
ode15s - vcekrokova metoda, podrobnosti viz. MATLAB-Help
ode23s - jednokrokova metoda, podrobnosti viz. MATLAB-Help
ode23tb - podrobnosti viz. MATLAB-Help
9.3.5 ODE pro moderately sti problem
ode23t - podrobnosti viz. MATLAB-Help
9.3.6 Volan ODE, zobrazen v ysledku
ode23(@nazev fce,[t0,tf],y0) - vykresl resen do grackeho okna
[t,Y] = ode23(@nazev fce,[t0,tf],y0) - v ysledky uklada do promenne Y, t je vektor casov ych
kroku
sol = ode23(@nazev fce,[t0,tf],y0) - v ysledky uklada do promenne sol typu struktura, sol.x
obsahuje vektor integracnch bodu, sol.y obsahuje resen
ode23(@(t,x)nazev fce(t,x,param),[t0,tf],y0) - volan funkce se vstupnm parametrem
47
deval(xint,sol,idx) - vycsl resen sol v bodech dan ych vektorem xint. Parametr je idx je
nepovinn y, urcuje, ktere slozky resen maj b yt vypsany
Prklad:

Reste pomoc ode45 ODR x

= t x s pocatecn podmnkou x(0) = 1 na inter-


valu < 0; 0, 6 >. Porovnejte s v ysledky z predchozho prkladu.

Resen:
Kod v MATLABu naleznete v souboru dif rce.m, dif rce fce
Prklad:

Reste soustavu rovnic popisujcch pohyb tuheho telesa bez pusoben vnejsch
sil.
y

1
= y
2
y
3
y
1
(0) = 0
y

2
= y
1
y
3
y
2
(0) = 1
y

3
= 0.5y
1
y
2
y
3
(0) = 1

Resen:
Kod v MATLABu naleznete v souboru rigid mov.m, rigid mov fce.m
Prklad:

Reste y

(1 y
2
)y

+ y = 0 s pocatecnmi pomnkami y(0) = 2, y

(0) = 0 s
promenn ym parametrem . Pro = 1 na intervalu t < 0, 20 > jde o nonsti problem,
pro = 1000 na intervalu t < 0, 3000 > resme sti ulohu.

Resen:
Kod v MATLABu naleznete v souboru vdPol.m, vdPol fce.m
9.3.7 Parametry integrace
Nektera nastaven funkc ode lze menit pomoc parametru options denovaneho funkc ode-
set.
odeset - vypse vsechny parametry integrace (vlastnosti odefunkc), ktere lze menit. Menme
je zapisem options = odeset(name1,value1,name2,value2, ...), kde name je jmeno
parametry a value jeho nastavajc hodnota.
odeget(name) - vypse hodnotu pozadovane vlastnosti
Prehled vybran ych vlastnost (integracnch parametru):
options = odeset(stats,on) - zobraz statistiku probehleho v ypctu
options = odeset(outputset,[..]) - v yber, ktere slozky resen se budou ukladat do v ystupn
promenne.
48
options = odeset(MaxStep,k) - nastaven maximalnho casoveho kroku integrace na hod-
notu k.
options = odeset(InitialStep,k0) - nastaven pocatecn casoveho kroku na hodnotu k0.
options = odeset(Events,@events) - po kazdem kroku integrace se vola funkce events de-
novana uzivatelem a kontroluj se podmnky nastavene v teto funkci. Hod se napr. pro
ukoncen v ypoctu drve nez v case tspan(end).
Prklad:

Reste voln y pad hmotneho bodu z v ysky h v bezodporovem prostred. V ypocet
se zastav pri dopadu na zem. (Pouzijte events.)

Resen:
Kod v MATLABu naleznete v souboru volny pad.m, volny pad fce.m, volny pad stop.m
49
10 Okrajove ulohy ODR
10.1 Okrajove ulohy pro obycejne diferencialn rovnice
Teorie okrajov ych uloh pro obycejne diferencialn rovnice (ODR) je komplikovanejs nez
teorie poc atecnch uloh. V numerick ych metodach pro resen okrajov ych uloh se nedar
vytvaret tak univerzaln algoritmy jako u uloh s pocatecnmi podmnkami.
Samotnou okrajovou podmnkou nen jeste resen ulohy jednoznacne urceno. Abychom
mohli numericky resit okrajove ulohy, je treba bud najt zpusob, jak urcit chybejc
pocatecn podmnky v nekterem z koncov ych bodu intervalu, nebo pouzt metody jineho
typu nez u pocatecnch uloh.
Numericke metody pro resen okrajov ych ODR delme takto:
1. Metody pevadejc okrajove ulohy na pocatecn
2. Diferencn metody
3. Variacn metody (nebo-li Galerkinova typu)
4. Jine metody (napr. kolokacn)
Budeme se zab yvat metodou strelby a ukazeme si pouzit metody konecn ych diferenc.
10.2 Metoda strelby
Mejme okrajovou ulohu
y

= f(x, y, y

) x < a, b >
r
1
(y(a), y

(a)) = 0
r
2
(y(b), y

(b)) = 0
Predpokladejme, ze na < a, b > jsou jednoznacne resitelne pocatecn ulohy pro tuto ODR
s libovolne zadan ymi pocatecnmi podmnkami v bode x = a:
y(a) = , y

(a) =
pro libovolne , . Nasm clem je stanovit hodnoty a tak, aby resen pocatecn ulohy
bylo zarove n hledan ym resenm okrajove ulohy. Jakmile takova csla urcme, muzeme
priblizne resen dane okrajove ulohy vypoctat pomoc nektere numericke metody pro resen
pocatecnch uloh.
Prklad: Okrajova uloha pro voln y pad telesa v odporovem prostred resena metodou
strelby. Odpor volneho padu telesa je linearne zavisl y na rychlosti s koecientem c. Urcete
50
pocatecn rychlost, pokud teleso hmotnosti m dopadlo na zem za T sekund rychlost v
N
.

Ulohu popisuje obycejna diferencialn rovnice


m v + cv = mg, t < 0, T >, v(T) = v
N
.

Resen: Zvolme v
k
(0), k 1 a v ypoctem obycejne diferencialn rovnice (napr. pomoc
ODE45) dojdeme k v ysledku v
k
(T), podle ktereho upravme pocatecn odhad jako
v
k+1
(0) =
v
N
v
k
(T)
v
k
(0).
Algoritmus iteracne opakujeme se zvolenou presnost
|v
k
(T) v
N
|
v
N
< .
Kod v MATLABu naleznete v souboru MetodaStrelby.m, MetodaStrelbyRHS.m
10.3 Metoda konecn ych diferenc
Diferencn metody aproximuj puvodn diferencialn ulohu jako takovou. V ysledkem diskretizace
je soustava algebraick ych rovnic pro hodnoty priblizneho resen v konecne sti bodu t
0
, t
1
, ..., t
N
.
Poctame-li metodou konecn ych diferenc, derivace v diferencialn rovnici a okrajov ych
podmnkach nahrazujeme prmo vhodn ymi diferencemi.
Rozdelme interval < 0, T > na N cast a vytvorme st
S = {t
0
, t
1
, t
2
, . . . , t
N
}.
Zvolme naprklad ekvidistantn st s krokem
t =
T
N
t = t
i+1
ti.
Body t
0
a t
n
jsou hranicn uzly, ostatn body jsou vnitrn uzly. Uvazujme pro nasi ulohu
t {0, t, 2t, . . . , Nt}.
Potom hledame resen y
i
v uzlech t
i
, i {0, . . . , N}. Pozor na indexovan MATLABu, kde
indexy musme brat od 1 do N + 1.
10.3.1 Linearn ODR prvnho radu
Vratme se k prkladu volneho padu. Pripomene rovnici s okrajovou podmnkou
v +
c
m
v = g, t < 0, T >, v(T) = v
N
.
51
Hledame resen v
i
v uzlech ste t
i
. Dosazenm dopredne diference
v
i

v
i+1
v
i
t
do nas rovnice zskame
v
i+1
vi
t
+
c
m
v
i
= g
a po uprave
_
1
ct
m
_
v
i
v
i+1
= gt.
Zavedenm konstant
a =
_
1
ct
m
_
a b = gt
zskame soustavu N rovnic tvaru
av
i
v
i+1
= b
pro N neznam ych (vnitrn uzly) v
0
, . . . , v
N1
. Maticove lze ulohu zapsat
Av = b
nebo-li
_

_
a 1 0 0 . . . 0
0 a 1 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
. . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
.
.
.
. a 1
0 0 0 . . . 0 a
_

_
_

_
v
0
.
.
.
.
.
.
.
.
.
.
.
.
v
N1
_

_
=
_

_
b
.
.
.
.
.
.
.
.
.
b
b + v
N
_

_
.
Kod v MATLABu naleznete v souboru MDK.m
10.3.2 Nelinearn ODR prvnho radu
Metodu diskretizace pro okrajovou ulohu nelinearn ODR si ukazeme na konkretnm prklade.
Vratme se opet k volnemu padu z predchozho odstavce, ale nyn uvazujme, ze odpor vz-
duchu behem volneho padu roste s kvadratem rychlosti.

Ulohu popisuje rovnice
m v + cv
2
= mg, t < 0, T >
s okrajovou podmnkou
v(T) = v
N
.
52
Provedeme-li diskretizaci pro metodu konecn ych diferenc, dostaneme ulohu
v
i+1
v
i
t
+
c
m
v
2
i
= g,
coz vede na soustavu N nelinearnch algebraick ych rovnic. Prevedeme-li nelinearn clen na
pravou stranu, zskame rovnice
v
i
v
i+1
= gt +
ct
m
v
2
i
,
ktere lze resit iteracne. Soustavu lze zapsat ve tvaru
Av = b(v)
nebo-li
_

_
1 1 0 0 . . . 0
0 1 1 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
. . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
.
.
.
. 1 1
0 0 0 . . . 0 1
_

_
_

_
v
0
.
.
.
.
.
.
.
.
.
.
.
.
v
N1
_

_
=
_

_
b +
ct
m
v
2
0
.
.
.
.
.
.
.
.
.
b +
ct
m
v
2
N2
b +
ct
m
v
2
N1
+ v
N
_

_
.
Pro pocatecn odhad v
0
resme iteracne soustavu
Av
k+1
= b(v
k
)
pro k 1 se zvolenou presnost
v
k+1
v
k

v
k

< .
Kod v MATLABu naleznete v souboru MDK nelin.m
10.3.3 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + b x + cx = f(t), t < 0, T > .
Ukazeme si resen jak pro Neumannovy, tak pro Dirichletovy okrajove podmnky. Provedme
obdobnou diskretizaci jako pro rovnici v yse. Druhou derivaci aproximujeme jako
53
x
i

x
i1
2x
i
+ x
i+1
t
2
.
Dosazenm do nas rovnice po uprave dostaneme pro vsechny vnitrn uzly
x
i1
+
_
2 bt + ct
2
_
x
i
+ (1 + bt) x
i+1
= f
i
t
2
pro i {1, . . . , N}.
Zadanm Dirichletov ych okrajov ych podmnek
x
0
= x
0
,
x
N
= x
N
dostaneme soustavu N1 linearnch algebraick ych rovnic pro N1 neznam ych. Prevedeme-
li rovnici do tvaru
x
i1
+ px
i
+ qx
i+1
= f
i
t
2
,
soustava N 1 rovnic pro N 1 neznam ych bude mt tvar
_

_
p q 0 0 . . . 0
1 p q 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
. . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
. 1 p q
0 0 0 . . . 1 p
_

_
_

_
x
1
.
.
.
.
.
.
.
.
.
.
.
.
x
N1
_

_
=
_

_
f
1
t
2
x
0
f
2
t
2
.
.
.
.
.
.
f
N2
t
2
f
N1
t
2
x
N
_

_
.
Pro Neumannovy okrajove podmnky
x
0
= v
0
,
x
N
= v
N
nezname resen v okrajov ych bodech x
0
a x
N
, toto musme zahrnout do v ypoctu. Musme
aproximovat okrajove podmnky jako
x
1
x
0
t
v
0
,
x
N+1
x
N
t
v
N
.
Zde nam vystupuje ktivn hodnota x
N+1
. Soustavu tedy napseme tak, ze pridame prvn
okrajovou podmnku a pomoc druhe okrajove podmnky vyloucme ktivn x
N+1
. Matice
54
soustavy N + 1 linearnch algebraick ych rovnic pro N + 1 neznam ych x
0
az x
N
ma pak
tvar
_

_
1 1 0 0 . . . 0
1 p q 0 . . . 0
0 1 p q . . . 0
.
.
.
.
.
.
.
.
.
.
.
. . . . 0
.
.
.
.
.
.
.
.
. 1 p q
0 0
.
.
. 0 1 p + q
_

_
_

_
x
0
.
.
.
.
.
.
.
.
.
.
.
.
x
N
_

_
=
_

_
v
0
t
f
1
t
2
.
.
.
.
.
.
f
N1
t
2
f
N
t
2
v v
N
t
_

_
.
Kod v MATLABu naleznete v souboru ODE2.m
Prklad: Staticke zatzen prutu
Jednoduch a uloha elastostatiky s konstantn plochou prurezu a konstantnmi materialov ymi
vlastnostmi je popsana rovnic
EA
d
2
u
dx
2
+ f(x) = 0, x {0, L},
u(0) = 0 ,
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu. Tyto parametry mohou
b yt promenne podel prutu. Vlevo tedy mame Dirichletovu okrajovou podmnku a vpravo
Neumannovu okrajovou podmnku. Prevedeme-li rovnici na tvar
d
2
u
dx
2
= p(x), kde p(x) =
1
EA
f(x)
Diskretizujeme a pridame okrajove podmnky, dostaneme soustavu
Ku = f
55
nebo-li
_

_
2 1 0 0 . . . 0
1 2 1 0 . . . 0
0 1 2 1 . . . 0
.
.
.
.
.
.
.
.
. 1 2 1
0 0
.
.
. 0 1 1
_

_
_

_
u
1
.
.
.
.
.
.
.
.
.
u
N
_

_
=
_

_
p
1
x
2
u
0
p
2
x
2
.
.
.
p
N1
x
2
p
N
x
2
v
N
x
_

_
,
kde v nasem prpade u
0
= 0 a v
N
= 0.
Kod v MATLABu naleznete v souboru Prut.m
Prklad: Rozlozen teploty v prutu
Rovnice veden tepla je obecne parabolicka parcialn diferencialn rovnice druheho radu ve
tvaru
T
t
= a
2
_

2
T
x
2
+

2
T
y
2
+

2
T
z
2
_
+ f(x, y, t)
s patricn ymi okrajov ymi podmnkami a pocatecn podmnkou. Podrobneji se teto rovnici
bude venovat prst cvicen. Pro rozlozen teploty v 1D ve stacionarnm prpade prejde
tato rovnice na tvar
0 =

2
T
x
2
+ f(x), x {0, L},
T(0) = T
0
,
T(L) = T
N
.
ktera je obdobna v yse uvedene Dirichletove uloze
_

_
2 1 0 0 . . . 0
1 2 1 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
. . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
. 1 2 1
0 0 0 . . . 1 2
_

_
_

_
T
1
.
.
.
.
.
.
.
.
.
.
.
.
T
N1
_

_
=
_

_
f
1
x
2


T
0
f
2
x
2
.
.
.
.
.
.
f
N2
x
2
f
N1
x
2


T
N
_

_
.
Kod v MATLABu naleznete v souboru Teplota.m
56
10.4 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resen dvoubodov ych okrajov ych ODR.

Res ODR prvnho radu ve tvaru


y

= f(x, y)
s okrajovou podmnkou v krajnch bodech intervalu < a, b >
bc(y(a), y(b)) = 0.
ODR vyssch radu resme prevodem na soustavu ODR prvnho radu (stejne jako pri resen
pocatecn ulohy pomoc funkc ode).
sol = bvp4c(odefun, bcfun, solinit)
Parametry teto funkce predstavuj:
odefun - funkce popisujc pravou stranu diferencialn rovnice, ve tvaru f(x, y)
bcfun - funkce pro denovan okrajov ych podmnek, zadavame ve tvaru bc(y(a), y(b)) solinit
- struktura obsahujc pocatecn odhad resen
sol - promenna typu struktura obsahujc v ysledky, sol.x obsahuje vektor integracnch bodu,
sol.y obsahuje resen
deval(xint,sol,idx) - vycsl resen sol v bodech dan ych vektorem xint. Parametr je idx je
nepovinn y, urcuje, ktere slozky resen maj b yt vypsany.
Prklad:

Reste pomoc bvp4c ulohu:
y

+ y = 0 ,
y(0) = 0 ,
y(4) = 2 .
V ysledek porovnejte s analytick ym resenm a vykreslete zavislost y(x).

Resen: naleznete v souborech OkrajODR.m, OkrajODR fce.m, OkrajODR podm.m


57
11 Parcialn diferencialn rovnice
Tento text popisuje resen okrajov ych uloh parcialnch diferencialnch rovnic s ohledem na
prostredky v ypocetnho prostred MATLABu. Na zacatek je nutno uvest, ze existuje cela
rada druhu parcialnch diferencialnch rovnic a jim adekvatnch metod resen. Uvazujme
PDR 2. radu v obecnem tvaru
au
xx
+ bu
xy
+ cu
yy
+ du
x
+ eu
y
+ fu = g,
kde a, b, c, d, e, f a g jsou dane funkce x a y. Zde u
xx
=

2
u

2
. Podle techto parametru
muzeme rozdelit PDR do tr typu jako
hyperbolicke, pro ktere plat b
2
ac > 0,
parabolicke, pro ktere plat b
2
ac = 0 a
elipticke, pro ktere plat b
2
ac < 0.
Pro kazd y z techto typu existuj specialn algoritmy resen s ohledem na vlastnosti resen.
Zde se omezme na zakladn typy vyskytujc se v technicke praxi, na parabolicke a hyper-
bolicke rovnice. Ukazeme si jejich resen metodou st a metodou konecn ych prvku.
Parabolicke rovnice se vyskytuj pri resen uloh vedn tepla, chemicke dif uze a jin ych
oboru. Popisuj prubeh nejakeho deje v case. Vzhledem k v yjimecnemu charakteru casove
promenne se pro rovnice parabolickeho typu zadava pocatecn podmnka a dale okrajove
podmnky. Tyto tzv. pocatecne-okrajove ulohy maj vuci t charakter pocatecn, vzhledem
k prostorov yn promenn ym jde o ulohy okrajove.
11.1 Metoda konecn ych diferenc
Rovnice veden tepla je obecne parabolicka parcialn diferencialn rovnice druheho radu ve
tvaru
u
t
= a
2
_

2
u
x
2
+

2
u
y
2
+

2
u
z
2
_
+ f(x, y, t)
s patricn ymi okrajov ymi podmnkami a pocatecn podmnkou. Zjednodusme si tuto ulohu
na prpad
u
t
= a
2

2
u
x
2
, x {0, L}
s pocatecn podmnkou
u(x, 0) = (x)
a s okrajov ymi podmnkami
u(0, t) = g
1
, u(L, t) = g
2
,
coz je homogenn rovnice veden tepla v 1D (evolucn loha).
58
11.1.1 Explicitn metoda
Ukazme si aplikaci explicitn metody konecn ych diferenc, ktera v jistem smyslu kombinuje
diferencn metody resen pocatecnch a okrajov ych uloh.

Ulohu budeme aproximovat na
obdelnku
Q =< 0, L > < 0, T > ,
kde si sestrojme st s uzly (x
k
, t
n
), k {0, . . . , K}, n {0, . . . , N}, kde x
k
= kx a
t
n
= nt, x =
L
K
a t =
T
N
. Dale budeme znacit u(x
k
, t
n
) = U
n
k
. Na nulte casove
hladine zvolme
U
0
k
= (x).
Dals postup zalez na tom, ze dana pocatecne-okrajova uloha ma v promenne t charak-
ter pocatecn a hodnoty priblizneho resen U
n
k
budeme poctat postupne po jednotliv ych
casov ych vrstvach. Zarove n mus b yt splneny okrajove podmnky
U
n+1
0
= g
0
(t
n+1
) , U
n+1
K
= g
1
(t
n+1
) .
pouzijeme vhodne diferencn schema. Nejjednoduss cesta spocva v tom, ze v uzlu (x
k
, t
n
)
aproximujeme druhou derivaci druhou pomernou diferenc a derivaci podle t nahradme
diferencnm podlem
U (x
k
, t
n
)
t

U
n+1
k
U
n
k
t
.
V ysledkem takoveho postupu je diferencn rovnice
U
n+1
k
U
n
k
t
= a
2
U
n
k+1
2U
n
k
U
n
k1
x
2
,
z nz obdrzme explicitn vztah
U
n+1
k
= rU
n
k1
+ (1 2r)U
n
k
+ rU
n
k+1
, k {1, . . . , K 1},
kde
r =
a
2
t
x
2
.
Obecne lze uloha zapsat v maticovem tvaru
A
n
U
n+1
= B
n
U
n
+F
n
.
Pro nas prpad je A = I, matice
59
B
n
=
_

_
1 2r r 0 0 . . . 0
r 1 2r r 0 . . . 0
0 r 1 2r r . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
. r 1 2r r
0 0 0 . . . r 1 2r
_

_
je radu K 1 a F
n
je nulov y vektor. Rekurentne lze nas vztah zapsat jako
U
n+1
1
= (1 2r)U
n
1
U
n+1
1
= (1 2r)
n
U
0
1
.
Kod v MATLABu naleznete v souboru Teplota1DExplicit.m
Aby explicitn metoda byla stabiln, je nutno zabezpecit, aby 0 1 2r 1.
11.1.2 Implicitn metoda
Nzk y rad presnosti a podmnenou stabilitu lze vyresit vyuzitm implicitn metody. Diferencn
vztah zde mame
U (x
k
, t
n
)
t

U
n
k
U
n1
k
t
a v ysledkem je diferencn rovnice
U
n
k
U
n1
k
t
= a
2
U
n
k+1
2U
n
k
U
n
k1
x
2
,
kterou maticove zapseme jako
60
_

_
1 + 2r r 0 0 . . . 0
r 1 + 2r r 0 . . . 0
0 r 1 + 2r r . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 0
.
.
.
.
.
.
.
.
. r 1 + 2r r
0 0 0 . . . r 1 + 2r
_

_
_

_
U
n
1
.
.
.
.
.
.
.
.
.
.
.
.
U
n
K
_

_
=
_

_
U
n1
1
.
.
.
.
.
.
.
.
.
.
.
.
U
n1
K
_

_
+
_

_
rg
0
(t
n
)
0
.
.
.
.
.
.
0
rg
1
(t
n
)
_

_
.
Vektor U
0
je dan pocatecn podmnkou. Okrajova podmnka muze samozrejme obsahovat
i derivace. Pro explicitn metodu aproximujeme derivace jako
u
x
(0, t
n
)
U
n
1
U
n
0
x
, u
x
(L, t
n
)
U
n
K+1
U
n
K
x
,
ktere prid ame k resen soustavy. Rovnici vce prostorov ych promenn ych ve tvaru
u
t
= u
xx
+ u
yy
resme pro t < 0, T > na ctverci =< 0, L
1
> < 0, L
2
>. Pocatecn podmnka je
u(x, y, 0) = (x, y) a okrajova podmnka na je u(x, y, t) = g(x, y, t). Priblizne resen je
U
n
i,j
= u(ix, jy, nt). Explicitnm schematem dospejeme k diferencn aproximaci
U
n+1
i,j
U
n
i,j
t
=
U
n
i+1,j
2U
n
i,j
U
n
i1,j
x
2
+
U
n
i,j+1
2U
n
i,j
U
n
i,j1
y
2
.
Kod v MATLABu naleznete v souboru Teplota1DImplicit.m
11.2 Funkce MATLABu pro parabolickou PDR
pdepe
pdetool
V MATLABu je implementovana funkce pdepe pro resen pocatecne-okrajov ych uloh parabol-
ick ych a eliptick ych PDR jedne prostorove promenne a casu.

Res PDR ve tvaru
c
_
t, x, u,
u
x
_
u
x
= x
m

x
_
x
m
f
_
t, x, u,
u
x
__
+ s
_
t, x, u,
u
x
_
61
pro t
0
t t
n
a pro a x b.
Pocatecn pomnka je
u(x, t
0
) = u
0
(x),
okrajova podmnka je
p(t, x, u) + q(t, x)f(t, x, u,
u
x
) = 0
sol = pdepe(m, pdefun, icfun, bcfun, xmesh, tspan)
Oznacen parametru odpovdaj znacen z predchoz rovnice.
m - parametr udavajc typ symetrie, 0 - deskova, 1 - valcova, 2 - kulova
pdefun - funkce denujc PDR. Denujeme ji ve tvaru [c, f, s] = pdefun(x, t, u, dudx)
icfun - funkce, ktera denuje pocatecn podmnky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujc okrajove podmnky ve tvaru [pl, ql, pr, qr] = bcfun(xl, ul, xr, xl,
t)
xmesh - vektor [x0, x1, ..., xn] urcujc hodnoty bodu, ve kter ych pozadujeme resen v
kazdem casovem okamziku (resp. pro ka

dou hodnotu vektoru tspan)


tspan - vektor [t0, t1, ..., tf] reprezentujc body, ve kter ych poadujeme resen pro kazdou
hodnotu z xmesh
Pozn.: Vyss prostorove derivace prevad na soustavu obdobne jako u ODR.
Prklad: Pomoc funkce pdepe reste PDR

2
u
t
=

2
u
x
2
na intervalu 0 x 1 a pro cas t 0. V case t = 0 spl nuje pocatecn podmnku
u(0, x) = sinx
a v bodech x = 0, x = 1 okrajove podmnky
u(0, x) = 0
e
t
+
u(1, t)
x
= 0

Resen naleznete v souborech PDR.m, PDR fce.m, PDR pocpodm.m, PDR okrajpodm.m.
62
12 Metoda konecn ych prvku
pde - Partial Dierential Equation Toolbox
Metoda konecn ych prvku (MKP) je numericka metoda pro resen diferencialnch rovnic.
Patr do mnoziny metod Galerkinova typu.
Postup pri resen ulohy je nasledujc:
pops an problemu na oblasti diferencialn rovnic,
denovan okrajov ych a pocatecnch podmnek,
diskretizace ulohy a
nalezen priblizneho resen MKP.
Princip metod Galerkinova typu:
Tyto metody aproximuj prmo resen (na rozdl od diferencnch metod popsan ych v 10.
cvicen) dane okrajove ulohy pomoc konecn ych linearnch kombinac vhodne zvolen ych
linearne nezavisl ych funkc (tzv. bazove funkce). Dostavame soustavu algebraick ych rovnic
pro koecienty linearn kombinace urcujc hledane priblizne resen.
MKP spocva ve specialn konstrukci bazov ych funkc.
Predstavme si MKP na velmi jednoduchem prkladu.
Mejme tri prutove prvky sestavene do troj uhelnku v jednom z vrcholu zatzen ych silou,
dals vrchol je pevne uchycen a zb yvajc ma povolen posuv ve vodorovnem smeru (podle
obrazku vlevo).

Ukolem je spoctat, jak se tato konstrukce pod dan ym zatzenm zdefor-
muje. Konstrukci rozdelme ne tri prvky spojene tremi uzly. Kazd y prvek je tvoren dvema
uzly, jejichz globaln souradnice (x
i
, y
i
) zname. Pro kazd y prvek zavedeme jeste lokaln
souradnicov y system (, ) (viz. obrazek vpravo). Kazd y z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y), celkove ma tedy uloha 3 x 2 = 6 stup nu volnosti.
Znacen:
uzly: 1 2 3
prvky: (1) (2) (3)
Denujeme vektor neznam ych posuvu v uzlech prvku a sil:
u =
_

_
u
1x
u
1y
u
2x
u
2y
u
3x
u
3y
_

_
f =
_

_
f
1x
f
1y
f
2x
f
2y
f
3x
f
3y
_

_
Predpokladejme, ze mezi silami f a posuvy u je linarn zavislost
f = Ku,
kde K se naz yva globaln matice tuhosti.
Pro kazd y prvek (element) pak plat

f
(e)
=

K
(e)
u
(e)
,
kde u
(e)
=
_

_
u
i
u
i
u
j
u
j
_

f
(e)
=
_

_
f
i
f
i
f
j
f
j
_

_
Predpokladame, ze prvek se chova jako linearn pruzina
k =
EA
L
, f
i
= k(u
i
u
j
)
kde je E - Younguv modul pruznosti, A - prurez, L - pocatecn delka prvku.
64
Sestavme lokaln matici tuhosti - matice tuhosti pvku. V lokalnch souradnicch ma tvar

K
(e)
=
EA
L
_

_
1 0 | 1 0
0 0 | 0 0
|
1 0 | 1 0
0 0 | 0 0
_

_
Nyn je nutne zapis transformovat z lokaln soustavy souradnic do globaln pomoc orto-
gonaln matice rotace T s prvky
c = cosa s = sin,
kde uhel je natocen lokaln soustavy souradnic oproti globaln.
T =
_

_
c s | 0 0
s c | 0 0
|
0 0 | c s
0 0 | s c
_

_
u
(e)
= Tu
(e)

f
(e)
= Tf
(e)

f
(e)
=

K
(e)
u
(e)
Tf
(e)
=

K
(e)
Tu
(e)
f
(e)
= T
T

K
(e)
Tu
(e)
K
(e)
= T
T

K
(e)
T
Podobne bychom postupovali se vsemi prvky. Pote je treba sestavit celkovou (glob aln)
matici tuhosti a to tak, ze matice kazdeho prvku umstujeme na prslusne pozice do
globaln matice. V ysledna matice je ctvercova, symetricka a jej rozmer odpovda poctu
stup nu volnosti ulohy. V nasem prpade bude K(6, 6).
65
Prvkove matice tuhosti je treba namapovat do rozmeru celkove matice:

K
(1)
=
_

_
K
(1)
11
K
(1)
12
. . 0 0
K
(1)
21
. . . 0 0
. . . . 0 0
. . . K
(1)
44
0 0
0 0 0 0 0 0
0 0 0 0 0 0
_

K
(2)
=
_

_
0 0 0 0 0 0
0 0 0 0 0 0
0 0 K
(2)
11
K
(2)
12
. .
0 0 K
(2)
21
. . .
0 0 . . . .
0 0 . . . K
(2)
44
_

K
(3)
=
_

_
K
(3)
11
K
(3)
12
0 0 . .
K
(3)
21
. 0 0 . .
0 0 0 0 0 0
0 0 0 0 0 0
. . 0 0 . .
. . 0 0 . K
(3)
44
_

_
a pak plat
K =

K
(1)
+

K
(2)
+

K
(3)
.
66
Pridame jeste okrajove podmnky (homogenn podle obrazku). Uzel 1 je pevne uchycen,
uzel 2 se posouva ve vodorovnem smeru, tedy
u
1x
= u
1y
= u
2y
= 0.
Do matice tuhosti K pseme 1 na digonalu a 0 do prslusneho radku a sloupce.
_

_
0
0
0

0
f
3x
f
3y
_

_
=
_

_
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K
33
0 K
35
K
36
0 0 0 1 0 0
0 0 K
53
0 K
55
K
56
0 0 K
63
0 K
65
K
66
_

_
_

_
u
1x
u
1y
u
2x

u
2y
u
3x
u
3y
_

Uloha je pripravena, hledame nezname posuvy


u = K\ f .
Prklad: Naprogramovan y uveden y prklad a dals dve aplikace najdete v souborech
mkp.m, mkp pr1.m, mkp pr2.m, mkp pr3
12.1 Prkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecn ych prvku (MKP) pro ulohy de-
novane na ohranicene rovinne oblasti.
Predstavme si vybrane funkce:
pdegplot(funkce) - vykresl hranice oblasti denovane ve funkci funkce
[p,e,t] = initmesh(funkce) - vytvor troj uhelnkovou st na oblasti denovane funkc funkce.
V MATLABu jsou preddenovane oblasti: squareg - jednotkov y ctverec, circleg - kruh,
lsquareg - oblast tvaru psmene L
p - matice souradnic uzlov ych bodu, ma specick y tvar
e - matice hran, ma specick y tvar
67
t - matice prvku, ma specick y tvar
Pozn.: Uzly kazdeho prvku se zpravila csluj proti smeru hodinov ych rucicek. Kazd y
prvek ma svuj lokaln souradnicov y system a sve cslo.
pdemesh(p,e,t) - vykresl st denovanou v maticch p, e, t generovanou pomoc funkce
initmesh
renemesh(p,e,t) - zjemn st vytvorenou pomoc initmesh
Prklad: vystovanou oblast, jejz hranici tvor kardioid najdete v souborech Srdicko.m,
Srdicko Geom.m
assempde(p,e,t) - k prostudovan
u = parabolic(u0,time,okr podm,p,e,t,c,a,f,d) - funkce pro resen parabolicke PDR MKP.
Rovnice je tvaru
d
u
t
(c) + au = f na
s pocatecn podmnkou
u(x, 0) = u
0
(x)
u0 - pocatecn podmnka
time - casov y interval
okr podm - funkce denujc okrajove podmnky
p, e, t - st
c, a, f, d - parametry rovnice
u = hyperbolic(u0,time,okr podm,p,e,t,c,a,f,d) - funkce pro resen parabolicke PDR MKP.
Prklad:

Reste pomoc nastroju pde toolboxu sren tepla na obdelnkove oblasti. Do-
prostred oblasti umstete kruhov y tepeln y zdroj.

Resen naleznete v souboru Teplota2D.m.


pdetool - gracke uzivatelske rozhran pro snadne resen PDR metodou konecn ych prvku.
Snadna tvorba oblasti.
68
13 Aplikace v biomechanice
Zakladn myslenkou je sestavit program, kter y by urcoval odezvu hlavy modelu cloveka,
kter y je umsten na sedacce automobilu a je vystaven nahodnemu buzen zpusobenem
nerovn ym povrchem vozovky. Model cloveka je predstavovan soustavou tuh ych teles
spojen ych pruzinami a tlumici. Tuha telesa nahrazuj panevn oblast, bedern oblast,
hrudn oblast a hlavu, jejich hmotnosti odpovdajhmotnostem prslusn ych telnch seg-
mentu. V ysledkem jsou amplitudy jednotliv ych segmentu. Program se spoust hlavnm
souborem ClovekLaunchsolver.m, kter y vola dals funkce ClovekZadani.m, ClovekBuzeni.m,
Integrace.m, TestBuzeni.m, MyFFT.m, Vysledky.m.
69
References
[1] Boileau, P.-E., Rakheja., S.: Whole-body vertical biodynamic response characteristics
of the seated vehicle driver; Measurement and model development, In International
Journal of Industrial Ergonomics, 22, pp. 449472, 1998
[2] Mka, S., Prikryl, P.: Numericke metody pro resen obycejn ych diferencialnch rovnic,
okrajove ulohy. Z

CU v Plzni, Plze n, 1994.


[3] Mka, S.: Numericke metody, linearn algebra. Z

CU v Plzni, Plze n, 1996.


[4] Prager, M.: Numericke anal yza. Z

CU v Plzni, Plze n, 1995.


[5] Mka, S., Prikryl, P.: Numericke metody pro resen parcialnch diferencialnch rovnic,
evolucn rovnice. Z

CU v Plzni, Plze n, 1996.


[6] Prikryl, P.: Numericke metody, aproximace funkc a matematicka anal yza. Z

CU v
Plzni, Plze n, 1996.
[7] Help systemu MATLAB 7.0.1.
70

You might also like