Upload
martin-sevecek
View
134
Download
9
Embed Size (px)
Citation preview
Modelovanı MATLABem 2
Doprovodny ucebnı text ke cvicenım
Plzen Listopad 2007 Hana Kockova
Ludek Hyncık
Contents
Introduction 4
1 Maticovy prıstup k resenı uloh 511 Zadavanı - generovanı matic 512 Skladanı matic vyber podmatic 613 Prvkove a maticove operace 614 Specialnı matice 715 Prıklady k procvicenı 7
2 Graficke uzivatelske rozhranı 1321 Dalsı prıkazy pro praci s objekty a nastavenı 14
211 Graficke okno 14212 Osy 15
22 Uzivatelske rozhranı 1523 Uzivatelske menu 1724 Dialogove objekty 18
3 Retezce A prace s textem 2031 Spojovanı retezcu 2032 Porovnavanı retezcu 2033 Vyhledavanı v retezcıch 2034 Konverze retezcu 2135 Prehled dalsıch uzitecnych funkcı 21
4 Souborovy vstup a vystup 2441 Zakladnı prace se soubory 2442 Ulozenı a nactenı dat 2443 Formatovane ctenı a zapis 25
431 Binarnı soubory 26432 Textove soubory 26
44 Dialogova okna 27
5 Analyza dat a zpracovanı signalu 2851 Generovanı signalu 2852 Analyza dat 2953 Zpracovanı signalu 2954 Filtry 3055 Shrnutı 31
1
6 Prace s obrazky audio a video vystup 3261 Prace s obrazky 3262 Zvukovy zaznam 3363 Video 34
7 Maticova analyza 3671 Maticova analyza 3672 LU a QR rozklad 3673 Rıdke matice 38
8 Numericka integrace a derivace 4081 Integrace 40
811 Funkce MATLABu 4182 Derivace 42
821 Aproximace derivace diferencemi 42
9 Pocatecnı ulohy ODR 4491 Obycejne diferencialnı rovnice 4492 Numericke metody pro resenı ODR 44
921 Eulerova metoda 44922 Metody Runge-Kuttova typu 45
93 Pocatecnı uloha pro ODR v MATLABu 46931 Syntaxe 46932 Parametry funkce 46933 ODE pro rsquononstiff problemrsquo 47934 ODE pro rsquostiff problemrsquo 47935 ODE pro rsquomoderately stiff problemrsquo 47936 Volanı ODE zobrazenı vysledku 47937 Parametry integrace 48
10 Okrajove ulohy ODR 50101 Okrajove ulohy pro obycejne diferencialnı rovnice 50102 Metoda strelby 50103 Metoda konecnych diferencı 51
1031 Linearnı ODR prvnıho radu 511032 Nelinearnı ODR prvnıho radu 521033 ODR druheho radu 53
104 Funkce MATLABu pro okrajovou ulohu ODR 57
11 Parcialnı diferencialnı rovnice 58111 Metoda konecnych diferencı 58
1111 Explicitnı metoda 591112 Implicitnı metoda 60
2
112 Funkce MATLABu pro parabolickou PDR 61
12 Metoda konecnych prvku 63121 Prıkazy MATLABu 67
13 Aplikace v biomechanice 69
References 70
3
Introduction
Tento ucebnı slouzı jako doprovodny text k cvicenı predmetu Modelovanı MATLABem 2Doplnenım jsou prilozene prıklady
4
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Contents
Introduction 4
1 Maticovy prıstup k resenı uloh 511 Zadavanı - generovanı matic 512 Skladanı matic vyber podmatic 613 Prvkove a maticove operace 614 Specialnı matice 715 Prıklady k procvicenı 7
2 Graficke uzivatelske rozhranı 1321 Dalsı prıkazy pro praci s objekty a nastavenı 14
211 Graficke okno 14212 Osy 15
22 Uzivatelske rozhranı 1523 Uzivatelske menu 1724 Dialogove objekty 18
3 Retezce A prace s textem 2031 Spojovanı retezcu 2032 Porovnavanı retezcu 2033 Vyhledavanı v retezcıch 2034 Konverze retezcu 2135 Prehled dalsıch uzitecnych funkcı 21
4 Souborovy vstup a vystup 2441 Zakladnı prace se soubory 2442 Ulozenı a nactenı dat 2443 Formatovane ctenı a zapis 25
431 Binarnı soubory 26432 Textove soubory 26
44 Dialogova okna 27
5 Analyza dat a zpracovanı signalu 2851 Generovanı signalu 2852 Analyza dat 2953 Zpracovanı signalu 2954 Filtry 3055 Shrnutı 31
1
6 Prace s obrazky audio a video vystup 3261 Prace s obrazky 3262 Zvukovy zaznam 3363 Video 34
7 Maticova analyza 3671 Maticova analyza 3672 LU a QR rozklad 3673 Rıdke matice 38
8 Numericka integrace a derivace 4081 Integrace 40
811 Funkce MATLABu 4182 Derivace 42
821 Aproximace derivace diferencemi 42
9 Pocatecnı ulohy ODR 4491 Obycejne diferencialnı rovnice 4492 Numericke metody pro resenı ODR 44
921 Eulerova metoda 44922 Metody Runge-Kuttova typu 45
93 Pocatecnı uloha pro ODR v MATLABu 46931 Syntaxe 46932 Parametry funkce 46933 ODE pro rsquononstiff problemrsquo 47934 ODE pro rsquostiff problemrsquo 47935 ODE pro rsquomoderately stiff problemrsquo 47936 Volanı ODE zobrazenı vysledku 47937 Parametry integrace 48
10 Okrajove ulohy ODR 50101 Okrajove ulohy pro obycejne diferencialnı rovnice 50102 Metoda strelby 50103 Metoda konecnych diferencı 51
1031 Linearnı ODR prvnıho radu 511032 Nelinearnı ODR prvnıho radu 521033 ODR druheho radu 53
104 Funkce MATLABu pro okrajovou ulohu ODR 57
11 Parcialnı diferencialnı rovnice 58111 Metoda konecnych diferencı 58
1111 Explicitnı metoda 591112 Implicitnı metoda 60
2
112 Funkce MATLABu pro parabolickou PDR 61
12 Metoda konecnych prvku 63121 Prıkazy MATLABu 67
13 Aplikace v biomechanice 69
References 70
3
Introduction
Tento ucebnı slouzı jako doprovodny text k cvicenı predmetu Modelovanı MATLABem 2Doplnenım jsou prilozene prıklady
4
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
6 Prace s obrazky audio a video vystup 3261 Prace s obrazky 3262 Zvukovy zaznam 3363 Video 34
7 Maticova analyza 3671 Maticova analyza 3672 LU a QR rozklad 3673 Rıdke matice 38
8 Numericka integrace a derivace 4081 Integrace 40
811 Funkce MATLABu 4182 Derivace 42
821 Aproximace derivace diferencemi 42
9 Pocatecnı ulohy ODR 4491 Obycejne diferencialnı rovnice 4492 Numericke metody pro resenı ODR 44
921 Eulerova metoda 44922 Metody Runge-Kuttova typu 45
93 Pocatecnı uloha pro ODR v MATLABu 46931 Syntaxe 46932 Parametry funkce 46933 ODE pro rsquononstiff problemrsquo 47934 ODE pro rsquostiff problemrsquo 47935 ODE pro rsquomoderately stiff problemrsquo 47936 Volanı ODE zobrazenı vysledku 47937 Parametry integrace 48
10 Okrajove ulohy ODR 50101 Okrajove ulohy pro obycejne diferencialnı rovnice 50102 Metoda strelby 50103 Metoda konecnych diferencı 51
1031 Linearnı ODR prvnıho radu 511032 Nelinearnı ODR prvnıho radu 521033 ODR druheho radu 53
104 Funkce MATLABu pro okrajovou ulohu ODR 57
11 Parcialnı diferencialnı rovnice 58111 Metoda konecnych diferencı 58
1111 Explicitnı metoda 591112 Implicitnı metoda 60
2
112 Funkce MATLABu pro parabolickou PDR 61
12 Metoda konecnych prvku 63121 Prıkazy MATLABu 67
13 Aplikace v biomechanice 69
References 70
3
Introduction
Tento ucebnı slouzı jako doprovodny text k cvicenı predmetu Modelovanı MATLABem 2Doplnenım jsou prilozene prıklady
4
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
112 Funkce MATLABu pro parabolickou PDR 61
12 Metoda konecnych prvku 63121 Prıkazy MATLABu 67
13 Aplikace v biomechanice 69
References 70
3
Introduction
Tento ucebnı slouzı jako doprovodny text k cvicenı predmetu Modelovanı MATLABem 2Doplnenım jsou prilozene prıklady
4
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Introduction
Tento ucebnı slouzı jako doprovodny text k cvicenı predmetu Modelovanı MATLABem 2Doplnenım jsou prilozene prıklady
4
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
1 Maticovy prıstup k resenı uloh
MATLAB je programovacı jazyk vysoke urovne zahrnujıcı datove struktury zalozene namaticıch vlastnı datove typy rozsahle mnozstvı ruznych funkcı a mimo jine i prostredıve kterem si sami muzete vytvaret dalsı funkce a skripty Tam kde se v ostatnıch pro-gramovacıch jazycıch pracuje s cısly MATLAB umoznuje praci rovnou s celymi maticemiMimo jine ma MATLAB jiz mnozstvı preddefinovanych specialnıch matic usnadnujıcıchprogramatorovi praci MATLAB ma take velmi dobre zpracovany system napovedy Stacınapr na prıkazovem radku napsat help a zıskame seznam vsech nainstalovanych knihoven(toolboxu) Dalsı vyhledavanı je uz intuitivnı
11 Zadavanı - generovanı matic
Matice je mozne zadavat nekolika zpusoby
bull prımo vyctem jednotlivych prvku
bull nactenım z externıho souboru
bull generovanım pomocı specialnıch funkcı MATLABu
bull pomocı vlastnıch funkcı a M-skriptu
Obecne pro matice platı
bull zadavame je do hranatych zavorek
bull cısla v radku oddelujeme carkou ci mezerou cısla v sloupci strednıkem
bull vytvorenou matici muzeme priradit do zvolene promenne jinak se automaticky ulozıdo ans (answer)
bull k jednotlivym prvkum matice pristupujeme pres indexy zapsane v kulatych zavorkachza nazvem prıslusne matice oddelene carkou Index je vzdy prirozene cıslo (tedyzacıname cıslovat od 1) K poslednımu prvku muzeme pristupovat pres preddefinovanoupromennou end
Generovanı vektoruv = v1krokvn - generuje prvky od hodnoty v1 do hodnoty vn s krokemv = v1vn - generuje prvky od hodnoty v1 do hodnoty vn po kroku 1v = linspace(oddopocet prvku) - linearnı delenı prvkuv = logspace(oddopocet prvku) - logaritmicke delenı prvku
Vyber prvku pomocı relacnıch operatoruv1 = vgtb - vysledkem vektor nul a jednicek podle toho jestli prıslusny prvek splnujepodmınku
5
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
v1 = v(vgtb) - vysledkem vektor prvku vektoru v splnujıcıch danou podmınkuv1 = find(vgtb) - vysledkem vektor indexu prvku vektoru v splnujıcıch danou podmınku
Prıkazy pro zjistenı velikosti vektoru a maticelength(v) - vracı delku vektoru vsize(M) - vracı velikost matice M (dvojici [pocet radkupocet sloupcpocet radkuu])
12 Skladanı matic vyber podmatic
Z existujıcı matice je mozno pomocı tzv dvouteckove konvence vybrat libovolnou pod-matici vektor ci prvek
13 Prvkove a maticove operace
Prvkove operace provadıme pomocı operatoru rsquo rsquo Napr nasobenı matic po prvcıchodpovıda operaci kdy se nasobı pouze prvky na odpovıdajıcıch pozicıchN3 = B1B2N4 = Mand 2Maticove operace aneb respektujeme pravidla linearnı algebry
bull transpozice matice
M trans = Mrsquo
hermitovska transpozice matice - jsou-li prvky matice komplexnı cısla v transpono-vane matici jsou nahrazeny prvky komplexne sdruzenymi
M Htrans = Mrsquo
bull scıtanı odecıtanı matic - scıtame odecıtame matice shodnych rozmeru
S = M2 + M3 R = M2 - M3
bull nasobenı matic - respektujeme pravidla pro nasobenı matic
N1 = A1A2 N2 = A2A1
bull delenı matic - opet pozor na rozmery jednotlivych matic v MATLABu je moznepouzıt zpetne lomenoAB nenı totez jako BAA = [1 2 3 4 5 6] B = [1 1 1 0 1 0]D1 = AB D2 = BAD3 = AB D4 = BANebo-li platıAB = ABminus1
A B = Aminus1B
Pozn tvorba inverznı matice (pro ctvercove matice)
6
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
ndash inv(A)
ndash Aand(minus1)
ndash IA
IA = A I A = AI = I A
bull umocnovanı Aandn
14 Specialnı matice
Jako parametr majı tyto funkce vzdy pocet radku a sloupcu pozadovane vysledne maticeV prıpade ctvercove matice stacı zadat pouze jeden parametr
bull rand(mn) - matice nahodnych cısel z intervalu lt 0 1 gt rovnomerne rozdelenı
bull randn(mn) - matice nahodnych cısel z intervalu lt 0 1 gt normalnı rozdelenı
bull eye(mn) - jednotkova matice
bull ones(mn) - matice nul
bull zeros(mn) - matice jednicek
bull diag(v) - diagonalnı matice s vektorem v na hlavnı diagonale
15 Prıklady k procvicenı
Vsechny prıklady reste bez pomoci cyklu Vyuzijte funkce linspace length size find rep-mat mod Vyznam funkcı ktere neznate naleznete v napovede (napr help repmat)
Prıklad Vyreste soustavu
4xminus 6y + 5z = 2
8x + y minus 3z = 3
x + y + z = 4
7
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Resenı x
y
z
=
4 minus6 5
8 1 minus3
1 1 1
2
3
4
b = [234]A = [4 -6 5 8 1 -3 1 1 1]x = bA
Prıklad Pomocı specialnıch matic vygenerujte nasledujıcı matici
M =
7 1 1 1 0 0 5
1 minus1 1 0 1 0 5
1 1 4 0 0 1 5
0 0 0 0 0 0 0
a vyberte
bull druhy radek
r =
[1 minus1 1 0 1 0 5
]bull poslednı sloupec
s =
5
5
5
0
bull podmatici
P =
minus1 1 0 1
1 4 0 0
8
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
ResenıM = [diag([6 minus 2 3]) + ones(3) eye(3) 5 lowast ones(3 1) rand(1 7)]
bull r = M(2)
bull s = M(end)
bull P = M(2325)
Prıklad Rozdelte vektor v nahodnych cısel mezi 0 a 1 na v1 a v2 kde vsechny prvkyv1lt 05 vsechny prvky v2gt 05
Resenın=10v = rand(1n)v1 = v(vgt05)v2 = v(vlt05)indexy v1 = vgt05 (logicky vyraz vraci 0 nebo 1 na mıste kde je splnen logicky vyrazbude ve vysledku 1 jinde 0)indexy v2 = vlt05
Prıklad Napiste funkci pro vykreslenı pravidelneho n-uhelnıku n je vstupnı parametr
Resenıfunction uhelnik(n)r = 1fi = linspace(02pin+1)x = rcos(fi)y = rsin(fi)plot(xy)
Prıklad Spoctete delku sroubovice (nebo trychtyre)
Resenır = 1 polomern = 20 pocet zavitut = 0012pink = linspace(010length(t)) konstanta umernosti pro trychtyrx = rkcos(t)y = rksin(t)z = t
9
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
plot3(xyz)delka = sum(((x(2end)-x(1end-1))and 2 + (y(2end)-y(1end-1))and2 + (z(2end)-z(1end-1))and2)and(12))
Prıklad Vypiste tabulku hodnot goniometrickych funkcı a vykreslete funkci tg(x)
Resenı pres stupnex d = 015180ys d = sind(x d)yc d = cosd(x d)yt d = tand(x d)plot(yt d) pres radianyx p = 0pi12piys p = sin(alfa p)yc p = cos(alfa p)yt p = tan(alfa p)plot(yt p)Prıklad Na raficku veznıch hodin doplachtil mravenec Ferda Prochazı se po nı tam azpet Napiste funkci ktera vykreslı trajektorii Ferdovy chuze Delka raficky a rychlostFerdy budou vstupnımi parametry funkce
Resenıfunction d=ferda(lv) cas a uhelt1=lvt=0t1100t1fi=-t36002pi+pi2
10
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
hodinyfigureplot(lcos(0012pi)lsin(0012pi)rsquob-rsquo)hold on
chuze tamx=vtcos(fi)y=vtsin(fi)d=sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
chuze zpetfi=-(t+t1)36002pi+pi2x=(l-vt)cos(fi)y=(l-vt)sin(fi)d=d+sum(sqrt((x(2end)-x(1end-1))and 2+(y(2end)-y(1end-1))and 2))comet(xy)
Prıklad Funkce popisujıcı cyklicke zatezovanı
1 Vykreslete rdquopilurdquo
2 Vykreslete rdquozubyrdquo
Resenıad 1)t1=00110plot(t1asin(sin(t1)))t2=0120plot(t2mod(t22)rsquorrsquo)
11
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
ad 2)zub x = floor(05[0n4-1])zub y = repmat([0 h h 0]1n)plot(zub xzub y)
12
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
2 Graficke uzivatelske rozhranı
GUI je zkratka pro Graphical User Interface neboli graficke uzivatelske rozhranı Systemoken a tlacıtek se definuje (vlastno)rucne psanem M-skriptu nebo vytvarı interaktivnemysı v nastroji pripravenem v MATLABu - tzv guide ktery spustıme z prıkazove radkyprıkazem guide Dalsı praci s nım prenechame samostudiu zalozenem na poznatcıch zMATL1
MATLAB definuje graficke objekty jako zakladnı graficke jednotky sveho grafickeho systemuTyto jednotky jsou usporadany ve stromove strukture zahrnujı root (obrazovku) figure(graficke okno) axes (osy) line (caru) patch (vyplneny mnohouhelnık) surface (plochu)image (fotografii) text (textove pole) uicontrol (ovladacı prvky) a uimenu (uzivatelskemenu) Nıze postavene objekty dedı vsechny vlastnosti objektu postaveneho vys pribırajıdalsı a ty spolu se zdedenymi predavajı svym potomkum
Kazdy graficky objekt ma svul identifikator (odkaz ukazatel tzv handle - rdquoovladacrdquo)ktery se objektu priradı v okamziku jeho vytvorenı Tento odkaz je tvoren prirozenymnebo kladnym realnym cıslem a muzeme jej priradit do zvolene promenne Pomocı tohotoidentifikatoru se na dany objekt odkazujeme Muzeme tak menit jeho vlastnosti napr typkrivky barvu pozadı atd Identifikator objektu root ma vzdycky hodnotu 0 pro objektyfigure jsou vyhrazena prirozena cısla identifikatory ostatnıch objektu jsou realna cısla
V teto kapitole se budeme venovat objektu figure a zejmena jeho potomkum uimenu auicontrol Potomkum objektu axes byla venovana cvicenı v MATL1
bull Root je korenem hierarchie Odpovıda obrazovce pocıtace Je jediny vsechny dalsıobjekty jsou jeho potomky
13
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
bull Figure jsou samostatna graficka okna Muze jich existovat libovolny pocet a vsechnyjsou potomky objektu root Vsechny dalsı graficke objekty jsou potomky objektufigure Generovany jsou funkcı figure
bull Axes definujı oblast v grafickem okne Jsou potomky objektu figure a dalsı objektyjako line text patch (atd) jsou jejich potomky Generovany jsou funkcı axes
bull Uimenu jsou uzivatelska menu ktera umoznujı v objektu figure vytvorit vlastnı menuJsou potomky objektu figure Generovany jsou funkcı uimenu
bull Uicontrol jsou ovladacı prvky ktera vykonavajı prıslusne funkce Jsou potomky ob-jektu figure Generovany jsou funkcı uicontrol
21 Dalsı prıkazy pro praci s objekty a nastavenı
Pokud jsme si zapomneli identifikator na dany (vytvoreny) objekt ulozit do promenne azjistili jsme ze se bez nej neobejdeme lze jej zıskat pomocı funkcı gcf gca a gco Stacıdany objekt aktualizovat napr mysı
gcf - vracı hodnotu ukazatele na aktualnı graficke okno (objekt figure)gca - vracı hodnotu ukazatele na aktualnı osy (objekt axes)gco - vracı hodnotu ukazatele na aktualnı objekt (uicontrol line patch )
delete(h) - funkce ktera smaze graficky objekt s ukazatelem hdelete(gcf) - smaze aktualnı graficke okno Tımto zpusobem muzeme smazat aktualnı osynebo aktualnı graficky objekt
[xy] = ginput - umoznuje vybrat body z grafickeho okna (z os) pomocı mysi Nacıta bodydo stisku klavesy enter Souradnice uklada do vektoru x y[xy] = ginput(n) - nacıta n bodu
211 Graficke okno
figureSamostatne jej otevreme prıkazem figure z prıkazoveho radku MATLABu Hodnoty iden-tifikatoru pro tento objekt jsou prirozena cısla Toto okno se take otevre automaticky skazdym prıkazem pro kreslenı coz souvisı s vyse popsanym objektovym prıstupem MAT-LABu V tomto grafickem okne je take mozne pomocı mnozstvı nastroju ktere jsouumısteny na panelech u hornıho okraje okna menit vlastnosti vykreslovanych objektunapr menit barvy a tloustky krivek fonty a velikosti popisu os rozsahy os apod
Nektere vlastnostiUnits - volba jednotekPosition - vektor ctyr cısel [x ∆x y ∆y] udavajıcı polohu a velikost objektu (x y) jsou
14
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
souradnice leveho dolnıho rohu (x + ∆x y + ∆y) jsou souradnice praveho hornıho rohuMenuBar - odkaz na panel se standardnım menuName - nazev grafickeho okna (zobrazeny v zahlavı okna)
212 Osy
axesVykreslıme prıkazem axes z prıkazoveho radku MATLABu Otevre se zakladnı okno spolus vykreslenymi osami Merıtka os muzeme libovolne menit pomocı funkce axis([x minx max y min y max]) jejız parametry udavajı minimalnı a maximalnı hodnoty na osachx y (pro 3D prıpady axis([x min x max y min y max z min z max]))
Vycet vybranych vlastnostıLineWidth - zmena tloustrsquoky caryVisible - viditelnost osFontsize - zmena velikosti pısma
22 Uzivatelske rozhranı
uicontrolPrıkaz uicontrol napsany na prıkazovem radku otevre graficke okno s rsquotlacıtkemrsquo To po-mocı nastavenı jeho vlastnostı (set) umıstrsquoujeme volıme velikost typ prıpadne barvu a
15
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
prirazujeme mu funkci Vlastnosti samozrejme dedı po objektu figure a pribıra dalsı speci-ficke
Vlastnosti lze take nastavovat pomocı prostredı rdquoinspektorrdquo Toto prostredı daneho ob-jektu otevreme pres ukazatel na tento objekt inspector (h)
Style - typ uzivatelskeho rozhranı (viz nıze)String - popis rozhranıCallBack - odkaz na funkci vykonavajıcı cinnost pridelenou rozhranı uzivatelemValue - cıselna hodnota rozhranı u rozhranı typu rsquozapnutovypnutorsquo a typu slider
Typy rozhranıV MATLABu je definovano nekolik druhu uzivatelskych rozhranı (ovladacıch prvku)Volıme je pres vlastnost Style
bull Pushbutton - po stisknutı vykonava cinnost prirazenou mu pomocı callback
bull Togglebutton - prepınac Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Radiobutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Checkbutton - zaskrtavacı pole Value ma hodnotu 0 (vypnuto) nebo 1 (zapnuto)
bull Slider - posuvna lista Value je realne cıslo z intervalu lt 0 1 gt hodnota odpovıdapozici listy
bull Listbox - seznam vıce polozek kazde muzeme priradit funkci pomocı CallBack polozkypopisujeme vlastnostı String
bull Popupmenu - rozbalovcı seznam polozek kazde muzeme priradit funkci pomocı Call-Back povinny popis polozek definovany vlastnostı String
bull Edit - pole do ktereho je mozne zapisovat (editovat) vhodne pro zadavanı vstupnıchhodnot predavame dal pomocı String
bull Text - pole pro umıstenı textu vhodne pro popisy ostatnıch prvku a vypisovanıvysledku
bull Frame - pouze ramecek
Pri volanı CallBack venujte pozornost predavanı parametru Musıme predavat hodnotyukazatelu na objekty (rozhranı osy ) Je nekolik monostı a to jako vnitrnı parametryvolane funkce pres vlastnost grafickeho okna UserData zavedenım globalnıch promennychVsechny moznosti jsou ukazany na nasledujıcım prıkladu
Prıklad Nadefinujte GUI ve kterem bude mozne menit barvu pozadı vykreslovanych ospomocı rozhranı rsquosliderrsquo Tri rozhranı pro tri barevne slozky (viz obr)
16
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
(Tip na vylepsenı prıkladu vypisovat do textoveho rozhranı aktualnı nastavenı RGB)
Resenı Naleznete v souborechgui param globalm gui param global fcemgui paramm gui param fcemgui param userdatam gui param userdata fcem
23 Uzivatelske menu
uimenuPrıkaz uimenu napsany na prıkazovem radku otevre graficke okno s rsquoneviditelnoursquo polozkouv liste se standardnımi menu Tato polozka je pripravena pro definovanı dalsıch menuVlastnostı Label priradıme polozce nazev a pomocı CallBack pridelıme funkciPokud nehceme standardnı menu stacı nastavit set(gcf rsquomenubarrsquo rsquononersquo)Nektere vlastnostiLabel - nazev polozky menuCallBack - nazev funkce vykonavajıcı cinnost pridelenou rozhranı uzivatelemSeparator - oddelovacı caraAccelerator - znak pro klavesovou zkratku
Prıklad jednoducha ukazka menuf = figure(rsquoMenuBarrsquorsquoNonersquo)m = uimenu(frsquoLabelrsquorsquoKonecrsquorsquoCallBackrsquorsquodelete(f)rsquo)
17
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Pozn Je mozne vytvaret i menu do sebe vnorena
24 Dialogove objekty
errordlg(rsquohlasenirsquo) - zobrazı dialogove okno s chybovovym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
warndlg(rsquohlasenirsquo) - zobrazı dialogove okno s varovnym hlasenım zobrazı text rsquohlasenirsquoktery je zadan jako parametr typu retezec
Pozn vıce viz MATLAB - Help
Prıklad Naprogramujte podle obrazku vykreslenı funkce sin(x) Vyuzijte guide
Prıklad Naprogramujte podle obrazku interpolaci se zadavanım interpolacnıch bodumysı
Resenı Naleznete v souborechinterpolm interpol fcem nactidatam
18
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
19
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
3 Retezce A prace s textem
Retezec muze byt znak nebo pole znaku Zadavame je do apostrofu k jednotlivym znakumlze pristupovat pres indexy
bull Vytvorenı retezce retezec = rsquoToto je retezecrsquo
bull Vytvorenı prazdneho retezce prazdny retezec = rsquo rsquo
bull Vytvorenı prazdneho retezce o n mezerach prazdny retezec = blank(n)
31 Spojovanı retezcu
bull Podobne jako se spojujı vektory[rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo] = rsquoretez1 retez2retez3rsquo
bull Pomocı funkce strcat(rsquoretez1rsquo rsquo rsquo rsquoretez2rsquo rsquoretez3rsquo) dostaneme rsquoretez1retez2retez3rsquoTato funkce rdquoslepırdquo retezce za sebe ignoruje mezery
bull Retezce do sloupce pokud jsou stejne dlouhe pomocı strednıku [rsquoretez1rsquo rsquoretez2rsquorsquoretez3rsquo]
bull Pomocı funkce strvcat(rsquoretez1rsquo rsquoretezec2rsquo rsquoretezecek3rsquo) muzeme radit pod sebe retezceruznych delek Rozdıly jsou doplneny mezerami
32 Porovnavanı retezcu
bull Pomocı relacnıch operatoru (lt gt sim= ) se porovnavajı na zaklade hodnot vASCII kodu Vysledkem je logicka hodnota rsquoarsquoltrsquobrsquo rArr 1(true) rsquoarsquogtrsquobrsquo rArr 0(false)Takto lze porovnavat retezce stejnych delek nebo jeden znak s retezcem Vysledkemje pak vektor nul a jednicek
bull Pomocı funkce strcmp(s1s2) Vysledkem je 1 pokud jsou retezce shodne jinak 0
bull Funkce strncmp(r1 r2 n) umoznı porovnat prvnıch n znaku z obou retezcu
33 Vyhledavanı v retezcıch
bull Funkce findstr(r1 r2) vyhledava kratsı retezec v delsım vracı indexy prvku kde bylpodretezec nalezenfindstr(rsquobarrsquo rsquobarova zidle barometr mlecny barrsquo) = [1 14 30]
bull Funkce strmatch(r1 pole retezcu) vracı indexy radku z promenne pole retezcu nakterych se vyskytuje retezec zacınajıcı retezcem r1
20
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
34 Konverze retezcu
bull Funkce double(s) prevadı znak na cıselnou hodnotu kterou ma v ASCII kodudouble(rsquoretezecrsquo) = [114 101 116 101 122 101 99]
bull Funkce char(x) je opacna k funkci predchozı prevadı cıselnou hodnotu na znak Opetpodle ASCII koduchar([114 101 116 101 122 101 99]) = rsquoretezecrsquo
bull Funkce int2str(N) prevadı celocıselnou hodnotu na retezec
bull Funkce num2str(N) prevadı cıselnou hodnotu na retezec
bull Funkce str2num(s) opak num2str
Poslednı tri jmenovane funkce se hojne vyuzıvajı pri zıskavanı parametru z grafickehouzivatelskeho prostredı (pri komunikaci s GUI)
35 Prehled dalsıch uzitecnych funkcı
ischar(s) - je-li s textovy retezec ma hodnotu 1 (true) jinak 0 (false)isletter(s) - pro znaky abecedy v retezci s ma hodnotu 1 jinak 0isspace(s) - ma hodnotu 1 pro mezery
deblank(s) - odstranuje mezery na konci retezce
eval(s) - prevede retezec na vyraz a provede ho
upper(s) - vsechna mala pısmena v retezci prevede na velkalower(s) - vsechna velka pısmena v retezci prevede na mala
Prıklad Pomocı dialogoveho okna napiste oznamenı o vysledku nejakeho vypoctu vetvaru
Vysledek je 42 jednotek
Resenımsgbox([rsquoVysledek je rsquo num2str(42) rsquo jednotekrsquo])
Prıklad Napiste funkci ktera prekonvertuje retezec na cısla (hodnoty ASCII kodu) asecte jej
Resenı jednodussi varianta
21
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
function hodnota = konvert(retez)hodnota = sum(double(retez))
slozitejsi variantafunction konvert(varargin)if nargin == 0display(rsquoneni zadan retezecrsquo)elseretez = []for i=1narginretez = [retez varargini]endhodnota = sum(double(retez))msgbox([rsquoHodnota zadaneho retezce je rsquo num2str(hodnota) rsquorsquo])end
Prıklad Tri specificky zapojene resistory se odlisujı barvou ktera urcuje hodnotu jejichodporu Celkovy odpor zapojenı se vypocte podle vzorceR = (10R1 + R2)10R3 Napiste funkci ktera spocte vyslednou hodnotu pro tri zadanebarvy
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 resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Resenınajdete v souborech resistorm muj resistorm
Namety na dalsı prıklady Vytvorit pole zanamu typu studentjmeno studentrocnik apoda vyhledavat v nem nebo radit
23
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
4 Souborovy vstup a vystup
41 Zakladnı prace se soubory
V prostredı MATLAB se rıdı nasledujıcımi prıkazy psanymi na prıkazovem radkucd - zmena aktualnıho adresarepwd - vypis aktualnıho pracovnıho adresare vcetne cele cestydir - vypis obsahu pracovnıho adresared = dir - do promenne d typu struktura ulozı podrobnosti o adresarils - vypis obsahu pracovnıho adresarematlabroot jm souboru - vypıse cestu k adresari kde je MATLAB nainstalovanytype - vypis obsahu souboru na obrazovku
42 Ulozenı a nactenı dat
Zopakujeme si i prıkazy z MATL1
diary - ulozı (historii) posloupnost prıkazu ktera je uvozena prıkazem diary on a koncı diaryoff do souboru diary
save - ulozı obsah pracovnıho prostoru promennych (workspace) do souboru matlabmat vbinarnım kodusave jmenosouboru - uklada v binarnım kodu cely obsah pracovnıho prostoru do nami zv-oleneho souboru (novy zalozı existujıcı prepıse)save jmenosouboru promenna - uklada v binarnım kodu do nami zvoleneho souboru pouzezvolene promennesave jmenosouboru promenna format - uklada do nami zvoleneho souboru (novy zalozı ex-istujıcı prepıse) zvolene promenne ve zvolenem formatulze pouzıt i zapis save(rsquosoubormujrsquorsquopromennarsquorsquoformatrsquo)
load - nacte obsah matlabmat do pracovnıho prostoruload jmenosouboru - nacte obsah souboru jmenosouboru do pracovnıho prostoru pokud jesoubor binarnıload jmenosouboru promenna - pokud je soubor binarnı nacte z nej pouze zvolenou promennouload soubortxt - nactenı ASCII souboru do matice Soubor musı mıt stejny pocet radku asloupcu i retezce nacte jako cıslalze pouzıt i zapis load(rsquosoubormujrsquo)
importdata(soubor) - nacıta ruzne typy dat sam vybere do jakeho typu promenne
Prıklad Ulozte obsah vaseho aktalnıho pracovnıho prostoru (alespon 4 libovolne promenne)smazte obsah pracovnıho prostoru a nactete zpet 2 promenne z ulozeneho souboru (opakovanı
24
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
z MATL1)
43 Formatovane ctenı a zapis
Hodı se napr pro formatovanı textovych souboru ktere jsou vstupnımi daty vypoctovychprogramu Zakladem je prace s identifikatorem otevreneho souboru Vsechny nasledujıcıprıkazy pracujı s identifikatorem otevreneho souboru Jinymi slovy soubor se kterymchceme pracovat musı byt otevren pomocı funkce fopen Tımto prıkazem otevreme souborybinarnı i textove prace s nimi je pak rozdılna
fid = fopen(rsquosoubormujrsquo) - otevre soubor pro ctenı identifikator ulozı do promenne fid fidje cele kladne cıslo vetsı nez 2 Pokud soubor nebyl z nejakeho duvodu otevren fid = -1Muzeme pridat dalsı parametr ktery urcuje v jakem rezimu je soubor otevrenfid = fopen(rsquosoubormujrsquo rsquorrsquo) - pouze pro ctenıfid = fopen(rsquosoubormujrsquo rsquowrsquo) - pouze pro zapis novy soubor vytvorı existujıcı prepısefid = fopen(rsquosoubormujrsquo rsquoarsquo) - pripisuje na konec souboru neexistujıcı vytvorıfid = fopen(rsquoallrsquo) - vracı identifikatory vsech uzivatelem aktualne otevrenych souboru
fclose(fid) - uzavre soubor s identifikatorem fid Vracı hodnotu 0 pokud se podarilo souborzavrıt pokud ne ma hodnotu -1fid = fclose(rsquoallrsquo) - uzavre vsechny aktualne otevrene soubory
feof(fid) - test konce souboru vracı 1 pokud narazı na znak konce souboru jinak 0
fscanf(fid rsquorsquo [nm]) - cte po znacıch z otevreneho souboru Pokud mısto m napısemeinf cte do konce souboru Za znak pıseme kolik znaku ma byt nacteno a jejich typZkratky pro typ jsou uvedeny v nasledujıcı tabulce
fprintf(fid rsquorsquo prom1prom2) - zapisuje po znacıch do souboru Za znak pıseme ko-lik znaku ma byt nacteno a jejich typ Zkratky pro typ jsou uvedeny v nasledujıcı tabulceFormatovny text pıseme do apostrofu za nej pak carkou oddelujeme zapisovane promennefprintf(fid rsquonrrsquo prom1prom2) - muzeme pripojit znak pro konec radku rsquonrsquo prounix rsquornrsquo pro windows
c posloupnost znaku
d cela cısla
f realna cısla
s posloupnost bılych znaku (mezer)
25
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Prıklad Prıklady formatovaneho zapisu do souboru
fprintf(filersquoNODE 8d163f163frsquonrsquo uzel ID uzel sour(1) uzel sour(2))
A = [1 2 3 4 5 6 7 8]fprintf(f2rsquo 84f 84f rsquornrsquoA)
431 Binarnı soubory
fwrite(fid A) - zapıse binarne promennou A do souboru s identifikatorem fid Pro kazdecıslo vyhradı 1 bit a radı je do sloupce pod sebefwrite(fid A prec) - parametr prec urcuje format a velikost zapisovane promenne
A = fread(fid) - nacte data ze souboru do matice A v binarnım formatuA = fread(fid pocet) - nacte predepsany pocet bitu ze souboru do matice AA = fread(fid pocet prec) - nacte data ze souboru podle predepsaneho formatu ulozenehov prec
Pozn Pro spravne nactenı je treba znat v jakem formatu byl soubor zapsan
fseek(fid offset origin) - pripravı nasledujıcı ctenı ze souboru pres fread Parametr offsetudava format ctenı origin nastavuje odkud zacne ctenı
432 Textove soubory
fgets(fid) - nacte z otevreneho souboru cely radek vcetne znaku pro konec radku
fgetl(fid) - nacte z otevreneho souboru cely radek bez znaku pro konec radku
Prıklad Napiste funkci jejız vstupem je jmeno textoveho souboru ktery je na disku aobsahuje text po radkach z nichz nektere zacınajı klıcovym slovem NODE Funkce vytvorınovy soubor bez uzlu (bez radku ktere zacınajı klıcovym slovem NODE) jmeno souboruvratı jako retezec Testovacı vstupnı soubor je chroupak vstupinc
Resenı Najdete v souboru konvertor 1mfunction vystupni jm=konvertor(vstupni jm)
vstupni=fopen(vstupni jmrsquorrsquo)vystupni=fopen(rsquokonvertor1 vystupincrsquorsquowrsquo)
while sim feof(vstupni)radek=fgets(vstupni)if length(radek)lt4 | ( strcmp(radek(14)rsquoNODErsquo))
26
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
fprintf(vystupniradek)endendfclose(rsquoallrsquo)vystupni jm=rsquokonvertor1 vystupincrsquo
Dalsı ukazky prace s binarnım i textovym souborem jsou v souborech pokusm pokusny soubortxt
44 Dialogova okna
[jmeno cesta]=uigetfile - otevre dialogove okno pro otevrenı souboru jmeno a cestu ksouboru ulozı do promennych typu retezec
[jmeno cesta]=uiputfile - otevre dialogove okno pro ulozenı souboru jmeno a cestu ksouboru ulozı do promenne typu retezec
Obe funkce muzeme pouzıt s parametrem specifikujıcım typ souboru a nazvem dialogu[jmeno cesta]=uiputfile(rsquotxtrsquorsquonazev dialogursquo)
Prıklad Prepiste funkci z predchozıho prıkladu na skript Pro vyber souboru pouzijtefunkci uigetfile pro vyber vystupnıho pouzijte uiputfile
Resenı Najdete v souboru konvertor 2m
27
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
5 Analyza dat a zpracovanı signalu
datafun - Data analysis and Fourier transformssignal - Signal processing toolboxsigdemos - Signal processing toolbox Demonstrations
Chceme-li pracovat s daty musıme nejaka zıskat
bull zadat vyctem konkretnı posloupnost cısel
bull generovat pomocı funkcı MATLABu
bull nacıst ze souboru (txt bin )
bull vytvorit vlastnı generator
51 Generovanı signalu
Signal muze byt
bull jednokanalovypr x = randn(1100)rsquo
bull vıcekanalovypr X = [x 2x xπ]
Typy signalu podle tvaru
bull bıly sum - zcela nahodny signal Takovy muzeme vygenerovat pomcı funkce randnpr randn(n1)
bull vlnove signaly - signaly na bazi funkce sinus
y = sin(ωt) = sin(2πft)
y = sin(2 lowast pi lowast 50 lowast t) + sin(2 lowast pi lowast 120 lowast t)
bull pulsy - generujeme na urcitem casovem intervalu pak je skladame Existujı preddefinovanefunkce pro tvorbu pulsusawtooth(tw) - zub pily t je pozadovany casovy interval koeficient umıstenı vrcholuwisinlt 0 1 gtsquare(td) - rsquoctvercersquo t je pozadovany casovy interval koeficient umıstenı sırkyctverce v procentech periody disinlt 0 100 gtMezi dalsı jejichz zakladem je sinusovka patrı napr pulstran a sinc
Poznamka rsquoStabnı kulturarsquo obvykle se jednokanalovy signal generuje ve sloupci snadnose pak rozsiruje na vıcekanalovy Jednotlive signaly jsou ulozeny po sloupcıch
28
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
52 Analyza dat
Zopakujeme a prohloubıme znalosti statistiky z MATL1
m = max(x) - nejvetsı prvek vektoru u matice vracı vektor nejvetsıch prvku z jednotlivychsloupcu[mI] = max(x) pokud je vıc prvku s maximalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejvetsıho prvku
m = min(x) - nejmensı prvek vektoru u matice vracı vektor nejmensıch prvku z jednotlivychsloupcu[mI] = min(x) pokud je vıc prvku s manimalnı hodnotou hodnotu ulozı do promenne mdo I ulozı index prvnıho nalezeneho nejmensıho prvku
mean - srednı hodnotamedian - median platı int x1
0
P (x)dx =
int infin
x1
P (x)dx = 05
var - rozptylstd - smerodatna odchylkasort - radı prvky podle velikostisort(xrsquoascendrsquo) - vzestupnesort(xrsquodescendrsquo) - sestupnesum - soucet sech prvkuprod - soucin prvkuhist - histogram sloupcovy graf cetnostipie - kolacovy graf
Poznamka u vetsiny funkcı je mozne zadat nepovinny parametr DIM ktery v prıpadematice urcı jestli se bude funkce provadet po radkach (DIM = 2) nebo po sloupcıch (DIM= 1)
53 Zpracovanı signalu
cov - kovariance vektoru jejı hodnota urcuje rdquojak moc kmita signal kolem strednı hodnotyrdquo
xcorr - korelace signalu Vystupnı vektor c delky 2N-1 urcuje jaky je vzajemny vztahmezi signaly x a y delky Nc = xcorr(xy)je-li c(i) gtgt 0 nebo c(i) ltlt 0 pak signaly jsou v danem mıste rdquopodobnerdquoje-li c(i) sim 0foralli signaly nekorelujı napr dva bıle sumypodle hodnot c lze odhadnout periodicnost signalu
29
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
fft - fast fourier transformationprıklad viz Helpprevod signalu z casove oblasti do frekvencnıfunguje nejefektovneji pro 2n prvkuy = fft(x2n)
54 Filtry
Podle typu signalu ktery zpracovavame delıme filtry na
bull spojite zpracovavajı spojity vstupnı signalrarr Laplaceova transformace do frekvencnıoblasti
bull diskretnı zpracovavajı diskretnı vstupnı signalrarr Z-transformace do frekvencnı oblasti
Podle zpusobu reprezentace
bull FIR - konecne (finite impulse response filters)
bull IIR - nekonecne (infinite impulse response filters)
Typy filtru podle propustnosti - tvaru frekvencnı oblasti
bull dolnı propust (low pass)
bull hornı propust (high pass)
bull pasmova propust (band pass)
bull pasmova zadrz (band stop)
Filter design - vypoctenı koeficientu a b (numerator denominator) vstupem jsou meznıfrekvence a rad filtru Rad filtru urcuje pocet prvku vektoru koeficientu a b Prıkladyfunkcı pro vypoctenı parametru a b
bull pro FIR filtry - potrebujı jen koeficienty bfir1firls
bull pro IIR filtry - potrebujı koeficienty a i bbesselbuttercheby1
Vykreslenı charakteristiky zvoleneho (spocteneho filtru)freqs(ab) - pro analogovy filtrfreqz(ab) - pro diskretnı filtr
Filter implementation - samotne filtrovanıy = filter(bax)
30
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
55 Shrnutı
1 zıskat signal
2 zjistit jeho frekvencnı charakteristiky
3 navrhnout filtr - urcit ktere frekvence se odfiltrujı rad filtru
4 spoctenı koeficientu pro zvoleny typ filtru prıpadne zkontrolovat jeho frekvencnıcharakteristiku
5 filtrovanı signalu
Signal processing toolbox obsahuje nastroje vytvorene v GUI (graficke uzivatelske prostredı)pro navrhovanı filtru a filtrovanı signalu
bull FDATool - nastroj pro navrhovanı a analyzu filtru
bull SPTool - nastroj pro zpracovanı digitalnıho signalu
31
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
6 Prace s obrazky audio a video vystup
Probırane funkce najdete v nasledujıcıch knihovnach MATLABuimages - Image processing toolboximdemos - Image processing toolbox - demos and sample examplesaudiovideo - Audio and video support
61 Prace s obrazky
Soubor funkcı podporujıcıch praci s obrazky je postaven na objektech
image - funkce ktera vytvorı graficky objektI = image(C) - do promenne I ulozı ukazatel na objekt kazdy prvek pole C predstavujebarvu obelnıkoveho pole v obrazkuPr I = image(100rand(53))
Jak se orientovat v obrazku jak urcit polohu daneho bodumıstapixelu
bull Pixelovy souradnicovy system - koresponduje s indexovanım matice
bull Prostorovy souradnicovy system - pixel je reprezentovan obdelnıkem ma nejakouplochu Souradny system pak zacına hodnotou 05 pro osu x i y osa x roste jak jezvykem (vodorovne doprava) osa y narusta svisle dolv Celocıselne souradnice pakodpovıdajı stredu prıslusneho pixelu ale poradı souradnic je prehozene pixel(5 3) rArrx = 3 y = 5
imread - funkce pro nactenı dat z grafickeho souboru do pole MATLABu (do pracovnıhoprostoru) Podporuje tyto graficke formaty bmp cur gif hdf ico jpgjpeg pbm pcxpng pnm ppm ras tiftiff xwd Takto nactene obrazky se do MATLABu ukladajı veforme pole (matice) s rozmery shodnymi s rozmery obrazku (poctem pixelu)
A = imread(rsquoobrazekpriponarsquo) - A je matice o rozmerech m x n x 3Prıklad misa = imread(rsquoObrmisanjpgrsquo)
[Xmap] = imread(rsquoobrazekpriponarsquo) - X je matice m x n map je mapa barev velikostipocet barev x 3Prıklad[caroda pixcaroda map] = imread(rsquoObrimage007gifrsquo)
V MATLABu (resp v Image processing toolboxu) jsou ctyri zakladnı druhytypy obrazkuBinarnı - logicke pole nul a jednicek 0 pro cernou bravu 1 pro bılou Pozice hodnoty vpoli odpovıda pixelu na obrazkuIndexove - obrazek se nacte do dvou matic Prvnı je pole cısel (muze byt typ logical
32
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
uinit8 unit16 single double) hodnoty pixlu jsou prımo indexy do barevne mapyIntensitnı - pro cernobıle obrazky hodnoty v matici odpovıdajı stupni sedi (intenzite sedebarvy)rsquoTruecolorrsquo - obrazek nacten do 3-rozmerne matice velikosti m x n x 3 kde m a n jsoupocty pixelu ve smeru x a y prvky odpovıdajı hodnotam barevnych slozek pro R (cervena)v prvnım rezu G (zelena) ve druhem rezu a B (modra) ve tretım
imshow - vykreslı obrazek v grafickem okne (ve figure)imshow(misa)imshow(rsquoObrmisanjpgrsquo)imshow(caroda pix caroda map)
imwrite - ulozı obrazek do souboruimwrite(misa rsquomisa2jpgrsquo)imwrite(caroa pix caroda map rsquocarodagifrsquo)
iminfo - vypıse informace o obrazkuiminfo(misa)
getimage - nacte obrazek z aktualnıho grafickeho okna
Jsou-li obrazky stejne velikosti muzeme s nimi provadet ruzne rdquokejklerdquoimadd - soucet dvou obrazkuimadd(Im1 Im2)
imdivide - delenı obrazkuimdivide(Im1 Im2)
imlincomb - linearnı kombinace n obrazku koeficienty ovlivnujı jejich intenzituimlincomb(koef1 Im1 koef2 Im2 koefn Imn)
Pomocı nastroje imtool muzeme snadno menit napr vyrez jas kontrast barevne rozlozenı
Matlab je take schopen pracovat s MRI datyJak zıskat 3D pohled vytvorit obal rezu objem jak menit ruzne uhly pohledu a nasvıcenıje ukazano v prıkladu hlavam Pracuje se s ukazkovymi daty MATLABu ktere lze nacıstprıkazem load mri
62 Zvukovy zaznam
sound - prehraje zvuky v zabudovanem reproduktoru (PC speaker)sound(yFs) - y je vektor prehravaneho signalu pro ktery musı platit -1lt=y(i)lt=1 Fs je
33
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
frekvence prehravanı Pokud nenı Fs uvedena pouzije se prednastavena hodnota 8192HzPokud je y velikosti n x 2 prehrava se stereo
Prıklady zvuku v MATLABu ktere lze nacıst pomocı funkce load do pracovnıho prostorupromennych a pak s nimi libovolne pracovat gong chirp train splat
wavread - nacte data ze zvukoveho souboru
wavwrite - zapıse zvukovy signal do souboruwavwrite(yFsrsquojmenowavrsquo)
wavplay - prehraje audio signalwavplay(yFs)
wavinfo - informace o zvukovem zaznamu
wavrecord - nahrava zvukovy zaznam ze vstupnıho zarızenı
63 Video
aviread - cte avi soubory Podobne jako u obrazku mohou byt dva typy videozaznamuIndexovy ktery je urceny polem indexu a barevnou mapou nebo rsquotruecolorrsquo definovany3D polemmov = aviread(jm souboru)[index map] = aviread(jm souboru)
aviinfo - vypis informacı o avi souboru
avifile - vytvorı a otevre novy avi souboravifile(rsquojmenoavirsquo)
getframe - vytvarı rdquoramecekrdquo z os pro pouzitı pri tvorbe videaF = getframe(gca) - aktualnı osy uklada do promenne F
addframe - spojı ramecky do videaM = addframe(MF) - dalsı ramecky pridava do souboru V promenne M je ulozeny odkazna soubor otevreny pomocı avifile
movie - prehraje video definovane maticı sloupce jsou tvoreny jednotlivymi ramecky (snımky)movie(M)
Schema jak vytvorit a prehrat video v prostredı MATLAB
34
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
for i = 1pocet snimkuprikazy kresleniF(i) = getframe(gca)endmovie(F)
Schema jak vytvorit video zaznam a ulozit ho do souboru
M = avifile(rsquovideozaznamavirsquo)for i = 1pocet snimkuprikazy kresleniF = getframe(gca)M = addframe(MF) endclose(M)
35
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
7 Maticova analyza
matfun - Matrix function - numerical linear algebrasparfun - Sparse matrices
71 Maticova analyza
Opakovanı z MATL1size(A) - rozmery maticelength(v) - delka vektoru
det(A) - determinant ctvercove maticeinv(A) - inverznı matice A je ctvercovarank(A) - hodnost matice
poly(A) - koeficienty charakteristickeho polynomu ctvercove maticeE = eig(A) - vlastnı cısla ctvercove matice ve vektoru E[VD] = eig(A) - D je diagonalnı matice vlastnıch cısel V je matice vlastnıch vektoru (posloupcıch)
Funkce maticeVypocetli bychom podle predpisu
f(A) = Tf(J)Tminus1
J - Jordanuv kanonicky tvar matice AT - transformacnı matice tvorena vlastnımi vektory matice A
expm(A) - eA exponencielalogm(A) - logaritmussqrtm(A) - odmocnina
pinv - pseudoinverznı maticeB = pinv(A) B je takova ze platı ABA=A BAB=Bvyuzitı pri resenı preurcenych soustav
72 LU a QR rozklad
lu - rozklad ctvercove matice na dolnı a hornı trojuhelnıkovou matici Pouzıva se pri resenısoustav linearnıch rovnic[LU] = lu(A)[LUP] = lu(A)
36
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Syntaxe pro resenı soustavy Ax=b[LU] = lu(A)y = L bx = U y
Prıklad 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][LU] = lu(A)y = L bx = U y
qr - rozklad na ortogonalnı a hornı trojuhelnıkovou matici Pouzıva se pri resenı preurcenychsoustav linearnıch rovnic[QR] = qr(A)[QRE] = qr(A)
Syntaxe pro resenı preurcene soustavy Ax=b[QR] = qr(A)y = Qrsquobx = R y
Poznamka Parametr P resp E u funkce lu resp qr vyjadruje pocet pouzitych permu-tacı - prohazenı sloupcu Platı PA = LU AE = QR
Prıklad 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][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
ResenıA = [1 2 3 4 5 6 7 8 9 10 11 12]b = [1 3 5 7][QR] = qr(A)y = Qrsquobx = R y
73 Rıdke matice
Jsou to specialnı matice ktere majı velky pocet nulovych prvku Do pameti se ukladajıpouze nenulove prvky s prıslusnymi indexy Snizuje se tak vypocetnı cas a setrı pametrsquo
sparse - definovanı rıdke matice nekolika zpusoby
bull S = sparse(A)
A =
0 0 0 4
1 0 0 2
0 0 1 0
rArr S =
(1 4) 4
(2 1) 1
(2 4) 2
(3 3) 1
bull S = sparse(ijsmn) i je vektor radku a j vektor sloupcu indexu pozic na kterychse vyskytuje nenulovy prvek rıdke matice s je vektor nenulovych prvku mn jsourozmery cele matice Predchozı prıklad by se zapsalS = sparse([1 2 2 3] [4 1 4 3] [4 1 2 1] 3 4)
full(A) - zobrazı celou strukturu rıdke matice
spdiags - vytvorı rıdkou matici s prvky na diagonalachS = spdiags(Bdmn) B je matice nenulovych prvku d je vektor diagonal na ktere majıbyt prvky umısteny m n jsou rozmery celkove matice
bull d(i) = 0 hlavnı diagonala
bull d(i) lt 0 vedlejsı diagonaly pod hlavnı diagonalou
bull d(i) gt 0 vedlejsı diagonaly nad hlavnı diagonalou
38
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Prıklad Vygenerujte rıdkou diagonalnı matici ve tvaru
1 1 0 0 0
minus1 2 1 0 0
0 minus1 3 1 0
0 0 minus1 4 1
0 0 0 minus1 5
ResenıB = [ [ -1ones(41) 0] (15)rsquo [0 ones(41) ]]S = spdiags(B[-101]55)full(S) kontrola
39
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
8 Numericka integrace a derivace
81 Integrace
K numericke integraci pristupujeme kdyz
bull funkcnı predpis nezname funkce kterou integrujeme je zadana tabulkou
bull funkcnı predpis je prılis slozity
Poznamka quadrature - stanovenı plosneho obsahu
Numericky integrujeme funkci vzdy na urcitem intervalu lt a b gtPrincip interval rozdelıme na nekolik podintervalu Delenı muze byt s konstantnım krokem(ekvidistantnı) nebo s promennym krokem (neekvidistantnı) Na kazdem takto zvolenempodintervalu spocteme funkcnı hodnoty v krajnıch bodech a pomocı nich jiz zvolenoumetodou obsah obrazce napr lichobeznıku ktery je tvoreny krajnımi body podintervalua jejich funkcnımi hodnotami (xk xk+1 f(xk) f(xk+1)) Celkovy integral je pak soucetvsech podoblastı
Figure 1 Schema pro obdelnıkove pravidlo
Newton-Cotesovy vzorcemetody s ekvidistantnım delenım uzlu
1 Obdelnıkove pravidlo - podoblast nahrazena obdelnıkem
h
Nminus1sumk=0
f(xk + h2)
2 Lichobeznıkove pravidlo - podoblast nahrazena lichobeznıkem
h
[12f(x0) +
Nminus1sumk=0
f(xk) + 12f(xN)
]
40
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
3 Simpsonova pravidlo - integral pod parabolouN musı byt sude cıslo
h3 [f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + + 2f(xNminus2) + 4f(xNminus1) + f(xN)]
Prıklad Spoctete numericky integral funkce y = sin(x) na intervalu lt 0 π gt vykres-litete a vybarvete jednotlive plosky
Prıklad Naprogramujte numerickou integraci funkce ex na intervalu lt 1 1 2 gt pomocıNewton-Cotesovych vzorcu Porovnejte s presnym resenım
811 Funkce MATLABu
quad(fceab) - integral Simpsonovym pravidlem funkce rsquofcersquo na intervalu a b
quadl(fceab) - integral Lobattovym pravidlem funkce rsquofcersquo na intervalu a b
quadv(fceab) - integral funkce komplexnı promenne na intervalu a b
dblquad(fcexminxmaxyminymax) - dvojny integraltriplequad(fcexminxmaxyminymaxzminzmax) - trojny integral
Prıklad Spocteteint 1
0
int π2
minusπ2(ysin(x) + xcos(y))dxdy
Resenı definovani funkcefunction z = funkce1z = xcos(y) + ysin(x)
gtgt dblquad(funkce101minusπ2π2)
Prıklad Vypoctete delku krivky parametricky zadane pro parametr t isinlt 0 3π gt
x = sin(2t)
y = cos(t)
z = t
Resenı
l =
int 3π
0
radicdx2 + dy2 + dz2 dt
funkce pro vypocet delkyfunction l=had(t)
41
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
l = sqrt(4(cos(2t))and2 + (sin(t))and2 + 1)
gtgt quad(had03π)
82 Derivace
Nechtrsquo f je funkce spojita na intervalu lt a b gt a ma na lt a b gt spojite prvnı ctyriderivace Muzeme provest aproximaci Taylorovym polynomem pro dostatecne mala hplatı
f(xplusmn h) = f(x)plusmn hf prime +1
2h2f primeprime(x)plusmn 1
6h3f primeprimeprime(x) + O(h4)
Odtud plynef(x + h)minus f(xminus h)
2h= f prime(x) +
1
6h2f primeprimeprime(x) + O(h4)
Uvedeny vztah dava numerickou metodu pro priblizny vypocet f prime(x) z hodnot funkce f Klademe
f prime(x) asymp f(x + h)minus f(xminus h)
2h
s chybou aproximace radu h2
Pozn Postup je nestabilnı pro velmi mala h
Pokud mame funkci s prılis slozitym zapisem aproximujeme ji nejprve polynomem a pakteprve pocıtame pribliznou hodnotu derivace teto aproximace
821 Aproximace derivace diferencemi
Nejcasteji pouzıvane vzorce pro vypocet diference
bull prava diference
DP f =f(x0 + h)minus f(x0)
h
bull leva diference
DLf =f(x0)minus f(x0 minus h)
h
bull centralnı diference
DCf =f(x0 + h)minus f(x0 minus h)
2h
Prıklad Aproximujte derivci funkce y = sin(x) na intervalu lt 0 2π gt pravou levou acentralnı diferencı
42
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Resenı h = 05x = 0h2piy = sin(x)
for i=1n-1Df P(i) = (y(i+1)-y(i))hend
for i=2nDf L(i) = (y(i)-y(i-1))hend
for i=2n-1Df C(i) = (y(i+1)-y(i-1))(2h)end
Df P Df L Df Cdiff(x) - rozdıl sousednıch prvku vektoru x [x2 minus x1 x3 minus x2 xn minus xnminus1] vysledny vektorma n-1 prvku
Prıklad Vykreslete funkci y = sin(x) na intervalu lt 1 2π gt a jejı derivaci
Resenıh = 01x = 0h2piy = sin(x)dx = diff(x)dy = diff(y)df = dydxplot(xyrsquobrsquox(0end-1)dfrsquorndashrsquo)legend(rsquof(x)rsquorsquofrdquo(x)rsquo)
43
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
9 Pocatecnı ulohy ODR
91 Obycejne diferencialnı rovnice
Obycejna diferencialnı rovnice (ODR) obsahuje jednu nebo vıc derivacı zavisle promenney podle nezavisle promenne t obvykle oznacovane jako cas Derivace y podle t se znacı yprimedruha derivace yprimeprime atd y(t) muze byt i vektor o slozkach y1 y2 y3
yprime = f(t y)
ODR ma nekonecny pocet resenı lisıcıch se o integracı konstantu Pridat pocatecnı podmınkyomezı pocet resenı na jedno konkretnı
yprime = f(t y)
y(t0) = y0
92 Numericke metody pro resenı ODR
Budeme se zabyvat resenım pocatecnıch uloh pro ODR Princip resenı- diskretizace promennychHledame priblizne resenı podle nasledujıcıho postupu Generuje se diskretnı mnozinax0 = a x1 x2 xn a stanovı se y0 = b y1 y2 yn ktera aproximujı presne resenı vuzlech sıte [x0 x1 ]
krok metody hn = xn+1 minus xn
bull konstantnı
bull promenny
metody
bull jednokrokove - resenı yn+1 vyjadreno pomocı yn
bull vıcekrokove - resenı yn+1 vyjadreno pomocı yn ynminus1 yn+1minusk (k-krokova metoda)
metody (z pohledu konvergence)
bull prvnıho radu
bull vyssıch radu yn+1 = yn + φ(xn yn hn f) φ je prırustkova funkce
921 Eulerova metoda
bull nejjednodussı linearnı rekurentnı vztah
bull jednokrokova
44
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
bull prvnıho radu
bull geometricky smysl na intervalu lt xn xn+1 gt se pohybujeme po tecne k presnemuresenı rovnice yprime = f(x y) ktere prochazı bodem (xn yn)
predpis metodyyn+1 = yn + hnf(xn yn)
Prıklad Naprogramujte Eulerovu metodu a vyreste xprime = t minus x s pocatecnı podmınkoux(0) = 1 na intervalu lt 0 0 6 gt Vysledek porovnejte s presnym resenım Volte krokh = 02 a h = 01
ResenıKod v MATLABu naleznete v souboru Eulerm
922 Metody Runge-Kuttova typu
bull jednokrokove
bull vyssıho radu
bull univerzalnejsı a uzitecnejsı nez Taylorovy metody
bull princip sikovna aproximace Taylorovo rozvoje - kombinuje se z hodnot funkce fvypocıtanych v nekolika strategicky volenych bodech (x y) rozlozenych kolem krivkyresenı y = y(x) na intervalu lt xn xn+1 gt
Predpis metody
yn+1 = yn + hn
rsumi=1
αiki n = 0 1
kde
k1 = f(xn yn)
ki = f(xn + λihn yn + microihnkiminus1) i gt 0
V kazdem kroku metody se spocte nejdrıv k1 k2 kr pak yn+1
Prıklady metod Runge-Kutta
bull 2radu - modifikovana Eulerova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2)
yn+1 = yn + hnk2
45
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
bull 4 radu - klasicka Rungova-Kuttova metoda
k1 = f(xn yn)
k2 = f(xn + hn2 yn + hn2k1)
k3 = f(xn + hn2 yn + hn2k2)
k4 = f(xn+1 yn + hnk3)
yn+1 = yn + hnk1 + 2k2 + 2k3 + k4
6
93 Pocatecnı uloha pro ODR v MATLABu
Pro resenı pocatecnıch uloh pro obycejnych diferencialnıch rovnic je v MATLABu imple-mentovan system ODE ktery resı ODR prvnıho radu a soustavy ODR prvnıho radu ODRvyssıch radu je proto treba prevest na soustavy prvnıho raduVsechny implementovane metody jsou s promennym casovym krokem
yn = f(t y yprime ynminus1)
Zavedeme substituci
yprime = y1
yprimeprime = yprime1 = y2
yprimeprimeprime = yprime2 = y3
yn = yprimenminus1 = f(t y1 y2 ynminus1)
931 Syntaxe
[tY] = odesolver(odefuntspany0)[tY] = odesolver(odefuntspany0options)kde odesolver je jedna z funkcı ode45 ode23 ode113 ode15s ode23s ode23t ode23tb (vizhelp)
932 Parametry funkce
odefun - prava strana diferencialnı rovnice Vsechny funkce pro ODR resı rovnice ve tvaruyprime = f(t y)
tspan - vektor urcujıcı interval integrace [t0tf ] Resic predpoklada ze pocatecnı podmınkaje v case tspan(1) a integruje od tspan(1) do tspan(end)
y0 - vektor pocatecnıch podmınek
46
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
options - nastavenı integracnıch vlastnostı definujı se pomocı funkce odeset (viz dale)
t - sloupcovy vektor casovych bodu
Y - matice resenı Kazdy radek matice odpovıda nalezenemu resenı y v prıslusnem casovemokamziku Pocet sloupcu odpovıda radu resene ODR
933 ODE pro rsquononstiff problemrsquo
ode45 - zalozen na explicitnı metode Runge-Kutta (45) jednokrokova metoda vhoda jakorsquoprvnı pokusrsquo pro vetsinu uloh
ode23 - zalozen na explicitnı metode Runge-Kutta (23) jednokrokova metoda muze bytefektivnejsı nez ode45
ode113 - vıcekrokova metoda podrobnosti viz MATLAB-Help
934 ODE pro rsquostiff problemrsquo
ode15s - vıcekrokova metoda podrobnosti viz MATLAB-Help
ode23s - jednokrokova metoda podrobnosti viz MATLAB-Help
ode23tb - podrobnosti viz MATLAB-Help
935 ODE pro rsquomoderately stiff problemrsquo
ode23t - podrobnosti viz MATLAB-Help
936 Volanı ODE zobrazenı vysledku
ode23(nazev fce[t0tf]y0) - vykreslı resenı do grafickeho okna
[tY] = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne Y t je vektor casovychkroku
sol = ode23(nazev fce[t0tf]y0) - vysledky uklada do promenne sol typu struktura solxobsahuje vektor integracnıch bodu soly obsahuje resenı
ode23((tx)nazev fce(txparam)[t0tf]y0) - volanı funkce se vstupnım parametrem
47
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı ode45 ODR xprime = tminus x s pocatecnı podmınkou x(0) = 1 na inter-valu lt 0 0 6 gt Porovnejte s vysledky z predchozıho prıkladu
ResenıKod v MATLABu naleznete v souboru dif rcem dif rce fce
Prıklad Reste soustavu rovnic popisujıcıch pohyb tuheho telesa bez pusobenı vnejsıchsil
yprime1 = y2y3 y1(0) = 0
yprime2 = y1y3 y2(0) = 1
yprime3 = minus05y1y2 y3(0) = 1
ResenıKod v MATLABu naleznete v souboru rigid movm rigid mov fcem
Prıklad Reste yprimeprime minus micro(1 minus y2)yprime + y = 0 s pocatecnımi pomınkami y(0) = 2 yprime(0) = 0 spromennym parametrem micro Pro micro = 1 na intervalu t isinlt 0 20 gt jde o rsquononstiffrsquo problempro micro = 1000 na intervalu t isinlt 0 3000 gt resıme rsquostiffrsquo ulohu
ResenıKod v MATLABu naleznete v souboru vdPolm vdPol fcem
937 Parametry integrace
Nektera nastavenı funkcı ode lze menit pomocı parametru options definovaneho funkcı ode-set
odeset - vypıse vsechny parametry integrace (vlastnosti odefunkcı) ktere lze menit Menımeje zapisem options = odeset(rsquoname1rsquorsquovalue1rsquorsquoname2rsquorsquovalue2rsquo ) kde rsquonamersquo je jmenoparametry a rsquovaluersquo jeho nastavajıcı hodnota
odeget(rsquonamersquo) - vypıse hodnotu pozadovane vlastnosti
Prehled vybranych vlastnostı (integracnıch parametru)options = odeset(rsquostatsrsquorsquoonrsquo) - zobrazı statistiku probehleho vypctu
options = odeset(rsquooutputsetrsquo[]) - vyber ktere slozky resenı se budou ukladat do vystupnıpromenne
48
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
options = odeset(rsquoMaxSteprsquok) - nastavenı maximalnıho casoveho kroku integrace na hod-notu k
options = odeset(rsquoInitialSteprsquok0) - nastavenı pocatecnı casoveho kroku na hodnotu k0
options = odeset(rsquoEventsrsquoevents) - po kazdem kroku integrace se vola funkce events defi-novana uzivatelem a kontrolujı se podmınky nastavene v teto funkci Hodı se napr proukoncenı vypoctu drıve nez v case tspan(end)
Prıklad Reste volny pad hmotneho bodu z vysky h v bezodporovem prostredı Vypocetse zastavı pri dopadu na zem (Pouzijte rsquoeventsrsquo)
ResenıKod v MATLABu naleznete v souboru volny padm volny pad fcem volny pad stopm
49
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
10 Okrajove ulohy ODR
101 Okrajove ulohy pro obycejne diferencialnı rovnice
Teorie okrajovych uloh pro obycejne diferencialnı rovnice (ODR) je komplikovanejsı nezteorie pocatecnıch uloh V numerickych metodach pro resenı okrajovych uloh se nedarıvytvaret tak univerzalnı algoritmy jako u uloh s pocatecnımi podmınkami
Samotnou okrajovou podmınkou nenı jeste resenı ulohy jednoznacne urceno Abychommohli numericky resit okrajove ulohy je treba budrsquo najıt zpusob jak urcit chybejıcıpocatecnı podmınky v nekterem z koncovych bodu intervalu nebo pouzıt metody jinehotypu nez u pocatecnıch uloh
Numericke metody pro resenı okrajovych ODR delıme takto
1 Metody pevadejıcı okrajove ulohy na pocatecnı
2 Diferencnı metody
3 Variacnı metody (nebo-li Galerkinova typu)
4 Jine metody (napr kolokacnı)
Budeme se zabyvat metodou strelby a ukazeme si pouzitı metody konecnych diferencı
102 Metoda strelby
Mejme okrajovou ulohu
yprimeprime = f(x y yprime) x isinlt a b gt
r1(y(a) yprime(a)) = 0
r2(y(b) yprime(b)) = 0
Predpokladejme ze na lt a b gt jsou jednoznacne resitelne pocatecnı ulohy pro tuto ODRs libovolne zadanymi pocatecnımi podmınkami v bode x = a
y(a) = η yprime(a) = micro
pro libovolne η micro Nasım cılem je stanovit hodnoty η a micro tak aby resenı pocatecnı ulohybylo zaroven hledanym resenım okrajove ulohy Jakmile takova cısla urcıme muzemepriblizne resenı dane okrajove ulohy vypocıtat pomocı nektere numericke metody pro resenıpocatecnıch uloh
Prıklad Okrajova uloha pro volny pad telesa v odporovem prostredı resena metodoustrelby Odpor volneho padu telesa je linearne zavisly na rychlosti s koeficientem c Urcete
50
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
pocatecnı rychlost pokud teleso hmotnosti m dopadlo na zem za T sekund rychlostı vN Ulohu popisuje obycejna diferencialnı rovnice
mv + cv = mg t isinlt 0 T gt v(T ) = vN
Resenı Zvolıme vk(0) k ge 1 a vypoctem obycejne diferencialnı rovnice (napr pomocıODE45) dojdeme k vysledku vk(T ) podle ktereho upravıme pocatecnı odhad jako
vk+1(0) =vN
vk(T )vk(0)
Algoritmus iteracne opakujeme se zvolenou presnostı
|vk(T )minus vN |vN
lt ε
Kod v MATLABu naleznete v souboru MetodaStrelbym MetodaStrelbyRHSm
103 Metoda konecnych diferencı
Diferencnı metody aproximujı puvodnı diferencialnı ulohu jako takovou Vysledkem diskretizaceje soustava algebraickych rovnic pro hodnoty priblizneho resenı v konecne sıti bodu t0 t1 tN Pocıtame-li metodou konecnych diferencı derivace v diferencialnı rovnici a okrajovychpodmınkach nahrazujeme prımo vhodnymi diferencemi
Rozdelıme interval lt 0 T gt na N castı a vytvorıme sıtrsquo
S = t0 t1 t2 tN
Zvolme naprıklad ekvidistantnı sıtrsquo s krokem
∆t =T
NhArr ∆t = ti+1 minus ti
Body t0 a tn jsou hranicnı uzly ostatnı body jsou vnitrnı uzly Uvazujme pro nasi ulohu
t isin 0 ∆t 2∆t N∆t
Potom hledame resenı yi v uzlech ti i isin 0 N Pozor na indexovanı MATLABu kdeindexy musıme brat od 1 do N + 1
1031 Linearnı ODR prvnıho radu
Vratrsquome se k prıkladu volneho padu Pripomene rovnici s okrajovou podmınkou
v +c
mv = g t isinlt 0 T gt v(T ) = vN
51
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Hledame resenı vi v uzlech sıte ti Dosazenım dopredne diference
vi asympvi+1 minus vi
∆t
do nası rovnice zıskamevi+1 minus vi
∆t+
c
mvi = g
a po uprave (1minus c∆t
m
)vi minus vi+1 = minusg∆t
Zavedenım konstant
a =
(1minus c∆t
m
)a b = minusg∆t
zıskame soustavu N rovnic tvaruavi minus vi+1 = b
pro N neznamych (vnitrnı uzly) v0 vNminus1 Maticove lze ulohu zapsat
Av = b
nebo-li
a minus1 0 0 0
0 a minus1 0 0
0
0
a minus1
0 0 0 0 a
v0
vNminus1
=
b
b
b + vN
Kod v MATLABu naleznete v souboru MDKm
1032 Nelinearnı ODR prvnıho radu
Metodu diskretizace pro okrajovou ulohu nelinearnı ODR si ukazeme na konkretnım prıkladeVratrsquome se opet k volnemu padu z predchozıho odstavce ale nynı uvazujme ze odpor vz-duchu behem volneho padu roste s kvadratem rychlosti Ulohu popisuje rovnice
mv + cv2 = mg t isinlt 0 T gt
s okrajovou podmınkouv(T ) = vN
52
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Provedeme-li diskretizaci pro metodu konecnych diferencı dostaneme ulohu
vi+1 minus vi
∆t+
c
mv2
i = g
coz vede na soustavu N nelinearnıch algebraickych rovnic Prevedeme-li nelinearnı clen napravou stranu zıskame rovnice
vi minus vi+1 = minusg∆t +c∆t
mv2
i
ktere lze resit iteracne Soustavu lze zapsat ve tvaru
Av = b (v)
nebo-li
1 minus1 0 0 0
0 1 minus1 0 0
0
0
1 minus1
0 0 0 0 1
v0
vNminus1
=
b + c∆tm
v20
b + c∆tm
v2Nminus2
b + c∆tm
v2Nminus1 + vN
Pro pocatecnı odhad v0 resıme iteracne soustavu
Avk+1 = b (vk)
pro k ge 1 se zvolenou presnostıvk+1 minus vk
vklt ε
Kod v MATLABu naleznete v souboru MDK nelinm
1033 ODR druheho radu
Uvazujme okrajovou ulohu typu
x + bx + cx = f(t) t isinlt 0 T gt
Ukazeme si resenı jak pro Neumannovy tak pro Dirichletovy okrajove podmınky Provedrsquomeobdobnou diskretizaci jako pro rovnici vyse Druhou derivaci aproximujeme jako
53
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
xi asympximinus1 minus 2xi + xi+1
∆t2
Dosazenım do nası rovnice po uprave dostaneme pro vsechny vnitrnı uzly
ximinus1 +(minus2minus b∆t + c∆t2
)xi + (1 + b∆t) xi+1 = fi∆t2
pro i isin 1 N
Zadanım Dirichletovych okrajovych podmınek
x0 = x0
xN = xN
dostaneme soustavu Nminus1 linearnıch algebraickych rovnic pro Nminus1 neznamych Prevedeme-li rovnici do tvaru
ximinus1 + pxi + qxi+1 = fi∆t2
soustava N minus 1 rovnic pro N minus 1 neznamych bude mıt tvar
p q 0 0 0
1 p q 0 0
0
0
1 p q
0 0 0 1 p
x1
xNminus1
=
f1∆t2 minus x0
f2∆t2
fNminus2∆t2
fNminus1∆t2 minus xN
Pro Neumannovy okrajove podmınky
x0 = v0
xN = vN
nezname resenı v okrajovych bodech x0 a xN toto musıme zahrnout do vypoctu Musımeaproximovat okrajove podmınky jako
x1 minus x0
∆tasymp v0
xN+1 minus xN
∆tasymp vN
Zde nam vystupuje fiktivnı hodnota xN+1 Soustavu tedy napıseme tak ze pridame prvnıokrajovou podmınku a pomocı druhe okrajove podmınky vyloucıme fiktivnı xN+1 Matice
54
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
soustavy N + 1 linearnıch algebraickych rovnic pro N + 1 neznamych x0 az xN ma paktvar
1 minus1 0 0 0
1 p q 0 0
0 1 p q 0
0
1 p q
0 0 0 1 p + q
x0
xN
=
minusv0∆t
f1∆t2
fNminus1∆t2
fN∆t2 minus vvN∆t
Kod v MATLABu naleznete v souboru ODE2m
Prıklad Staticke zatızenı prutuJednoducha uloha elastostatiky s konstantnı plochou prurezu a konstantnımi materialovymivlastnostmi je popsana rovnicı
EAd2u
dx2+ f(x) = 0 x isin 0 L
u(0) = 0
u(0) = 0
E je Younguv modul pruznosti a A je plocha prurezu prutu Tyto parametry mohoubyt promenne podel prutu Vlevo tedy mame Dirichletovu okrajovou podmınku a vpravoNeumannovu okrajovou podmınku Prevedeme-li rovnici na tvar
d2u
dx2= p(x) kde p(x) =
minus1
EAf(x)
Diskretizujeme a pridame okrajove podmınky dostaneme soustavu
Ku = f
55
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
nebo-li
minus2 1 0 0 0
1 minus2 1 0 0
0 1 minus2 1 0
1 minus2 1
0 0 0 1 minus1
u1
uN
=
p1∆x2 minus u0
p2∆x2
pNminus1∆x2
pN∆x2 minus vN∆x
kde v nasem prıpade u0 = 0 a vN = 0Kod v MATLABu naleznete v souboru Prutm
Prıklad Rozlozenı teploty v prutuRovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partT
partt= a2
(part2T
partx2+
part2T
party2+
part2T
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Podrobneji se teto rovnicibude venovat prıstı cvicenı Pro rozlozenı teploty v 1D ve stacionarnım prıpade prejdetato rovnice na tvar
0 =part2T
partx2+ f(x) x isin 0 L
T (0) = T0
T (L) = TN
ktera je obdobna vyse uvedene Dirichletove uloze
minus2 1 0 0 0
1 minus2 1 0 0
0
0
1 minus2 1
0 0 0 1 minus2
T1
TNminus1
=
minusf1∆x2 minus T0
minusf2∆x2
minusfNminus2∆x2
minusfNminus1∆x2 minus TN
Kod v MATLABu naleznete v souboru Teplotam
56
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
104 Funkce MATLABu pro okrajovou ulohu ODR
V MATLABu je implementovana funkce bvp4c pro resenı dvoubodovych okrajovych ODRResı ODR prvnıho radu ve tvaru
yprime = f(x y)
s okrajovou podmınkou v krajnıch bodech intervalu lt a b gt
bc(y(a) y(b)) = 0
ODR vyssıch radu resıme prevodem na soustavu ODR prvnıho radu (stejne jako pri resenıpocatecnı ulohy pomocı funkcı ode)
sol = bvp4c(odefun bcfun solinit)
Parametry teto funkce predstavujıodefun - funkce popisujıcı pravou stranu diferencialnı rovnice ve tvaru f(x y)bcfun - funkce pro definovanı okrajovych podmınek zadavame ve tvaru bc(y(a) y(b)) solinit- struktura obsahujıcı pocatecnı odhad resenısol - promenna typu struktura obsahujıcı vysledky solx obsahuje vektor integracnıch bodusoly obsahuje resenı
deval(xintsolidx) - vycıslı resenı sol v bodech danych vektorem xint Parametr je idx jenepovinny urcuje ktere slozky resenı majı byt vypsany
Prıklad Reste pomocı bvp4c ulohu
yprimeprime + y = 0
y(0) = 0
y(4) = minus2
Vysledek porovnejte s analytickym resenım a vykreslete zavislost y(x)
Resenı naleznete v souborech OkrajODRm OkrajODR fcem OkrajODR podmm
57
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
11 Parcialnı diferencialnı rovnice
Tento text popisuje resenı okrajovych uloh parcialnıch diferencialnıch rovnic s ohledem naprostredky vypocetnıho prostredı MATLABu Na zacatek je nutno uvest ze existuje celarada druhu parcialnıch diferencialnıch rovnic a jim adekvatnıch metod resenı UvazujmePDR 2 radu v obecnem tvaru
auxx + buxy + cuyy + dux + euy + fu = g
kde a b c d e f a g jsou dane funkce x a y Zde uxx = part2upart∆2 Podle techto parametru
muzeme rozdelit PDR do trı typu jako
bull hyperbolicke pro ktere platı b2 minus ac gt 0
bull parabolicke pro ktere platı b2 minus ac = 0 a
bull elipticke pro ktere platı b2 minus ac lt 0
Pro kazdy z techto typu existujı specialnı algoritmy resenı s ohledem na vlastnosti resenıZde se omezıme na zakladnı typy vyskytujıcı se v technicke praxi na parabolicke a hyper-bolicke rovnice Ukazeme si jejich resenı metodou sıtı a metodou konecnych prvku
Parabolicke rovnice se vyskytujı pri resenı uloh vednı tepla chemicke difuze a jinychoboru Popisujı prubeh nejakeho deje v case Vzhledem k vyjimecnemu charakteru casovepromenne se pro rovnice parabolickeho typu zadava pocatecnı podmınka a dale okrajovepodmınky Tyto tzv pocatecne-okrajove ulohy majı vuci t charakter pocatecnı vzhledemk prostorovyn promennym jde o ulohy okrajove
111 Metoda konecnych diferencı
Rovnice vedenı tepla je obecne parabolicka parcialnı diferencialnı rovnice druheho radu vetvaru
partu
partt= a2
(part2u
partx2+
part2u
party2+
part2u
partz2
)+ f(x y t)
s patricnymi okrajovymi podmınkami a pocatecnı podmınkou Zjednodusme si tuto ulohuna prıpad
partu
partt= a2part2u
partx2 x isin 0 L
s pocatecnı podmınkouu(x 0) = Φ(x)
a s okrajovymi podmınkami
u(0 t) = g1 u(L t) = g2
coz je homogennı rovnice vedenı tepla v 1D (evolucnı loha)
58
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
1111 Explicitnı metoda
Ukazme si aplikaci explicitnı metody konecnych diferencı ktera v jistem smyslu kombinujediferencnı metody resenı pocatecnıch a okrajovych uloh Ulohu budeme aproximovat naobdelnıku
Q =lt 0 L gt times lt 0 T gt
kde si sestrojıme sıtrsquo s uzly (xk tn) k isin 0 K n isin 0 N kde xk = k∆x atn = n∆t ∆x = L
Ka ∆t = T
N Dale budeme znacit u (xk tn) = Un
k Na nulte casovehladine zvolıme
U0k = Φ(x)
Dalsı postup zalezı na tom ze dana pocatecne-okrajova uloha ma v promenne t charak-ter pocatecnı a hodnoty priblizneho resenı Un
k budeme pocıtat postupne po jednotlivychcasovych vrstvach Zaroven musı byt splneny okrajove podmınky
Un+10 = g0 (tn+1) Un+1
K = g1 (tn+1)
pouzijeme vhodne diferencnı schema Nejjednodussı cesta spocıva v tom ze v uzlu (xk tn)aproximujeme druhou derivaci druhou pomernou diferencı a derivaci podle t nahradımediferencnım podılem
partU (xk tn)
parttasymp Un+1
k minus Unk
∆t
Vysledkem takoveho postupu je diferencnı rovnice
Un+1k minus Un
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
z nız obdrzıme explicitnı vztah
Un+1k = rUn
kminus1 + (1minus 2r)Unk + rUn
k+1 k isin 1 K minus 1
kde
r =a2∆t
∆x2
Obecne lze uloha zapsat v maticovem tvaru
AnUn+1 = BnU
n + Fn
Pro nas prıpad je A = I matice
59
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Bn =
1minus 2r r 0 0 0
r 1minus 2r r 0 0
0 r 1minus 2r r 0
0
r 1minus 2r r
0 0 0 r 1minus 2r
je radu K minus 1 a Fn je nulovy vektor Rekurentne lze nas vztah zapsat jako
Un+11 = (1minus 2r)Un
1 rArr Un+11 = (1minus 2r)nU0
1
Kod v MATLABu naleznete v souboru Teplota1DExplicitm
Aby explicitnı metoda byla stabilnı je nutno zabezpecit aby 0 le 1minus 2r le 1
1112 Implicitnı metoda
Nızky rad presnosti a podmınenou stabilitu lze vyresit vyuzitım implicitnı metody Diferencnıvztah zde mame
partU (xk tn)
parttasymp Un
k minus Unminus1k
∆t
a vysledkem je diferencnı rovnice
Unk minus Unminus1
k
∆t= a2Un
k+1 minus 2Unk minus Un
kminus1
∆x2
kterou maticove zapıseme jako
60
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
1 + 2r minusr 0 0 0
minusr 1 + 2r minusr 0 0
0 minusr 1 + 2r minusr 0
0
minusr 1 + 2r minusr
0 0 0 minusr 1 + 2r
Un1
UnK
=
Unminus11
Unminus1K
+
rg0 (tn)
0
0
rg1 (tn)
Vektor U0 je dan pocatecnı podmınkou Okrajova podmınka muze samozrejme obsahovati derivace Pro explicitnı metodu aproximujeme derivace jako
ux (0 tn) asymp Un1 minus Un
0
∆x ux (L tn) asymp
UnK+1 minus Un
K
∆x
ktere pridame k resenı soustavy Rovnici vıce prostorovych promennych ve tvaru
ut = uxx + uyy
resıme pro t isinlt 0 T gt na ctverci Ω =lt 0 L1 gt times lt 0 L2 gt Pocatecnı podmınka jeu(x y 0) = Φ(x y) a okrajova podmınka na partΩ je u(x y t) = g(x y t) Priblizne resenı jeUn
ij = u (i∆x j∆y n∆t) Explicitnım schematem dospejeme k diferencnı aproximaci
Un+1ij minus Un
ij
∆t=
Uni+1j minus 2Un
ij minus Uniminus1j
∆x2+
Unij+1 minus 2Un
ij minus Unijminus1
∆y2
Kod v MATLABu naleznete v souboru Teplota1DImplicitm
112 Funkce MATLABu pro parabolickou PDR
pdepepdetool
V MATLABu je implementovana funkce pdepe pro resenı pocatecne-okrajovych uloh parabol-ickych a eliptickych PDR jedne prostorove promenne a casu Resı PDR ve tvaru
c
(t x u
partu
partx
)partu
partx= xminusm part
partx
(xmf
(t x u
partu
partx
))+ s
(t x u
partu
partx
)
61
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
pro t0 le t le tn a pro a le x le b
Pocatecnı pomınka jeu(x t0) = u0(x)
okrajova podmınka je
p(t x u) + q(t x)f(t x upartu
partx) = 0
sol = pdepe(m pdefun icfun bcfun xmesh tspan)
Oznacenı parametru odpovıdajı znacenı z predchozı rovnicem - parametr udavajıcı typ symetrie 0 - deskova 1 - valcova 2 - kulova
pdefun - funkce definujıcı PDR Definujeme ji ve tvaru [c f s] = pdefun(x t u dudx)
icfun - funkce ktera definuje pocatecnı podmınky ve tvaru u = icfun(x)
bcfun - funkce vyjadrujıcı okrajove podmınky ve tvaru [pl ql pr qr] = bcfun(xl ul xr xlt)
xmesh - vektor [x0 x1 xn] urcujıcı hodnoty bodu ve kterych pozadujeme resenı vkazdem casovem okamziku (resp pro kadou hodnotu vektoru tspan)
tspan - vektor [t0 t1 tf ] reprezentujıcı body ve kterych poadujeme resenı pro kazdouhodnotu z xmesh
Pozn Vyssı prostorove derivace prevadı na soustavu obdobne jako u ODR
Prıklad Pomocı funkce pdepe reste PDR
π2partu
partt=
part2u
partx2
na intervalu 0 le x le 1 a pro cas t le 0 V case t = 0 splnuje pocatecnı podmınku
u(0 x) = sinπx
a v bodech x = 0 x = 1 okrajove podmınky
u(0 x) = 0
πeminust +partu(1 t)
partx= 0
Resenı naleznete v souborech PDRm PDR fcem PDR pocpodmm PDR okrajpodmm
62
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
12 Metoda konecnych prvku
pde - Partial Differential Equation Toolbox
Metoda konecnych prvku (MKP) je numericka metoda pro resenı diferencialnıch rovnicPatrı do mnoziny metod Galerkinova typu
Postup pri resenı ulohy je nasledujıcı
bull popsanı problemu na oblasti diferencialnı rovnicı
bull definovanı okrajovych a pocatecnıch podmınek
bull diskretizace ulohy a
bull nalezenı priblizneho resenı MKP
Princip metod Galerkinova typuTyto metody aproximujı prımo resenı (na rozdıl od diferencnıch metod popsanych v 10cvicenı) dane okrajove ulohy pomocı konecnych linearnıch kombinacı vhodne zvolenychlinearne nezavislych funkcı (tzv bazove funkce) Dostavame soustavu algebraickych rovnicpro koeficienty linearnı kombinace urcujıcı hledane priblizne resenı
MKP spocıva ve specialnı konstrukci bazovych funkcı
Predstavıme si MKP na velmi jednoduchem prıkladuMejme tri prutove prvky sestavene do trojuhelnıku v jednom z vrcholu zatızenych siloudalsı vrchol je pevne uchycen a zbyvajıcı ma povolen posuv ve vodorovnem smeru (podleobrazku vlevo) Ukolem je spocıtat jak se tato konstrukce pod danym zatızenım zdefor-muje Konstrukci rozdelıme ne tri prvky spojene tremi uzly Kazdy prvek je tvoren dvema
uzly jejichz globalnı souradnice (xi yi) zname Pro kazdy prvek zavedeme jeste lokalnısouradnicovy system (ξ η) (viz obrazek vpravo) Kazdy z uzlu ma 2 stupne volnosti
63
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
(posuvy do smeru x a y) celkove ma tedy uloha 3 x 2 = 6 stupnu volnosti
Znacenıuzly 1 2 3prvky (1) (2) (3)
Definujeme vektor neznamych posuvu v uzlech prvku a sil
u =
u1x
u1y
u2x
u2y
u3x
u3y
f =
f1x
f1y
f2x
f2y
f3x
f3y
Predpokladejme ze mezi silami f a posuvy u je linarnı zavislost
f = Ku
kde K se nazyva globalnı matice tuhosti
Pro kazdy prvek (element) pak platı
f (e) = K(e)u(e)
kde u(e) =
uiξ
uiη
ujξ
ujη
f (e) =
fiξ
fiη
fjξ
fjη
Predpokladame ze prvek se chova jako linearnı pruzina
k =EA
L fiξ = k(uiξ minus ujξ)
kde je E - Younguv modul pruznosti A - prurez L - pocatecnı delka prvku
64
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Sestavıme lokalnı matici tuhosti - matice tuhosti pvku V lokalnıch souradnicıch ma tvar
K(e) =EA
L
1 0 | minus1 0
0 0 | 0 0
minusminus minusminus minus|minus minusminus minusminus
minus1 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 = cosαa s = sinα
kde uhel α je natocenı lokalnı soustavy souradnic oproti globalnı
T =
c s | 0 0
minuss c | 0 0
minusminus minusminus minus|minus minusminus minusminus
0 0 | c s
0 0 | s c
u(e) = Tu(e)
f (e) = Tf (e)
f (e) = K(e)u(e) rArr Tf (e) = K(e)Tu(e) rArr f (e) = TTK(e)
Tu(e) rArr K(e) = TTK(e)
T
Podobne bychom postupovali se vsemi prvky Pote je treba sestavit celkovou (globalnı)matici tuhosti a to tak ze matice kazdeho prvku umıstrsquoujeme na prıslusne pozice doglobalnı matice Vysledna matice je ctvercova symetricka a jejı rozmer odpovıda poctustupnu volnosti ulohy V nasem prıpade bude K(6 6)
65
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Prvkove matice tuhosti je treba rdquonamapovatrdquo do rozmeru celkove matice
lowastK(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
lowastK(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
lowastK(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 =lowast K(1) +lowast K(2) +lowast K(3)
66
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
Pridame jeste okrajove podmınky (homogennı podle obrazku) Uzel 1 je pevne uchycenuzel 2 se posouva ve vodorovnem smeru tedy
u1x = u1y = u2y = 0
Do matice tuhosti K pıseme 1 na digonalu a 0 do prıslusneho radku a sloupce
0
0
0
minusminus
0
f3x
f3y
=
1 0 0 0 0 0
0 1 0 0 0 0
0 0 K33 0 K35 K36
0 0 0 1 0 0
0 0 K53 0 K55 K56
0 0 K63 0 K65 K66
u1x
u1y
u2x
minusminus
u2y
u3x
u3y
Uloha je pripravena hledame nezname posuvy
u = K f
Prıklad Naprogramovany uvedeny prıklad a dalsı dve aplikace najdete v souborechmkpm mkp pr1m mkp pr2m mkp pr3
121 Prıkazy MATLABu
Zakladem PDE Toolboxu je resic na bazi metody konecnych prvku (MKP) pro ulohy defi-novane na ohranicene rovinne oblasti
Predstavıme si vybrane funkce
pdegplot(rsquofunkcersquo) - vykreslı hranice oblasti definovane ve funkci rsquofunkcersquo
[pet] = initmesh(rsquofunkcersquo) - vytvorı trojuhelnıkovou sıtrsquo na oblasti definovane funkcı rsquofunkcersquoV MATLABu jsou preddefinovane oblasti rsquosquaregrsquo - jednotkovy ctverec rsquocirclegrsquo - kruhlsquaregrsquo - oblast tvaru pısmene Lp - matice souradnic uzlovych bodu ma specificky tvare - matice hran ma specificky tvar
67
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
t - matice prvku ma specificky tvar
Pozn Uzly kazdeho prvku se zpravila cıslujı proti smeru hodinovych rucicek Kazdyprvek ma svuj lokalnı souradnicovy system a sve cıslo
pdemesh(pet) - vykreslı sıtrsquo definovanou v maticıch p e t generovanou pomocı funkceinitmesh
refinemesh(pet) - zjemnı sıtrsquo vytvorenou pomocı initmesh
Prıklad rsquovysıtrsquoovanoursquo oblast jejız hranici tvorı kardioid najdete v souborech SrdickomSrdicko Geomm
assempde(pet) - k prostudovanı
u = parabolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKPRovnice je tvaru
dpartu
parttminusnabla(cnabla) + au = f na Ω
s pocatecnı podmınkouu(x 0) = u0(x)
u0 - pocatecnı podmınkatime - casovy intervalrsquookr podmrsquo - funkce definujıcı okrajove podmınkyp e t - sıtrsquoc a f d - parametry rovnice
u = hyperbolic(u0timersquookr podmrsquopetcafd) - funkce pro resenı parabolicke PDR MKP
Prıklad Reste pomocı nastroju pde toolboxu sırenı tepla na obdelnıkove oblasti Do-prostred oblasti umıstete kruhovy tepelny zdroj
Resenı naleznete v souboru Teplota2Dm
pdetool - graficke uzivatelske rozhranı pro snadne resenı PDR metodou konecnych prvkuSnadna tvorba oblasti
68
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
13 Aplikace v biomechanice
Zakladnı myslenkou je sestavit program ktery by urcoval odezvu hlavy modelu clovekaktery je umısten na sedacce automobilu a je vystaven nahodnemu buzenı zpusobenemnerovnym povrchem vozovky Model cloveka je predstavovan soustavou tuhych telesspojenych pruzinami a tlumici Tuha telesa nahrazujı panevnı oblast bedernı oblasthrudnı oblast a hlavu jejich hmotnosti odpovıdajıhmotnostem prıslusnych telnıch seg-mentu Vysledkem jsou amplitudy jednotlivych segmentu Program se spoustı hlavnımsouborem ClovekLaunchsolverm ktery vola dalsı funkce ClovekZadanim ClovekBuzenimIntegracem TestBuzenim MyFFTm Vysledkym
69
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70
References
[1] Boileau P-E Rakheja S Whole-body vertical biodynamic response characteristicsof the seated vehicle driver Measurement and model development In InternationalJournal of Industrial Ergonomics 22 pp 449ndash472 1998
[2] Mıka S Prikryl P Numericke metody pro resenı obycejnych diferencialnıch rovnicokrajove ulohy ZCU v Plzni Plzen 1994
[3] Mıka S Numericke metody linearnı algebra ZCU v Plzni Plzen 1996
[4] Prager M Numericke analyza ZCU v Plzni Plzen 1995
[5] Mıka S Prikryl P Numericke metody pro resenı parcialnıch diferencialnıch rovnicevolucnı rovnice ZCU v Plzni Plzen 1996
[6] Prikryl P Numericke metody aproximace funkcı a matematicka analyza ZCU vPlzni Plzen 1996
[7] Help systemu MATLAB 701
70